注意事项

Unity、OpenXR 和 WebXR 提供了一个多功能工具包,用于在沉浸式体验中创建各种交互。目标是开发沉浸式应用,用户可以使用现有的学习经验与这些应用进行交互。您可以设计从简单手势到复杂的基于物理的模拟的任何内容。

请注意,Unity、OpenXR 和 WebXR 应用仅在完整空间中运行。

了解 Android XR 的设计原则.

输入

XR 应用可以包含与手、眼睛和面部跟踪、手势、语音命令以及键盘、鼠标和控制器等传统输入设备的交互。考虑您的应用需要哪些输入才能提供自然且无障碍的用户体验。

  • 支持熟悉的手势以降低应用的学习曲线。与 2D UI 交互时,请使用标准系统手势,例如捏合。对于拾取和投掷球等 3D 交互,您应该设计模仿现实世界交互的手势。这有助于利用用户现有的知识,并减少对教程的需求。
  • 如果需要额外的手势,请确保它们易于学习、记忆和执行。避免复杂、多步手势或不自然的姿势,这可能导致不适和疲劳。考虑提供指南来教用户如何使用手势。
  • 确保您的体验可以用左手或右手使用。如果无法实现,请遵循系统的惯用手偏好设置。
  • 虽然双手交互可以带来沉浸感,但对于行动不便的用户来说可能具有挑战性。对于基本操作,优先考虑单手交互。如果需要双手手势,请提供替代的单手方法来实现相同的结果。
  • Unity、OpenXR 和 WebXR 应用不会自动受益于Android 的返回堆栈。考虑实现返回堆栈,以允许用户访问 Android XR 的返回手势,从而撤消操作或使用手势导航返回。

Two hands using gesture navigation.

UI

按钮、面板和文本等用户界面元素对于 XR 应用中的自然交互至关重要。设计应优先考虑无缝、直观的用户体验。具体的 UI 设计选择将取决于您的应用的独特要求。

  • 将主要的交互元素和重要内容放置在用户的自然视线和视野范围内。这可以提高可见性并确保舒适的体验。考虑用户打算如何与界面交互,以确定其放置距离。例如,他们是使用激光笔瞄准,还是直接用手指点击按钮?根据界面与用户的预期距离来配置其大小。请参阅 Android XR 尺寸和缩放指南
  • 在设计按钮等交互式 UI 元素时,请考虑用户打算如何与它们交互,每种输入方法(手部跟踪与鼠标)所需的精确度,并相应地调整目标大小和间距等因素。确保 UI 位置允许舒适的交互。为用户操作提供视觉反馈。请参阅 Android XR 样式指南
  • 面板等 2D UI 非常适合基于菜单的交互。物理按钮、杠杆和开关等 3D UI 在与空间环境交互时可以提供更强的沉浸感。巧妙平衡基于面板的交互以实现高可读性,以及用于以世界为中心的交互的 3D 对象,可以创造出强大、沉浸式的体验。
  • 通过使用合适的字体大小、类型和对比度来确保文本清晰可读。根据用户查看文本的距离来定位 UI。使用有符号距离场字体,以便在各种字体大小下实现平滑的文本渲染。请参阅 Android XR 排版指南

A person is fully immersed in a spatial environment with a very large screen. They are standing on rocks, with UI controls in arm's reach.

空间交互

XR 中一些最丰富的交互涉及到用户直接与 3D 对象交互的能力。这可以像拾取、检查和抛掷一个物体一样简单。它还包括更复杂的交互,例如拉动杠杆、按下按钮,以及与用户已经持有的元素进行交互——例如喷洒喷雾瓶。为了实现直观的 3D 对象交互,请根据用户对世界的现有知识进行设计。

  • 如果您想创建逼真的动作,请考虑集成物理引擎。如果您使用 Unity 构建,它有一个内置的物理引擎。请注意物理引擎消耗的处理器能力,并优化性能。
  • 可信度比真实感更重要。例如,如果用户认为他们用力扔了一个球,应用应该在设备传感器指示的力之外,给球施加额外的力。
  • 对象应根据其可供性来构建。这意味着您的应用应考虑到用户可以对或使用对象执行的每一个可能操作。例如,甜甜圈可以被拿起、扔掉和吃掉。除了吃甜甜圈,应用还可以使用画外音说:“我现在不饿”。这些解决方案解决了用户期望对甜甜圈执行的操作。
  • 可以使用各种技术来持有对象,包括父子关系、物理关节、跟随和物理力。每种技术都有其自身的优点和缺点。在实现自定义抓取方法之前,研究和测试不同的方法以确定最合适的方法至关重要。
  • 在 3D 环境中进行设计时,人体工程学非常重要。为了提高无障碍性,请考虑在平面上添加把手,以允许用户将其调整到舒适的高度。务必与各种用户一起测试空间中的每个对象,因为每个人的身体都不同。

