版本:Unity 6 (6000.0)
语言:English
Unity 中的 AR 开发
XR 架构

Unity 中的 VR 开发

VR 开发与 Unity 中任何实时 3D 开发共享常见的流程和设计注意事项。但是,区别因素包括

  • 更丰富的用户输入:除了“传统”的按钮和操纵杆控制器之外,VR 设备还提供空间头部、控制器以及(在某些情况下)手部和手指跟踪。
  • 与环境的更“亲密”互动:结合更丰富的输入可能性,VR 对环境的更密切和“物理”互动提出了更高的期望,这不同于典型的 3D 游戏和应用程序。用户期望能够拿起物品并与环境中的物体互动。借助头部跟踪,摄像机一个组件,用于创建场景中特定视点的图像。输出要么绘制到屏幕上,要么捕获为纹理。 更多信息
    请参阅 词汇表
    可以更靠近环境的墙壁和其他边界——甚至穿过它们。
  • 用户舒适度问题:许多人在 VR 中体验晕动症,因为摄像机的移动与他们头部的移动不匹配。您可以通过保持较高的帧率、提供一系列运动选项以使用户能够选择他们舒适的模式以及避免独立于用户头部跟踪移动摄像机来缓解晕动症的原因。

要开始 VR 开发,请使用 XR 插件管理系统安装并启用您要支持的设备的 XR 提供程序插件。有关更多信息,请参阅 XR 项目设置

基本的 VR 场景元素

一个基本的 VR 场景场景包含游戏的环境和菜单。可以将每个唯一的场景文件视为一个唯一的关卡。在每个场景中,您放置环境、障碍物和装饰,从本质上讲,您将游戏设计和构建成碎片。 更多信息
请参阅 词汇表
应包含一个 XR 原点,它定义了跟踪数据的 3D 原点。此 游戏对象Unity 场景中的基本对象,可以表示角色、道具、布景、摄像机、路径点等。游戏对象的特性由附加到它的组件定义。 更多信息
请参阅 词汇表
和组件的集合还包含主场景摄像机和表示用户控制器的游戏对象。有关设置基本 VR 场景的说明,请参阅 设置 XR 场景

除了基础知识之外,您通常还需要一种方法让用户四处移动并与您创建的 3D 世界进行交互。 XR 交互工具包 提供了用于创建交互(如选择和抓取对象)的组件。它还提供了一个可自定义的运动系统。您可以使用 输入系统 作为 XR一个统称,涵盖虚拟现实 (VR)、增强现实 (AR) 和混合现实 (MR) 应用程序。支持这些形式的交互式应用程序的设备可以称为 XR 设备。 更多信息
请参阅 词汇表
交互工具包的补充或替代。

VR 包

Unity 中用于 VR 开发的大多数功能和 API 都是通过包提供的。这些包包括

VR 提供程序插件

要在 Unity 中构建 VR 应用程序,请使用 XR 插件在 Unity 之外创建的一组代码,可在 Unity 中创建功能。您可以在 Unity 中使用两种类型的插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和原生插件(特定于平台的原生代码库)。 更多信息
请参阅 词汇表
管理系统添加并启用您要支持的设备的提供程序插件。有关说明,请参阅 XR 项目设置

Unity 支持的 VR 提供程序插件包括

  • Apple visionOS XR 插件,适用于 Apple Vision Pro。
  • Oculus,适用于 Oculus Rift、Meta Quest 2 和 Quest Pro。
  • OpenXR,适用于任何具有 OpenXR 运行时的设备,包括 Meta 头显、VIVE 头显、Valve SteamVR、HoloLens、Windows 混合现实混合现实 (MR) 将其自身的虚拟环境与用户的真实世界环境相结合,并允许它们相互交互。
    请参阅 词汇表
    等。
  • PlayStation VR(适用于已注册的 PlayStation 开发人员),适用于 Sony PS VR 和 PS VR2 设备。有关更多信息,请访问 PlayStation Partners
  • 模拟 HMD,用于在 Unity 编辑器播放模式视图中模拟 VR 头显。

注意:许多头显制造商正在努力将 OpenXR 运行时用作标准。但是,此过程尚未完成,OpenXR 与头显制造商自己的提供程序插件或 SDK 之间可能存在功能差异。

XR 交互工具包

XR 交互工具包 可以使开发 VR 应用程序变得更加轻松快捷。XR 交互工具包提供

XR 核心实用程序

XR 核心实用程序 包包含其他 Unity XR 插件和包使用的软件实用程序。通常,此包作为其他 XR 包的依赖项安装到您的项目中。

输入系统

Unity 输入系统 包不仅支持访问 VR 控制器按钮和操纵杆的用户输入,还提供对 XR 跟踪数据和触觉的访问。如果您使用 XR 交互工具包OpenXR 提供程序插件,则需要输入系统包。

手部跟踪

手部跟踪是一项允许用户使用双手与 VR 应用程序进行交互的功能。手部跟踪受 XR Hands 包的支持。

Hands 包提供

  • 一个标准的 手部数据模型
  • 用于访问手部跟踪数据的 API
  • XR 手部骨骼驱动程序 组件,它将一组变换映射到它们对应的手部 关节一个物理组件,允许刚体组件之间的动态连接,通常允许一定程度的移动,例如铰链。 更多信息
    请参阅 词汇表
    并根据接收到的跟踪数据更新这些变换。
  • XR 手部网格控制器,它在获得或丢失手部跟踪时启用和禁用 网格Unity 的主要图形基元。网格构成了 3D 世界的大部分。Unity 支持三角形或四边形多边形网格。Nurbs、Nurms、细分曲面必须转换为多边形。 更多信息
    请参阅 词汇表
  • 一个 HandVisualizer 示例,演示了如何使用手部跟踪 API。
Unity 中的 AR 开发
XR 架构