首页 > 解决方案 > 获取对象内网格的所有三角形

问题描述

我想与通过 mrtk 访问的空间地图/网格进行交互。我想在光标位置实例化一个球体,并获取球体内部空间网格的每个三角形,这样我就可以把它剪下来并为我保存。我知道如何实例化和定位球体,我知道如何通过场景理解 sdk 获得空间网格,但我不知道如何解决这个问题。为了更好地理解我想尝试什么,我画了一个小草图: 在此处输入图像描述

--编辑和解决方案--

  1. TriggerEnter & -Exit 获取碰撞对象
  2. 我的 Sphere/Cube/Whatever 有来自 mrtk 的对象操作脚本,它有一个 EndOfManipulation 事件,在放置我的任何对象后触发。
  3. 获取所有网格过滤器和网格
  4. 通过collider.bounds.contains检查点是否在我的对撞机内,并保存所有这些点以通过来自@Pluto的代码创建新网格。
  5. 将网格组合成一个网格并放置在某处

标签: unity3dspatialmeshmrtk

解决方案


  • 获取spatialMesh球内顶点的索引->indicesList
  • 从三角形数组中spatialMesh获取包含所有顶点索引的三角形indicesList->triangleList

您拥有为球体内的网格构造顶点数组和三角形数组所需的一切。

举个例子:

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

推荐阅读