Box3D、衝突検出にSIMD最適化を導入
मूल शीर्षक: SIMD for Collision
यह क्यों महत्वपूर्ण है
3D物理エンジンの衝突検出にSIMD最適化を適用することで、複雑な凸形状シミュレーションの実用的な高速化手法が示された。
Box3Dの開発者が2026年7月18日、3D物理エンジンの衝突検出にWide SIMD技術を適用した成果を公開した。32頂点・89辺を持つ凸形状同士の衝突計算で、Edge-Edgeテストの組み合わせ数が最大7,921件に達する問題を、SIMD並列処理で大幅に削減した。
Box3Dの開発者は、3D物理シミュレーションにおける凸形状衝突検出の性能改善についての技術記事を公開した。
3D衝突検出にはSeparating Axis Test(SAT)が使用されており、2つの凸形状A・B間でFace-Vertex、Vertex-Face、Edge-Edgeの全組み合わせを評価する必要がある。32頂点・59面・89辺を持つ「boulder」形状同士では、Edge-Edgeの組み合わせ数が89×89=7,921件に達し、計算コストが二乗で増大する。
対照的に、通常のBoxは8頂点・6面・12辺のため、Edge-Edge組み合わせは144件にとどまる。
この問題に対し、開発者は「Wide SIMD」アプローチを採用した。これは1つのedgeAを、4つのedgeBと同時にテストする手法で、データをSoA(Structure of Arrays)形式で整理することでSIMDレジスタを効率的に活用する。これにより、ループのイテレーション数を約4分の1に削減できる。
なお、他エンジンで広く使われるGJK+EPA方式と比較して、SATはcollision marginが不要で形状が直接接触できる利点がある一方、EPAは数値的に不安定になりやすく、フォールバック処理が必要になるケースもある点も言及されている。