Reading Assignment & References

46
UNC Chapel Hill M. C. Lin 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.

description

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. - PowerPoint PPT Presentation

Transcript of Reading Assignment & References

Page 1: Reading Assignment & References

UNC Chapel Hill M. C. Lin

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.

Page 2: Reading Assignment & References

UNC Chapel Hill M. C. Lin

Algorithm Overview

0 Initialize();

1 for t = 0; t < tf; t += h do2 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();

Page 3: Reading Assignment & References

UNC Chapel Hill M. C. Lin

Outline

Rigid Body Preliminaries– Coordinate system, velocity, acceleration,

and inertiaState and EvolutionQuaternionsCollision Detection and Contact

DeterminationColliding Contact Response

Page 4: Reading Assignment & References

UNC Chapel Hill M. C. Lin

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

Page 5: Reading Assignment & References

UNC Chapel Hill M. C. Lin

Coordinate Systems

Page 6: Reading Assignment & References

UNC Chapel Hill M. C. Lin

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

Page 7: Reading Assignment & References

UNC Chapel Hill M. C. Lin

Velocities

Page 8: Reading Assignment & References

UNC Chapel Hill M. C. Lin

Angular Velocities

Page 9: Reading Assignment & References

UNC Chapel Hill M. C. Lin

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

Page 10: Reading Assignment & References

UNC Chapel Hill M. C. Lin

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 massWe actually want the inverse I-1(t)

Page 11: Reading Assignment & References

UNC Chapel Hill M. C. Lin

Inertia Tensor

Ixx =

Ixy = Iyx =

Iyy = Izz =

Iyz = Izy =Ixz = Izx =

Page 12: Reading Assignment & References

UNC Chapel Hill M. C. Lin

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)

Page 13: Reading Assignment & References

UNC Chapel Hill M. C. Lin

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 Greene’s thm.– Code implementing this method exists– Refer to Mirtich’s paper at

http://www.acm.org/jgt/papers/Mirtich96

Page 14: Reading Assignment & References

UNC Chapel Hill M. C. Lin

Approximation w/ Point Sampling

Pros: Simple, fairly accurate, no B-rep needed. Cons: Expensive, requires volume test.

Page 15: Reading Assignment & References

UNC Chapel Hill M. C. Lin

Use of Green’s Theorem

Pros: Simple, exact, no volumes needed.Cons: Requires boundary representation.

Page 16: Reading Assignment & References

UNC Chapel Hill M. C. Lin

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)

Page 17: Reading Assignment & References

UNC Chapel Hill M. C. Lin

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)

Page 18: Reading Assignment & References

UNC Chapel Hill M. C. Lin

Outline

Rigid Body PreliminariesState and Evolution– Variables and derivatives

QuaternionsCollision Detection and Contact

DeterminationColliding Contact Response

Page 19: Reading Assignment & References

UNC Chapel Hill M. C. Lin

Rigid Body Dynamics

Page 20: Reading Assignment & References

UNC Chapel Hill M. C. Lin

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))

Page 21: Reading Assignment & References

UNC Chapel Hill M. C. Lin

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.

Page 22: Reading Assignment & References

UNC Chapel Hill M. C. Lin

Outline

Rigid Body PreliminariesState and EvolutionQuaternions –Merits, drift, and re-normalization

Collision Detection and Contact Determination

Colliding Contact Response

Page 23: Reading Assignment & References

UNC Chapel Hill M. C. Lin

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

Page 24: Reading Assignment & References

UNC Chapel Hill M. C. Lin

Unit Quaternion Definition

[s,v] -- s is a scalar, v is vectorA 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

Page 25: Reading Assignment & References

UNC Chapel Hill M. C. Lin

Unit Quaternion Operations

Multiplication is given by:

dq(t)/dt = [0, w(t)/2]q(t)

R =

Page 26: Reading Assignment & References

UNC Chapel Hill M. C. Lin

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)/2]q(t), F(t), (t) )

= ( P(t)/m, [0, I-1(t)L(t)/2]q(t), F(t), (t) )

