IAnchorManager

Frozen World 引擎依靠用户周围的空间定位点网络,从该网络计算理想的世界锁定空间。

IAnchorManager 维护该网络,并将其提供给引擎来处理每个帧。

目前有许多 IAnchorManager 实现,它们都派生自 Assets/WorldLocking.Core/Scripts/AnchorManager.cs 中的基类 AnchorManager。 AnchorManager 操控抽象的 SpongyAnchor,执行常见的定位点图维护操作。 专门的功能与特定于平台的 API 交互,例如 AnchorManagerXR 类管理基于 XRAnchor 生成的 SpongyAnchor。 Frozen World 引擎本身不限制使用的定位点类型。

用户在环境中四处移动时,AnchorManager 会根据以下简单但有效的算法扩大定位点图:

  • 如果最近的现有定位点离用户的距离超过 X 米,则:
    • 添加新定位点。
    • 从新定位点向与它的距离不超过 Y 米的所有现有定位点添加边缘。

上面的“X”和“Y”的值是 AnchorManager 中的常量,分别作为 MinNewAnchorDistance 和 MaxAnchorEdgeLength。 它们可以转换为属性,从而为 WorldLockingContext API 表面提供更大灵活性,不过这会增加复杂性。 但到目前为止,我们对当前的这两个值(分别为 1 米和 1.2 米)感到满意。

上述算法会扩大用户初次探索期间所经过的空间内的空间定位点的图,最终演变为静态网络。

定位点管理器也可以在多个会话中保存定位点图。

AnchorManager 提供了一些选项,可用于在会话期间自动保存其定位点图、在启动时加载以前保存的图,或按需保存和加载。 持久性的可用性取决于平台支持。

另请参阅

以及 API 参考中的: