坐标系

混合现实应用的核心是将全息影像放置在你的世界中,这些 全息影像 看起来和听起来像真实对象。 这涉及到在世界上有意义的位置精确定位和定位这些全息影像,无论世界是物理空间还是你创建的虚拟领域。 Windows 提供用于表达几何图形的各种实际坐标系,这些坐标系称为 空间坐标系。 可以使用这些系统来推理全息影像位置、方向、 凝视 射线或 手部位置

设备支持

功能 HoloLens (第一代) HoloLens 2 沉浸式头戴显示设备
固定参考帧 ✔️ ✔️ ✔️
附加的引用框架 ✔️ ✔️ ✔️
阶段参考框架 尚不支持 尚不支持 ✔️
空间定位点 ✔️ ✔️ ✔️
空间映射 ✔️ ✔️
场景理解 ✔️

混合现实体验缩放

你可以为各种用户体验设计混合现实应用,从使用头戴显示设备的 360 度视频观看者到使用空间映射和空间定位点的全世界规模的应用和游戏:


体验规模 要求 示例体验
仅方向 头戴显示设备方向 (重力对齐) 360° 视频查看器
坐式缩放 基于零位置的以上加 头戴显示设备 位置 赛车游戏或空间模拟器
站立缩放 上加 舞台底板原点 动作游戏,你躲避到位
房间缩放 上加 阶段边界多边形 在拼图中四处走动的益智游戏
世界规模 空间定位点 (通常 为空间映射) 与来自真实墙壁的敌人(如 RoboRaid)的游戏

上述体验遵循“嵌套娃娃”模型。 Windows Mixed Reality的关键设计原则是:给定的头戴显示设备支持为目标体验规模和所有较小规模构建的应用。


6DOF 跟踪 定义楼层 360° 跟踪 已定义边界 空间定位点 最大体验
- - - - 仅方向
- - -
- - 站立 - 向前
- 站立 - 360°
Room
世界

HoloLens 尚不支持阶段参考框架。 HoloLens 上的房间规模应用当前需要使用 空间映射场景理解 来查找用户的地板和墙壁。

空间坐标系

所有 3D 图形应用程序都使用 笛卡尔坐标系 来推断虚拟对象的位置和方向。 这些坐标系建立三个垂直轴:X、Y 和 Z。添加到场景中的每个对象在其坐标系中都有一个 XYZ 位置。 Windows 将物理世界中具有实际意义的坐标系称为 空间 坐标系,该坐标系以米为单位表示其坐标值。 这意味着,在混合现实中呈现时,在 X、Y 或 Z 轴上放置两个单位的对象将显示彼此相距两米。 了解这一点后,可以轻松地以实际规模呈现对象和环境。

通常,笛卡尔坐标系称为“右手”或“左手”,因为可以使用手部位置来指示 XYZ 轴的方向。 在这两个坐标系中,正 X 轴指向右侧,正 Y 轴指向上。 两者的区别在于,在右手坐标系中,Z 轴 指向 你,而在左侧坐标系中,Z 轴指向 远离 你。

演示右手坐标系的人员右手图片

演示左手坐标系的人员左手图片

Windows (上的空间坐标系,因此,Windows Mixed Reality) 始终是右手的。

[!备注]

  • Unity和 Unreal 使用左手坐标系。
  • 尽管左手坐标和右手坐标是最常见的系统,但 3D 软件中还使用了其他坐标系。 例如,3D 建模应用程序使用 Y 轴指向查看器或远离查看器且 Z 轴指向上部的坐标系并不罕见。

构建仅方向或坐式规模体验

全息 渲染 的关键是,当用户移动时,更改应用对每帧全息影像的视图,以匹配其预测的头部运动。 可以使用固定的参照系来构建尊重用户头部位置和头部方向变化的坐席比例体验

某些内容必须忽略头部位置更新,始终固定在所选标题和与用户的距离。 主要示例是 360 度视频:由于视频是从单个固定角度捕获的,因此即使视图方向随着用户环顾四周而改变,也会破坏视图位置根据内容移动的错觉。 可以使用附加的参考框架构建此类仅限方向的体验

固定参考帧

固定参照系提供的坐标系可基于世界使对象靠近用户的位置尽可能稳定,同时尊重用户头部位置的变化。

对于游戏引擎(如Unity)中的坐式规模体验,固定的参照系定义了引擎的“世界起源”。放置在特定世界坐标处的对象使用固定的参照系使用这些相同坐标来定义它们在现实世界中的位置。 即使用户四处走动,仍保留在世界中的内容称为 世界锁定 内容。

应用通常会在启动时创建一个固定的引用帧,并在应用的整个生命周期内使用其坐标系。 作为 Unity 中的应用开发人员,你可以基于源开始放置内容,该源将位于用户的初始头部位置和方向。 如果用户移动到新位置并想要继续其座位规模体验,则可以在该位置更新世界起源。

