3DモデルのMeshを細分化して、凹状の当たり判定を設定出来る!
[ULTIMATE GAME TOOLS] Concave Colliderの使用例と、使うコツ。
49.50ドル(税込み)と、結構良いお値段。
頻繁に半額セールを確認。
以下は、Concave Colliderを帆船の3Dモデルに使用した参考になるか微妙な記事。
使用例
この3Dモデルでは、Algorithm:FastにするとSphereが漏れ出た。
Algorithm:Normalならば通常設定でも、ほぼ防げる。
Algorithm:Legacyの高精度設定では、漏れは防げるが、計算時間が3時間程掛かる。
使用したパラメータ
【Fast、通常設定】一番左
- Algorithm:Fast
- Max Hull Vertices:64
- Max Hulls:128
- Internal Scale:10
- Precision:0.8
- Back Face Distance Facter:0.2
【Fast、高精度設定】左から二番目
- Algorithm:Fast
- Max Hull Vertices:255
- Max Hulls:255
- Internal Scale:0
- Precision:1
- Back Face Distance Facter:0.2
【Normal、通常設定】左から三番目
- Algorithm:Normal
- Max Hull Vertices:64
- Max Hulls:128
- Internal Scale:10
- Precision:0.8
- Back Face Distance Facter:0.2
【Normal、高精度設定】左から四番目
- Algorithm:Normal
- Max Hull Vertices:255
- Max Hulls:255
- Internal Scale:0
- Precision:1
- Back Face Distance Facter:0.2
【Legacy、通常設定】左から五番目
- Algorithm:Legacy
- Max Hull Vertices:64
- Max Hulls:128
- Internal Scale:10
- Precision:0.8
- Legacy Steps:6
- Back Face Distance Facter:0.2
【Legacy、高精度設定】一番右
Legacy Stepsを高く設定すると、地獄程、計算時間が掛かるので注意。
Algorithm:Normal高精度設定の計算が数分で済むPCで、3時間程。
- Algorithm:Legacy
- Max Hull Vertices:255
- Max Hulls:255
- Internal Scale:0
- Precision:1
- Legacy Steps:20
- Back Face Distance Facter:0.2
Concave Colliderコンポーネントのパラメータの説明
Algorithm
Mesh細分化の計算方式。
デフォルト設定はFast。
Fast | 早 | 中精度 |
Normal | 遅 | 高精度 |
Legacy | 早 | 低精度 |
Max Hull Vertices
計算プロセスで使用する要素。
Verticesの上限。
0に設定すると、元のまま使用との記述があったが、最低3までしか設定出来ない。
デフォルト設定は64。
Max Hulls
生成されるHullの上限。
デフォルト設定は128。
Internal Scale
計算プロセスで使用する要素。
0に設定すると、元のまま使用。
デフォルト設定は10。
Precision
精度そのもの。
デフォルト設定は0.8。
Legacy Steps
AlgorithmをLegacyに設定した場合のみ出現。
計算のプロセスで使用する要素。
大きく設定する程、計算時間と精度が増す。
デフォルト設定は6。
Enable Prefab Usage
生成したMeshをシーン上に設置するか、フォルダに保存するか否か。
プレハブ化する場合は有効にする。
デフォルト設定は無効。
Add Hull Meshfilter
HullにMesh Filterを追加するか否か(通常はMesh Colliderのみ)。
デフォルト設定は無効。
Output debug messages
出力時のデバッグメッセージを表示するか否か。
デフォルト設定は無効。
Advanced Options
Min Hull Volume
Hullの最低の大きさ。
この値以下のサイズのHullは、Box Colliderとして纏められる。
デフォルト設定は0。
Back Face Distance Facter
(良く分からない。以下、公式説明の英語翻訳)。
より良い結果を得るためには、これを中空オブジェクトの大きな値に設定します。
デフォルト設定は0.2。
Normalize Input Mesh
(良く分からない。以下、公式説明の英語翻訳)。
これは、「内部スケール」パラメータをオーバーライドします。メッシュは単位長の球体に合わせて内部的に処理されます。通常、これは結果を改善しませんが、いくつかの特定のケースでは可能です。
デフォルト設定は無効。
Force No Multithreading
マルチスレッドで計算しないようにする設定。
デフォルト設定は無効
Compute hull(s)
計算を実行。
Delete hull(s)
計算したHullを削除。
Is Trigger
全てのHullをTriggerにするか否か。
デフォルト設定は無効。
Material
全てのHullのPhysic Materialを紐付けする。
使い方
- 対象とする3Dモデルの、Mesh Filterがアタッチされたゲームオブジェクトを選択。
- インスペクターから、Concave Colliderコンポーネントをアタッチ。
- インスペクターから、Concave Colliderコンポーネント -> Compute hull(s)を実行。
生成の仕様
- 対象物下に、対象物を細分化したMesh Filterと、Mesh Collider(Convexが有効)がアタッチされたゲームオブジェクト「Hull」を生成。
- (Enable Prefab Usageを有効にした場合)対象物を細分化したMeshを、指定フォルダに保存。
- 通常設定ではフォルダに保存されていない。
プレハブ編集画面で実行すると、エディタを別画面に切り替えた時に「Hull」が消滅する。 - 相性が悪い3Dモデルだと、上手く形を取れない場合もある。
使用のコツ
- プレハブ化する場合は、Enable Prefab Usageを有効にしてからCompute hull(s)を実行。
指定した保存フォルダに、「Hull」を子に持つプレハブが生成される。 - (当たり前だが)Hullをコピーすると、再計算の必要なく当たり判定を使い回す事が出来る。
- Algorithmを、FastからNormalに変更すると、形を取る精度が上がる(但し、計算時間は増す)。
バグ (おま環?)
プレハブ編集画面で、Hullの生成を実行すると、プレハブが上書きされないバグが発生。
以下のようにして解決。
- シーン上にプレハブを設置。
- Hullを生成。
- インスペクターのOverrides -> Apply Allで上書き。
(Enable Prefab Usageを有効にするのも忘れずに)。