XR 管理器从属于 Engine 实例,你可以通过 engine.xrManager
获取。它在 XR 中扮演着总控制器的角色,主要管理:
属性 | 类型 | 解释 |
---|---|---|
sessionManager | XRSessionManager | 会话管理器,管理 XR 会话的生命周期和上下文,通过它可以监听会话的状态变化 |
inputManager | XRInputManager | 交互管理器,管理 XR 空间中的所有输入,包含手柄,头显,相机等设备,通过它可以获取所有设备信息 |
cameraManager | XRCameraManager | 相机管理器,管理 XR 空间中的头显和相机,负责连接虚拟相机和现实相机 |
features | XRFeature | XR 开启的所有能力 |
origin | Entity | XR 初始化时的原点,它连接虚拟世界与现实世界 |
若将 origin 节点放置在场景的
(1,1,1)
位置,那么当 XR 空间开启时,若追踪到的相机的位置为(x,y,z)
,那么实际上相机在场景的世界坐标为(1 + x,1 + y,1 + z)
,他们之间的转换即 origin 局部坐标至世界坐标的转换。
方法 | 解释 |
---|---|
isSupportedFeature | 是否支持某个功能,开发者可以在使用前判断当前环境是否支持某功能 |
addFeature | 添加特定 XR 功能,类似为节点添加组件 |
getFeature | 获取特定 XR 功能,类似从节点获取组件 |
enterXR | 进入 XR 会话,可以选择进入的 XR 会话类型(目前支持 AR 或 VR ), 若没有明确声明 autoRun 参数,在进入会话后会自动运行 XR 逻辑 |
exitXR | 退出 XR 会话,所有的 XR 逻辑将被停止,上个会话添加的能力将被销毁,配置亦不会被保存, |
依据上方的属性与方法,梳理一下 XR 的整体流程: