Reading Assignment - PowerPoint PPT Presentation

1 / 46
About This Presentation
Title:

Reading Assignment

Description:

center of mass is the origin (for convenience) World Space ... Analogous to mass rotational mass. We actually want the inverse I-1(t) UNC Chapel Hill ... – PowerPoint PPT presentation

Number of Views:29
Avg rating:3.0/5.0
Slides: 47
Provided by: lin82
Learn more at: http://www.cs.unc.edu
Category:

less

Transcript and Presenter's Notes

Title: Reading Assignment


1
Reading Assignment References
  • D. Baraff and A. Witkin, Physically Based
    Modeling Principles and Practice, Course Notes,
    SIGGRAPH 2001.
  • B. Mirtich, Fast and Accurate Computation of
    Polyhedral Mass Properties, Journal of Graphics
    Tools, volume 1, number 2, 1996.
  • D. Baraff, Dynamic Simulation of Non-Penetrating
    Rigid Bodies, Ph.D. thesis, Cornell University,
    1992.
  • B. Mirtich and J. Canny, Impulse-based
    Simulation of Rigid Bodies, in Proceedings of
    1995 Symposium on Interactive 3D Graphics, April
    1995.
  • B. Mirtich, Impulse-based Dynamic Simulation of
    Rigid Body Systems, Ph.D. thesis, University of
    California, Berkeley, December, 1996.
  • B. Mirtich, Hybrid Simulation Combining
    Constraints and Impulses, in Proceedings of
    First Workshop on Simulation and Interaction in
    Virtual Environments, July 1995.

2
Algorithm Overview
  • 0 Initialize()
  • 1 for t 0 t lt tf t h do
  • 2 Read_State_From_Bodies(S)
  • 3 Compute_Time_Step(S,t,h)
  • 4 Compute_New_Body_States(S,t,h)
  • 5 Write_State_To_Bodies(S)
  • 6 Zero_Forces()
  • 7 Apply_Env_Forces()
  • 8 Apply_BB_Forces()

3
Outline
  • Rigid Body Preliminaries
  • Coordinate system, velocity, acceleration, and
    inertia
  • State and Evolution
  • Quaternions
  • Collision Detection and Contact Determination
  • Colliding Contact Response

4
Coordinate Systems
  • Body Space (Local Coordinate System)
  • bodies are specified relative to this system
  • center of mass is the origin (for convenience)
  • World Space
  • bodies are transformed to this common system
  • p(t) R(t) p0 x(t)
  • R(t) represents the orientation

5
Coordinate Systems
6
Velocities
  • How do x(t) and R(t) change over time?
  • v(t) dx(t)/dt
  • Let ?(t) be the angular velocity vector
  • Direction is the axis of rotation
  • Magnitude is the angular velocity about the axis
  • Then

7
Velocities
8
Angular Velocities
9
Accelerations
  • How do v(t) and dR(t)/dt change over time?
  • First we need some more machinery
  • Inertia Tensor
  • Forces and Torques
  • Momentums
  • Actually formulate in terms of momentum
    derivatives instead of velocity derivatives

10
Inertia Tensor
  • 3x3 matrix describing how the shape and mass
    distribution of the body affects the relationship
    between the angular velocity and the angular
    momentum I(t)
  • Analogous to mass rotational mass
  • We actually want the inverse I-1(t)

11
Inertia Tensor
Ixx
Iyy
Izz
Iyz Izy
Ixy Iyx
Ixz Izx
12
Inertia Tensor
  • Compute I in body space Ibody and then
    transformed to world space as required
  • I vary in World Space, but Ibody is constant in
    body space for the entire simulation
  • Transformation only depends on R(t) -- I(t) is
    translation invariant
  • I(t) R(t) Ibody R-1(t) R(t) Ibody RT(t)
  • I-1(t) R(t) Ibody-1 R-1(t) R(t) Ibody-1 RT(t)

13
Computing Ibody-1
  • There exists an orientation in body space which
    causes Ixy, Ixz, Iyz to all vanish
  • increased efficiency and trivial inverse
  • Point sampling within the bounding box
  • Projection and evaluation of Greenes thm.
  • Code implementing this method exists
  • Refer to Mirtichs paper at
  • http//www.acm.org/jgt/papers/Mirtich96

14
Approximation w/ Point Sampling
  • Pros Simple, fairly accurate, no B-rep needed.
  • Cons Expensive, requires volume test.

15
Use of Greens Theorem
  • Pros Simple, exact, no volumes needed.
  • Cons Requires boundary representation.

