Version: Unity 6.0 (6000.0)
言語 : 日本語
メッシュコライダー
メッシュコライダー用のメッシュを準備する

メッシュコライダーの概要

メッシュコライダーメッシュ の形状に完全に一致するため、非常に正確な衝突シミュレーションが可能になります。

メッシュコライダーは、形状、位置、スケールなど、割り当てられた メッシュ に一致するように衝突ジオメトリをビルドします。この利点は、コライダーの形状がオブジェクトの表示されているメッシュの形状とまったく同じになるように整形できるため、より精密で現実的な衝突を発生させることができることです。

メッシュコライダーは精度が高いため、その処理のオーバーヘッドも プリミティブコライダー (スフィアボックスカプセル などのコライダー) よりも高くなります。したがって、他には高い処理能力を必要としないコライダーの場合、またはプリミティブコライダーや 複合コライダー の方がオーバーヘッドが大きくなる衝突の場合に限って、メッシュコライダーを使用するのがベストプラクティスです。適切な使い方としては、静的なシーンジオメトリにはメッシュコライダー、移動するゲームオブジェクトには複合コライダーを使用します。

メッシュコライダーの利点と制限

ほとんどの場合、メッシュコライダーは 複合コライダー と類似するソリューションを提供します。複合コライダーの主な目的は、複雑な形状のアイテムの正確な衝突を発生させることです。メッシュコライダーの利点と制限を考える際によく使われる手法は、メッシュコライダーを複合コライダーと比較することです。

メッシュコライダーの主な利点は以下のとおりです。

  • メッシュコライダーはアイテムの形状に完全に一致するため、非常に正確です。
  • メッシュコライダーの場合は、Unity がメッシュの形状に基づいてコライダーの形状を自動で処理するため、手動作成に費やす時間が複合コライダーよりも少なくなります。
  • 場合によっては、メッシュコライダーの方が複合コライダーよりも計算負荷が小さいことがあります。これは、近似に多くの複合コライダーを必要とする非常に複雑な形状の場合によくあります。1 つのメッシュコライダーは、複数のプリミティブコライダーよりも効率的な場合があります。

ただし、メッシュコライダーにもいくつかの重要な制限があります。

  • メッシュコライダーは、凹状同士の正確な衝突を発生させることができません。詳細は、後述の 凹状と凸状のメッシュコライダー を参照してください。
  • 場合によっては、複合コライダーの方がメッシュコライダーよりも計算負荷が小さいことがあります。これは、数個のコライダーのみで近似できる単純な形状や、あまり正確である必要のない形状の場合によくあります。例えば、メッシュコライダーは複雑な形状に正確に一致するために数百ものポリゴンを生成し、プリミティブコライダーはそれよりもかなり少ない数のポリゴンで近似する場合があります。
  • メッシュコライダーは、ランタイムに形状が変化するメッシュには適したオプションではありません。詳細は、後述の ランタイムに形状が変化するメッシュ を参照してください。

コライダーをどのように設定するのかは、プロジェクトによって異なりますので、各設定をテストし、物理演算プロファイラーを使用して、コライダー設定の効率を把握する必要があります。

凹状と凸状のメッシュコライダー

メッシュコライダーは、設定が凹状か凸状かによって動作が異なります。デフォルトでは、PhysX はメッシュコライダーを凹状と見なします。

数学では、“凹状” と “凸状” は形状を表す用語です。

凸状は外向きに張り出した線のみで構成されます (例: ボール)。境界上の 2 点を結ぶ線分はすべて形状内に留まります。凹状には、境界が内向きに曲がる “カーブ” または窪みが少なくとも 1 つあります (例: バナナ)。境界上の 2 点を結ぶ線分は、形状の外の空間を横切る場合があります。

凹状コライダーにはいくつかの制限があります。凹状メッシュコライダーは、静的 (物理演算ボディを持たない)、またはキネマティック (キネマティック物理演算ボディを持つ) のどちらかになります。詳細は、コライダータイプ を参照してください。凹状メッシュコライダーが衝突できる相手は凸状コライダーのみです。2 つの凹状コライダーが接触しても、衝突は発生しません。

2 つの凹状メッシュコライダーを衝突させる必要がある場合は、衝突の精度に応じて以下の方法があります。

形状の凹部分が正確に衝突する必要がない場合は、Inspector でメッシュコライダーの 1 つを凸状に設定します (Is Convex を有効にします)。これにより、“ハル” という新しい凸状コライダー形状が生成されます。ハルは割り当てられた凹状メッシュに似ていますが、凸状になるように凹線が塗りつぶされています。

バナナ型ゲームオブジェクトの凹状メッシュコライダー。
バナナ型ゲームオブジェクトの凹状メッシュコライダー。
同じバナナ型ゲームオブジェクトの凸状メッシュコライダー。
同じバナナ型ゲームオブジェクトの凸状メッシュコライダー。

形状の凹状部分が正確に衝突する必要がある場合は、凸状コライダーの 複合コライダー を使用します。

ランタイムに形状が変化するメッシュ

メッシュコライダーに割り当てたメッシュは、ランタイムに形状が変わらないのが理想です。

メッシュの形状が変わるたびに、物理演算エンジンはメッシュコライダーの形状を再計算する必要があり、かなりの量のパフォーマンスオーバーヘッドが生じます。この理由から、メッシュコライダーが使用しているメッシュのジオメトリは変更しないでください。ランタイムでのメッシュの衝突と形状変更の両方が必要な場合には、プリミティブコライダー または 複合コライダー を使用してメッシュの形状を近似する方法が大抵は適しています。

方向メッシュの面

衝突メッシュの面は片面です。つまり、ゲームオブジェクトは 1 つの方向から衝突メッシュを通り抜けことができますが、他の方向からは衝突することになります。

メッシュコライダーが使用する基本的なアルゴリズムとデータ構造の詳細は、ジオメトリ に関する NVIDIA PhysX のドキュメントを参照してください。

メッシュコライダー
メッシュコライダー用のメッシュを準備する