- 330 Views
- Updated On :
- Presentation posted in: Sports / GamesEducation / CareerFashion / BeautyGraphics / DesignNews / Politics

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

Collision prediction for polyhedra under piecewise screw motions

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - 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

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)

- 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.

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: 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)

- Test all pairs of surface elements that could collide

- 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

- 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 [email protected](t) intersect
- The intersection must contain either:
- a vertex of A in a face of [email protected](t) or
- a vertex of [email protected](t) in a face of A or
- the intersection of an edge of A in an edge of [email protected](t)

- Vertex/face collision
- V(t)[email protected](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 ([email protected](t),[email protected](t)) collide with edge (c,d)?
- They are coplanar when cd•(([email protected](t))([email protected](t)))=0
- Solve for roots ti (more complex than vertex/face)
- Then check that ([email protected](ti),[email protected](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]

- 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

- Check when the volume of tetrahedron (a+tv,b+tv,c,d) becomes zero

- A vertex p of A and a triangle T of B

d

b

v

a

c

Q

E

S

K

- 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

(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

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: 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

- Polyscrew motion: interpolates consecutive poses by screws
- Subdivide using Split&Tweak on screws

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

“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

- 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

- For each vertex of A and each triangle of B do

- Approximate relative motion by a piecewise screw motion

- 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

- 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

- We use Newton iterations from carefully computed seeds
- Check which roots corresponds to true E/E intersections

- 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)

–

- 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

- 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

- 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

- 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

- 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/