目录
一、插件介绍
二、主要组件
XR Interaction Manager
XR Controller
XR Interactor
XR Direct Interactor
XR Ray Interactor
XR Socket Interactor
XR Gaze Interactor
XR Interaction Group
XR Interactable
XR Simple Interactable
XR Grab Interactable
三、XR Origin
1、组件介绍
2、核心功能与作用
空间坐标系管理
设备追踪整合
摄像机与视角控制
跨设备兼容性
3、组件结构与层级
XR Origin 层级结构
4、关键配置参数
XR Origin 组件属性
跟踪原点模式
5、实际应用场景
场景1:基础玩家设置
场景2:地面高度校准
场景3:传送后更新原点
6、与其他组件的协作
与 Teleportation Provider 的集成
与 XR Interaction Manager 的协同
与物理系统的配合
7、常见问题与解决
问题:玩家视角高度不正确
问题:手柄模型位置偏移
问题:瞬移后场景错位
一、插件介绍
Unity XR-XR Interaction Toolkit开发使用方法(一)-CSDN博客
Unity XR-XR Interaction Toolkit开发使用方法(二)Hisense XR-V3 Pro SDK接入-CSDN博客
二、主要组件
XR Interaction Manager
Unity XR-XR Interaction Toolkit开发使用方法(三)组件介绍(XR Interaction Manager)-CSDN博客
XR Controller
Unity XR-XR Interaction Toolkit开发使用方法(四)组件介绍(XR Controller)-CSDN博客
XR Interactor
Unity XR-XR Interaction Toolkit开发使用方法(五)组件介绍(XR Interactor)-CSDN博客
XR Direct Interactor
Unity XR-XR Interaction Toolkit开发使用方法(六)组件配置(XR Direct Interactor)-CSDN博客
XR Ray Interactor
Unity XR-XR Interaction Toolkit开发使用方法(七)组件配置(XR Ray Interactor)-CSDN博客
XR Socket Interactor
Unity XR-XR Interaction Toolkit开发使用方法(八)组件介绍(XR Socket Interactor)-CSDN博客
XR Gaze Interactor
Unity XR-XR Interaction Toolkit开发使用方法(九)组件介绍(XR Gaze Interactor)-CSDN博客
XR Interaction Group
Unity XR-XR Interaction Toolkit开发使用方法(十)组件介绍(XR Interaction Group)-CSDN博客
XR Interactable
Unity XR-XR Interaction Toolkit开发使用方法(十一)组件介绍(XR Interactable)-CSDN博客
XR Simple Interactable
Unity XR-XR Interaction Toolkit开发使用方法(十二)组件介绍(XR Simple Interactable)-CSDN博客
XR Grab Interactable
Unity XR-XR Interaction Toolkit开发使用方法(十三)组件介绍(XR Grab Interactable)-CSDN博客
三、XR Origin
1、组件介绍
Unity XR Origin 是 XR Interaction Toolkit 中用于管理 XR 玩家视角与设备追踪 的核心组件,充当玩家在虚拟空间中的“锚点”。它定义了用户的头部(摄像机)、手部(控制器)的位置追踪逻辑,并协调与 XR 设备的空间映射,是构建 XR 应用的基石。
XR Origin 的作用是将对象和可追踪特征转换到它们在 Unity 场景中的最终位置、方向和缩放比例。
2、核心功能与作用
空间坐标系管理
-
定义玩家在虚拟世界中的 原点位置,将物理设备的运动(如头显、手柄)映射到虚拟空间。
-
支持 Tracking Origin Mode(追踪原点模式),适配不同设备的空间定位需求。
设备追踪整合
-
管理头戴显示器(HMD)、左右手控制器的追踪数据。
-
自动绑定
XR Controller
和XR Interactor
,实现手柄输入与交互逻辑的关联。
摄像机与视角控制
-
包含主摄像机(
Camera
),代表玩家的第一人称视角。 -
处理 地面高度校准、房间规模(Room-Scale) 或 坐姿(Seated) 体验的配置。
跨设备兼容性
-
抽象不同 XR 设备的底层差异(如 Oculus、OpenXR、Windows MR),提供统一的配置接口。
3、组件结构与层级
XR Origin 层级结构
XR Origin 组件需要特定的 GameObject 层级结构才能正常工作。推荐的 XR 场景配置如下:
GameObject | 组件 |
---|---|
XR Origin | XROrigin |
Camera Offset | 无 |
Main Camera | Camera, TrackedPoseDriver, ARCameraManager (AR), ARCameraBackground (AR) |
LeftHand Controller | XRController, XRRayInteractor, LineRenderer, 交互可视化组件 |
RightHand Controller | XRController, XRRayInteractor, LineRenderer, 交互可视化组件 |
典型的 XR Origin
层级结构如下:
XR Origin (根对象) ├── Camera Offset (可选,用于高度偏移) │ ├── Main Camera (玩家视角) │ ├── LeftHand Controller (左手控制器) │ └── RightHand Controller (右手控制器) └── Other Tracked Devices (如追踪器)
-
Camera Offset:允许动态调整摄像机的位置偏移(如角色身高修正)。
-
Main Camera:必须附加
Camera
组件和Tracked Pose Driver
(用于头显追踪)。 -
Left/RightHand Controller:绑定
XR Controller
和交互器(如XR Direct Interactor
)。
4、关键配置参数
XR Origin 组件属性
属性 | 描述 |
---|---|
Origin Base GameObject | 该 GameObject 的 Transform 作为场景中可追踪元素或设备相关元素的基准坐标系。 |
Camera Floor Offset GameObject | 用于偏移 XR Origin 摄像机位置的 GameObject。XR Origin 组件会根据所选跟踪原点模式控制该 GameObject 的 Transform 的 Y 坐标: ● Device 模式:根据 Camera Offset 的值初始化,用户重置视图时会重置。 ● Floor 模式:初始化为零。 |
Camera | XR Origin 的主摄像机。该摄像机所在的 GameObject 必须是 Origin Base GameObject 的子对象,且应为 Camera Floor Offset GameObject 的子级。此摄像机用于渲染 XR 场景。 |
Tracking Origin Mode | 指定 XR Origin 与 XR 设备之间的空间关系(具体模式见下方表格)。 |
Camera Y Offset | 当使用 Device 跟踪原点模式时,摄像机与 XR Origin 的 Y 轴偏移距离。仅在模式为 Not Specified 或 Device 时显示。 |
跟踪原点模式
跟踪原点模式 | 描述 |
---|---|
Not Specified | 使用设备的默认跟踪模式(Device 或 Floor)。 |
Device | 此模式下需手动设置用户高度(VR)或手持设备高度(AR),通过 Camera Y Offset 调整。此模式下,XR Input Subsystem 返回的位姿不包含高度信息,需通过修改 XROrigin.CameraYOffset 属性手动调整。 |
Floor | 与 Device 模式不同,此模式通过 XR 设备检测的"地面"或其他表面自动推算高度。XR Input Subsystem 返回的位姿包含用户(VR)或设备(AR)的高度信息。 |
5、实际应用场景
场景1:基础玩家设置
- 创建空对象,添加
XR Origin
组件。 - 在子对象中创建
Camera Offset
,附加Main Camera
和Tracked Pose Driver
。 - 添加左右手控制器对象,绑定
XR Controller
和XR Direct Interactor
。
场景2:地面高度校准
// 脚本动态校准地面高度
public XROrigin xrOrigin;
public float manualHeight = 1.75f;void Start()
{xrOrigin.RequestTrackingOriginMode(TrackingOriginMode.Floor);xrOrigin.CameraYOffset = manualHeight; // 若自动校准失败,手动设置
}
场景3:传送后更新原点
// 传送后调整XR Origin位置
public TeleportationProvider teleportationProvider;
public XROrigin xrOrigin;void Teleport(Vector3 newPosition)
{xrOrigin.MoveCameraToWorldLocation(newPosition);
}
6、与其他组件的协作
与 Teleportation Provider 的集成
- 使用
XR Origin
的MoveCameraToWorldLocation
方法实现玩家瞬移。 - 示例:当射线指向
Teleportation Area
时,调用该方法更新原点。
与 XR Interaction Manager 的协同
XR Origin
的子控制器自动注册到交互管理器,确保交互事件正确分发。
与物理系统的配合
- 通过
XR Origin
的摄像机高度,动态调整碰撞体(如角色胶囊碰撞体高度)。
7、常见问题与解决
问题:玩家视角高度不正确
解决:
- 检查
Tracking Origin Mode
是否为Floor
(需设备支持地面检测)。 - 手动设置
Camera Y Offset
或运行设备的高度校准流程。
问题:手柄模型位置偏移
排查:
- 确认控制器预制体的
Attach Transform
与模型抓取点对齐。 - 检查
XR Controller
的Tracking Origin Mode
是否与XR Origin
一致。
问题:瞬移后场景错位
- 修复:使用
MoveCameraToWorldLocation
而非直接修改 Transform,确保所有追踪设备同步更新。