Heuristics for 3D model decomposition Presented by Luv Kohli COMP258

Download Report

Transcript Heuristics for 3D model decomposition Presented by Luv Kohli COMP258

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
Chazelle, et al.
Flood and Retract
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
Decomposition in SWIFT++
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
swiftdfs
swiftbfs
swiftcrest fwd crest rev crest
avg # of pcs
80.602
78.991
77.834
78.352
78.131
max # of pcs
86
84
81
83
81
min # of pcs
76
76
76
76
75
avg size of pcs
4.1702
4.2548
4.3174
4.2895
4.3011
std dev (pc size)
5.9494
6.3408
6.2917
6.1725
5.9158
avg # of size1 pcs
19.175
18.694
18.136
18.07
18.758
avg # of size2 pcs
31.684
31.106
28.086
29.64
29.896
avg surface area
0.0084
0.0086
0.0087
0.0087
0.0087
std dev (area)
0.0108
0.0112
0.011
0.0108
0.011
floodfacefor floodfacerev floodareafor floodarearev
avg # of pcs
86.004
81.232
84.405
84.454
max # of pcs
95
88
96
97
min # of pcs
81
79
76
77
avg size of pcs
3.9088
4.1377
3.9874
3.9842
std dev (pc size)
5.7004
5.3596
5.6359
5.6305
avg # of size1 pcs
26.577
19.873
23.7
23.769
avg # of size2 pcs
29.563
31.364
31.428
31.367
avg surface area
0.0079
0.0084
0.0081
0.008
std dev (area)
0.0102
0.0105
0.0105
0.0105
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.