回答:
しかし、小さな三角形で作られた形状の衝突検出はどのように行いますか?
それをしないことによって。
任意の三角形のコレクション(または、さらに悪いことに、任意の三角形の2つのコレクション間)に対する衝突検出は、法外に高価です。
代わりに、通常、コレクションの検出を階層形式で実行します。最初に、基礎となるオブジェクトに(不十分に)近似する非常に粗雑で単純な形状(ボックスや球体)から始めます。
これにより、通常発生する可能性のある衝突の大部分を「発生しない」として迅速に拒否できます。そのような粗いチェックに合格した場合、それは潜在的な実際の衝突を示し、基礎となる形状のより詳細な近似(複数のしっかりとフィットしたカプセル形状、または多くの境界ボックスの整列)。
基本的に、衝突検出は粗いテストから始まり、それらのテストに合格すると、より詳細な表現を続けます。ShiroがAlexandreの答えへのコメントで提供したこの画像は、複雑なモデル(人間)が一連のより単純な形状によってどのように表されるかを示しています。
個々の三角形レベルで衝突を実際に実行する必要はほとんどありません。通常は、より粗い方法を使用して、テストする潜在的な三角形の非常に小さなセットにドリルダウンしました。その時点で、2つの長方形が重なるかどうかをテストするのと同じように、特定のアルゴリズムを使用してテストを実行します。たとえば、光線が三角形に当たるかどうか、どこに当たるかを判断できます。
衝突検出は、ジオメトリ(線、平面、球、ボックス、カプセル、円柱などのプリミティブ)に基づいています。
三角形で作られた形状、たとえば平らでない地形で衝突検出を実行する必要がある場合、メッシュを形成するすべての三角形に対してテストする必要があります。
この点に到達したら、事前に作成した衝突検出エンジンを使用することを強くお勧めします。この種のものは非常に複雑で非常に高速になるためです。