We introduce an algorithm for continuous collision detection (CCD) for linearized trajectories designed to be scalable on modern parallel architectures and provably correct when implemented using floating point arithmetic. We employ a classical two-phase approach, with a broad-phase CCD to quickly filter out primitives having disjoint bounding boxes, and a narrow-phase CCD that establishes whether the remaining primitive pairs actually collide. Our broad-phase algorithm is efficient and scalable thanks to the experimental observation that sweeping along a coordinate axis performs surprisingly well on modern parallel architectures. For narrow-phase CCD, we re-design the recently proposed interval-based algorithm of [Wang 2021] to work on massively parallel hardware. To evaluate the correctness, scalability, and overall performance of our approach, we introduce a large scale benchmark for broad- and narrow-phase CCD with exact times of impact, and compare our approach with several state-of-the-art methods. We integrate our algorithm with the IPC contact solver, and evaluate its impact on challenging simulation scenarios. We release the dataset with analytic ground truth, the implementation of all the algorithms tested, our testing framework, and a reference CPU and GPU implementation of our algorithm as an open source project to foster adoption and development of linear CCD algorithms.
翻译:我们引入了一种连续碰撞探测算法(CCD),用于对线性轨迹进行连续碰撞探测(CCD),该算法设计在现代平行结构上可以伸缩,在使用浮动点算术实施时可以准确无误。我们采用传统的两阶段方法,采用宽度的CCD,快速筛选断开框框的原始体,采用窄度的CCD,确定其余原始对子是否实际相撞。我们宽度的算法是高效和可伸缩的,因为实验观测沿着一个协调轴扫荡,在现代平行结构上表现得令人惊讶地很好。对于狭度的CCD,我们重新设计了最近提议的[Wang 20211]的间基算法,以大规模平行硬件为工作。为了评估我们方法的正确性、可伸缩缩度和总体绩效,我们为广度和窄度的CCDCARC设定了一个大尺度基准,将我们的方法与一些最先进的方法进行比较。我们把我们的算法与IPC联系解算法结合,并评估其对具有挑战性的模拟设想方案的影响。我们把数据设置的参考数据与分析地面真理,我们所有CCDCPU的模型测试和直线性标准的测试。