1. 沉浸式视图
沉浸式视图使应用能够在世界各地创建全息影像,或在虚拟环境中从而深入了解用户。 当应用程序在沉浸式视图中绘制时,不会同时绘制其他应用程序,并且多个应用程序中的全息影像不会组合在一起。通过持续调整应用程序呈现其场景的视角来匹配用户的头运动,你的应用程序可以呈现固定在现实世界中的固定点的全球锁定全息影像,也可以呈现虚拟世界用户在其中移动的位置。
在HoloLens 2中,全息物体可固定在全局世界坐标中。
2. 舒适感
在自然观景过程中,人类视觉系统依赖多个信息源(称为“线索”)来解释 3D 形状和对象的相对位置。 某些线索仅依赖于单只眼睛(单眼线索),这些线索包括线性透视图、熟悉的大小、遮挡物、场深模糊度和调节。 还有一些线索依赖于两只眼睛(双眼线索),包括视觉辐辏(实质上是眼睛观看某个对象所要旋转的相对角度)和双眼视差(场景在双眼眼底的投影差异模式)。需要以一种模拟这些提示如何在自然世界中运行的方式来创建和展示内容。 从物理角度看,设计出不需要使颈部或手臂疲劳的内容也很重要。
2.1 视觉辐辏-调节冲突
若要清楚地观看对象,人们必须根据对象的距离调节(或调整)其双眼的焦点。 同时,双眼的旋转角度必须根据对象的距离收敛,以免看到重影。 在自然观景中,视觉辐辏和调节是相互关联的。 观看近距离的对象(例如,鼻子旁边的蝇子)时,双眼将会对视并调节到一个较近的点。 相反,如果观看无穷远的对象(在正常视场中大约 6 米或更远),双眼的视线将变得平行,而眼睛的晶状体会调节到无穷远。
使用大多数头盔式显示器时,用户始终会调节到显示器的焦距距离(以获取清晰的图像),但会收敛到相关对象的距离(以获取单个图像)。 当用户调节和收敛到不同的距离时,两个线索之间的自然关联必须中断,从而可能导致视觉不适感或疲劳。
基于人体工程学确定全息影像与用户之间的最佳距离
2.2 渲染速率
混合现实应用之所以独特,是因为用户可以在场景中任意移动并与虚拟内容交互,就如同它们是真实对象一样。 为了保持这种印象,在场景中稳定渲染全息影像并顺畅地展示其动画效果至关重要。 以最小 60 的每秒帧数 (FPS) 渲染可帮助实现此目标。 某些混合现实设备支持以高于 60 FPS 的帧速率渲染,对于这些设备,建议以较高的帧速率渲染,以提供最佳用户体验。
若要绘制在真实或虚拟世界中保持稳定的全息影像,应用需要从用户的立场渲染图像。由于图像渲染需要一定的时间,HoloLens 和其他 Windows Mixed Reality 设备将会预测当图像显示在显示器中时用户头部的位置。 此预测算法采取近似值。 Windows Mixed Reality算法和硬件会调整渲染的图像,以考虑到预测头部位置与实际头部位置之间的偏差。 此过程会使用户看到的图像如同从正确的位置渲染,同时使全息影像给人以稳定感。 这种更新最适合对头部位置进行轻微的更改,无法完全考虑到渲染图像的某些差异,例如运动视差造成的差异。
1.以最低帧速率 60 FPS 进行渲染,可在两个方面帮助绘制稳定的全息影像:
2.减轻视觉上的抖动,其特征是运动不均衡和重影。全息影像运动速度越快且渲染速率越低,抖动就越明显。因此,努力保持 60 FPS(或设备的最大渲染速率)可帮助避免运动中全息影像的抖动。
3.最小化总体延迟。在以一致步调运行游戏线程和渲染线程的引擎中,以 30FPS 运行可能会额外增加 33.3 毫秒的延迟。减小延迟会降低预测误差,并提高全息影像的稳定性。
性能分析:
可使用如下所述的多种工具来对应用程序帧速率进行基准测试:
1.GPUView
2.Visual Studio 图形调试器
3.3D 引擎中内置的探查器,例如 Unity 中的 Frame Debugger
3. 坐标系统
就其核心而言,混合现实应用在世界上放置全息影像,看起来像真实的对象。 这涉及到在世界上准确定位和定位那些对用户有意义的全息影像,无论是世界空间还是您创建的虚拟领域。 当对全息影像的位置和方向或任何其他几何(如看光或手的位置) hand positions 的推理时,Windows 将提供各种真实的坐标系统,在这些系统中可以表示几何(称为空间坐标系统)。
3.1 构建世界范围的体验
HoloLens 允许用户游离 5 米以上的真正世界规模体验。 若要构建全球规模的应用程序,将需要超出用于会议室规模体验的新技术。
为什么不能在 5 米以上使用单个刚性坐标系统?
目前,编写游戏、数据可视化应用程序或虚拟现实应用时,典型的方法是建立一个绝对世界坐标系统,所有其他坐标都可以可靠地映射回。 在该环境中,始终可以找到一个稳定的转换,用于定义该世界中任意两个对象之间的关系。 如果未移动这些对象,则其相对转换始终保持不变。 当渲染纯粹的虚拟世界时,这种全局坐标系统可以正常工作。 如今,房间内的 VR 应用通常建立此类绝对房间级坐标系统,并将其原点置于地面上。
与此相反, mixed reality 设备(如 HoloLens)对世界有动态的传感器驱动理解,随着用户的周围时间的推移而不断调整其知识,因为他们在一座建筑的整个楼层走出了很多时间。 在全球范围内,如果你将所有全息影像置于单个硬坐标系中,则这些全息影像一定会随着时间的推移而发生变化,不管是在世界之间还是彼此之间。
例如,耳机当前可能相信世界上的两个位置相隔 4 米,然后在以后优化此理解,了解位置实际上是 3.9 米。 如果这些全息影像最初在一个硬坐标系中相隔 4 米,则其中一个将始终从真实世界向下显示 0.1 米。
3.2 空间定位点
Windows Mixed Reality 通过使你能够创建空间锚点来标记用户已放置全息影像的重要点,可以解决上一部分中所述的问题。 空间定位点表示系统应随时间跟踪的世界上的重要点。
当设备了解到世界时,这些空间定位点可以根据需要调整它们之间的位置,以确保每个定位点相对于真实世界的位置保持准确。 通过在用户放置全息影像的位置放置一个空间锚点,然后相对于其空间锚点定位该全息图,可以确保全息影像保持最佳稳定性,即使用户在数米内漫游也是如此。
3.3 空间锚点持久性
空间锚还可以让你的应用程序记住重要的位置,即使在应用程序挂起或设备关闭后也是如此。
你可以将应用创建的空间锚点保存到磁盘,以后再通过将其保存到应用的空间锚存储来重新加载它们。
通过将定位点保存到应用商店,你的用户可以放置单独的全息影像,或放置一个工作区,应用将在该工作区中放置其各种全息影像,然后在其预期的位置找到这些全息影像,这超出了应用的多种用途。
还可以使用 Azure 空间定位点在 HoloLens、iOS 和 Android 设备上实现异步全息影像持久性。 通过共享持久的云空间定位点,多个设备可以随着时间推移观察相同的持久全息影像,即使这些设备没有同时出现,也是如此。
3.4 空间锚点共享
您的应用程序也可以与其他设备实时共享空间锚,从而实现实时共享体验。
使用 Azure 空间锚点,你的应用可以跨多个 HoloLens、IOS 和 Android 设备共享空间锚。 通过使每个设备使用相同的空间定位点呈现全息影像,所有用户将看到全息影像显示在现实世界中的相同位置。