Job Simulator, a fully immersive VR game with a user sitting at a vintage computer in an office cubicle. The game includes virtual hands that can interact with 3D objects.

场景设计

场景可以从完全沉浸式的虚拟世界到将虚拟元素与用户真实环境融合的增强现实体验。设计舒适、功能性强且利用 XR 独特功能的场景。

  • 限制用户周围的移动场景,例如飞行。这可能会导致不适,特别是当用户的身体保持静止时。一些移动技术,例如隧道视野(在下一节中描述),有助于减轻不适。
  • 要创建混合现实体验,您可以使用 Android XR 的场景理解功能将虚拟对象集成到用户的物理环境中。
  • 对于虚拟现实应用,您可能希望在虚拟空间中融入有限的真实世界视图。这有助于用户保持对其周围环境的感知,并在不离开沉浸式体验的情况下与物理对象交互。

移动

Android XR 体验鼓励用户在其物理空间(由配置的边界定义)内自由移动。例如,一些用户发现当虚拟体验围绕非移动的创作空间设计时,会更具沉浸感。如果您期望用户在超出边界允许的更大虚拟空间中移动,请考虑使用放大移动的移动技术,例如瞬移。

通过瞬移,用户可以指向并选择,或使用控制器立即跳到新位置。它非常适合快速覆盖大距离,并且通常是引起最少晕动病(motion sickness)的移动方法。在过渡期间短暂遮挡屏幕可以进一步最大限度地减少不适。

其他移动方法

如果您使用其他移动方法,请考虑也提供瞬移作为替代方案。

  • 原地摆臂行走:通过摆动您的手臂或上下移动控制器来模拟行走。一些用户可能会觉得这很累或不那么直观。
  • 连续移动:使用控制器的摇杆或拇指杆在环境中移动您的虚拟自我。在大多数情况下,您应避免此方法,因为它是晕动病(motion sickness)的常见原因。

如果您决定在您的体验中使用移动,请提供多种选项以适应个人偏好并改善用户体验。

当用户的身体运动与虚拟体验之间存在脱节时,可能会发生晕动病。为了在移动过程中优化用户舒适度,请注意以下几点:

  • 确保虚拟地平线保持稳定和水平。
  • 如果需要连续移动,请避免任何渐进式加速或减速。保持速度一致。
  • 隧道视野可以通过在移动期间缩小用户的视野来帮助减少晕动病,其晕影效果限制了在外围区域感知到的运动。
  • 对于旋转,将用户的视点捕捉到特定角度。这可能会导致一些迷失方向,但会减少晕动病。
  • 用户有不同的耐受程度。让他们根据自己的偏好调整舒适度设置,例如选择移动方法、打开或关闭隧道视野,或调整移动速度。

空间音频

声音是创造沉浸式音景的强大工具,可以将用户带到另一个世界并唤起特定的情感。空间音频可以准确地在虚拟环境中定位声音。

  • 全景声(Ambisonics)就像音频的天空盒,为您的用户提供沉浸式的音景。将全景声用于背景环境声音或其他您想要复制围绕听众的全全球形声场的场景。
  • 空间化音频提示可以引导用户的注意力。
  • 空间化音效以增强沉浸感。
  • 将语音音频空间化到说话者的位置,即使他们没有直接面对说话者,也能让用户产生临场感。
  • 允许用户调整他们的音频。例如,他们可能希望禁用或更改背景音乐、音效或画外音的音量。
  • 考虑为聋哑或听力障碍人士添加字幕。

更多舒适性考虑因素

为了优先考虑无障碍功能,请提供可定制的选项,以适应不同的能力和偏好。这确保了广泛的用户可以享受沉浸式体验。

  • 让您的应用以每秒 72 帧运行:这将有助于最大程度地减少视觉抖动并防止恶心。
  • 赋予用户控制权:为了让您的应用对不同 XR 熟悉程度的用户更友好,请允许用户通过可定制的设置来调整他们的体验。考虑让用户重新映射控制器按钮和手势,以适应他们的身体需求或偏好。例如,手部活动受限的用户可能会受益于不同的按钮布局或更大、简单的输入控件。

有关特定平台的指导,请参阅

为 OpenXR 开发

使用 Unity 开发

WebXR 文档


OpenXR™ 和 OpenXR 徽标是 The Khronos Group Inc. 拥有的商标,并在中国、欧盟、日本和英国注册为商标。