Animation CS 551 / 651

41
Animation CS 551 / 651 Rigid-body Simulation Rigid-body Simulation Mirtich Paper Mirtich Paper Mirtich, 2000

description

Animation CS 551 / 651. Rigid-body Simulation Mirtich Paper. Mirtich, 2000. Timewarp Rigid Body Simulation. Presented at SIGGRAPH 2000 Brian Mirtich MERL, A Mitsubishi Electric Research Lab (Cambridge, MA). What stages are in a simulation?. Integration Collision checking (impacts) - PowerPoint PPT Presentation

Transcript of Animation CS 551 / 651

Page 1: Animation CS 551 / 651

AnimationCS 551 / 651

Rigid-body SimulationRigid-body SimulationMirtich PaperMirtich Paper

Rigid-body SimulationRigid-body SimulationMirtich PaperMirtich Paper

Mirtich, 2000

Page 2: Animation CS 551 / 651

Timewarp Rigid Body Simulation

Presented at SIGGRAPH 2000Presented at SIGGRAPH 2000

Brian MirtichBrian Mirtich

• MERL, A Mitsubishi Electric Research Lab MERL, A Mitsubishi Electric Research Lab (Cambridge, MA)(Cambridge, MA)

Presented at SIGGRAPH 2000Presented at SIGGRAPH 2000

Brian MirtichBrian Mirtich

• MERL, A Mitsubishi Electric Research Lab MERL, A Mitsubishi Electric Research Lab (Cambridge, MA)(Cambridge, MA)

Page 3: Animation CS 551 / 651

What stages are in a simulation?

• IntegrationIntegration

• Collision checking (impacts)Collision checking (impacts)

• Force computationForce computation

• Constraints (non penetration)Constraints (non penetration)

• ControlControl

– What is this?What is this?

• IntegrationIntegration

• Collision checking (impacts)Collision checking (impacts)

• Force computationForce computation

• Constraints (non penetration)Constraints (non penetration)

• ControlControl

– What is this?What is this?

Page 4: Animation CS 551 / 651

How much time do they take?

What’s so slow?What’s so slow?

Why do multibodies exacerbate this?Why do multibodies exacerbate this?

What’s so slow?What’s so slow?

Why do multibodies exacerbate this?Why do multibodies exacerbate this?

Page 5: Animation CS 551 / 651

Big Idea

Simulations are slowSimulations are slow

• What part is so slow???What part is so slow???

Simulations are discontinuousSimulations are discontinuous

• What’s the source of discontinuities?What’s the source of discontinuities?

– Collisions, contacts, rollingCollisions, contacts, rolling sliding, etc. sliding, etc.

But not discontinuities are unpredictable and only But not discontinuities are unpredictable and only affect parts of simulationaffect parts of simulation

Simulations are slowSimulations are slow

• What part is so slow???What part is so slow???

Simulations are discontinuousSimulations are discontinuous

• What’s the source of discontinuities?What’s the source of discontinuities?

– Collisions, contacts, rollingCollisions, contacts, rolling sliding, etc. sliding, etc.

But not discontinuities are unpredictable and only But not discontinuities are unpredictable and only affect parts of simulationaffect parts of simulation

Page 6: Animation CS 551 / 651

A simple game of Pong

What goes on in this sim?What goes on in this sim?

• IntegrationIntegration

• Collision checkingCollision checking

• Collision resolutionCollision resolution

Would this scale well if balls didn’t collide with Would this scale well if balls didn’t collide with each other?each other?

What goes on in this sim?What goes on in this sim?

• IntegrationIntegration

• Collision checkingCollision checking

• Collision resolutionCollision resolution

Would this scale well if balls didn’t collide with Would this scale well if balls didn’t collide with each other?each other?

Page 7: Animation CS 551 / 651

General rigid body simulator

• Nontrivial geometriesNontrivial geometries

• All pairs can potentially collideAll pairs can potentially collide

• Second-order physics equations of motionSecond-order physics equations of motion

• Could be deployed on multiprocessor (simulation farm)Could be deployed on multiprocessor (simulation farm)

