经过结合运用RealityKit或Metal创立的内容和空间,构建全面沉溺式体会。
概述
全面沉溺式体会将人们看到的一切东西替换为你创立的定制内容。你或许运用这种类型的体会来:
- 供给暂时过渡体会
- 为你的内容创立无搅扰的空间
- 完成虚拟现实(VR)游戏
- 呈现一个可供探索的虚拟世界
在全面沉溺式体会中,你担任屏幕上显现的一切内容。体系躲藏透视视频并显现你供给的内容,仅当手进入视界时才显现用户的手。为了获得最佳性能,运用RealityKit或Metal创立并动画化你的内容。
参阅视频
一般,你会将全面沉溺式体会与其他类型的体会结合运用,并在它们之间供给过渡。当你首先显现一个窗口,然后供给进入你的沉溺式体会的控制时,你给人们准备过渡的时刻。这也给他们供给了一个挑选,假如他们更喜爱运用你运用的窗口,能够跳过体会。
参阅视频
为你的运用的过渡做好准备
给人们对何时进入或退出全面沉溺式体会的控制,并在进入和退出这些体会时供给明晰的过渡。明晰的视觉过渡使得习惯这样的大变化变得更容易。突然的过渡或许会令人感到不适,不愉快,或者让人以为出了什么问题。
在启动时,显现窗口或其他答运用户看到周围环境的内容。向那些内容增加控制以启动到全面沉溺式体会的过渡,并清楚地指出这些控制的功用。在你的体会中,供给明确的控制和说明怎么退出体会。
正告
当你开始一个全面沉溺式体会时,visionOS界说了一个体系鸿沟,该鸿沟从人头部的初始位置向外延伸1.5米。假如他们的头移出了该区域,体系会自动停止沉溺式体会并重新翻开外部视频。这个功用是一个助手,协助防止人们与物体产生磕碰。
翻开沉溺式空间
要创立全面沉溺式体会,翻开一个ImmersiveSpace并将其样式设置为full。沉溺式空间是一种让你在人们周围环境的任何地方放置内容的SwiftUI场景类型。将full样式运用到场景,告知体系躲藏透视视频并只显现你运用的内容。
在你的运用对象的body属性或你办理的任何SwiftUI场景中声明空间。以下示例显现了一个带有主窗口和全面沉溺式空间的运用。在启动时,运用显现窗口。
@main
struct MyImmersiveApp: App {
var body: some Scene {
WindowGroup() {
ContentView()
}
// Display a fully immersive space.
ImmersiveSpace(id: "solarSystem") {
SolarSystemView()
}.immersionStyle([.full])
}
}
要显现一个ImmersiveSpace,运用openImmersiveSpace动作翻开它,该动作能够从SwiftUI环境获取。此动作异步运转,并运用供给的信息查找和初始化你的场景。以下示例显现了一个翻开solarSystem标识符的空间的按钮:
Button("Show Solar System") {
Task {
let result = await openImmersiveSpace(id: "solarSystem")
if case .error = result {
print("An error occurred")
}
}
}
一个运用一次只能显现一个空间,当另一个空间可见时,测验翻开一个空间是错误的。要关闭已翻开的空间,请运用dismissImmersiveSpace操作。
运用RealityKit制作你的内容
当你的内容由根本形状或USD文件中的现有内容组成时,RealityKit工作得很好。运用RealityKit实体安排你的场景内容,并运用组件和体系对该内容进行动画处理。运用Reality Composer Pro以可视化方法组装你的内容,并将动态着色器,动画,音频和其他行为附加到你的内容。在你的场景中在RealityView中显现RealityKit场景的内容。
要在运转时加载一个Reality Composer Pro场景,获取你的Reality Composer Pro包文件的URL,并加载你的场景的根实体。以下示例显现了怎么创立坐落运用bundle中的包的实体:
import MyRealityBundle
let url = MyRealityBundle.bundle.url(forResource:
"MyRealityBundle", withExtension: "reality")
let scene = try await Entity(contentsOf: url)
运用Metal制作你的内容
创立全面沉溺式场景的另一种挑选是运用Metal自己制作一切内容。当运用Metal来制作你的内容时,运用Compositor Services结构将该内容放置在屏幕上。Compositor Services供给了你需求设置Metal烘托引擎并开始绘图的代码。
有关怎么运用Metal和Compositor Services烘托内容以及办理与你的内容的交互的详细信息,请参见运用Metal制作全面沉溺式内容。