where I-1(t) = (q(t).R) Ibody-1 (q(t).RT)

Page 27: Reading Assignment & References

UNC Chapel Hill M. C. Lin

Outline

Rigid Body PreliminariesState and EvolutionQuaternionsCollision Detection and Contact

Determination– Intersection testing, bisection, and

nearest featuresColliding Contact Response

Page 28: Reading Assignment & References

UNC Chapel Hill M. C. Lin

Algorithm Overview

0 Initialize();1 for t = 0; t < tf; t += h do2 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();

Page 29: Reading Assignment & References

UNC Chapel Hill M. C. Lin

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?

Page 30: Reading Assignment & References

UNC Chapel Hill M. C. Lin

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)

Page 31: Reading Assignment & References

UNC Chapel Hill M. C. Lin

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++

Page 32: Reading Assignment & References

UNC Chapel Hill M. C. Lin

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

Page 33: Reading Assignment & References

UNC Chapel Hill M. C. Lin

Compute_Time_Step(S,t,h)

Let’s recall a particle colliding with a plane

Page 34: Reading Assignment & References

UNC Chapel Hill M. C. Lin

Compute_Time_Step(S,t,h)

We wish to compute tc to some tolerance

Page 35: Reading Assignment & References

UNC Chapel Hill M. C. Lin

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

Page 36: Reading Assignment & References

UNC Chapel Hill M. C. Lin

Compute_Time_Step(S,t,h)

0 for each pair of bodies (A,B) do1 Compute_New_Body_States(Scopy, t, H);2 hs(A,B) = H; // H is the target timestep3 if Distance(A,B) < 0 then4 try_h = H/2; try_t = t + try_h;5 while TRUE do6 Compute_New_Body_States(Scopy, t, try_t - t);7 if Distance(A,B) < 0 then8 try_h /= 2; try_t -= try_h;9 else if Distance(A,B) < then10 break;11 else12 try_h /= 2; try_t += try_h;13 hs(A,B) = try_t – t;14 h = min( hs );

Page 37: Reading Assignment & References

UNC Chapel Hill M. C. Lin

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

Page 38: Reading Assignment & References

UNC Chapel Hill M. C. Lin

Local Apply_BB_Forces()

Local contact force computation

0 for each pair of bodies (A,B) do

1 if Distance(A,B) < then

2 Cs = Contacts(A,B);

3 Apply_Impulses(A,B,Cs);

Page 39: Reading Assignment & References

UNC Chapel Hill M. C. Lin

Global Apply_BB_Forces()

Global contact force computation

0 for each pair of bodies (A,B) do

1 if Distance(A,B) < then

2 Flag_Pair(A,B);

3 Solve For_Forces(flagged pairs);

4 Apply_Forces(flagged pairs);

Page 40: Reading Assignment & References

UNC Chapel Hill M. C. Lin

Outline

Rigid Body PreliminariesState and EvolutionQuaternionsCollision Detection and Contact

DeterminationColliding Contact Response– Normal vector, restitution, and force

application

Page 41: Reading Assignment & References

UNC Chapel Hill M. C. Lin

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

Page 42: Reading Assignment & References

UNC Chapel Hill M. C. Lin

Colliding Contact Response

Point velocities at the nearest points:

Relative contact normal velocity:

Page 43: Reading Assignment & References

UNC Chapel Hill M. C. Lin

Colliding Contact Response

If vrel > 0 then– the bodies are separating and we don’t

compute anythingElse– the bodies are colliding and we must

apply an impulse to keep them from penetrating

– The impulse is in the normal direction:)(tnjJ 0ˆ

Page 44: Reading Assignment & References

UNC Chapel Hill M. C. Lin

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...

Page 45: Reading Assignment & References

UNC Chapel Hill M. C. Lin

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) < then

2 Cs = Contacts(A,B);

3 Apply_Impulses(A,B,Cs);

Page 46: Reading Assignment & References

UNC Chapel Hill M. C. Lin

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