visionOS 上的完全沉浸式虚拟现实(VR)
使用Unity,用户可以利用熟悉的工作流程来构建fully immersive experiences for VisionOS,包括虚拟现实游戏或全虚拟环境。现在,Unity提供了广泛的特性和api (https://docs.unity3d.com/Manual/VROverview.html),可以用来为visionOS开发完全沉浸式的体验。此类软件包包括:
- visionOS plug-in
- XR Interaction Toolkit
- XR Core Utilities
- Input System
- VR project template
- Hand tracking
在Unity中构建VR内容后,只需在XR插件管理窗口中选择visionOS - Fully Immersive,为visionOS平台选择并构建,重新编译本机插件,就会生成Unity XCode项目文件。从这里开始,you’ll continue your development process in XCode,在这里您可以探索窗口内容和完全沉浸式内容之间的转换等概念。
请注意,Unity仍然在构建与XCode上的Metal API相同的功能,所以可能会看到来自Metal API验证层的警告。为了解决这个问题,可以通过XCode的scheme菜单关闭Metal API Validation Layer。
将VR体验移植到visionOS
对于那些希望将现有VR游戏移植到visionOS作为完全沉浸式体验的用户来说,除了上一节中阐述的构建工作流程之外,您还可以采取一些措施来使过渡更加顺畅。
1.准备图形
Use Universal Render Pipeline (URP) -visionOS 支持 Foveated Rendering,该技术可为Vision Pro上的用户提供更高质量视觉体验的技术。为了利用Foveated Rendering功能,我们建议使用 URP,这样可在整个管线中应用Foveated Rendering。我们还计划将未来的改进重点放在URP上。
Leverage Single-Pass Instanced Rendering- Unity的单次实例化绘制现在支持Metal Graphics API,并将在默认情况下启用。这减少了渲染管道的某些部分的开销,如裁剪和阴影,也有助于减少在立体渲染场景时的CPU开销。
Ensure depth-buffer for each pixel is non-zero -在visionOS上,深度缓冲用于重投影。为了确保天空盒和着色器等视觉效果完美显示,请确保将某个值写入每个像素的深度。
Check Project Validation - 您的应用程序正常运行需要许多设置和场景配置详细信息。它们将在visionOS平台选项卡下的“Project Settings > XR Plug-in Management > Project Validation”下列出。如果您看到任何问题,可以单击“Fix”或“Fix All”自动解决。需要注意的一些具体问题:
- 必须启用“Apple visionOS”加载程序
- 除了通常需要的“TrackedPoseDriver”之外,您的场景还需要“ARSession”才能进行头部跟踪
- 所有摄像机都需要深度纹理(您应该在URP设置中启用“Depth Texture”)
- 唯一支持的“Depth Texture Mode”(在“UniversalRenderer”上设置)是“AfterOpaques”
2.使基于控制器的交互适应手部
Leverage the XR Interaction Toolkit (XRI)- 借助visionOS,人们将使用他们的手和眼睛与内容交互。XRI提供了一种高级交互,它抽象了手部跟踪的实现,并使在3D空间和3D空间世界的UI中轻松实现悬停、抓取和选择等交互。使用XRI,您还可以实现输入的视觉反馈,并且它对输入的抽象还可以为多个平台编写一次。
Dive into Unity Hands package - 如果您希望在输入动作中获得更大的灵活性,Unity的Hands子系统可通过Unity hand软件包或许所有原始手关节数据。您还可以了解如何利用Unity Hands Package获得上述身临其境的体验。
有关将 VR 体验移植到 VisionOS 的更多信息,我们建议参阅本指南“Bring your Unity VR app to a fully immersive space”。