使用 MRTK 中的 WorldAnchorManager

Using WorldAnchorManager from MRTK

目前我尝试使用 MRTK 2.4 的实验性 WorldAnchorManager(参见 official API entry)。总而言之,一切看起来都很轻松。首先,您必须创建一个管理器实例并将其分配给您要使用它的脚本。之后,应该可以使用这段代码将锚点加载到对象中:

public string AttachAnchor(GameObject gameObjectToAnchor, string anchorName = null)

此代码还保存了 API 中提到的 Anchor。

如果我想从游戏对象中删除锚点,我可以调用:

public void RemoveAnchor(GameObject gameObjectToUnanchor)

在我的 Unity-Project (2019.3.7) 中,我计算了一些游戏对象的位置,然后通过上述方法为它们分配锚点。如果我移动游戏对象,我会移除锚点并在移动过程完成后再次附加它们。

如果我在 HoloLens2 上部署解决方案,定位游戏对象,附加锚点并获取锚点已成功附加的日志,这些锚点应该可以跨会话在本地访问 hololens2。不幸的是,在我的情况下,在设备上重新启动应用程序并重新加载锚点后,它们无法加载。管理器记录“无法为‘GO 名称’加载锚 ... 创建新锚”。

我不确定我做错了什么,这个管理器应该已经工作了吗?我是否必须在 Unity 项目中配置一些东西才能使用管理器?也许有人已经在使用管理器并可以帮助我解决这个问题。

好的,我编写了一个使用 MRTK 的世界锚点管理器的小示例应用程序。 基于这些步骤:https://docs.microsoft.com/en-us/windows/mixed-reality/develop/unity/persistence-in-unity,该应用程序允许用户在任何位置放置一个立方体,每次释放立方体时自动创建并保存一个锚点。 当应用程序关闭且 re-started 时,将加载锚点并将立方体放置在其保存的位置。

来源可以在这里找到:https://github.com/anders-lundgren/mrtk-world-anchors

已在 Unity 2019.4.9f1、Visual Studio 2019、HoloLens 2(内部版本 10.0.19041.1377)上验证。

除了上述步骤外,我还根据 https://docs.microsoft.com/en-us/windows/mixed-reality/develop/unity/tutorials/mr-learning-base-02. I also added a simple debugging prefab from this example: https://docs.microsoft.com/en-us/windows/mixed-reality/develop/unity/tutorials/mr-learning-asa-02#importing-the-tutorial-assets, and the manipulation handler from this example: https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/README_ManipulationHandler.html 上的 MRTK 入门教程添加了基本 MRTK 组件。

即使太晚了,我也想把这道题做完。 WorldAnchorManager 仅在使用遗留 XR 为 WSA 平台构建时起作用。它不适用于编辑器或 Unity-XR-Plugin。我尝试将它与 XR-Plugin 一起使用。