Transcript ppt
Notes
cs426-winter-2008
1
Velocity fields
Velocity
field could be a combination of
pre-designed velocity elements
• E.g. explosions, vortices, …
Or
from “noise” (or “Perlin noise”)
• Smooth random number field
• Essentially a Hermite spline from a pseudorandom hash
Or
from a simulation
• Interpolate velocity from a computed grid
• E.g. smoke simulation
cs426-winter-2008
2
Time integration woes
For
rotational motion, immediately find
serious flaw with Forward Euler: instability
Better off using a more accurate, more
stable Runge-Kutta method
• For example: 3rd order
k1 v x
k2 v x 12 tk1
k3 v x 43 tk2
x new x 29 tk1 93 tk2 49 tk3
cs426-winter-2008
3
Second order motion
Real
•
•
•
•
•
particles move due to forces
Newton’s law F=ma
Need to specify force F (gravity, collisions, …)
Divide by particle mass to get acceleration a
Update velocity v by acceleration
Update position x by velocity
v
new
i
F(x i ,v i ,t)
v i t
mi
new
i
x i tv
x
new
i
cs426-winter-2008
4
Basic rendering
Draw
a dot for each particle
But what do you do with several particles per
pixel?
•
•
•
Add: models each point emitting (but not absorbing)
light -- good for sparks, fire, …
More generally, compute depth order, do alphacompositing (and worry about shadows etc.)
Can fit into Reyes very easily
Anti-aliasing
•
Blur edges of particle, make sure blurred to cover at
least a pixel
Particle
with radius: kernel function
cs426-winter-2008
5
Motion blur
One
case where you can actually do exact
solution instead of sampling
Really easy for simple particles
• Instead of a dot, draw a line
•
•
•
(from old position to new position - the shutter
time)
May involve decrease in alpha
More accurately, draw a spline curve
May need to take into account radius as
well…
cs426-winter-2008
6
More detailed particle rendering
Stick a texture (or even a little movie) on each particle:
“sprites” or “billboards”
•
•
Draw a little object for each particle
•
•
Need to keep track of orientation as well, unless spherical
We’ll get into full-fledged rigid bodies later
Draw between particles
•
E.g. a noise function
E.g. a video of real flames
curve (hair), surface (cloth)
Implicit surface wrapped around virtual particles
(e.g. water)
cs426-winter-2008
7