160 likes | 177 Views
Explore techniques for splitting polyhedra into convex parts, improving calculations like collision detection. Learn about different decomposition algorithms and ways to optimize piece sizes. Discover future research prospects and references for further reading.
E N D
Heuristics for 3D model decomposition Presented by Luv Kohli COMP258 December 11, 2002
What is convex decomposition? • Technique to split up arbitrary polyhedra into convex pieces • Many calculations are far easier between convex objects • Collision detection, penetration depth, etc.
How is it done? • Two broad categories • Convex solid decomposition • Has output of size O(n2) – impractical • Convex surface decomposition • Complexity O(r), where r is the number of reflex edges
Convex surface decomposition • Space partitioning • Space sweep • Flooding • Traverse the dual graph of the surface • Start at some node and collect facets as long as they form a convex patch
Decomposition in SWIFT++ • Essentially a flooding algorithm using DFS or BFS • Uses “cresting” algorithm to determine seed faces • Start growing from faces furthest away from reflex edges
Cresting • The cresting technique attempts to minimize the number of pieces by allowing them to grow as large as possible • There may be other decomposition algorithms that provide better results for certain applications • Equal-sized pieces?
Alg1 – Reverse (& Fwd) cresting • Uses the same technique of finding distance from reflex edges (with minor modifications) • Prioritizes seed faces in reverse • Lets smaller pieces grow first so they are not overwhelmed by larger ones
Alg2 – Reverse (& Fwd) flooding • Uses potential piece sizes instead of distances from reflex edges • For each unvisited face, flood (grow) while the current piece is still convex • When growing ceases, record the piece size for use as priority
Alg3 – Flooding w/ surface area • Use surface area of flooded pieces to prioritize growing • Same idea as before but with different input to the graph traversal algorithm
Other ideas • Use some threshold value to stop piece growing • Try to keep pieces around the same size • Grow in parallel • Issues with determining how many pieces to grow from simultaneously
Future work • Run rigorous timing tests with SWIFT++ to determine if different decomposition methods have an effect on collision detection • Combination of decomposition methods?
References • Ehmann, Stephen A., Lin, Ming C. Accurate and Fast Proximity Queries Between Polyhedra Using Convex Surface Decomposition, EUROGRAPHICS 2001. • Chazelle, B. et al. Strategies for polyhedral surface decomposition: An experimental study, Comp. Geom. Theory Appl., 7:327-342, 1997. • Chazelle, B. Convex Partitions of Polyhedra: A Lower Bound and Worst-Case Optimal Algorithm, SIAM J. Comp., Vol. 13, No. 3, August 1984. • Bajaj, C. L., Dey, T. K., Convex Decomposition of Polyhedra and Robustness, SIAM J. Comp., Vol. 21, No. 2, April 1992.