Nonconvex Rigid Bodies with Stacking Eran Guendelman Robert Bridson Ron Fedkiw Stanford University Paper Overview Goal: • Plausible simulation of a large number of nonconvex rigid bodies. • Handle collision, contact, friction, stacking. Main Contributions • A new time stepping scheme. • A “shock propagation” technique for stacks. Geometric Representation • A dual representation. • Explicit: Triangulated surface. – Supplies point samples on surface. • Implicit: Signed distance function Φ. – Φ distance to surface, Φ < 0 inside, Φ > 0 outside. – Stored on a uniform or octree grid. – Constant time inside/outside test. – Normal = Φ (defined throughout space). Time Stepping: Traditional Approach • Traditional time stepping simulation loop: – Update position and velocity. – Process collision. – Process contact. Problem With Traditional Approach • Problem: e.g. Block sliding down inclined plane. – Initially sliding down. – Update position and velocity interpenetrating plane. – Process collision velocity reflected. – No contact to process. – Next iteration object bounces. Fixing Problem • Velocity threshold. – e.g. [Mirtich & Canny ‟95 – 2 papers] – Process as contact if speed below threshold. • Our approach doesn‟t require such threshold. Time Stepping: Our Approach • A new ordering of the simulation loop: – Process collision. Recall traditional approach: – Update velocity. •Update pos & vel. – Process contact. •Process collision. – Update position. •Process contact. • Some justification: – Velocity update integrates forces and contact processing resolves forces. Inclined Plane Revisited • Using our approach. – No collision to process. – Update velocity block gains downward velocity. – Process contact stops normal motion. – Update position slides down with no bounce. TIME STEPPING COMPARISON Time Stepping Comparison • Errors accentuated: – Perfectly elastic collisions (ε=1). – We don‟t rewind to collision time. – Impulses applied sequentially at point samples. Accuracy Decelerating down inclined plane Accuracy Accelerating down inclined plane Simulation Step • Choose sufficiently small time step ∆t. • Advance bodies using time stepping scheme. – Use forward Euler for position and velocity update. • Doesn‟t guarantee non-interpenetration, but achieves good results. – Experimented with “pushing out” to reduce penetration as in [Baraff „95]. Interference Detection • We don‟t rewind to collision time. • Find all penetrating vertices. – Use implicit surface inside/outside test. • Optionally compute edge-face intersections. • Accelerations: – Uniform spatial partition. – Bounding boxes. Impulse • Impulses are used for collision and contact. • Collision parameters: ε and μ. • Collision normal = Φ. • Use Coulomb friction model: – Compute impulse to stop tangential motion. – If outside friction cone, find kinetic friction impulse. – Similar to [Hahn „88; Moore & Wilhelms „88]. • Rolling and spinning friction. Collision Processing • Detect and resolve collisions during time step. • One approach: Process in chronological order. – Computationally expensive for scenes with frequent collisions. • Approach we use: Process all at end of step. – Gives plausible results. – Don‟t need to rewind to exact time of collision. Collision Processing: Algorithm Overview • Compute candidate positions of bodies. • For each intersecting pair of bodies: – Determine interpenetrating points. – Sort points by penetration depth (deepest first). – For each point in order: • Apply frictional impulse (unless bodies receding). Collision Processing: Algorithm Overview • Repeat above a number of times. – Resolving one collision might create new ones. • Applies series of impulses rather than simultaneously resolving all collisions. Contact Processing • Determine contacts and prevent penetration. • Approaches: – Simultaneously solve for all contact forces. e.g.[Baraff „94] – Penalty method (repulsion forces). e.g.[Moore & Wilhelms „88] • Approach we use: – Approximate continuous contact by a series of inelastic impulses. e.g. [Mirtich & Canny „95] – Algorithm similar to collision processing (with ε=0), but modified for improved accuracy. Improving Accuracy • Gradually slow down bodies. – Transition impulses from ε=-1 to ε=0. – -1<ε<0: Slows normal approach velocity. – Use more (smaller) impulses for contact. • Compute impulses in old position. – Still use candidate position to find contact points. OLD CANDIDATE Contact Processing: Problem With Stacks • Problem with stacks: Need many iterations. Computing Stack Ordering • Order bodies in stacks into increasing levels: – Compute directed graph of “resting on” relation. – Group together cycles (get a DAG). – Find levels consistent with DAG. 5 2 4 2 2 3 2 1 1 Shock Propagation • Process contact bottom-up. • After processing a level, set to infinite mass (but not static). SHOCK PROPAGATION ONLY Combining Contact and Shock Propagation • Run a number of regular contact iterations. – Without setting levels to infinite mass. – Transmits weight through stack. • Run a single iteration of shock propagation. – Get good behavior without requiring many iterations. CONTACT & SHOCK PROPAGATION SHOCK PROPAGATION ONLY CONTACT & SHOCK PROPAGATION Summary • Dual representation of geometry. • Impulse-based simulator. • New time stepping approach eliminates need for a velocity threshold. • Shock propagation shocks the stack into a reasonable configuration without requiring many contact iterations.