Version: 2019.4
言語: 日本語
Hinge Joint
Rigidbody

Mesh Collider

Mesh Collider (メッシュコライダー) は メッシュのアセット からそのメッシュにもとづくコライダーを生成します。複雑なメッシュの場合、プリミティブを使用するよりもより正確に衝突検出できます。Convex (凸状) が有効なっているメッシュコライダーは、他のメッシュコライダーと衝突することができます。

プロパティ

プロパティ 機能
Convex これを有効にすると、メッシュコライダーは他のメッシュコライダーと衝突します。 Convex (凸状) のメッシュコライダーは三角形面数の上限が 255 に制限されます。
Is Trigger これを有効にすると、Unity はイベントをトリガーするためにこのコライダーを使用し、物理演算エンジンはこれを無視します。
Cooking Options Mesh Cooking オプションを有効または無効にします。このオプションは、物理エンジンがメッシュを処理する方法に影響を与えます。
None 以下の Cooking Options をすべて無効にします。
Everything 以下の Cooking Options をすべて有効にします。
Cook for Faster Simulation 物理演算エンジンにメッシュをクックさせ、シミュレーションを高速化します。有効にすると、追加の手順が実行され、作成するメッシュがランタイムのパフォーマンスに最適であることを保証します。これは、物理演算クエリと接触生成のパフォーマンスに影響します。この設定を無効にすると、物理演算エンジンは代わりにより速いクック時間で可能な限り速く結果を生成します。その結果、クックされたメッシュコライダーは最適でない場合があります。
Enable Mesh Cleaning 物理エンジンが、メッシュをクリーンにします。有効にすると、メッシュの 縮退三角形 や他の幾何学的アーティファクトを削除しようとします。この結果、衝突判定に適したメッシュが得られ、より正確な衝突位置を得られる傾向があります。
Weld Colocated Vertices 物理エンジンがメッシュ内の等しい頂点を削除します。有効にすると、物理エンジンは同じ位置の頂点を 1 つにまとめます。これは、ランタイムに発生する衝突のフィードバックにとって重要です。
Use Fast Midphase 物理演算エンジンが、 出力 プラットフォームで使用可能な最速の中間位相加速構造体とアルゴリズムを使用するようにします。このオプションを有効にすると、物理演算エンジンは空間アクセスに R ツリーを必要としないより高速なアルゴリズムを使用します。一部のプラットフォームでランタイムに中間位相の問題が発生した場合でも、このオプションを無効にして、代わりに遅い従来の中間位相のアルゴリズムを使用できます 。
Material 使用する 物理マテリアル への参照。物理マテリアルによりコライダーが他と衝突したとき、どのように相互作用するかが決定されます。
Mesh 衝突判定に使用するメッシュ。

詳細

メッシュコライダーは、ゲームオブジェクトにアタッチされた メッシュ から、コライダーの形状を作成し、コライダーの位置とスケールを正しく設定するために、同じくアタッチされた Transform を読み込みます。この方法の利点は、コライダーの形状をオブジェクトの表示されているメッシュの形状とまったく同じにできるため、より精密で正しい衝突判定ができる事です。ただし、その精密さによって、プリミティブのコライダー (スフィア、ボックス、カプセル) による衝突判定よりも、処理オーバーヘッドが高くなるので、メッシュコライダーは控えめに使った方がよいでしょう。

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

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

メッシュの調整

メッシュの調整は、通常のメッシュを物理エンジンで使用できるメッシュに変更します。調整によって、Physics.Raycast などの物理クエリを空間検索する構造と、接触生成をサポートする構造を構築します。Unity は、すべてのメッシュを衝突検出で使用する前に調整します。これは、インポート時 (Import Settings > Model > Generate Colliders)、またはランタイムに行われます。

実行時にメッシュを生成するとき(例えば、 手続き型サーフェスの場合)、より早く結果を生成するために Cooking Options を設定し、追加のクリーニングのデータクリーニングステップを無効にすると便利です。欠点は、縮退した三角形や同じ場所に配置された頂点を生成する必要がないことですが、クッキングはより速く動作します。

Enable Mesh Cleaning または Weld Colocated Vertices を無効にする場合は、これらのアルゴリズムがフィルタリングするデータを使用していないことを確認する必要があります。 Weld Colocated Vertices を無効にしている場合は、同じ場所に配置された頂点がないことを確認し、 Enable Mesh Cleaning を有効にするときに、面積がゼロに近い小さな三角形、薄い三角形、大きな三角形がないことを確認してください。その面積は無限に近いです。

注意Cooking Options をデフォルト設定以外の値に設定する場合は、isReadable の値が true のメッシュを使用する必要があります。

制限

メッシュコライダーには、いくつかの制限があります。

Rigidbodyコンポーネントを持つゲームオブジェクトは、 Convex オプションが有効なMesh Collidersのみをサポートします 。 物理演算エンジンは、 凸状のメッシュコライダーしかシミュレートできません。

メッシュコライダーが正しく機能するためには、以下のいずれかの状況でメッシュを読み書き可能にする必要があります。

  • メッシュコライダーの Transform が負のスケールを持ち (例えば、(–1, 1, 1))、かつメッシュが Convex (凸状) である場合。
  • メッシュコライダーの Transform が歪んでいたり、せん断変形 (例えば、回転した Transform がスケールされた親の Transform を持つなど) している場合。
  • メッシュコライダーの Cooking Options が、デフォルト以外の値に設定されている場合。

コライダーに使用されるメッシュジオメトリは変更しないでください。 物理演算エンジンは、メッシュを変更するたびに内部メッシュの衝突加速構造体を再構築する必要があるためです。これにより、パフォーマンスのオーバーヘッドが大幅に増加します。 ランタイムに衝突して変化する必要があるメッシュでは、メッシュ形状をカプセル、球、ボックスなどのプリミティブコライダーで近似する方がよい場合があります。

最適化のヒント メッシュがメッシュコライダーのみに使用される場合は、インポート設定法線 を無効にできます。なぜなら、物理システムでは法線を必要としないためです。


  • 2018.3でMesh Colliderの制限を更新

  • 2018–10–12 修正されたページ

  • Mesh Cooking Options は 2017.3 で追加NewIn20173

  • バージョン 2018.1 の更新機能

  • 読み込み/書き込み可能な設定に関する制限を 2017.3 で更新

  • Inflate Convex Meshは、2018.3 で非推奨に。なぜなら、新しい凸状の計算アルゴリズム (Quickhull) が入力メッシュの不完全さに対してより寛容であるため。

Hinge Joint
Rigidbody