16
Forces and Torques
  • Environment and contacts tell us what forces are
    applied to a body
  • F(t) ? Fi(t)
  • ?(t) ? ( ri(t) x Fi(t) )
  • where ri(t) is the vector from the center of
    mass to the point on surface of the object that
    the force is applied at, ri(t) pi - x(t)

17
Momentums
  • Linear momentum
  • P(t) m v(t)
  • dP(t)/dt m a(t) F(t)
  • Angular Momentum
  • L(t) I(t) ?(t)
  • ?(t) I(t)-1 L(t)
  • It can be shown that dL(t)/dt ?(t)

18
Outline
  • Rigid Body Preliminaries
  • State and Evolution
  • Variables and derivatives
  • Quaternions
  • Collision Detection and Contact Determination
  • Colliding Contact Response

19
Rigid Body Dynamics
20
State of a Body
  • Y(t) ( x(t), R(t), P(t), L(t) )
  • We use P(t) and L(t) because of conservation
  • From Y(t) certain quantities are computed
  • I-1(t) R(t) Ibody-1 RT(t)
  • v(t) P(t) / M
  • ?(t) I-1(t) L(t)
  • d Y(t) / dt ( v(t), dR(t)/dt, F(t), ?(t) )
  • d(x(t),R(t),P(t),L(t))/dt (v(t), dR(t)/dt,
    F(t), ?(t))

21
New State of a Body
  • We cannot compute the state of a body at all
    times but must be content with a finite number of
    discrete time points
  • Assume that we are given the initial state of all
    the bodies at the starting time t0, use ODE
    solving techniques to get the new state at t1 and
    so on.

22
Outline
  • Rigid Body Preliminaries
  • State and Evolution
  • Quaternions
  • Merits, drift, and re-normalization
  • Collision Detection and Contact Determination
  • Colliding Contact Response

23
Unit Quaternion Merits
  • A rotation in 3-space involves 3 DOF
  • Rotation matrices describe a rotation using 9
    parameters
  • Unit quaternions can do it with 4
  • Rotation matrices buildup error faster and more
    severely than unit quaternions
  • Drift is easier to fix with quaternions
  • renormalize

24
Unit Quaternion Definition
  • s,v -- s is a scalar, v is vector
  • A rotation of ? about a unit axis u can be
    represented by the unit quaternion
  • cos(?/2), sin(? /2) u
  • s,v 1 -- the length is taken to be the
    Euclidean distance treating s,v as a 4-tuple or
    a vector in 4-space

25
Unit Quaternion Operations
  • Multiplication is given by
  • dq(t)/dt 0, w(t)/2q(t)
  • R

26
Unit Quaternion Usage
  • To use quaternions instead of rotation matrices,
    just substitute them into the state as the
    orientation (save 5 variables)
  • d (x(t), q(t), P(t), L(t) ) / dt
  • ( v(t), 0,?(t)/2q(t), F(t), ?(t) )
  • ( P(t)/m, 0, I-1(t)L(t)/2q(t), F(t),
    ?(t) )
  • where I-1(t) (q(t).R) Ibody-1 (q(t).RT)

27
Outline
  • Rigid Body Preliminaries
  • State and Evolution
  • Quaternions
  • Collision Detection and Contact Determination
  • Intersection testing, bisection, and nearest
    features
  • Colliding Contact Response

28
Algorithm Overview
  • 0 Initialize()
  • 1 for t 0 t lt tf t h do
  • 2 Read_State_From_Bodies(S)
  • 3 Compute_Time_Step(S,t,h)
  • 4 Compute_New_Body_States(S,t,h)
  • 5 Write_State_To_Bodies(S)
  • 6 Zero_Forces()
  • 7 Apply_Env_Forces()
  • 8 Apply_BB_Forces()

29
Collision Detection and Contact Determination
  • Discreteness of a simulation prohibits the
    computation of a state producing exact touching
  • We wish to compute when two bodies are close
    enough and then apply contact forces
  • This can be quite a sticky issue.
  • Are bodies allowed to be penetrating when the
    forces are applied?
  • What if contact region is larger than a single
    point?
  • Did we miss a collision?

30
Collision Detection and Contact Determination
  • Response parameters can be derived from the state
    and from the identity of the contacting features
  • Define two primitives that we use to figure out
    body-body response parameters
  • Distance(A,B) (cheaper)
  • Contacts(A,B) (more expensive)