• Nontrivial geometriesNontrivial geometries

• All pairs can potentially collideAll pairs can potentially collide

• Second-order physics equations of motionSecond-order physics equations of motion

• Could be deployed on multiprocessor (simulation farm)Could be deployed on multiprocessor (simulation farm)

Page 8: Animation CS 551 / 651

Discontinuities

When do they occur?When do they occur?

• When the state or equations of motion changeWhen the state or equations of motion change

– CollisionsCollisions

– New contactsNew contacts

– Changing from rolling to sliding dynamicsChanging from rolling to sliding dynamics

When do they occur?When do they occur?

• When the state or equations of motion changeWhen the state or equations of motion change

– CollisionsCollisions

– New contactsNew contacts

– Changing from rolling to sliding dynamicsChanging from rolling to sliding dynamics

Page 9: Animation CS 551 / 651

Discontinuities

From From §2.1 §2.1 Root finding method localizes the Root finding method localizes the exact moment of a discontinuityexact moment of a discontinuity

• What is a root?What is a root?

• How do we find the roots?How do we find the roots?

From From §2.1 §2.1 Root finding method localizes the Root finding method localizes the exact moment of a discontinuityexact moment of a discontinuity

• What is a root?What is a root?

• How do we find the roots?How do we find the roots?

Page 10: Animation CS 551 / 651

Newton-Raphson

Find the zero of an equation (where it Find the zero of an equation (where it crosses the x-axis)crosses the x-axis)

– If pIf pnn is close to p is close to pn-1n-1

then return pthen return pnn

• else set pelse set pn-1n-1 = p = pnn and repeat and repeat

Find the zero of an equation (where it Find the zero of an equation (where it crosses the x-axis)crosses the x-axis)

– If pIf pnn is close to p is close to pn-1n-1

then return pthen return pnn

• else set pelse set pn-1n-1 = p = pnn and repeat and repeat

Page 11: Animation CS 551 / 651

Newton-Raphson

Why setWhy set

• y-intercept equation of line: y = mx + by-intercept equation of line: y = mx + b

• let y-intercept, b = f (plet y-intercept, b = f (pn-1n-1))

• let slope, m = f’(plet slope, m = f’(pn-1n-1))

• we want to find x-value where y-value = 0we want to find x-value where y-value = 0

– let y = 0let y = 0

• 0 = f’(p0 = f’(pn-1n-1) * x + f(p) * x + f(pn-1n-1))

– solve for x: -f(psolve for x: -f(pn-1n-1) / f’(p) / f’(pn-1n-1))

Why setWhy set

• y-intercept equation of line: y = mx + by-intercept equation of line: y = mx + b

• let y-intercept, b = f (plet y-intercept, b = f (pn-1n-1))

• let slope, m = f’(plet slope, m = f’(pn-1n-1))

• we want to find x-value where y-value = 0we want to find x-value where y-value = 0

– let y = 0let y = 0

• 0 = f’(p0 = f’(pn-1n-1) * x + f(p) * x + f(pn-1n-1))

– solve for x: -f(psolve for x: -f(pn-1n-1) / f’(p) / f’(pn-1n-1))

Page 12: Animation CS 551 / 651

Newton-Raphson

Be aware that Newton-Raphson could set pBe aware that Newton-Raphson could set pnn

to a value not defined by curveto a value not defined by curve

f’(pf’(pn-1n-1) could be 0 (cannot divide by 0)) could be 0 (cannot divide by 0)

Be aware that Newton-Raphson could set pBe aware that Newton-Raphson could set pnn

to a value not defined by curveto a value not defined by curve

f’(pf’(pn-1n-1) could be 0 (cannot divide by 0)) could be 0 (cannot divide by 0)

Page 13: Animation CS 551 / 651

Discontinuities

What trouble do they cause?What trouble do they cause?

• Integrator must be stopped and restarted with new Integrator must be stopped and restarted with new state, forces, or equationsstate, forces, or equations

