问题描述
我想与通过mrtk访问的空间地图/网格进行交互。我想在光标位置实例化一个球体,并获取该球体内部的空间网格的每个三角形,以便将其切出并保存下来。我知道如何实例化和定位球体,也知道如何通过场景理解sdk来获得空间网格,但是我不知道如何解决这个问题。为了更好地理解我想尝试的内容,我绘制了一个小草图:
-编辑和解决方案-
- 触发输入并-退出以获取碰撞的对象
- 我的Sphere / Cube /任何具有mrtk中的对象操作脚本的东西,在放置我的任何对象之后,该脚本都会触发EndOfManipulation事件。
- 获取所有meshfilter和网格
- 通过collider.bounds.contains检查点是否在我的对撞机内,并保存所有这些点,以通过@Pluto中的代码创建新的网格。
- 将网格合并为一个网格并放置在某处
解决方法
- 从
spatialMesh
获取球体内的顶点索引->indicesList
- 从
spatialMesh
的三角形数组中获得在indicesList
->triangleList
中具有所有顶点索引的三角形
您将拥有为球体内的网格构造顶点阵列和三角形阵列所需的全部功能。
仅作为示例:
for i = 0 to triangleList.Count
newVertices[i] = spatialMesh.vertices[triangleList[i]];
newTriangles[i] = i;