Collision prediction for polyhedra under piecewise screw motions

411 Views

Download Presentation
## Collision prediction for polyhedra under piecewise screw motions

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -

**Collision prediction for polyhedra under piecewise screw**motions Byung-Moon Kim and Jarek Rossignac GVU Center and College of Computing Georgia Tech, Atlanta, USA**The problem**Compute the time and place of collision between moving bodies MOTIVATION • Increase speed & accuracy of 3D animation and simulation SCOPE • Limited to polyhedral (triangulated) shapes • Limited to rigid body motions (no deformation) • (see [Von Herzen & Zatz’ 90] for collision of deforming shapes)**Prior art: Examples of pioneering work**• S. Udupa, Collision detection and avoidance in computer controlled manipulators. Proc. 5th Int. Conf. Artif. lntel.,1977. • J. W. Boyse. Interference detection among solids and surfaces. Communications of ACM, 22(1):3–9, January 1979. • N. Ahuja, R. T. Chien, R. Yen, and N. Bridwell. Interference detection and collision avoidance among three dimensional objects. Conference on AI, Stanford University, August 1980. • D.P. Dobkin, D.G. Kirkpatrick, Fast detection of polyhedral intersection, Theoret. Comput. Sci. 27, 1983. • J. U. Korein. A Geometric Investigation of Reach. The MIT Press, 1984. • S. A. Cameron and R. K. Culley. Determining the minimum translational distance between two convex polyhedra. In Proceedings of IEEE International Conference on Robotics and Automation, April 1986. • J. F. Canny. Collision detection for moving polyhedra. IEEE Transactions on Pattern Analysis and Machine Intelligence, 8(2), March 1986. • … • P. Jimenez, F. Thomas, and C. Torras. 3D collision detection: a survey. Computers and Graphics, 25(2), 2001.**Detecting interferences at each frame**Most approaches simulate the motions of all the objects and after each time step, check if any pair of objects interfere • O(n2) static interference detections between pairs of objects • Each checks whether an edge of one stabs the face of another • Quick rejections of distant pairs of objects • Use bounds (boxes, spheres) around each object [Rimon&Boyd’97] • Use velocity and distance [Culley&Kempf’86] • Track minimum distances over time [Lin&Canny’91] • Quick rejection of disjoint portions of the objects • Decompose shapes into convex parts [Bajaj&Dey’92] • Use hierarchy of bounds around object or its surface [Hubbard’96] • Partitionspace [Bandi&Thalmann’95][Gottschalk&Lin&Manocha’96] • Track mobile data [Basch&Guibas&Hershberger’97]**t1**t2 t3 Detection versus Prediction • Detection: Simulate motion step-by-step and test for static interference between parts at each key-frame • Stop when interference is detected • Search for correct collision time • Binary split of last time-step • Expensive (O(n2) per time step) • Can easily miss collisions • Prediction: Compute time when the objects will first collide • Test all pairs of surface elements that could collide • Vertex-triangle, triangle-vertex, edge-edge • Report the first collision to occur • Fast • Exact (can’t miss)**Reducing the problem to a single motion**• Assume solid A (bus) moves by a(t) • Assume solid B (taxi) moves by b(t) • a(t) and b(t) are parameterized rigid body transformations • Can be represented by 4x4 matrix or pose (origin + orthonormal basis) • Express everything in the moving CS of A (the bus) • See the accident from the perspective of a passenger of the bus • A (the bus) is now static • The pose of B (the taxi) is defined by M(t)=b(t)*a–1(t) • Two body collision problem may be reduced to the detection of the collision of a single moving body with a static obstacle**From Boyse’79**Predicting polyhedral collisions • Assume solids A and B are initially disjoint • Assume A is static and B moves by rigid-body motion M(t) • First collision occurs at time t • The boundary of A and of B@M(t) intersect • The intersection must contain either: • a vertex of A in a face of B@M(t) or • a vertex of B@M(t) in a face of A or • the intersection of an edge of A in an edge of B@M(t)**Complexity of collision prediction**• Vertex/face collision • V(t)=V@M(t) is a parametric curve. • Find its intersection with plane PV(t)•N=0: solve for t • Complexity of finding the roots ti depends on nature of M(t) • Then check which V(ti) lie inside the face • Face/vertex collision • Swap the role of A and B • Edge/edge collision • When does edge (a@M(t),b@M(t)) collide with edge (c,d)? • They are coplanar when cd•((c–b@M(t))(c–a@M(t)))=0 • Solve for roots ti (more complex than vertex/face) • Then check that (a@M(ti),b@M(ti)) intersects with (c,d) • Complexity of root finding depends on nature of M • Translation [Boyse’79, Cameron’85] • Rotation (both objects around same axis) [Schomer&Thiel’95] • Linear translation+variable speed rotation • [Canny’86, Jimanez&Torras’85, Schomer & Thiel95]**Special case of pure translation**• Assume A moves with constant velocity v and B is fixed • Collision may occur between • A vertex p of A and a triangle T of B • Intersect Ray(p,v) with T • A triangle T of A with a vertex p of B • Intersect Ray(p,-v) with T • An edge (a,b) of A with an edge (c,d) of B • Check when the volume of tetrahedron (a+tv,b+tv,c,d) becomes zero • solve (cd(ca+tv))(cb+tv)=0 for t • (cd(ca+tv))cb + (cd(ca+tv))tv)=0 • (cdca+t(cdv))cb + (cdca+t(cdv))tv)=0 • (cdca)cb +t(cdv)cb + (cdca)tv +t2(cdv)v = 0 • (cdca)cb +t(cdv)cb + (cdca)tv = 0, because (cdv)v = 0 • t = (cacd)cb / ((cdv)cb - (cdv)ca) • t = (cacd)cb / (abcd)v • Make sure that, at that time, the two edges intersect • Not just the lines d b v a c**Q**E S K Use approximating piecewise screw-motions • Screw motions are great! • Uniquely defined by start pose S and end pose E • Independent of coordinate system • Subsumes pure rotations and translations • Minimizes rotation angle & translation distance • Natural motions for many application • Simple to apply for any value of t in [0,1] • Rotation by angle tb around axis Axis(Q,K) • Translation by distance td along Axis(Q,K) • Each point moves along a helix • Simple to compute from poses S and E • Axis: point Q and direction K • Angle b • Distance d Screw Motion**Screw history**(Ceccarelli [2000] Detailed study of screw motion history) • Archimede (287–212 BC) designed helicoidal screw for water pumps • Leonardo da Vinci (1452–1519) description of helicoidal motion • Dal Monte (1545–1607) and Galileo (1564–1642) mechanical studies on helicoidal geometry • Giulio Mozzi (1763) screw axis as the “spontaneous axis of rotation” • L.B. Francoeur (1807) theorem of helicoidal motion • Gaetano Giorgini (1830) analytical demonstration of the existence of the “axis of motion” (locus of minimum displacement points) • Ball (1900) “Theory of screws” • Rodrigues (1940) helicoidal motion as general motion • …. • Zefrant and Kumar (CAD 1998) Interpolating motions**P’**EL U’ O’ V’ d (O+O’)/2 P axis K b SL V Q U O I Computing the screw parameters From initial and final poses M(0) and M(1) K:=(U’–U)(V’–V); K:=K / ||K||; b := 2 sin–1(||U’–U|| / (2 ||KU||) ); d:=K•OO’; Q:=(O+O’)/2 + (KOO’) / (2tan(b/2)); To apply screw motion: Translate by –Q; Rotate K to Z; Rotate around Z by tb; Translate by (0,0,td); Rotate Z to K; Translate by Q;**Split&Tweak Subdivision**• Split: Insert a new vertex in the middle of each edge • Cubic B-spline tweak: Tuck old vertices in • 4-point tweak: Bulge new vertices out • Jarek tweak: Do half of each**ScrewBender (with Alex Powell)**• Polyscrew motion: interpolates consecutive poses by screws • Subdivide using Split&Tweak on screws**Volume swept during screw motion**Computing and visualizing pose-interpolating 3D motions Jarek R. Rossignac and Jay J. Kim (Hanyang University, Seoul, Korea), CAD, 33(4)279:291, April 2001. SweepTrimmer: Boundaries of regions swept by sculptured solids during a pose-interpolating screw motion Jarek R. Rossignac and Jay J. Kim**EL**f(d) P SL 1 OL d 0 1 Space warp based on a screw motion “Twister: A space-warp operator for the two-handed editing of 3D shapes”, Llamas, Kim, Gargus, Rossignac, and Shaw. Proc. ACM SIGGRAPH,July 2003. Decay function**Proposed approach**• For each pair of objects A and B do • Approximate relative motion by a piecewise screw motion • Insert intermediate poses as needed adaptively • For each screw motion segment do • Use quick rejection test to quickly identify collision-free situations • If collision may not be discarded, then do • For each vertex of A and each triangle of B do • If collision cannot be discarded using bounds • Then find time of first collision (if one occurs) • For each vertex of B and each triangle of A do • If collision cannot be discarded using bounds • Then find time of first collision (if one occurs) • For each edge of B and each edge of A do • If collision cannot be discarded using bounds • Then find time of first collision (if one occurs) • Stop if collision was found and report time of first collision**Vertex-face (helix-plane intersection)**• Helix is V(t) = rcos(tb)i+rsin(tb)j+tdk in screw coordinates • where V(0) lies on the i axis and the k-axis is parallel to s • The screw intersects plane d+V(t)•n= 0 for values of t satisfying • d+(rcos(tb), rsin(tb),td)•n= 0 • We compute all roots and check if they correspond to points in triangle • Reduces to finding roots of f(t)=A+Bt+Ccos(bt+c) • Separate roots using f’(t)=0, which requires solving B/bC=sin(bt+c) • We use Newton iterations**Edge-edge intersection**• Requires roots of f(t)=A+(B+Ct)cos(bt+c)+(D+Et)sin(bt+c) • We use Newton iterations from carefully computed seeds • Angle or rotation < 180 degrees • Check which roots corresponds to true E/E intersections**Early rejections**• Decide early that some pairs of objects cannot intersect • Use simple bounds on objects and their swept regions • Balls, cylindrical annuli • Avoid most root-findings by rejecting pairs of elements • Use bounds on elements and their swept regions • Vertex (helix), edge (annulus)**–**Rejecting object pairs • Build (minimum) bounding spheres around objects • Region swept by B lies in half of a cylindrical annulus A B If B lies outside of this CSG solid: no collision**Rejecting helix-triangle pairs**• Triangle separated from helix by plane or cylinder Too high along axis: above plane Not in screw angle: outside wedge Too far from axis: outside cylinder Too close to axis: inside cylinder Too low along axis: below plane**Rejecting edge/edge pairs**• No collision if green edge lies outside of (wedge-portion of) the annulus containing region swept by red edge above Inside inner cylinder Outside outer cylinder Outside wedge below**Early rejection tests: 55% speed up**• Test setup • A move along a fixed screw motion • B is randomly placed and oriented in a in a box • 50,000 different poses were tested • Actual collision happened in about 10% of cases • 50% cases rejected using bounding spheres around objects • 50% of V/T cases and 66% of E/E cases rejected early • A and B have about 160 triangles vertices • 26,540 triangle/vertex and 58,266 edge/edge pairs • Takes average of 4x10–7 sec per V/T or E/E rejection test • Exact collision computation takes about 10–5 sec Actual collisions only 50% cases are rejected by cylinder/sphere test**Conclusions**• Perform exact prediction, rather than interference detection • Approximate relative motion by screws (better than other types of simple motions) • Uses simple geometric rejection tests to identify cases where objects do not collide, they reduce overall cost by half • Uses simple geometric rejection test to discard more than half of the V/T and E/E collision candidates • Uses Newton to solve for exact collision time when needed: 10–5 sec per V/T, T/V, or E/E collision • Could be combined with hierarchical culling and other speed-ups**Thank you**Questions?**Tring**http://tring.powelltown.com/