工具和可视化工具

Microsoft.MixedReality.WorldLocking.Tools 命名空间中的工具和可视化工具旨在帮助开发。 它们还可能是通过 World Locking Tools (WLT) 系统进行高级直接交互的起点。

尽管它们不是像在应用程序中那样直接使用,但应用程序开发人员可以自由选择这样做。

WorldLocking.Core 用于在任何适当的应用程序场景中按原样工作。 不过,Tools 可能对应用程序进行假设。 在某些情况下,这些假设可能使它们不适合。

在将任何工具直接纳入提供应用程序之前,请考虑根据自己的需求和资源创建该工具的版本。

工具

调整器

调整器是处理调整事件的组件。 具体而言,它们会创建连接点。 在调整操作中,AttachmentPoint 将起到通知回调的作用。 调整器会适当地处理该事件。

请参阅 AttachmentPoints 的进一步概念讨论。

调整事件的准确反应将因对象类型而异,并且非常特定于应用程序。 例如,如果对象的片段当前处于非活动状态,则是否应显示该对象? 对于某些应用程序,由于无法确定对象的正确位置,因此应将其隐藏起来。 对于其他应用程序,以暂时错误的姿势显示对象要比承受其消失造成的混乱要好。 即使对于应隐藏对象的应用程序,也可以通过多种方式来执行隐藏(例如,禁用与远离)。

AdjusterFixedAdjusterMoving 组件至少处理两种常见场景。

AdjusterFixed 组件假设其目标通常是不可移动的。 如果 World Locking Tools 由于调整事件而发送了调整姿势,则它的目的是使 AdjusterFixed 的对象在全世界保持静止。

与此相反,AdjusterMoving 组件假设其目标是通过 Unity 坐标空间移动的。 它会使 World Locking Tools 系统计算其目标位置,这样如果进行调整操作,系统可以提供最精确的校正,以使目标位置相对于此时物理世界的位置保持不变。

适配器

适配器组件仅用于说明。 如果你发现自己正在使用其中一个适配器,则可能应该重新考虑你如何尝试使用 World Locking Tools。

特别是,MRTK 已有内置适配器,因此对于应用程序,不需要进行进一步的坐标系统转换。

当从本机资源(它将报告海绵状空间坐标)转换为冰冻空间时,可能会需要一段时间(尤其是没有使用 MRTK 时)。 在这些情况下,应用程序开发人员可能会发现此处包含的其中一个适配器是一个不错的参考。

  • WorldAnchorAdapter - WorldAnchor 会调整对象在海绵状空间中的姿势,使其在物理空间中保持固定。 这对于 World Locking Tools 提供的世界锁定空间是冗余的,因此对象会在冰冻空间中出现偏移。 此适配器让 WorldAnchor 能够保持冰冻空间中的对象的姿势。 这不是必需的(诊断除外)。 Unity 的全球坐标空间中的所有对象都由 World Locking Tools 世界锁定。

  • ToggleWorldAnchor - 类似于 WorldAnchorAdapter,但可以切换。 禁用 WorldLockingManager 时,还会自动转换为常规 WorldAnchor 行为。 仅适用于诊断。

  • FrozenSpatialMapping - 适配器管理并正确呈现 SurfaceObserver 中的结果。 MRTK 空间感知系统提供所有这种功能,并且不需要将适配器与 World Locking Tools 结合使用。

  • FrozenTapToAdd - 直接与 Unity 的输入系统交互需要转换传入的坐标数据,如下所示。 MRTK 的输入系统不需要这样做。

可视化工具

定位点图可视化

AnchorGraphVisual 及其关联的预制是提供的可视化对象的核心。 组件部分如下所示:

  1. 轴 - 海绵状空间(绿色)和冰冻空间(蓝色)的源的当前姿势显示为标准的 3 箭头轴标识符。

  2. 海绵状定位点 - 这些是本机基础定位点,用于满足 Frozen World Engine 优化。 每个定位点都用环形来表示,带有一个用于标识它的文本标记。 此外,还通过颜色和大小传达详细信息。

    • 活动跟踪定位点是绿色的。

    • 具有零相关性的跟踪定位点是红色的。

    • 不受支持的定位点是黄色的。

    • 环形越大,该定位点的相关性越大。

  3. 冰冻定位点 - 它们是冰冻空间中的相应参考点。 在没有跟踪器错误的情况下,这些定位点将与海绵状定位点精确对齐。

  4. 海绵状-冰冻边缘 - 这些边缘将海绵状定位点连接到相应的冰冻定位点。 由于没有跟踪器错误,这些边缘会重合,而看不到这些边缘表示一切正常运行。 在任何情况下,这些边缘的长度不得超过几厘米。 它们在冰冻端上为红色。 颜色在海绵状端上淡化为蓝色。

  5. 定位点边缘 - 这些细的蓝灰色线条显示了定位图中海绵状定位点之间的连接。

遍历房间的典型定位点图

启用 World Locking Tools 生成为有关物理环境的用户移动的定位图的显示,只需将 WorldLockingTools > Prefabs > AnchorGraphVisual 预制拖放到场景中即可。 它通常作为同级自定义添加到 WorldLockingContext,但它在层次结构中的确切位置并不重要。 但是,不应将它放置在“照相机”层次结构中。

在照相机位置创建 WLT 创建并在内部使用的空间定位点。 由于在视线水平上浏览定位点可视化区域会让人感到不安,所以系统默认将它们显示在距离真实位置向下 1 米的地方。 若要在实际定位点位置查看定位点可视化,请将定位点图视觉对象的垂直位置参数设置为 0。

其他输出

World Locking 示例包括文本诊断。 其中的大多数只与 World Locking Tools 的开发人员有关(而不是与其功能的客户相关)。 但是,它们可用于读取以及实时显示(如 StatusToText 脚本所示)。

典型诊断显示

对于事后分析,WorldLockingContext 的“诊断”部分对于报告 Frozen World Engine 故障非常有用。 有关详细信息,请参阅报告 bug