450 likes | 586 Views
Dynamics 101. Jim Van Verth Red Storm Entertainment jimvv@redstorm.com. Talk Summary. Going to talk about: A brief history of motion theory Newtonian motion for linear and rotational dynamics Handling this in the computer. Physically Based-Motion.
E N D
Dynamics 101 Jim Van Verth Red Storm Entertainment jimvv@redstorm.com
Talk Summary • Going to talk about: • A brief history of motion theory • Newtonian motion for linear and rotational dynamics • Handling this in the computer
Physically Based-Motion • Want game objects to move consistent with world • Match our real-world experience • But this is a game, so… • Can’t be too expensive • (no atomic-level interactions)
History I: Aristotle • Observed: • Push an object, stop, it stops • Rock falls faster than feather • From this, deduced: • Objects want to stop • Motion is in a line • Motion only occurs with action • Heavier object falls faster • Note: was not actually beggar for a bottle
History I: Aristotle • Motion as changing position
History I: Aristotle • Called kinematics • Games: move controller, stop on a dime, move again • Not realistic
History II: Galileo • Observed: • Object in motion slows down • Cannonballs fall equally • Theorized: • Slows due to unseen force: friction • Object in motion stays in motion • Object at rest stays at rest • Called inertia • Also: force changes velocity, not position • Oh, and mass has no effect on velocity
History II: Galileo • Force as changing velocity • Velocity changes position • Called dynamics
History III: Newton • Observed: • Planet orbit like continuous falling • Theorized: • Planet moves via gravity • Planets and small objects linked • Force related to velocity by mass • Calculus helps formulate it all
History III: Newton • Sum of forces sets acceleration • Acceleration changes velocity • Velocity changes position g
History III: Newton • Games: Move controller, add force, then drift
History III: Newton • As mentioned, devised calculus • (concurrent with Leibniz) • Differential calculus: • rates of change • Integral calculus: • areas and volumes • antiderivatives
Differential Calculus Review • Have position function x(t) • Derivative x'(t) describes how x changes as t changes (also written dx/dt, or ) • x'(t) gives tangent vector at time t x(ti) y x'(ti) y(t) t
Differential Calculus Review • Our function is position: • Derivative is velocity: • Derivative of velocity is acceleration
Newtonian Dynamics Summary • All objects affected by forces • Gravity • Ground (pushing up) • Other objects pushing against it • Force determines acceleration (F = ma) • Acceleration changes velocity ( ) • Velocity changes position ( )
Dynamics on Computer • Break into two parts • Linear dynamics (position) • Rotational dynamics (orientation) • Simpler to start with position
Linear Dynamics • Simulating a single object with: • Last frame position xi • Last frame velocity vi • Mass m • Sum of forces F • Want to know • Current frame position xi+1 • Current frame velocity vi+1
Linear Dynamics • Could use Newton’s equations • Problem: assumes F constant across frame • Not always true: • E.g. spring force: Fspring = –kx • E.g. drag force: Fdrag = –mv
Linear Dynamics • Need numeric solution • Take stepwise approximation of function
Linear Dynamics • Basic idea: derivative (velocity) is going in the right direction • Step a little way in that direction (scaled by frame time h) • Do same with velocity/acceleration • Called Euler’s method
Linear Dynamics • Euler’s method
Linear Dynamics • Another way: use linear momentum • Then
Linear: Final Formulas • Using Euler’s method with time step h
Rotational Dynamics • Simulating a single object with: • Last frame orientation Ri or qi • Last frame angular velocity i • Inertial tensor I • Sum of torques • Want to know • Current frame orientation Ri+1 or qi+1 • Current frame ang. velocity i+1
Rotational Dynamics • Orientation • Represented by • Rotation matrix R • Quaternion q • Which depends on your needs • Hint: quaternions are cheaper
Rotational Dynamics • Angular velocity • Represents change in rotation • How fast object spinning • 3-vector • Direction is axis of rotation • Length is amount of rotation (in radians) • Ccw around axis (r.h. rule)
Rotational Dynamics • Angular velocity • Often need to know linear velocity at point • Solution: cross product v r
Moments of Inertia • Inertial tensor • I is rotational equivalent of mass • 3 x 3 matrix, not single scalar factor (unlike m) • Many factors - rotation depends on shape • Describe how object rotates around various axes • Not always easy to compute • Change as object changes orientation
Rotational Dynamics • Computing I • Can use values for closest box or cylinder • Alternatively, can compute based on geometry • Assume constant density, constant mass at each vertex • Solid integral across shape • See Mirtich,Eberly for more details • Blow and Melax do it with sums of tetrahedra
Rotational Dynamics • Torque • Force equivalent • Apply to offset from center of mass – creates rotation • Add up torques just like forces
Rotational Dynamics • Computing torque • Cross product of vector r (from CoM to point where force is applied), and force vector F • Applies torque ccw around vector (r.h. rule) r F
Rotational Dynamics • Center of Mass • Point on body where applying a force acts just like single particle • “Balance point” of object • Varies with density, shape of object • Pull/push anywhere but CoM, get torque • Generally falls out of inertial tensor calculation
Rotational Dynamics • Have matrix R and vector • How to compute ? • Convert to give change in R • Convert to symmetric skew matrix • Multiply by orientation matrix • Can use Euler's method after that
Computing New Orientation • If have matrixR, then where
Computing New Orientation • If have quaternion q, then • See Baraff or Eberly for derivation where
Computing Angular Velocity • Can’t easily integrate angular velocity from angular acceleration: • Can no longer “divide” by I and do Euler step
Computing Angular Momentum • Easier way: use angular momentum • Then
Using I in World Space • Remember, • I computed in local space, must transform to world space • If using rotation matrix R, use formula • If using quaternion, convert to matrix
Impulses • Normally force acts over period of time • E.g., pushing a chair F t
Impulses • Even if constant over frame sim assumes application over entire time F t
Impulses • But if instantaneous change in velocity? Discontinuity! • Still force, just instantaneous • Called impulse - good for collisions/constraints F t
Summary • Basic Newtonian dynamics • Position, velocity, force, momentum • Linear simulation • Force -> acceleration -> velocity -> position • Rotational simulation • Torque -> ang. mom. -> ang. vel. -> orientation
References • Burden, Richard L. and J. Douglas Faires, Numerical Analysis, PWS Publishing Company, Boston, MA, 1993. • Hecker, Chris, “Behind the Screen,” Game Developer, Miller Freeman, San Francisco, Dec. 1996-Jun. 1997. • Witken, Andrew, David Baraff, Michael Kass, SIGGRAPH Course Notes, Physically Based Modelling, SIGGRAPH 2002. • Eberly, David, Game Physics, Morgan Kaufmann, 2003.