Physically Based Animation
and Modeling
CSE 3541
Matt
Boggus
Overview
•
Newton’s three laws of physics
•
Integrating acceleration to find position
•
Particle Systems
•
Common forces in physically based animation
Mass and Momentum
•
Associate a mass with an object. We assume
that the
mass is constant
•
Define
a vector quantity called momentum (
p
),
which is the product of mass and velocity
Newton’s First Law
•
A body in motion will remain in motion
•
A body at rest will remain at rest, unless acted upon
by some force
•
Without a force acting on it, a moving object travels
in a straight line
Newton’s Second Law
•
Newton’s Second Law says:
•
This relates the kinematic
quantity
of acceleration
to the physical quantity of
force
(Kinematics
–
the
branch of mechanics concerned with the motion of
objects without reference to the forces that cause the
motion)
Newton’s Third Law
•
Newton’s Third Law says that any force that body A applies to
body B will be met by an equal and opposite force from B to A
•
Every
action has an equal and opposite
reaction
–
Do we really want this for games and animation?
Integration
Given acceleration,
compute velocity &
position by integrating
over time
Physics review, equations for:
Zero acceleration
Constant acceleration
v
ave
v
m
f
a
a
v’
Constant acceleration
No acceleration
Pseudocode
for motion within an
animation loop (Euler method)
To update an object at point x with velocity v:
a = (sum all forces acting on x) / m
[
∑vectors scalar: m
]
v = v + a *
dt
[ vectors
:
v
, a scalar:
dt
]
x
= x +
v
*
dt
[ vectors
: x,
v scalar:
dt
]
Pseudocode
for motion within an
animation loop (Euler 2)
To update an object at point x with velocity v:
a = (sum all forces acting on x) / m
[ ∑vectors scalar: m ]
endv
= v + a *
dt
[vectors:
endv
, v, a scalar:
dt
]
x
= x +
𝑛 𝑣
+
𝑣
2
∗
dt
[vectors: x,
endv
, v scalars: 2,
dt
]
v =
endv
[
vectors:
endv
,
v]
Comparison of methods
See spreadsheet example
Particle Systems
•
A collection of a large number of point

like elements
•
Model “fuzzy” or “fluid” things
–
Fire, explosions, smoke, water, sparks, leaves, clouds, fog,
snow, dust, galaxies, special effects
•
Model strands
–
Fur, hair, grass
•
Star Trek 2
–
genesis sequence
(1982)
–
The making of the scene
•
More examples
Lots of small particles

local rules of behavior
Create ‘emergent’ element
Common rules for particle motion:
Do collide with the environment
Do not collide with other
particles
Common rules for particle rendering:
Do not cast shadows on other particles
Might cast shadows on environment
Do not reflect light

usually emit it
Particle Systems
Particle
Example
source
Particle’s birth: constrained and time with
initial color and shading (also randomized)
Particle’s demise, based on
constrained and randomized life span
Collides with environment
but not other particles
Particle’s midlife with
modified color and shading
Particle system implementation
Update Steps
1.
for each particle
1.
if dead, reallocate and assign new attributes
2.
animate particle, modify
attributes
2.
render particles
Use constrained randomization to keep control of
the simulation while adding interest to the visuals
Constrained randomization
particleX
= x + random(

1,1)
particleY
= y + random(

1,1)
particleX
= x
particleY
= y
Particle
(partial example in C#)
class Particle {
Vector3 position;
// Updates
frame to frame
Vector3
velocity
;
// Updates
frame to frame
Vector3
force
;
//
Reset and
recomputed
each
frame
GameObject
geom
;
// other variables for mass, lifetime, …
public
:
void Update(float
deltaTime
);
void
ApplyForce
(Vector3 &f
) {
f
orce.Add
(f); }
void
ResetForce
() { force = Vector3.zero; }
// other methods…
};
Particle emitter (partial example in C#)
using
System.Collections.Generic
;
using
System.Collections
;
class
ParticleEmitter
{
ArrayList
Particles = new
ArrayList
();
public:
void Update(
deltaTime
);
};
Particle
Emitter Update()
Update(float
deltaTime
) {
foreach
(Particle p
in
Particles) {
// …add up all forces acting on p…
}
foreach
(Particle p in Particles){
p.Update
(
deltaTime
);
p.ResetForce
();
}
}
Creating
GameObjects
for(
int
i
= 0;
i
<
numberOfAsteroids
;
i
++){
GameObject
aSphere
=
GameObject.CreatePrimitive
(
PrimitiveType.Sphere
);
aSphere.transform.parent
= transform
;
aSphere.name
= "sphere" +
i.ToString
();
aSphere.transform.position
= new
Vector3(
Random.Range
(

10.0f, 10.0f),
Random.Range
(

10.0f, 10.0f),
Random.Range
(

10.0f, 10.0f));
aSphere.transform.localScale
=
new Vector3(
Random.Range
(0.0f, 1.0f),
Random.Range
(0.0f
, 1.0f),
Random.Range
(0.0f, 1.0f
));
}
Deleting
GameObjects
GameObject
myParticle
;
// …create, animate, etc.
…
Destroy(
myParticle
);
Note: this affects
the
associated
GameObject
;
it does not delete the
variable
myParticle
Lab3
•
Implement a particle system where each
particle is a
GameObject
•
Restrictions
–
No
RigidBodies
–
No
Colliders
–
Minimal credit if you use these for lab3
Forces
–
gravity
Forces
Static friction
Kinetic friction
Viscosity
for small objects
No turbulence
For sphere
Forces
•
Aerodynamic
drag is
complex and difficult to model accurately
•
A
reasonable simplification it to describe the total
aerodynamic drag force on an object using:
•
Where
ρ is the density of the air (or
water, mud, etc.),
c
d
is the
coefficient of drag for the object, a is the cross sectional area
of the object, and
e
is a unit vector in the opposite direction
of the
velocity
–
In short
–
create a scaled vector in the opposite direction of velocity
Forces
–
spring

damper
Hooke’s Law
Damping example
Animation from http
://
www.acs.psu.edu/drussell/Demos/SHO/damp.html
Spring

mass

damper system
f

f
Springs
•
At rest length
l
, the force
f
is zero
•
Points are located at r
1
and r
2
[scalar displacement]
[direction of displacement]
Spring

mass system
V
1
V
2
V
3
E
12
E
23
E
31
Example
–
Jello
cube
http
://www.youtube.com/watch?v=b_8ci0ZW4vI
Spring
mesh
–
properties for cloth
Each edge is a spring

damper
Angular springs connect every
other mass point
Each vertex is a point mass
Global forces: gravity, wind
Diagonal springs for rigidity
Example
http
://www.youtube.com/watch?v=ib1vmRDs8Vw
Virtual springs
–
soft constraints
Comments 0
Log in to post a comment