通过将空间与您使用RealityKit或Metal创建的内容相结合,构建完全身临其境的体验。
完全身临其境的体验用您创建的自定义内容取代了人看到的一切。您可以使用这种类型的体验来:
提供临时的过渡体验
为您的内容创造一个不受干扰的空间
实施一个虚拟现实(VR)游戏
呈现一个虚拟世界来探索
凭借完全身临其境的体验,您对屏幕上出现的一切负责。系统隐藏透视看到的环境并显示您提供的内容,仅在查看时显示对方的手。为了达到最佳性能,请使用RealityKit或Metal来创建和动画化您的内容。
通常,您将完全沉浸式体验与其他类型的体验相结合,并在它们之间提供过渡。当您先显示一个窗口,然后提供控件以进入您的沉浸式体验时,您会给人们时间为过渡做准备。如果他们更喜欢使用您应用程序的窗口,它还为他们提供了跳过体验的选项。
让用户做好应用过渡的准备
让人们控制他们何时进入或退出完全沉浸式体验,并提供与这些体验的明确过渡。清晰的视觉过渡使其更容易适应如此大的变化。突然的过渡可能会使人迷失方向、不愉快,或者让对方认为出了什么问题。
在启动时,显示窗口或其他内容,让用户看到周围环境。为该内容添加控件,以启动过渡到完全沉浸式体验,并提供对控件的工作内容的明确指示。在您的体验中,就如何退出体验提供明确的控制和说明。
警告
当您开始完全沉浸式体验时,visionOS定义了一个系统边界,该边界距离人头的初始位置约1.5米。如果他们的头部移动到该区域之外,系统会自动停止沉浸式体验并再次打开外部视频。此功能是一个助手,有助于防止某人与物体相撞。
要创造完全身临其境的体验,请打开一个ImmersiveSpace
,并将其风格设置为full
。沉浸式空间是一种SwiftUI场景,允许您将内容放置在人周围的任何地方。将full
样式应用于场景会告诉系统隐藏直通视频,并仅显示应用程序的内容。
在应用程序对象的body
属性或您管理SwiftUI场景的任何地方声明空格。以下示例展示了一个具有主窗口和完全沉浸式空间的应用程序。在启动时,应用程序会显示窗口。
要显示ImmersiveSpace
,请使用从SwiftUI环境中获得的open
操作将其打开。此操作异步运行,并使用提供的信息来查找和初始化您的场景。以下示例展示了一个带有solar
标识符打开空间的按钮:
应用程序一次只能显示一个空间,在另一个空间可见时尝试打开一个空间是一个错误。要关闭一个开放空间,请使用dismiss
操作。
有关显示空间的更多信息,请参阅ImmersiveSpace
类型。
当您的内容由基本形状或USD文件中的现有内容组成时,RealityKit效果很好。使用RealityKit实体组织场景内容,并使用组件和系统对该内容进行动画化。使用Reality Composer Pro直观地组装您的内容,并将动态着色器、动画、音频和其他行为附加到您的内容上。在场景中的RealityView中显示RealityKit场景的内容。
要在运行时加载Reality Composer Pro场景,请获取Reality Composer Pro软件包文件的URL,并加载场景的根实体。以下示例展示了如何为位于应用程序捆绑包中的软件包创建实体:
创建完全沉浸式场景的另一个选择是使用Metal自己绘制所有内容。使用Metal绘制内容时,请使用Compositor Services框架将该内容放在屏幕上。Compositor Services提供您设置Metal渲染引擎并开始绘图所需的代码。
萌解创投 2024-12-26
新能源研究僧 2024-12-26
明月玩数码 2024-12-26