Particle Systems University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell
Reading Required: Witkin, Particle System Dynamics, SIGGRAPH 97 course notes on Physically Based Modeling. Witkin and Baraff, Differential Equation Basics, SIGGRAPH 01 course notes on Physically Based Modeling. Optional Hocknew and Eastwood. Computer simulation using particles. Adam Hilger, New York, 1988. Gavin Miller. The motion dynamics of snakes and worms. Computer Graphics 22:169-178, 1988. University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 2
What are particle systems? A particle system is a collection of point masses that obeys some physical laws (e.g, gravity, heat convection, spring behaviors, ). Particle systems can be used to simulate all sorts of physical phenomena: University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 3
Particle in a flow field We begin with a single particle with: Position, " x = x % $ # y& y Velocity, v = x = d x dt " dx dt% = $ # dy dt& g(x,t) Suppose the velocity is actually dictated by some driving function g: x = g( x,t) x University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 4
Vector fields At any moment in time, the function g defines a vector field over x: How does our particle move through the vector field? University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 5
Diff eqs and integral curves The equation x = g( x,t) is actually a first order differential equation. We can solve for x through time by starting at an initial point and stepping along the vector field: Start Here This is called an initial value problem and the solution is called an integral curve. University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 6
Euler s method One simple approach is to choose a time step, Δt, and take linear steps along the flow: x (t + Δt) = Writing as a time iteration: x (t) + Δt x(t) = x (t) + Δt g( x,t) x i+1 = x i + Δt v i This approach is called Euler s method and looks like: Properties: Simplest numerical method Bigger steps, bigger errors. Error ~ O(Δt 2 ). Need to take pretty small steps, so not very efficient. Better (more complicated) methods exist, e.g., Runge-Kutta and implicit integration. University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 7
Particle in a force field Now consider a particle in a force field f. In this case, the particle has: Mass, m Acceleration, a x = d v dt = d 2 x dt 2 The particle obeys Newton s law: f = m a = mx The force field f can in general depend on the position and velocity of the particle as well as time. Thus, with some rearrangement, we end up with: f ( x,x,t) x = m University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 8
Second order equations This equation: x = f ( x,x,t) m is a second order differential equation. Our solution method, though, worked on first order differential equations. We can rewrite this as: x = v " f ( x, v % $,t) v = # $ m & where we have added a new variable v to get a pair of coupled first order equations. University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 9
Phase space " x % $ # v & " x% $ # v& " x% " v % $ = $ # v& # f m& Concatenate x and v to make a 6- vector: position in phase space. Taking the time derivative: another 6-vector. A vanilla 1 st -order differential equation. University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 10
Differential equation solver Starting with: Applying Euler s method: And making substitutions: Writing this as an iteration, we have: Again, performs poorly for large Δt. " x% " v % $ = $ # v& # f m& x (t + Δt) = x (t) + Δt x(t) x(t + Δt) = x(t) + Δt x(t) x (t + Δt) = x (t) + Δt v (t) x(t + Δt) = x(t) + Δt f ( x,x,t) m x i+1 = x i + Δt v i v i+1 = v f i i + Δt m University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 11
Verlet Integration Also called Størmer s Method Invented by Delambre (1791), Størmer (1907), Cowell and Crommelin (1909), Verlet (1960) and probably others More stable than Euler s method (timereversible as well) University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 12
Forces Each particle can experience a force which sends it on its merry way. Where do these forces come from? Some examples: Constant (gravity) Position/time dependent (force fields) Velocity-dependent (drag) Combinations (Damped springs) How do we compute the net force on a particle? University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 13
Gravity and viscous drag The force due to gravity is simply: f grav = m G p->f += p->m * F->G Often, we want to slow things down with viscous drag: f drag = k v p->f -= F->k * p->v University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 14
Damped spring Recall the equation for the force due to a spring: We can augment this with damping: f = k spring (Δ x r) [ ] f = k spring (Δ x r) + k damp v The resulting force equations for a spring between two particles become: * f 1 = k spring Δ x $ Δ v ( r) Δ x - + k damp & % Δ x Δ x, )/ +, (./ Δ x f 2 = " x 1 % p f 1 = $ 1 # v 1 & Δ x = x r = rest length 1 " x 2 % p 2 = $ # & v 2 x 2 University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 15
deriveval Clear forces Loop over particles, zero force accumulators Calculate forces Sum all forces into accumulators Return derivatives Loop over particles, return v and f/m " v 1 %" v $ 2 % " v $ n $ # f 1 m 1 &# f 2 m 2 & # f n m n % & Return derivatives to solver 1 Apply forces to particles 3 Clear force accumulators University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 16 2 " $ $ $ f 1 $ # F 1 " $ $ $ f 1 $ # x 1 v 1 x 1 v 1 m 1 m 1 F 2 F 3 F nf % & % & " $ $ $ $ # " $ $ $ $ # x 2 v 2 f 2 x 2 v 2 f 2 m 2 m 2 % " x n % $ v $ n $ f n $ & # & m n % " x n % $ v n $ $ f n $ & # & m n
Bouncing off the walls P N Add-on for a particle simulator For now, just simple point-plane collisions A plane is fully specified by any point P on the plane and its normal N. University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 17
Collision Detection How do you decide when you ve crossed a plane? v P N x University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 18
Normal and tangential velocity To compute the collision response, we need to consider the normal and tangential components of a particle s velocity. v N v P N v vt v N = ( N v ) N v T = v v N University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 19
Collision Response v N k restitution v N v v T v T " v before v " = v T k restitution v N after Without backtracking, the response may not be enough to bring a particle to the other side of a wall. In that case, detection should include a velocity check: University of Texas at Austin CS384G - Computer Graphics Fall 2010 Don Fussell 20