随着时间的推移,随着系统更多地了解用户的环境,它可能会确定现实世界中不同点之间的距离比系统先前认为的要短或更长。 如果你在 HoloLens 上某个应用的固定参考框架中呈现全息影像,其中用户徘徊在大约 5 米宽的区域之外,你的应用可能会观察到这些全息影像观察到的位置偏移。 如果你的体验使用户游荡超过 5 米,则你正在构建 一个世界规模的体验,这将需要其他技术来保持全息影像的稳定,如下所述。

附加的引用框架

附加的引用框架随用户一起移动,在应用首次创建框架时定义固定标题。 这使用户可以舒适地四处查看该参考框架中的内容。 以这种相对于用户的方式呈现的内容称为 正文锁定 内容。

当头戴显示设备无法确定它所处的世界时,附加的参照系可提供唯一的坐标系,该坐标系可用于渲染全息影像。 这使得它非常适合显示回退 UI,以告知用户其设备无法在世界上找到它们。 坐姿缩放或更高级别的应用应包括仅限方向的回退,以帮助用户重新开始,UI 类似于混合现实主页中显示的 UI。

构建独立规模或房间规模体验

若要超越沉浸式头戴显示设备上的坐式缩放并构建 站立式体验,可以使用 舞台参考框架

若要提供房间规模体验,让用户在预定义的 5 米边界内四处走动,还可以为舞台边界检查。

阶段参考框架

首次设置沉浸式头戴显示设备时,用户定义一个 舞台,表示他们将在其中体验混合现实的房间。 阶段最小地定义了 一个舞台原点,这是一个空间坐标系,以用户选择的楼层位置和他们打算使用设备的方向为中心。 通过将内容放置在 Y=0 平面的此阶段坐标系中,可以确保在用户站立时,全息影像在地板上舒适地显示,从而为用户提供 站立缩放体验

阶段边界

用户还可以选择性地定义 阶段边界,这是他们清除的房间内在混合现实中四处移动的区域。 如果是这样,应用可以构建 房间规模的体验,使用这些边界来确保全息影像始终放置在用户可以到达的位置。

由于舞台参考框架提供一个固定坐标系,在其中放置与地面相关的内容,因此它是移植为虚拟现实头戴显示设备开发的站立缩放和房间缩放应用程序的最简单路径。 然而,与这些VR平台一样,单个坐标系只能稳定直径约5米 (16英尺) 的内容,然后杠杆臂效应导致远离中心的内容随着系统调整而明显移动。 若要超过 5 米,需要空间定位点。

构建世界规模的体验

HoloLens 可实现真正的 世界级体验 ,让用户在 5 米以上徘徊。 若要构建世界规模的应用,需要除用于房间规模体验的技术之外,还需要新的技术。

为什么单个刚性坐标系不能超过 5 米

如今,在编写游戏、数据可视化应用或虚拟现实应用时,典型的方法是建立一个绝对世界坐标系,所有其他坐标都可以可靠地映射回该坐标系。 在该环境中,始终可以找到一个稳定转换,该转换定义该世界中任意两个对象之间的关系。 如果不移动这些对象,它们的相对转换将始终保持不变。 这种全局坐标系在呈现纯虚拟世界时效果很好,你事先知道所有几何图形。 目前,房间缩放 VR 应用通常建立这种绝对房间比例坐标系,其原点在地板上。

相比之下,无束缚的混合现实设备(如 HoloLens)具有动态传感器驱动的世界理解,在用户跨建筑物的整层走多米时不断调整对周围环境的知识。 在世界规模的体验中,如果将所有全息影像置于单个刚性坐标系中,这些全息影像必然会随时间而偏移,无论是基于世界还是相互偏移。

例如,头戴显示设备目前可能认为世界上的两个位置相距 4 米,然后细化这种理解,了解这两个位置实际上相距 3.9 米。 如果这些全息影像最初被放置在单个刚性坐标系中相距 4 米,那么其中一个全息影像将始终与现实世界相距 0.1 米。

空间定位点

Windows Mixed Reality通过创建空间定位点来标记用户放置全息影像的世界中的重要点,解决了上一部分所述的问题。 空间定位点表示系统中应随时间推移跟踪的一个重要点。

当设备了解世界时,这些空间定位点可以根据需要彼此调整其位置,以确保每个定位点根据现实世界精确定位在放置的位置。 通过将空间定位点放置在用户放置全息影像的位置,然后根据全息影像的空间定位点定位该全息影像,可以确保全息影像保持最佳稳定性,即使用户漫游数十米。

这种基于彼此的空间定位点连续调整是坐标系与空间定位点和固定参考帧之间的主要区别:

  • 放置在固定参照系中的全息影像都彼此保持严格的关系。 但是,当用户走长距离时,该帧的坐标系可能会基于世界偏移,以确保用户旁边的全息影像看起来稳定。

  • 放置在舞台参照系中的全息影像也彼此保持严格的关系。 与固定框架相比,舞台框架始终根据其定义的物理原点保持固定。 但是,在舞台的坐标系中呈现的内容超过其 5 米边界时,仅当用户站在该边界内时才会显示稳定。

  • 使用一个空间定位点放置的全息影像可能会根据使用另一个空间定位点放置的全息影像而偏移。 这允许 Windows 提高对每个空间定位点位置的理解,即使例如,一个定位点需要向左调整,而另一个定位点需要向右调整。

