The Jello Cube Assignment 1, CSCI 520
Jernej Barbic, USC
1
The jello cube
Undeformed cube Deformed cube
• The jello cube is elastic,
• Can be bent, stretched, squeezed, …, • Without external forces, it eventually
restores to the original shape. 2
Mass-Spring System
• Several mass points
• Connected to each other by springs
• Springs expand and stretch, exerting force on the mass points
• Very often used to simulate cloth
• Examples:
A 2-particle spring system Another 2-particle example Cloth animation example
3
Newton’s Laws • Newton’s 2nd law:
• Tells you how to compute acceleration, given the force and mass
• Newton’s 3rd law: If object A exerts a force F on object B, then object B is at the same time exerting force -F on A.
4
Single spring
• Obeys the Hook’s law: F = k (x – x0)
• x0 = rest length
• k = spring elasticity
(aka stiffness)
• For x
5
Hook’s law in 3D
• Assume A and B two mass points connected with a spring.
• Let L be the vector pointing from B to A
• Let R be the spring rest length
• Then, the elastic force exerted on A is:
6
1
Damping
• Springs are not completely elastic
• They absorb some of the energy and tend to decrease the velocity of the mass points attached to them
• Damping force depends on the velocity:
• kd = damping coefficient
• kd different than kHook !!
7
Damping in 3D
• Assume A and B two mass points connected with a spring.
• Let L be the vector pointing from B to A
• Then, the damping force exerted on A is:
• Here vA and vB are velocities of points A and B
• Damping force always OPPOSES the motion
8
A network of springs
• Every mass point connected to some other points by springs
• Springs exert forces on mass points
– Hook’s force
– Damping force
• Other forces
– External force field » Gravity
» Electrical or magnetic force field – Collision force
9
How to organize the network (for jello cube)
• To obtain stability, must organize the network of springs in some clever way
• Jello cube is a 8x8x8 mass point network
• 512 discrete points
• Must somehow connect them with springs
Basic network Stable network Network out of control
10
Solution:
Structural, Shear and Bend Springs
• There will be three types of springs:
– Structural – Shear
– Bend
• Each has its own function
11
Structural springs
• Connect every node to its 6 direct neighbours
• Node (i,j,k) connected to
– (i+1,j,k), (i-1,j,k), (i,j-1,k), (i,j+1,k), (i,j,k-1), (i,j,k+1)
(for surface nodes, some of these neighbors might not exists)
• Structural springs establish the basic structure of the jello cube
• The picture shows structural springs for the jello cube. Only springs connecting two surface vertices are shown.
12
2
Shear springs
• Disallow excessive shearing
• Prevent the cube from distorting
• Every node (i,j,k) connected to its diagonal neighbors
• Structural springs = white
• Shear springs = red
Shear spring (red) resists stretching and thus prevents shearing
13
A 3D cube
(if you can’t see it immediately, keep trying)
Bend springs
• Prevent the cube from folding over
• Every node connected to its second neighbor in every direction
(6 connections per node, unless surface node)
• white=structural springs
• yellow=bend springs (shown for a single node only)
Bend spring (yellow) resists contracting and thus prevents bending
14
External force field
• If there is an external force field, add that force to the sum of all the forces on a mass point
• There is one such equation for every mass point and for every moment in time
15
Collision detection
• The movement of the jello cube is limited to a bounding box
• Collision detection easy:
– Check all the vertices if any of them is outside the box
• Inclined plane: – Equation:
– Initially, all points on the same side of the plane
– F(x,y,z)>0 on one side of the plane and F(x,y,z)<0 on the other – Can check all the vertices for this condition
16
Collision response
• When collision happens, must perform some action to prevent the object penetrating even deeper
• Object should bounce away from the colliding object
• Some energy is usually lost during the collision
• Several ways to handle collision response
• We will use the penalty method
17
The penalty method
• When collision happens, put an artificial collision spring at the point of collision, which will push the object backwards and away
from the colliding object
• Collision springs have elasticity and damping, just like ordinary springs
Boundary of colliding object
F
v
18
Collision spring
3
Penalty force
• Direction is normal to the contact surface
• Magnitude is proportional to the amount of penetration
• Collision spring rest length is zero
19
Boundary of colliding object
F
Collision spring
Integrators
• Network of mass points and springs
• Hook’s law, damping law and Newton’s 2nd law give acceleration of every mass point
at any given time
• F = ma
– Hook’s law and damping provide F – ‘m’ is point mass
– The value for a follows from F=ma
• Now, we know acceleration at any given time for any point
• Want to compute the actual motion
20
Integrators (contd.) • Theequationsofmotion:
• x=pointposition,v=pointvelocity,a=pointacceleration • Theydescribethemovementofanysinglemasspoint
• Fhook=sumofallHookforcesonamasspoint
• Fdamping = sum of all damping forces on a mass point
21
Integrators (contd.)
• When we put these equations together for all the mass points, we obtain a system of ordinary differential equations.
• In general, impossible to solve analytically
• Must solve numerically
• Methods to solve such systems numerically are called integrators
• Most widely used: – Euler
– Runge-Kutta 2nd order (aka the midpoint method) (RK2) – Runge-Kutta 4th order (RK4)
22
Integrator design issues
• Numerical stability
– If time step too big, method “explodes”
– t = 0.001 is a good starting choice for the assignment – Euler much more unstable than RK2 or RK4
» Requires smaller time-step, but is simple and hence fast – Euler rarely used in practice
• Numerical accuracy
– Smaller time steps means more stability and accuracy – But also means more computation
• Computational cost
– Tradeoff: accuracy vs computation time
23
Integrators (contd.)
• RK4 is often the method of choice
• RK4 very popular for engineering applications
• The time step should be inversely proportional to the square root of the elasticity k [Courant condition]
• For the assignment, we provide the integrator routines (Euler, RK4)
– void Euler(struct world * jello);
– void RK4(struct world * jello);
– Calls to there routines make the simulation progress one time-step
further.
– State of the simulation stored in ‘jello’ and automatically updated
24
4
Tips
• Use double precision for all calculations (double)
• Do not overstretch the z-buffer
– It has finite precision
– Ok: gluPerspective(90.0,1.0,0.01,1000.0);
– Bad: gluPerspective(90.0,1.0,0.0001,100000.0);
• Choosing the right elasticity and damping parameters is an art
– Trial and error
– For a start, can set the ordinary and collision parameters the
same
• Read the webpage for updates
25
5