Physically based animationx

exhaustedcrumMechanics

Oct 24, 2013 (3 years and 11 months ago)

79 views

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