Convex Primitive Decomposition for Collision Detection
Creation of collision objects for 3D models is a time-consuming task, requiring modelers to manually place primitives such as bounding boxes, capsules, spheres, and other convex primitives to approximate complex meshes. While there has been work in automatic approximate convex decompositions of meshes using convex hulls, they are not practical for applications with tight performance budgets such as games due to slower collision detection and inability to manually modify the output while maintaining convexity as compared to manually placed primitives. Rather than convex decomposition with convex hulls, we devise an approach for bottom-up decomposition of an input mesh into convex primitives specifically for rigid body simulation inspired by quadric mesh simplification. This approach fits primitives to complex, real-world meshes that provide plausible simulation performance and are guaranteed to enclose the input surface. We test convex primitive decomposition on over 60 models from Sketchfab, showing the algorithm’s effectiveness. On this dataset, convex primitive decomposition has lower one-way mean and median Hausdorff and Chamfer distance from the collider to the input compared to V-HACD and CoACD, with less than one-third of the complexity as measured by total bytes for each collider. On top of that, rigid-body simulation performance measured by wall-clock time is consistently improved across 24 tested models.
💡 Research Summary
The paper introduces a bottom‑up algorithm that automatically converts an arbitrary input mesh into a set of convex primitives—boxes, capsules, spheres, cylinders, frustums and trapezoidal prisms—tailored for real‑time rigid‑body simulation. Unlike traditional convex‑hull based approximate decompositions (e.g., V‑HACD, CoACD), which often produce many high‑detail hulls that are costly to collide with and difficult for artists to edit, the proposed method starts with one primitive per mesh face and merges them using a quadric‑based error metric.
For each face a 3×3 area‑weighted matrix Q = nnᵀ (with a small tangent term for numerical stability) is constructed, where n is the face normal. Q is linear, so adjacent faces can be combined simply by matrix addition. The merged matrix is eigen‑decomposed; the dominant eigenvector gives the average normal direction, while the remaining eigenvectors define an oriented bounding box that encloses the combined faces. The algorithm evaluates a cost equal to the absolute increase in volume caused by merging two primitives. A priority queue stores all adjacent pairs sorted by this cost, and the pair with the smallest cost is repeatedly collapsed until either a user‑specified number of primitives N is reached or a volume‑overlap threshold M is exceeded. After merging, redundant primitives fully enclosed by others are removed.
The method was tested on more than 60 complex models from Sketchfab and compared against V‑HACD and CoACD. Results show lower one‑way mean and median Hausdorff and Chamfer distances (≈0.04 × 10⁻³) and a collider file size less than one‑third of the baselines. In a PhysX‑based rigid‑body benchmark on 24 models, the new colliders achieved 2–3× faster per‑frame collision processing while preserving visual fidelity.
Key contributions include: (1) a fast, linear‑algebraic representation of primitives that guarantees enclosure of the original surface; (2) a unified cost function based on volume excess that works without requiring watertight meshes; (3) support for a diverse set of parametric primitives using the same merging framework; and (4) extensive quantitative validation demonstrating both geometric accuracy and simulation performance gains. The approach bridges the gap between research‑oriented convex decomposition and the practical workflow of game artists, enabling automatic, editable, and efficient collision primitives for real‑time physics.
Comments & Academic Discussion
Loading comments...
Leave a Comment