常见问题解答

本文档中使用的定义:

姿势 - 位置和方向。

全息影像 - 可见的虚拟对象。

现实世界 - 物质世界。

物质世界 - 现实世界。

虚拟世界 - 通过电子媒体呈现的合成和模拟世界。

虚拟世界标记 - 虚拟(建模)坐标系中的一个姿势。 就是一个参考位置和方向。

真实世界标记 - 相对于现实世界环境和相机的一个姿势,对应一个虚拟世界标记。 现实世界标记的姿势基于合并的感测数据确定。

可见特征 - 视觉上可识别的物理世界特征。

世界锁定工具有何功能?

鉴于虚拟世界标记和现实世界标记之间的不一致性,世界锁定工具提供了稳定的坐标系和相机调整,从而将可见的不一致性降至最低。

换句话说,它使用共享的定位点池对整个场景进行世界锁定,而不是使用该组自己的单独定位点锁定每组对象。

为什么虚拟世界和现实世界的标记不一致?

在 Microsoft 混合现实背后的众多惊人技术中,一个非常出色的功能是在没有外部设备辅助的情况下实时跟踪头戴设备在物理世界中的姿势。

头部跟踪系统在确定头部相对于物理环境中已知虚拟参考点的姿势时异常准确。 在本次讨论中,这些虚拟参考点称为“可见特征”。

在离开一个相对于周围可见特征的已知位置时,例如,如果用户在房间里走动,然后返回到同一位置,系统将识别许多相同的可见特征。 系统还可以确定这些可见特征相对于当前头部姿势的姿势,且确定结果的精度非常惊人。

现在,跟踪器系统知道这些特征和头部的相对位置,但它不知道头部或这些特征的绝对坐标。 因为物理世界没有绝对坐标系,所以没有正确答案。 因此,跟踪系统按照与最近历史一致的方式分配坐标,但分配情况在所有历史中可能不一致。 也就是说,在返回到完全相同的姿势时,头部现在的坐标可能与离开时不同。 这是传感器偏移的一种形式。

但是(例如)如果新的头部虚拟姿势坐标是向正 X 方向偏移,那么在该虚拟坐标系中静止的所有全息对象现在都会相对于头部向负 X 方向偏移。 这意味着,对于佩戴头部跟踪器的观察者来说,与现实世界走动之前的位置相比,他们会发生相对于该位置的偏移。

Unity 能解决这个问题吗?

能,但只能一定程度上。 Unity 提供了一个很好的机制来应对这个问题,称为空间定位点。 如果虚拟空间相对于物理空间发生了偏移,则通过跟踪基础可见特征,空间定位点就能够在虚拟空间中自行偏移来保持在物理空间中的锁定。 空间定位点上附加的任何东西在 Unity 的虚拟空间中会以同样的方式移动,从而在物理空间中保持静止。

相关的局限性源于,当可见特征距离头部跟踪器的相机太远时,会变得不可靠。 这并不令人惊讶。 不可见的可见特征会生成不可靠的参考点。

因此,空间定位点的有效范围为 3 米。 根据应用程序对准确性的要求,有效范围有可能更小。

这听上去挺好的,有啥问题呢?

这不只是挺好,而是很出色。 但在某些情况下,在一些重要的情况下,空间定位点并不能提供令人满意的解决方案。

首先,每个空间定位点在 Unity 的虚拟坐标空间中是独立移动的,并尝试在物理世界中保持静止状态。 这意味着,当独立定位的对象试图保持其物理位置时,它们将相对彼此移动。 对于尝试保持精确布局的应用程序而言,这可能是一个很大的问题。

第二,由于范围有限,单个空间定位点无法为大于该空间定位点有效范围的单个对象提供良好的效果。 虽然靠近空间定位点的对象上的点将保持良好的世界锁定,但由于杠杆臂效应,距离空间定位点越远的点存在的误差越大。 这使大于一米左右的对象或对象的集合没有可靠的世界锁定解决方案。

还会产生什么问题?

在返回到以前占用的姿势时,世界锁定工具有足够的信息将虚拟坐标系恢复到之前其相对于物理世界的位置。 这可以使在虚拟世界中静止的全息图在物理世界中也保持静止。

但单程移动和往返移动中都可能发生偏移。

举一个具体的例子,设想要测量物理房间中两个 QR 码之间的 10 米距离,于是在虚拟房间中建立两个相隔 10 米的方框的模型。 但在运行时,由于头部姿势在虚拟空间中的偏移,在 QR 码之间行走 10 米会在虚拟空间中移动 11 米。

应用程序可以选择世界锁定工具的一个功能,通过提供虚拟空间距离与物理空间距离之间的校准信息来解决这个问题。 世界锁定工具提供的行为是,站在第一个 QR 码上方,向下看会看到第一个方框。 当在物理世界中走过这 10 米时,虚拟空间中多余的距离会被不知不觉地吸收掉,于是头部在虚拟空间中的移动距离也是 10 米。 因此,当到达第二个物理 QR 码并向下看时,第二个虚拟方框将按预期出现。

请注意,对于所有没有地面实况数据的定位点,在两个 QR 码之间的路径上经过这些定位点时,系统将对其进行相应调整。 当然,这种调整是以非常平滑的方式进行的,以便尽量减少观察者对其的感知。

如果现实世界的标记不稳定呢?

此外,如果真实世界的标记正在动态更新,世界锁定工具可以调整其空间帧并调整相机,以最优方式匹配当前配置。

例如,在 HoloLens 上,如果现实世界的标记是空间定位点,那么它们将随时间发生偏移。 在其他情况下,它们还会重建(如环路闭合)。 随着姿势的更新,世界锁定工具会像以前一样通过调整相机进行补偿,以便尽量减少检测到的空间定位点与其对应的虚拟定位点之间的可感知到的不一致性。

请注意,即使缺少有关标记的地面实况数据,也可以对定位点位置的更新进行补偿。 隐含的地面实况数据是,现实世界标记之间的当前关系是(更为)正确的。

如果不一致非常严重怎么办?

世界锁定工具可以检测到几种真实标记和虚拟标记之间存在较大不一致的情况,并可以加以改进。 例如,可以获取更多信息,以便在两个先前彼此独立的标记池之间建立空间关系。 或可以通过环路闭合,让标记沿着可以使端点相交的路线偏移。

在这些情况下,世界锁定工具会通知客户端可能发生的修复,并在客户端的指示下执行修复,然后通知客户应对跟踪虚拟标记的对象进行的调整。 在客户端请求这样的修复之前(如果有),世界锁定工具会持续最小化感知到的不一致性。