particle systems...particle systems can be used to simulate all sorts of physical phenomena: 4...
TRANSCRIPT
![Page 1: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/1.jpg)
1
Particle Systems
Brian CurlessCSE 457
Spring 2016
![Page 2: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/2.jpg)
2
Reading
Required:
Witkin, Particle System Dynamics, SIGGRAPH ’01 course notes on Physically Based Modeling. (online handout)
Witkin and Baraff, Differential Equation Basics, SIGGRAPH ’01 course notes on Physically Based Modeling. (online handout)
Optional
Hockney 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.
![Page 3: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/3.jpg)
3
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:
![Page 4: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/4.jpg)
4
Particle in a flow field
We begin with a single particle with:
Position,
Velocity,
Suppose the velocity is actually dictated by a driving function, a vector flow field, g:
If a particle starts at some point in that flow field, how should it move?
( , )tx g x
/
/
dx dtd
dy dtdt
xv x
x
y
x
y
x
xg(x,t)
![Page 5: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/5.jpg)
5
Diff eqs and integral curves
The equation
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:
This is called an initial value problem and the solution is called an integral curve.
Start Here
( , )tx g x
![Page 6: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/6.jpg)
6
Euler’s method
One simple approach is to choose a time step, t, and take linear steps along the flow:
Writing as a time iteration:
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., adaptive timesteps, Runge-Kutta, and implicit integration.
( ) ( ) ( )
( ) ( )
( ) ( ( ), )
t t t t tt
t t t
t t t t
xx x x x
x x
x g x
1i i it x x g ( , )i i t i tg g xwith
![Page 7: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/7.jpg)
7
Particle in a force field
Now consider a particle in a force field f.
In this case, the particle has:
Mass, m Acceleration,
The particle obeys Newton’s law:
So, given a force, we can solve for the acceleration:
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:
( , , )t
m
f x xx
m m f a x
2
2d d
dt dt
va x v
x
m
fx
![Page 8: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/8.jpg)
8
This equation:
is a second order differential equation.
Our solution method, though, worked on first order differential equations.
We can rewrite the second order equation as:
where we substitute in v and its derivative to get a pair of coupled first order equations.
Second order equations
or ( , , ) ( , , )t t
m m
x v vx
f x v f x vvv
( , , )t
m
f x xx
![Page 9: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/9.jpg)
9
Phase space
Concatenate x and v to make a 6-vector: position in phase space.
Taking the time derivative: another 6-vector.
A vanilla 1st-order differential equation.
x
v
/ m
x v
v f
x
v
![Page 10: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/10.jpg)
10
Differential equation solver
Applying Euler’s method:
( ) ( ) ( )
( ) ( ) ( )
t t t t t
t t t t t
x x x
x x x
Again, performs poorly for large t.
/ m
x x v
v x f
1
1
i i i
ii i
t
tm
x x v
fv v
( ) ( ) ( )
( ( ), ( ), )( ) ( )
t t t t t
t t tt t t t
m
x x v
f x vv v
And making substitutions:
Writing this as an iteration, we have:
Starting with:
, ,i i i tf f x vwith
![Page 11: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/11.jpg)
11
Particle structure
m
x
v
f
position
velocity
force accumulator
mass
Position in phase space
How do we represent a particle?
![Page 12: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/12.jpg)
12
Single particle solver interface
m
x
v
f
x
v
/ m
v
f
6getDim
derivEval
getState
setState
![Page 13: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/13.jpg)
13
Particle systems
particles n time
In general, we have a particle system consisting of nparticles to be managed over time:
1 2
1 2
1 2
1 2
n
n
n
nm m m
x x x
v v v
f f f
![Page 14: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/14.jpg)
14
Particle system solver interface
1 1 2 2
1 21 2
1 2
6
n n
nn
n
n
m m m
x v x v x v
f f fv v v
derivEval
get/setStategetDim
For n particles, the solver interface now looks like:
particles n time
![Page 15: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/15.jpg)
15
Particle system diff. eq. solver
We can solve the evolution of a particle system again using the Euler method:
11 1 1
11 1 1 1
1
1
/
/
i i i
i i i
i i in n n
i i in n n n
m
t
m
x x v
v v f
x x v
v v f
![Page 16: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/16.jpg)
16
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) N-ary (springs)
How do we compute the net force on a particle?
![Page 17: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/17.jpg)
17
Force objects are black boxes that point to the particles they influence and add in their contributions.
We can now visualize the particle system with force objects:
Particle systems with forces
particles n time forces
F2 Fnf
nf
1 2
1 2
1 2
1 2
n
n
n
nm m m
x x x
v v v
f f f
F1
![Page 18: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/18.jpg)
18
Gravity and viscous drag
grav mf G
p->f += p->m * F->G
drag dragk f v
p->f -= F->k * p->v
The force due to gravity is simply:
Often, we want to slow things down with viscous drag:
![Page 19: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/19.jpg)
19
A spring is a simple examples of an “N-ary” force. Recall the equation for the force due to a 1D spring:
With damping:
In 2D or 3D, we get:
Note: stiff spring systems can be very unstable under Euler integration. Simple solutions include heavy damping (may not look good), tiny time steps (slow), or better integration (Runge-Kutta is straightforward).
Damped spring
( )springf k x r
[ ( ) ]spring dampf k x r k v
1
2 1
ˆ ˆ( )spring dampf k r k
f f
x v x x
1 2
1 2
ˆ
x x x
xx
x
v v v
r 11
1
p
x
v
22
2
p
x
v
x
r = rest length
![Page 20: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/20.jpg)
20
1 2
1 2
1 2
1 2
0 0 0
n
n
n
nm m m
x x x
v v v
f f f
derivEval
1. Clear forces• Loop over particles, zero force
accumulators
2. Calculate forces• Sum all forces into accumulators
3. Return derivatives• Loop over particles, return v and f/m
1 2
1 2
1 2
n
n
nm m m
v v v
f f f
Apply forcesto particles
Clear force accumulators1
2
3 Return derivativesto solver
1 2
1 2
1 2
1 2
n
n
n
nm m m
x x x
v v v
f f f
F2 F3 FnfF1
![Page 21: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/21.jpg)
21
Bouncing off the walls
Handling collisions is a useful add-on for a particle simulator.
For now, we’ll just consider simple point-plane collisions.
A plane is fully specified by any point P on the plane and its normal N.
(Let’s assume N is normalized, ||N|| = 1.)
N
Pv
x
![Page 22: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/22.jpg)
22
Collision Detection
How do you decide when you’ve made exact contact with the plane?
N
Pv
x
![Page 23: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/23.jpg)
23
Normal and tangential velocity
( )N
T N
v N v N
v v v
To compute the collision response, we need to consider the normal and tangential components of a particle’s velocity.
N
P
v
x
Nv v
Tv
![Page 24: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/24.jpg)
24
Collision Response
before after
T restitution Nk v v v
v’resitution Nk v
Tv
The response to collision is then to immediately replace the current velocity with a new velocity:
The particle will then move according to this velocity in the next timestep.
Nv v
Tv
![Page 25: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/25.jpg)
25
Collision without contact
In general, we don’t sample moments in time when particles are in exact contact with the surface.
There are a variety of ways to deal with this problem.
The most expensive is backtracking: determine if a collision must have occurred, and then roll back the simulation to the moment of contact.
A simple alternative is to determine if a collision must have occurred in the past, and then pretend that you’re currently in exact contact.
![Page 26: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/26.jpg)
26
Very simple collision response
How do you decide when you’ve had a collision during a timestep?
A problem with this approach is that particles will disappear under the surface. We can reduce this problem by essentially offsetting the surface:
Also, 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:
N
Pv1
x1x2
x3v2
v3
![Page 27: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/27.jpg)
27
More complicated collision response
Another solution is to modify the update scheme to:
detect the future time and point of collision
reflect the particle within the time-step
N
Pv
x
![Page 28: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/28.jpg)
28
Particle-sphere collision
Suppose a particle collides with a sphere :
How would we detect this collision?
What normal should we use for collision response?
![Page 29: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/29.jpg)
29
Particle frame of reference
Let’s say we had our robot arm example and we wanted to launch particles from its tip.
How would we go about starting the particles from the right place?
First, we have to look at the coordinate systems in the OpenGL pipeline…
![Page 30: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/30.jpg)
30
The OpenGL geometry pipeline
![Page 31: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/31.jpg)
31
Projection and modelview matrices
Any piece of geometry will get transformed by a sequence of matrices before drawing:
p’ = Mproject Mview Mmodel p
The first matrix is OpenGL’s GL_PROJECTION matrix.
The second two matrices, taken as a product, are maintained on OpenGL’s GL_MODELVIEW stack:
Mmodelview = Mview Mmodel
![Page 32: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/32.jpg)
32
Robot arm code, revisited
Recall that the code for the robot arm looked something like:
glRotatef( theta, 0.0, 1.0, 0.0 );
base(h1);
glTranslatef( 0.0, h1, 0.0 );
glRotatef( phi, 0.0, 0.0, 1.0 );
upper_arm(h2);
glTranslatef( 0.0, h2, 0.0 );
glRotatef( psi, 0.0, 0.0, 1.0 );
lower_arm(h3);
All of the GL calls here modify the modelview matrix.
Note that even before these calls are made, the modelview matrix has been modified by the viewing transformation, Mview.
![Page 33: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/33.jpg)
33
Computing the particle launch point
To find the world coordinate position of the end of the robot arm, you need to follow a series of steps:
1. Figure out what Mview is before drawing your model.
2. Draw your model and add one more transformation to the tip of the robot arm.
glTranslatef( 0.0, h3, 0.0 );
3. Compute
4. Transform a point at the origin by the resulting matrix.
Now you’re ready to launch a particle from that last computed point!
Vec3f particleOrigin = particleXform * Vec3f(0,0,0);
Mat4f particleXform = getWorldXform(Mview);
Mat4f Mview = glGetModelViewMatrix();
-1model view modelviewM M M
![Page 34: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/34.jpg)
34
Summary
What you should take away from this lecture:
The meanings of all the boldfaced terms Euler method for solving differential equations Combining particles into a particle system Physics of a particle system Various forces acting on a particle Simple collision detection with a plane and a
sphere How to hook your particle system into the
coordinate frame of your model
![Page 35: Particle Systems...Particle systems can be used to simulate all sorts of physical phenomena: 4 Particle in a flow field We begin with a single particle with: Position, Velocity, Suppose](https://reader036.vdocuments.mx/reader036/viewer/2022081616/5ff8184cf23cbf0a045e7783/html5/thumbnails/35.jpg)
35