31
Distance(A,B)
  • Returns a value which is the minimum distance
    between two bodies
  • Approximate may be ok
  • Negative if the bodies intersect
  • Convex polyhedra
  • Lin-Canny and GJK -- 2 classes of algorithms
  • Non-convex polyhedra
  • much more useful but hard to get distance fast
  • PQP/RAPID/SWIFT

32
Contacts(A,B)
  • Returns the set of features that are nearest for
    disjoint bodies or intersecting for penetrating
    bodies
  • Convex polyhedra
  • LC GJK give the nearest features as a
    bi-product of their computation only a single
    pair. Others that are equally distant may not be
    returned.
  • Non-convex polyhedra
  • much more useful but much harder problem
    especially contact determination for disjoint
    bodies
  • Convex decomposition

33
Compute_Time_Step(S,t,h)
  • Lets recall a particle colliding with a plane

34
Compute_Time_Step(S,t,h)
  • We wish to compute tc to some tolerance

35
Compute_Time_Step(S,t,h)
  • A common method is to use bisection search until
    the distance is positive but less than the
    tolerance
  • This can be improved by using the ratio
    (disjoint distance) (disjoint distance
    penetration depth) to figure out the new time to
    try -- faster convergence

36
Compute_Time_Step(S,t,h)
  • 0 for each pair of bodies (A,B) do
  • 1 Compute_New_Body_States(Scopy, t, H)
  • 2 hs(A,B) H // H is the target timestep
  • 3 if Distance(A,B) lt 0 then
  • 4 try_h H/2 try_t t try_h
  • 5 while TRUE do
  • 6 Compute_New_Body_States(Scopy, t, try_t - t)
  • 7 if Distance(A,B) lt 0 then
  • 8 try_h / 2 try_t - try_h
  • 9 else if Distance(A,B) lt ? then
  • 10 break
  • 11 else
  • 12 try_h / 2 try_t try_h
  • 13 hs(A,B) try_t t
  • 14 h min( hs )

37
Penalty Methods
  • If Compute_Time_Step does not affect the time
    step (h) then we have a simulation based on
    penalty methods
  • The objects are allowed to intersect and their
    penetration depth is used to compute a spring
    constant which forces them apart

38
Local Apply_BB_Forces()
  • Local contact force computation
  • 0 for each pair of bodies (A,B) do
  • 1 if Distance(A,B) lt ? then
  • 2 Cs Contacts(A,B)
  • 3 Apply_Impulses(A,B,Cs)

39
Global Apply_BB_Forces()
  • Global contact force computation
  • 0 for each pair of bodies (A,B) do
  • 1 if Distance(A,B) lt ? then
  • 2 Flag_Pair(A,B)
  • 3 Solve For_Forces(flagged pairs)
  • 4 Apply_Forces(flagged pairs)

40
Outline
  • Rigid Body Preliminaries
  • State and Evolution
  • Quaternions
  • Collision Detection and Contact Determination
  • Colliding Contact Response
  • Normal vector, restitution, and force application

41
Colliding Contact Response
  • Assumptions
  • Convex bodies
  • Non-penetrating
  • Non-degenerate configuration
  • edge-edge or vertex-face
  • appropriate set of rules can handle the others
  • Need a contact unit normal vector
  • Face-vertex case use the normal of the face
  • Edge-edge case use the cross-product of the
    direction vectors of the two edges

42
Colliding Contact Response
  • Point velocities at the nearest points
  • Relative contact normal velocity

43
Colliding Contact Response
  • If vrel gt 0 then
  • the bodies are separating and we dont compute
    anything
  • Else
  • the bodies are colliding and we must apply an
    impulse to keep them from penetrating
  • The impulse is in the normal direction

44
Colliding Contact Response
  • We will use the empirical law of frictionless
    collisions
  • Coefficient of restitution ? 0,1
  • ? 0 -- bodies stick together
  • ? 1 loss-less rebound
  • After some manipulation of equations...

45
Apply_BB_Forces()
  • For colliding contact, the computation can be
    local
  • 0 for each pair of bodies (A,B) do
  • 1 if Distance(A,B) lt ? then
  • 2 Cs Contacts(A,B)
  • 3 Apply_Impulses(A,B,Cs)

46
Apply_Impulses(A,B,Cs)
  • The impulse is an instantaneous force it
    changes the velocities of the bodies
    instantaneously ?v J / M
  • 0 for each contact in Cs do
  • 1 Compute n
  • 2 Compute j
  • 3 P(A) J
  • 4 L(A) (p - x(t)) x J
  • 5 P(B) - J
  • 6 L(B) - (p - x(t)) x J
Write a Comment
User Comments (0)
About PowerShow.com