• Main control loop constantly checking for Main control loop constantly checking for discontinuities so appropriate handling takes placediscontinuities so appropriate handling takes place

Two common methodsTwo common methods

• Retroactive detection and conservative Retroactive detection and conservative advancementadvancement

What trouble do they cause?What trouble do they cause?

• Integrator must be stopped and restarted with new Integrator must be stopped and restarted with new state, forces, or equationsstate, forces, or equations

• Main control loop constantly checking for Main control loop constantly checking for discontinuities so appropriate handling takes placediscontinuities so appropriate handling takes place

Two common methodsTwo common methods

• Retroactive detection and conservative Retroactive detection and conservative advancementadvancement

Page 14: Animation CS 551 / 651

A general simulation problem

§3 references DES, Discrete Event §3 references DES, Discrete Event SimulationsSimulations

• Much more than graphics simulations encounter Much more than graphics simulations encounter these challengesthese challenges

• Many simulations are represented as DES and thus Many simulations are represented as DES and thus this technology is relevantthis technology is relevant

§3 references DES, Discrete Event §3 references DES, Discrete Event SimulationsSimulations

• Much more than graphics simulations encounter Much more than graphics simulations encounter these challengesthese challenges

• Many simulations are represented as DES and thus Many simulations are represented as DES and thus this technology is relevantthis technology is relevant

Page 15: Animation CS 551 / 651

Retroactive Detection

Catch discontinuities after the happenCatch discontinuities after the happen

• Detect when two objects go through one anotherDetect when two objects go through one another

• Use root finding to detect exact time of impactUse root finding to detect exact time of impact

Roll back the clock to time of impactRoll back the clock to time of impact

• All objects or just some?All objects or just some?

Continue simulation only up to impact Continue simulation only up to impact

Catch discontinuities after the happenCatch discontinuities after the happen

• Detect when two objects go through one anotherDetect when two objects go through one another

• Use root finding to detect exact time of impactUse root finding to detect exact time of impact

Roll back the clock to time of impactRoll back the clock to time of impact

• All objects or just some?All objects or just some?

Continue simulation only up to impact Continue simulation only up to impact

Page 16: Animation CS 551 / 651

Retroactive Detection

What’s bad about this algorithm?What’s bad about this algorithm?

• You’re repeating workYou’re repeating work

– Simulate, back up, simulate againSimulate, back up, simulate again

• Additional collisions may be encountered during subsequent Additional collisions may be encountered during subsequent smaller simulation timesteps (and others won’t take place after smaller simulation timesteps (and others won’t take place after all)all)

• Synchronization requires repeated simulation of all objects if Synchronization requires repeated simulation of all objects if they are involved in collision or notthey are involved in collision or not

Doesn’t scale well in number of discontinuitiesDoesn’t scale well in number of discontinuities

What’s bad about this algorithm?What’s bad about this algorithm?

• You’re repeating workYou’re repeating work

– Simulate, back up, simulate againSimulate, back up, simulate again

• Additional collisions may be encountered during subsequent Additional collisions may be encountered during subsequent smaller simulation timesteps (and others won’t take place after smaller simulation timesteps (and others won’t take place after all)all)

• Synchronization requires repeated simulation of all objects if Synchronization requires repeated simulation of all objects if they are involved in collision or notthey are involved in collision or not

Doesn’t scale well in number of discontinuitiesDoesn’t scale well in number of discontinuities

Page 17: Animation CS 551 / 651

Conservative Advancement

Don’t simulate past discontinuitiesDon’t simulate past discontinuities

• Heuristics predict future discontinuities and impending Heuristics predict future discontinuities and impending events are stored in a priority queueevents are stored in a priority queue

Upon approaching time of event in priority Upon approaching time of event in priority queue, take small steps queue, take small steps

Don’t simulate past discontinuitiesDon’t simulate past discontinuities

• Heuristics predict future discontinuities and impending Heuristics predict future discontinuities and impending events are stored in a priority queueevents are stored in a priority queue

Upon approaching time of event in priority Upon approaching time of event in priority queue, take small steps queue, take small steps

