如何正确地将空间网格对撞机统一起来



我正在尝试从MS Hololens获得空间网格上的最近点。有了这个参考,我可以很容易地获得SpatialAwarenessMeshObject对撞机和gameObject(https://learn.microsoft.com/en-us/windows/mixed-reality/mrtk-unity/features/spatial-awareness/usage-guide?view=mrtkunity-2021-01(

它正在运行,但不是我所期望的。计算的最近点不正确。我做对了吗?请让我知道OnObservationAdded和OnObservation Updated方法之间的区别。

在此处输入图像描述LineManager.cs脚本:我想在空间网格上画一条从某个点到最近点的线。这个脚本试图获得空间AwarenessMeshObject的对撞机并找到它上最近的点。

在此处输入图像描述MeshManager.cs:这个脚本实现了来自SpatialAwarenessHandler的虚拟方法。我真的不知道每个虚拟方法意味着什么。

谢谢。

尝试为distance属性渲染一条线是非常昂贵的。我们可以尝试以下步骤来完成此任务:首先,用Camera.mainCamera.gameObject.transform.position获取主摄影机的位置,用Mesh.vertices获取网格的顶点位置。然后,利用Mesh.Transform.TransformPoint将顶点位置从局部空间变换到世界空间。最后,调用Vector3.Distance来获取它们之间的距离。

请让我知道OnObservationAdded和OnObservation Updated方法之间的区别。

OnObservationAdded在观察者创建网格时升高,OnObservationUpdated在网格更新时升高。请查看此源代码以了解其工作原理:BaseSpatialMeshObserver。