我一直在尝试在 HoloLens 应用程序(网格由 Microsoft HoloLens 生成)运行期间在网格中找到一个固定点重新启动应用程序后我可以联系起来,但没有成功。我的目标是在网格中找到一个固定点,在放置从上次应用程序运行 保存的预制件时,我将与该点相关联。我将使用该点作为原点,将预制件放置在它们在网格中的先前位置,从而将它们显示在它们最初放置在网格中的位置。
我曾尝试执行以下操作,但结果不正确:
- 保存 SpatialMapping GameObject 的 transofrm 组件的 LocalToWorld/WorldToLocal Unity4x4 矩阵,并对预制件的位置执行 Matrix4x4.MulitplyPoint()
- 相对于生成的网格的局部中心转换预制件的位置
- 转换预制件相对于第一个子网格局部中心的位置
请注意,一旦我放置了预制件,我将不会更改网格(禁用空间表面的更新),即使在未来的应用程序运行中也是如此。
唯一的限制是我不能使用 WorldAnchors,因为我需要能够在 MixedReality 应用程序之外(特别是在 WebGL 应用程序中)编辑这些预制件的位置strong>),然后将它们显示在网格中 HoloLens 应用程序中正确的编辑位置。
最佳答案
这恰恰是一个锚定任务。网格中没有固定点。
- 您需要在世界中放置 anchor 。然后获取GetNativeSpatialAnchorPtr
- SpatialAnchor有 TryCreateRelativeTo() 方法。用它来创建编辑位置。
- 从编辑后的位置分配 SetNativeSpatialAnchorPtr()。
关于unity3d - 在 Microsoft HoloLens 上查找网格中的固定点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55011644/