Page 18: Animation CS 551 / 651

Conservative Advancement

What’s bad about this method?What’s bad about this method?

• Conservative, but slow as number of discontinuities Conservative, but slow as number of discontinuities increasesincreases

– All simulated objects move forward at small All simulated objects move forward at small timesteptimestep

• Difficult to compute tight bounds on discontinuitiesDifficult to compute tight bounds on discontinuities

What’s bad about this method?What’s bad about this method?

• Conservative, but slow as number of discontinuities Conservative, but slow as number of discontinuities increasesincreases

– All simulated objects move forward at small All simulated objects move forward at small timesteptimestep

• Difficult to compute tight bounds on discontinuitiesDifficult to compute tight bounds on discontinuities

Page 19: Animation CS 551 / 651

Timewarp Algorithm

Derived from a 1985 paper by David Derived from a 1985 paper by David JeffersonJefferson

• Be optimisticBe optimistic

– Each object simulates as quickly as possibleEach object simulates as quickly as possible

• Be responsiveBe responsive

– If an object is informed of an event in the past, it If an object is informed of an event in the past, it must reset its state to that previous timemust reset its state to that previous time

Derived from a 1985 paper by David Derived from a 1985 paper by David JeffersonJefferson

• Be optimisticBe optimistic

– Each object simulates as quickly as possibleEach object simulates as quickly as possible

• Be responsiveBe responsive

– If an object is informed of an event in the past, it If an object is informed of an event in the past, it must reset its state to that previous timemust reset its state to that previous time

Page 20: Animation CS 551 / 651

What is STATE?

What is the state in the rigid body sims?What is the state in the rigid body sims?What is the state in the rigid body sims?What is the state in the rigid body sims?

Page 21: Animation CS 551 / 651

Timewarp

Multiple processesMultiple processes

• Each models part of the systemEach models part of the system

• Each has its own “time” called Local Virtual Time (LVT)Each has its own “time” called Local Virtual Time (LVT)

• Process clocks are not synchronizedProcess clocks are not synchronized

Multiple processesMultiple processes

• Each models part of the systemEach models part of the system

• Each has its own “time” called Local Virtual Time (LVT)Each has its own “time” called Local Virtual Time (LVT)

• Process clocks are not synchronizedProcess clocks are not synchronized

Page 22: Animation CS 551 / 651

Timewarp

Message PassingMessage Passing

• When a process experiences an eventWhen a process experiences an event

– message is sent to all processes with timestamp = LVT of message is sent to all processes with timestamp = LVT of sending processsending process

• When a process receives a messageWhen a process receives a message

– If (message time > recipient’s LVT)If (message time > recipient’s LVT)

² Message is placed on time-based queueMessage is placed on time-based queue

² Process will advance clock to next event on queueProcess will advance clock to next event on queue

– What if (message time < recipient’s LVT)?What if (message time < recipient’s LVT)?

Message PassingMessage Passing

• When a process experiences an eventWhen a process experiences an event

– message is sent to all processes with timestamp = LVT of message is sent to all processes with timestamp = LVT of sending processsending process

• When a process receives a messageWhen a process receives a message

– If (message time > recipient’s LVT)If (message time > recipient’s LVT)

² Message is placed on time-based queueMessage is placed on time-based queue

² Process will advance clock to next event on queueProcess will advance clock to next event on queue

– What if (message time < recipient’s LVT)?What if (message time < recipient’s LVT)?

Page 23: Animation CS 551 / 651

Rollback

Occurs when a recipient has simulated Occurs when a recipient has simulated “past” the time at which another process “past” the time at which another process has generated an eventhas generated an event

• Go back in time (how?)Go back in time (how?)

• Put all processed events back on queuePut all processed events back on queue

• ““unsend” events sent to other processesunsend” events sent to other processes

– For each message sent, an antimessage is stored For each message sent, an antimessage is stored on a queue that can be easily flushedon a queue that can be easily flushed

Occurs when a recipient has simulated Occurs when a recipient has simulated “past” the time at which another process “past” the time at which another process has generated an eventhas generated an event

