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のみをサポートします 。 物理演算エンジンは、 凸状のメッシュコライダーしかシミュレートできません。
メッシュコライダーが正しく機能するためには、以下のいずれかの状況でメッシュを読み書き可能にする必要があります。
コライダーに使用されるメッシュジオメトリは変更しないでください。 物理演算エンジンは、メッシュを変更するたびに内部メッシュの衝突加速構造体を再構築する必要があるためです。これにより、パフォーマンスのオーバーヘッドが大幅に増加します。 ランタイムに衝突して変化する必要があるメッシュでは、メッシュ形状をカプセル、球、ボックスなどのプリミティブコライダーで近似する方がよい場合があります。
最適化のヒント メッシュがメッシュコライダーのみに使用される場合は、インポート設定 の 法線 を無効にできます。なぜなら、物理システムでは法線を必要としないためです。
2018.3でMesh Colliderの制限を更新
2018–10–12 修正されたページ
Mesh Cooking Options は 2017.3 で追加NewIn20173
バージョン 2018.1 の更新機能
読み込み/書き込み可能な設定に関する制限を 2017.3 で更新
Inflate Convex Meshは、2018.3 で非推奨に。なぜなら、新しい凸状の計算アルゴリズム (Quickhull) が入力メッシュの不完全さに対してより寛容であるため。
MeshCollider
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.