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.
翻译:为三维模型创建碰撞对象是一项耗时的工作,需要建模者手动放置包围盒、胶囊体、球体等凸基元来近似复杂网格。尽管已有利用凸包进行网格自动近似凸分解的研究,但由于与手动放置的基元相比,其碰撞检测速度较慢,且在保持凸性的同时无法手动修改输出,因此对于游戏等性能预算严格的应用并不实用。不同于使用凸包的凸分解方法,我们设计了一种自底向上将输入网格分解为凸基元的方法,该方法专为刚体仿真设计,灵感来源于二次误差度量的网格简化。该方法将基元拟合到复杂的真实世界网格上,既能提供合理的仿真性能,又能保证完全包络输入表面。我们在 Sketchfab 的 60 多个模型上测试了凸基元分解算法,验证了其有效性。在该数据集上,与 V-HACD 和 CoACD 相比,凸基元分解从碰撞体到输入网格的单向平均与中值豪斯多夫距离和倒角距离均更低,且以各碰撞体总字节数衡量的复杂度不到三分之一。此外,在 24 个测试模型上,以挂钟时间衡量的刚体仿真性能均得到持续改善。