Version: 6000.3
语言: 中文
Unity 中的 AR 开发
XR 架构

Unity 中的 VR 和 MR 开发

开始使用虚拟现实混合现实混合现实 (MR) 将自己的虚拟环境与用户的现实世界环境相结合,并允许他们相互交互。
请参阅术语表
Unity 中的开发。

虚拟现实 (VR) 和混合现实 (MR) 都是指扩展现实体验,其中专用设备为用户提供了一种与虚拟环境交互的方式。

VR 体验中,环境是封闭的。这意味着用户看不到周围的环境,只能看到屏幕上显示的虚拟内容。用户只能与虚拟内容交互,而不能与他们的物理环境交互。VR 体验通常通过头戴式显示器(头戴式显示器 [HMD])实现,其中头戴式显示器内的屏幕显示虚拟环境。VR 体验是完全身临其境的,因此是创建身临其境、故事驱动的体验和游戏玩法的不错选择。

MR 结合了真实环境和虚拟环境的元素,使用户能够同时查看两者并与之交互。MR 依赖于能够显示用户周围环境的实时视图并将现实世界视图与虚拟内容融合的设备。一些头显,例如 Meta Quest 3,通过直通摄像头实现 MR,捕捉周围环境并将其显示在屏幕上。其他设备无需直通摄像头即可实现 MR,例如 Microsoft HoloLens 设备是透明眼镜,可将虚拟内容直接投射到镜头上。MR 在现实世界整合有益的情况下很有用,例如培训或教育经验。您还可以使用 MR 创建社交游戏体验,或通过位置信息增强游戏玩法。

注意:在某些现代设备上,您可以开发一个同时具有MR混合现实
请参阅术语表
和 VR 模式,允许用户在应用中的这些模式之间切换。

VR和MR开发的注意事项

VR 和 MR 开发与 Unity 中的任何实时 3D 开发具有共同的工作流程和设计注意事项。然而,区分因素包括:

  • 更丰富的用户输入:除了传统的按钮和纵杆控制器外,VR 设备还提供空间头部、控制器以及手和手指跟踪(在支持的平台上)。
  • 与环境更亲密的交互:结合更丰富的输入的可能性,VR 提高了与典型的 3D 游戏和应用程序更紧密的物理交互的期望。用户希望能够拾取东西并与环境中的对象进行交互。使用头部跟踪时,相机在场景中创建特定视点图像的组件。输出要么绘制到屏幕上,要么作为纹理捕获。更多信息
    请参阅术语表
    可以更接近墙壁和环境的其他边界,甚至可以穿过它们。
  • 用户舒适度问题:当相机移动与头部运动不匹配时,许多人会在 VR 中晕车。您可以通过保持高帧速率、提供一系列运动选项以便用户可以选择他们喜欢的模式以及避免独立于用户头部跟踪移动相机来减轻晕动病的原因。

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

基本的 VR 和 MR 场景元素

基本的 VR 或 MR场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表
应包含一个 XR 原点,该原点定义了跟踪数据的 3D 原点。这个集合游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表
组件还包含主场景相机和表示用户控制器的游戏对象。有关设置基本 VR 场景的说明,请参阅设置 XR 场景

你通常需要一种方式让用户四处移动并与你创建的3D世界进行交互。XR交互工具包提供了用于创建交互的组件,例如选择和抓取对象。它还提供了一个可自定义的运动系统。你可以将输入系统用于XR一个总称,包括虚拟现实 (VR)、增强现实 (AR) 和混合现实 (MR) 应用。支持这些形式的交互式应用程序的设备可以称为 XR 设备。更多信息
请参阅术语表
交互工具包。

VR 包

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

VR 和 MR 提供商插件

VR 和 MR 平台可作为 XR 的提供商插件使用插件Unity 外部创建的一组代码,用于在 Unity 中创建功能。可以在 Unity 中使用两种插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和本机插件(特定于平台的本机代码库)。更多信息
请参阅术语表
管理系统。要了解如何使用 XR 插件管理系统为目标平台添加和启用提供商插件,请参阅 XR 项目设置

下表介绍了可用于 VR 和 MR 开发的插件及其支持的设备:

插件 MR/VR 支持的设备
Apple visionOS XR 插件 MR 和 VR 苹果视觉专业版
Oculus 插件 虚拟现实 Oculus Rift、Meta Quest 2、Meta Quest 3、Meta Quest 3s、Meta Quest Pro
开放XR MR 和 VR 具有 OpenXR 运行时的设备,包括 Meta Quest 设备、Valve SteamVR、HoloLens
Unity OpenXR:元网站 MR 和 VR Meta Quest 设备
Unity OpenXR:Android XR MR 和 VR Android XR 设备
PlayStation VR的 虚拟现实 PlayStation VR 和 VR2。(需要索尼开发者注册。
模拟头戴式显示器 虚拟现实 在 Unity 编辑器播放模式下模拟 VR 头戴显示设备

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

XR 交互工具包

XR 交互工具包可以更轻松、更快速地开发 VR 应用程序。XR 交互工具包提供:

XR 核心实用程序

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

输入系统

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

VR 和 MR 模板

Unity 提供了用于 VR 和 MR 开发的模板。这些模板可从 Unity Hub 访问,并提供预先配置相关包和组件的示例场景,以开始 VR 和 MR 开发。

可用的 VR 和 MR 模板包括:

要了解有关从模板创建 XR 项目的更多信息,请参阅创建 XR 项目

手部追踪

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

Hands 包提供:

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

其他资源

Unity 中的 AR 开发
XR 架构