• Go back in time (how?)Go back in time (how?)

• Put all processed events back on queuePut all processed events back on queue

• ““unsend” events sent to other processesunsend” events sent to other processes

– For each message sent, an antimessage is stored For each message sent, an antimessage is stored on a queue that can be easily flushedon a queue that can be easily flushed

Page 24: Animation CS 551 / 651

Rollback

OverheadOverhead• Keeping track of previous statesKeeping track of previous states

• Keeping track of processed eventsKeeping track of processed events

• Keeping track of submitted eventsKeeping track of submitted events

Global Virtual Time (GVT)Global Virtual Time (GVT)• The minimum of all LVTs and safe times (why?)The minimum of all LVTs and safe times (why?)

– All states before GVT can be purgedAll states before GVT can be purged

• Monotonically increasingMonotonically increasing

OverheadOverhead• Keeping track of previous statesKeeping track of previous states

• Keeping track of processed eventsKeeping track of processed events

• Keeping track of submitted eventsKeeping track of submitted events

Global Virtual Time (GVT)Global Virtual Time (GVT)• The minimum of all LVTs and safe times (why?)The minimum of all LVTs and safe times (why?)

– All states before GVT can be purgedAll states before GVT can be purged

• Monotonically increasingMonotonically increasing

Page 25: Animation CS 551 / 651

Timewarp for rigid body sim

• Every simulated body is a processEvery simulated body is a process

• The state = position & velocityThe state = position & velocity

• Global event queue stores all bodies’ eventsGlobal event queue stores all bodies’ events

– Event = timestamp and list of affected bodiesEvent = timestamp and list of affected bodies

• Main loopMain loop

– Pull front item from event queuePull front item from event queue

– Simulate affected bodies to that timeSimulate affected bodies to that time

This can be put on a uniprocessorThis can be put on a uniprocessor

• Every simulated body is a processEvery simulated body is a process

• The state = position & velocityThe state = position & velocity

• Global event queue stores all bodies’ eventsGlobal event queue stores all bodies’ events

– Event = timestamp and list of affected bodiesEvent = timestamp and list of affected bodies

• Main loopMain loop

– Pull front item from event queuePull front item from event queue

– Simulate affected bodies to that timeSimulate affected bodies to that time

This can be put on a uniprocessorThis can be put on a uniprocessor

Page 26: Animation CS 551 / 651

Types of events

Collision CheckCollision Check• Between pairs of bodiesBetween pairs of bodies

Group CheckGroup Check• Collision check for contacting bodiesCollision check for contacting bodies

• Splitting groups of bodies when no longer contactingSplitting groups of bodies when no longer contacting

RedrawRedraw• At every new rendered frame, copy positions to bufferAt every new rendered frame, copy positions to buffer

CallbackCallback• User-defined functions to be executedUser-defined functions to be executed

Collision CheckCollision Check• Between pairs of bodiesBetween pairs of bodies

Group CheckGroup Check• Collision check for contacting bodiesCollision check for contacting bodies

• Splitting groups of bodies when no longer contactingSplitting groups of bodies when no longer contacting

RedrawRedraw• At every new rendered frame, copy positions to bufferAt every new rendered frame, copy positions to buffer

CallbackCallback• User-defined functions to be executedUser-defined functions to be executed

Page 27: Animation CS 551 / 651

Collisions

Safe-timeSafe-time

• Each body keeps track of the last time it was known Each body keeps track of the last time it was known not to be in collision with other bodiesnot to be in collision with other bodies

• This helps limit how far a body must roll back upon This helps limit how far a body must roll back upon detection of a collisiondetection of a collision

• Safe-time is included in collision/group check eventsSafe-time is included in collision/group check events

• Upon collision checking, safe-time is updatedUpon collision checking, safe-time is updated

Safe-timeSafe-time

• Each body keeps track of the last time it was known Each body keeps track of the last time it was known not to be in collision with other bodiesnot to be in collision with other bodies

• This helps limit how far a body must roll back upon This helps limit how far a body must roll back upon detection of a collisiondetection of a collision

