メッシュコライダー は メッシュ の形状に完全に一致するため、非常に正確な衝突シミュレーションが可能になります。
メッシュコライダーは、形状、位置、スケールなど、割り当てられた メッシュ に一致するように衝突ジオメトリをビルドします。この利点は、コライダーの形状がオブジェクトの表示されているメッシュの形状とまったく同じになるように整形できるため、より精密で現実的な衝突を発生させることができることです。
メッシュコライダーは精度が高いため、その処理のオーバーヘッドも プリミティブコライダー (スフィア、ボックス、カプセル などのコライダー) よりも高くなります。したがって、他には高い処理能力を必要としないコライダーの場合、またはプリミティブコライダーや 複合コライダー の方がオーバーヘッドが大きくなる衝突の場合に限って、メッシュコライダーを使用するのがベストプラクティスです。適切な使い方としては、静的なシーンジオメトリにはメッシュコライダー、移動するゲームオブジェクトには複合コライダーを使用します。
ほとんどの場合、メッシュコライダーは 複合コライダー と類似するソリューションを提供します。複合コライダーの主な目的は、複雑な形状のアイテムの正確な衝突を発生させることです。メッシュコライダーの利点と制限を考える際によく使われる手法は、メッシュコライダーを複合コライダーと比較することです。
メッシュコライダーの主な利点は以下のとおりです。
ただし、メッシュコライダーにもいくつかの重要な制限があります。
コライダーをどのように設定するのかは、プロジェクトによって異なりますので、各設定をテストし、物理演算プロファイラーを使用して、コライダー設定の効率を把握する必要があります。
メッシュコライダーは、設定が凹状か凸状かによって動作が異なります。デフォルトでは、PhysX はメッシュコライダーを凹状と見なします。
数学では、“凹状” と “凸状” は形状を表す用語です。
凸状は外向きに張り出した線のみで構成されます (例: ボール)。境界上の 2 点を結ぶ線分はすべて形状内に留まります。凹状には、境界が内向きに曲がる “カーブ” または窪みが少なくとも 1 つあります (例: バナナ)。境界上の 2 点を結ぶ線分は、形状の外の空間を横切る場合があります。
凹状コライダーにはいくつかの制限があります。凹状メッシュコライダーは、静的 (物理演算ボディを持たない)、またはキネマティック (キネマティック物理演算ボディを持つ) のどちらかになります。詳細は、コライダータイプ を参照してください。凹状メッシュコライダーが衝突できる相手は凸状コライダーのみです。2 つの凹状コライダーが接触しても、衝突は発生しません。
2 つの凹状メッシュコライダーを衝突させる必要がある場合は、衝突の精度に応じて以下の方法があります。
形状の凹部分が正確に衝突する必要がない場合は、Inspector でメッシュコライダーの 1 つを凸状に設定します (Is Convex を有効にします)。これにより、“ハル” という新しい凸状コライダー形状が生成されます。ハルは割り当てられた凹状メッシュに似ていますが、凸状になるように凹線が塗りつぶされています。
形状の凹状部分が正確に衝突する必要がある場合は、凸状コライダーの 複合コライダー を使用します。
メッシュコライダーに割り当てたメッシュは、ランタイムに形状が変わらないのが理想です。
メッシュの形状が変わるたびに、物理演算エンジンはメッシュコライダーの形状を再計算する必要があり、かなりの量のパフォーマンスオーバーヘッドが生じます。この理由から、メッシュコライダーが使用しているメッシュのジオメトリは変更しないでください。ランタイムでのメッシュの衝突と形状変更の両方が必要な場合には、プリミティブコライダー または 複合コライダー を使用してメッシュの形状を近似する方法が大抵は適しています。
衝突メッシュの面は片面です。つまり、ゲームオブジェクトは 1 つの方向から衝突メッシュを通り抜けことができますが、他の方向からは衝突することになります。
メッシュコライダーが使用する基本的なアルゴリズムとデータ構造の詳細は、ジオメトリ に関する NVIDIA PhysX のドキュメントを参照してください。