Version: Unity 6.0 (6000.0)
言語 : 日本語
メッシュコライダーの概要
Mesh collider コンポーネントのリファレンス

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

メッシュコライダーでは、衝突が正確に行われるようにゲームオブジェクトのメッシュを適切に設定する必要があります。

メッシュへの読み取りと書き込みアクセスを許可する

メッシュへの読み取り/書き込みを可能にすることを必要とする、特定の設定と最適化が存在します。この場合の “読み取り/書き込み” の意味の詳細については、Mesh API プロパティ Mesh.isReadable に関するドキュメントを参照してください。

以下のいずれかの状況が true の場合、メッシュは読み取り/書き込み可能であることが必要です。

  • アタッチされたメッシュコライダーの Transform に負のスケーリング (例: (–1, 1, 1)) が設定されており、かつメッシュが凸状である。
  • アタッチされたメッシュコライダーの Transform が歪んでいる、またはせん断変形している (例: 回転した Transform がスケーリングされた親の Transform を持つ)。
  • メッシュコライダーの Cooking Options (メッシュの調整の設定を参照) がデフォルト以外の値に設定されている (つまり、None 以外はすべて有効になっている)。

メッシュの読み取り/書き込みを有効にする

メッシュの読み取り/書き込みを有効にするには、メッシュの Mesh.isReadable 値が true に設定されていることが必要です。エディターから適用するには、次の手順を行います。

  1. Project ウィンドウで、メッシュが含まれるモデルファイル (例: FBX ファイル) を選択します。
  2. Inspector で Model を選択します
  3. Meshes セクションで、Read/Write を有効にします。

メッシュの調整の設定

メッシュコライダーとの衝突を計算するには、物理演算システムがメッシュのジオメトリにアクセスできる必要があります。“メッシュの調整” とは、3D メッシュを元の形式 (例: FBX や OBJ) から物理演算システムが読み取り可能な形式に変換するプロセスのことです。調整プロセスでは、Raw のメッシュデータを取得し、Unity が物理演算クエリにより迅速に応答できるように空間検索構造を構築します。

メッシュの調整は、Import Settings (Import Settings > Model > Generate Colliders) またはランタイムにトリガーできます。

ランタイムにおけるメッシュの調整の最適化

メッシュの調整プロセス中に、Unity はメッシュのサイズと複雑さを軽減するためにさまざまな最適化を適用できます (例: 冗長な頂点の削除、重なっている三角形のマージ、三角形の数を減らすためのジオメトリの簡素化)。その後、Unity は最適化されたメッシュをより迅速かつ効率的にロードできるため、メモリ使用量が減り、全体的なパフォーマンスが向上します。

実行する最適化をコントロールするには、メッシュコライダーの Cooking Options プロパティを使用します (C# enum MeshColliderCookingOptionsに対応)。使用可能なさまざまな調整オプションの概要については、Mesh collider コンポーネントのリファレンスを参照してください。

デフォルトの Cooking Options は、エディターで調整し、ランタイムに再調整しないメッシュコライダーに適しています。また、ランタイムに必要なほとんどのメッシュコライダーにも適しています (特に、1 回だけ調整する必要がある大きなメッシュや複雑なメッシュ)。ただし、ランタイムに衝突ジオメトリを素早く生成する必要がある場合は、Cooking Options を変更してコライダーの生成を高速化することが必要になる可能性があります (例: プロシージャルのサーフェス。プレイヤーの動作に反応してデフォームするメッシュコライダー)。

Unity がランタイムに生成するメッシュのメッシュ調整を最適化するには、データクリーニングステップを無効にします (Enable Mesh CleaningWeld Co-Located Vertices)。ただし、データクリーニングステップを無効にする場合は、メッシュデータを検証する別の方法を用意して、それらのアルゴリズムでクリーニングされるデータを使用しないようにする必要があります。

  • Enable Mesh Cleaning が無効になっている場合は、メッシュに縮退した三角形がないことを確認する必要があります (例: 点が同一直線上にある薄い三角形、領域が 0 または無限に近い三角形)。
  • Weld Colocated Vertices が無効になっている場合は、メッシュの頂点が同じ場所に配置されている (つまり、同じ場所に複数の頂点が存在する) 状態ではないことを確認する必要があります。

Cook For Faster Simulation を無効にして、メモリ使用量を節約することもできます。

Cooking Options を変更する場合は、メッシュに読み取り/書き込みアクセス権を適用する必要があります。この方法については、メッシュへの読み取りと書き込みアクセスを許可するを参照してください。

レンダリングされていないメッシュの最適化

メッシュが物理演算の計算に関するデータを提供することのみを必要とし、レンダリングに関するデータを提供することは必要としない場合 (例: 個別のコライダーの場合)、メッシュの法線をインポートする必要はありません。法線が配置されていないメッシュは、必要なメモリとディスクスペースが少なくて済みます。

法線を無効にするには、以下の手順を行います。

  1. Project ウィンドウで、メッシュを選択します。
  2. Inspector の Import 設定で、Model を選択します。
  3. Geometry セクションに移動し、NormalsNone に設定します。
メッシュコライダーの概要
Mesh collider コンポーネントのリファレンス