• Safe-time is included in collision/group check eventsSafe-time is included in collision/group check events

• Upon collision checking, safe-time is updatedUpon collision checking, safe-time is updated

Page 28: Animation CS 551 / 651

Collisions (A collides with B)

• Vertical connections join post-collision statesVertical connections join post-collision states

• Gray states are new states after A-B collision check Gray states are new states after A-B collision check eventevent

• Vertical connections join post-collision statesVertical connections join post-collision states

• Gray states are new states after A-B collision check Gray states are new states after A-B collision check eventevent

Page 29: Animation CS 551 / 651

Collision (between A and B)

Page 30: Animation CS 551 / 651

Multibodies

Jointed (articulated) bodies like a humanJointed (articulated) bodies like a human

All bodies must be treated in unisonAll bodies must be treated in unison

Easily integrated into their systemEasily integrated into their system

Jointed (articulated) bodies like a humanJointed (articulated) bodies like a human

All bodies must be treated in unisonAll bodies must be treated in unison

Easily integrated into their systemEasily integrated into their system

Page 31: Animation CS 551 / 651

Contact Groups

Bodies in persistent contactBodies in persistent contact

• Simulated as a unitSimulated as a unit

• Membership of group is dynamicMembership of group is dynamic

• Complicated state keeping so, Complicated state keeping so, upon rollback, a body can be upon rollback, a body can be detached from its group and detached from its group and simulatedsimulated

Bodies in persistent contactBodies in persistent contact

• Simulated as a unitSimulated as a unit

• Membership of group is dynamicMembership of group is dynamic

• Complicated state keeping so, Complicated state keeping so, upon rollback, a body can be upon rollback, a body can be detached from its group and detached from its group and simulatedsimulated

Page 32: Animation CS 551 / 651

Collision checks

Active PairsActive Pairs

• The set of all bodies that must be checked for The set of all bodies that must be checked for potential collisionspotential collisions

– We want to keep this set smallWe want to keep this set small

Active PairsActive Pairs

• The set of all bodies that must be checked for The set of all bodies that must be checked for potential collisionspotential collisions

– We want to keep this set smallWe want to keep this set small

Page 33: Animation CS 551 / 651

Active Pairs

Looking for collisionsLooking for collisions• Each body has an Each body has an axis-alignedaxis-aligned bounding box bounding box

• For each timestep between GVT and LVTFor each timestep between GVT and LVT

– Record location of bounding boxRecord location of bounding box

• Compute bounding box (swept volume) of all Compute bounding box (swept volume) of all bounding boxes over timebounding boxes over time

– Using six heaps for max/min {x, y, z}Using six heaps for max/min {x, y, z}

– GVT increment causes volume to shrinkGVT increment causes volume to shrink

Looking for collisionsLooking for collisions• Each body has an Each body has an axis-alignedaxis-aligned bounding box bounding box

• For each timestep between GVT and LVTFor each timestep between GVT and LVT

– Record location of bounding boxRecord location of bounding box

• Compute bounding box (swept volume) of all Compute bounding box (swept volume) of all bounding boxes over timebounding boxes over time

– Using six heaps for max/min {x, y, z}Using six heaps for max/min {x, y, z}

– GVT increment causes volume to shrinkGVT increment causes volume to shrink

Page 34: Animation CS 551 / 651

Looking for collisions

If swept volumes do not intersectIf swept volumes do not intersect

• Collision free between [GVT, tCollision free between [GVT, tminmin (A, B)] (A, B)]

– Depending on LVT of A and BDepending on LVT of A and B

• A and B not an active pairA and B not an active pair

If swept volumes do not intersectIf swept volumes do not intersect

• Collision free between [GVT, tCollision free between [GVT, tminmin (A, B)] (A, B)]

– Depending on LVT of A and BDepending on LVT of A and B

• A and B not an active pairA and B not an active pair

Page 35: Animation CS 551 / 651

Looking for collisions

If newest timestep for B causes overlapping If newest timestep for B causes overlapping swept volume with Aswept volume with A

