空间大头针示例

空间大头针示例中演示的功能也可在主要的世界锁定物理示例场景中使用。

但空间大头针场景提供了一个更简化、更集中的空间大头针功能视图。 旨在更接近需要将大型对象与现实世界特征对齐的现实世界应用程序的内部运行。

因此它缺少更一般化的世界锁定物理示例的许多选项和运行时 UX。

默认设置

可以通过选择 WorldLocking > WorldLockingManager 节点,在 Unity 检查器中检查应用的世界锁定工具管理器设置

特别是启用了世界锁定工具的自动保存和自动加载功能。 因此,在将球体和测量光束与现实世界的特征对齐后(如下所述),随后的启动会话将自动恢复对齐。

若要将示例重置为干净状态,请卸载它并重新部署。 当然有相应的 API 可用于从脚本中重置为初始状态,但为了清楚说明,这里省略了这些 API。 请参阅 IAlignmentManager.ClearAlignmentAnchors()

此外,该演示还支持自动调整操作。 请参阅下文

物理空间设置

此示例包含 4 个标记。 为了全面探索该示例,请将物理标记放置在与虚拟标记布局相对应的空间中。

注:Unity 场景中虚拟标记的布局可能会发生改变,以适配物理空间。 默认布局并无特殊之处。 然而,要想看到空间大头针功能的优点,需要分布大量的标记,且间隔距离至少要几米。

房间中物理标记的布局应与 Unity 场景中虚拟标记的布局相匹配,如下图所示:

空间图钉标记的布局

运行示例

启动

第一个会话启动时,Unity 坐标空间的原点位于启动时的头部姿势。

向左和向前看 6 米将显示一个青色球体,其上方有一个青色立方体。

向右和向后看会在 10 米远处显示一个红色球体和立方体。

从原点向前移动并向后看会显示一个白色球体和立方体。 8 米以外会显示一个黄色球体和立方体。

这些球体下方会显示颜色交替的光束。 演练时就会看到它们的用途。

对齐世界

移动到任意一个彩色球体。 本演练从红色球体开始。

走到红色球体处。 在 HL2 中可以使用手部射线从某个距离抓取球体,在 HL1 中可以凝视并揑住球体。 在 HL2 中也可以将其抓到手里。

四处观望,找到物理房间中放置的与红色球体对应的标记。 通过上述方法之一抓取虚拟红色球体,并将其拖动到红色球体的标记处。 进一步调整球体,使其尽可能与物理标记对齐。

其他球体现在也移动了。 但它们的方向保持不变。 也就是说,虚拟世界已转换为在其标记上放置了红色球体,但世界的方向尚未受到影响。

移动到另一个球体处。 本演练的下一个球体是白色球体。

重复上述过程,移动虚拟白色球体,使其与物理标记对齐。

现在,虚拟空间已旋转和转换,红色、白色和青色球体仍在一条线上,黄色球体位于与白色球体垂直的位置上。

验证当靠近白色球体时,球体是否与其物理标记对齐。 走到红色球体处并验证球体是否与其物理标记对齐。

现在走到最后一个球体。 本演练现在走到青色球体。

虽然青色球体与红色和白色球体在一条线上,但它未正确定位于其标记处。 该误差的确切向量和大小取决于设备甚至具体状况,有可能是它虽然位于红白球体线上,但物理标记不足。

拖动青色球体使其与物理标记正确对齐。 通过走到每个标记处并进行检查,验证三个标记现在是否在彼此的邻近范围内正确对齐。

如果需要,也对最后一个球体重复此过程。

备用操作模式

上述演练基于应用程序中的默认配置,其中虚拟空间的方向默认由标记的相对定位来确定。

在备用模式下,方向可以通过抓取球体并围绕 Y 轴旋转来明确设定。

上述默认操作模式通常要容易得多,因为在虚拟空间中定位对象往往比向特定方向旋转要精确得多。

同样,使用 QR 码进行自动对齐时,为 QR 码标记返回的位置往往比定向更可靠。

但某些应用程序可能预先就具有所需空间方向的特定信息,就可能会利用第二种方法。

若要启用演示中的显式定向方法,只需在以下位置禁用标记球体上活动的“空间大头针可定向操作”组件:

“内容”>“操作”>“标记”> CyanSphere/RedSphere/YellowSphere/GreySphere。

并启用当前禁用的“空间大头针操作”组件。

然后,建议的演练为:

使其中一个球体与其物理标记对其,并设置其方向,使其他球体位于它的正确方向上。

其他球体现在处于不正确的距离,但其向量近似正确。

轮流移动到其他球体处,并重新定位每个球体,使其与其物理标记对齐。 无需进一步更改方向。

检查效果

如果有可用的测量工具(如卷尺),可以进一步检查此对齐效果。

如果所有球体均已正确放置,则每个球体都不应存在误差。

球体下的 T 光束会以每米为单位交替颜色。 通过使用测量设备中的米标记来测量光束中颜色变化的偏差,可看到空间大头针之间区域中的误差。

调整操作

自动调整操作基本上如下所示:

  1. 放置一个或多个球体后,虚拟对象会按预期对齐。
  2. 随后,跟踪将丢失。
  3. 在移动到另一个物理区域后,跟踪会恢复。
  4. 第一个球体的对齐丢失且不再有效果(因为它们位于不同的片段)。
  5. 在空间中的新区域(可能定位另一个球体)中四处移动后,头部会移回初始空间。
  6. 系统会静默自动地执行一个调整操作,将初始片段和新片段合并在一起。
  7. 第一个球体的对齐再次生效(因为它们现在都在同一个片段中)。