与固定参照系(始终针对用户附近的稳定性进行优化)不同,舞台参照系和空间定位点可确保其原点附近的稳定性。 这有助于这些全息影像随时间推移精确保留,但也意味着渲染的全息影像离坐标系原点太远,将经历越来越严重的杠杆臂效果。 这是因为对舞台或定位点的位置和方向的微小调整与与该定位点的距离成比例放大。

一个很好的经验法则是确保基于远距离空间定位点坐标系呈现的任何内容都在其原点的大约 3 米范围内。 对于附近的舞台原点,渲染远程内容是可以的,因为任何增加的位置误差都只会影响不会在用户视图中移动太多的小全息影像。

空间定位点持久性

空间定位点还可以允许应用记住重要位置,即使在应用挂起或设备关闭后也是如此。

你可以将应用创建的空间定位点保存到磁盘上,然后将这些定位点保存到应用 的空间定位点存储中,稍后再重新加载它们。 保存或加载定位点时,需要提供对应用有意义的字符串键,以便稍后识别定位点。 将此键视为定位点的文件名。 如果要将其他数据与该定位点相关联,例如用户放置在该位置的 3D 模型,请将其保存到应用的本地存储中,并将其与所选密钥相关联。

通过将定位点保存到应用商店中,用户可放置单个全息影像或放置一个工作区,以便应用在其周围放置其各种全息影像,然后在他们期望的位置查找这些全息影像,而无需使用你的应用。

避免使用头部锁定内容

我们强烈建议不要呈现头部锁定的内容,这些内容在显示 ((如 HUD) )中保持固定位置。 通常,头部锁定内容对用户来说会感到不舒服,并且感觉不是他们世界的自然组成部分。

通常应将头部锁定内容替换为附加到用户或放置在世界中的全息影像。 例如, 光标 通常应推送到世界中,自然缩放以反映对象在用户凝视下的位置和距离。

处理跟踪错误

在某些环境(如深色走廊)中,使用内向外跟踪的头戴显示设备可能无法在世界中正确定位自身。 这可能会导致全息影像在处理不当时不显示或出现在不正确的位置。 现在,我们将讨论这种情况可能发生的条件、它对用户体验的影响,以及最佳处理这种情况的提示。

由于传感器数据不足,头戴显示设备无法跟踪

有时,头戴显示设备的传感器无法确定头戴显示设备的位置。 在以下情况下,可能会发生这种情况:

  • 房间很暗
  • 如果传感器被头发或手覆盖
  • 如果周围没有足够的纹理。

发生这种情况时,头戴显示设备将无法以足够的精度跟踪其位置,以呈现世界锁定的全息影像。 无法确定空间定位点、固定框架或舞台框架基于设备的位置。 但是,你仍然可以在附加的引用框架中呈现正文锁定的内容。

你的应用应告知用户如何获取位置跟踪,呈现一些回退正文锁定的内容,这些内容描述了一些提示,例如揭开传感器和打开更多灯。

由于环境中的动态更改,头戴显示设备无法正确跟踪

如果环境中存在大量动态变化,例如许多人在房间里四处走动,设备将无法正确跟踪。 在这种情况下,当设备尝试在此动态环境中跟踪自身时,全息影像似乎会跳跃或偏移。 如果遇到此方案,我们建议在动态性较差的环境中使用设备。

头戴显示设备跟踪不正确,因为环境随时间推移发生了显著变化

当你在家具、壁挂等已移动的环境中开始使用头戴显示设备时,一些全息影像可能会出现从其原始位置移开的情况。 当用户在新空间中移动时,早期的全息影像也可能四处跳动,因为系统对空间的理解不再正确。 然后,系统尝试重新映射环境,同时尝试协调会议室的功能。 在此方案中,建议鼓励用户替换固定在世界上的全息影像(如果他们未按预期出现)。

由于环境中的空间相同,头戴显示设备无法正确跟踪

有时,家庭或其他空间可能有两个相同的区域。 例如,两个相同的会议室、两个相同的角落区域、两张覆盖设备视野的大型相同海报。 在这种情况下,设备有时可能会在相同的部件之间混淆,并在其内部表示形式中将它们标记为相同。 这可能会导致来自某些区域的全息影像出现在其他位置。 设备可能经常开始丢失跟踪,因为它的环境内部表示形式已损坏。 在这种情况下,建议重置系统的环境理解。 重置地图会导致所有空间定位点放置丢失。 这将导致头戴显示设备在环境的独特区域中很好地跟踪。 但是,如果设备再次在相同的区域之间混淆,则问题可能会再次出现。

另请参阅