オブジェクト内のメッシュのすべての三角形を取得します

Aug 18 2020

mrtk経由でアクセスできる空間マップ/メッシュを操作したい。カーソル位置で球をインスタンス化し、球の内側にある空間メッシュのすべての三角形を取得したいので、それを切り取って保存します。球をインスタンス化して配置する方法と、SDKを理解するシーンを介して空間メッシュを取得する方法を知っていますが、これにアプローチする方法がわかりません。私が試したいことをよりよく理解するために、私は小さなスケッチを描きました:

-編集と解決策-

  1. TriggerEnter&-終了して、衝突したオブジェクトを取得します
  2. 私のSphere / Cube / Whateverには、mrtkのオブジェクト操作スクリプトがあり、whatever-objectを配置した後にトリガーされるEndOfManipulation-eventがあります。
  3. すべてのメッシュフィルターとメッシュを取得する
  4. collider.bounds.containsを介してポイントがコライダー内にあるかどうかを確認し、それらすべてのポイントを保存して、@ Plutoのコードを介して新しいメッシュを作成します。
  5. メッシュを1つのメッシュに結合し、配置することはどこかにあります

回答

1 Pluto Aug 17 2020 at 23:28
  • spatialMesh球の内側にある頂点のインデックスを取得します->indicesList
  • の三角形配列から、spatialMeshすべての頂点インデックスが内部にある三角形を取得しますindicesList->triangleList

そして、球の内側のメッシュの頂点配列と三角形配列を作成するために必要なものはすべて揃っています。

ちょうど例として:

for i = 0 to triangleList.Count
    newVertices[i] = spatialMesh.vertices[triangleList[i]];
    newTriangles[i] = i;