• Collision check at time tCollision check at time tminmin (A, B) (A, B)

– B, before integration (last known free time)B, before integration (last known free time)

• Rollback will resolve collisionsRollback will resolve collisions

If newest timestep for B causes overlapping If newest timestep for B causes overlapping swept volume with Aswept volume with A

• Collision check at time tCollision check at time tminmin (A, B) (A, B)

– B, before integration (last known free time)B, before integration (last known free time)

• Rollback will resolve collisionsRollback will resolve collisions

Page 36: Animation CS 551 / 651

Results

ApplicationsApplications

• Atoms: 200 spheres and 100 water molecules in Atoms: 200 spheres and 100 water molecules in divided boxdivided box

• Cars: 4 multibody vehicles and 400 pendulaCars: 4 multibody vehicles and 400 pendula

• Robots: 20 eight-link manipulators throwing blocksRobots: 20 eight-link manipulators throwing blocks

• Avalanche: 300 rocks tumbling down mountainsideAvalanche: 300 rocks tumbling down mountainside

ApplicationsApplications

• Atoms: 200 spheres and 100 water molecules in Atoms: 200 spheres and 100 water molecules in divided boxdivided box

• Cars: 4 multibody vehicles and 400 pendulaCars: 4 multibody vehicles and 400 pendula

• Robots: 20 eight-link manipulators throwing blocksRobots: 20 eight-link manipulators throwing blocks

• Avalanche: 300 rocks tumbling down mountainsideAvalanche: 300 rocks tumbling down mountainside

Page 37: Animation CS 551 / 651

Results

• Note average integration step vs. time between discontinuitiesNote average integration step vs. time between discontinuities

– Look at cars vs. robotsLook at cars vs. robots

• Note average integration step vs. time between discontinuitiesNote average integration step vs. time between discontinuities

– Look at cars vs. robotsLook at cars vs. robots

Page 38: Animation CS 551 / 651

Results

Atoms for 2 secondsAtoms for 2 seconds

• Average integration stepAverage integration step

– Conservative Conservative advancement advancement slows downslows down

Atoms for 2 secondsAtoms for 2 seconds

• Average integration stepAverage integration step

– Conservative Conservative advancement advancement slows downslows down

Page 39: Animation CS 551 / 651

Results

Atoms for 2 secondsAtoms for 2 seconds

• Total “work done” per Total “work done” per simulated objectsimulated object

– Retroactive detection Retroactive detection repeats a lot of workrepeats a lot of work

Atoms for 2 secondsAtoms for 2 seconds

• Total “work done” per Total “work done” per simulated objectsimulated object

– Retroactive detection Retroactive detection repeats a lot of workrepeats a lot of work

Page 40: Animation CS 551 / 651

Results

Total timeTotal time

• 100 atoms100 atoms

– RD-1/30 = 0.142, TW = 0.147, CA = 1.15RD-1/30 = 0.142, TW = 0.147, CA = 1.15

• 200 atoms200 atoms

– RD -1/30 = 2.61, TW = .388, CA = 4.74RD -1/30 = 2.61, TW = .388, CA = 4.74

Total timeTotal time

• 100 atoms100 atoms

– RD-1/30 = 0.142, TW = 0.147, CA = 1.15RD-1/30 = 0.142, TW = 0.147, CA = 1.15

• 200 atoms200 atoms

– RD -1/30 = 2.61, TW = .388, CA = 4.74RD -1/30 = 2.61, TW = .388, CA = 4.74

Page 41: Animation CS 551 / 651

Discussion

§4.2 – If rollback time is between safe time §4.2 – If rollback time is between safe time and current time, nothing is done…and current time, nothing is done…

Jefferson proved this was what?Jefferson proved this was what?

Figure 2Figure 2

No global stateNo global state

§4.2 – If rollback time is between safe time §4.2 – If rollback time is between safe time and current time, nothing is done…and current time, nothing is done…

Jefferson proved this was what?Jefferson proved this was what?

Figure 2Figure 2

No global stateNo global state