Unity XR-XR Interaction Toolkit开发使用方法(十四)组件介绍(XR Origin)

目录

一、插件介绍

二、主要组件

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、核心功能与作用

空间坐标系管理

  1. 定义玩家在虚拟世界中的 原点位置,将物理设备的运动(如头显、手柄)映射到虚拟空间。

  2. 支持 Tracking Origin Mode(追踪原点模式),适配不同设备的空间定位需求。

设备追踪整合

  1. 管理头戴显示器(HMD)、左右手控制器的追踪数据。

  2. 自动绑定 XR Controller 和 XR Interactor,实现手柄输入与交互逻辑的关联。

摄像机与视角控制

  1. 包含主摄像机(Camera),代表玩家的第一人称视角。

  2. 处理 地面高度校准房间规模(Room-Scale) 或 坐姿(Seated) 体验的配置。

跨设备兼容性

  1. 抽象不同 XR 设备的底层差异(如 Oculus、OpenXR、Windows MR),提供统一的配置接口。


3、组件结构与层级

XR Origin 层级结构

XR Origin 组件需要特定的 GameObject 层级结构才能正常工作。推荐的 XR 场景配置如下:

GameObject组件
XR OriginXROrigin
Camera Offset
Main CameraCamera, TrackedPoseDriver, ARCameraManager (AR), ARCameraBackground (AR)
LeftHand ControllerXRController, XRRayInteractor, LineRenderer, 交互可视化组件
RightHand ControllerXRController, 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 模式:初始化为零。
CameraXR 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:基础玩家设置

  1. 创建空对象,添加 XR Origin 组件。
  2. 在子对象中创建 Camera Offset,附加 Main Camera 和 Tracked Pose Driver
  3. 添加左右手控制器对象,绑定 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 的集成

  1. 使用 XR Origin 的 MoveCameraToWorldLocation 方法实现玩家瞬移。
  2. 示例:当射线指向 Teleportation Area 时,调用该方法更新原点。

与 XR Interaction Manager 的协同

  1. XR Origin 的子控制器自动注册到交互管理器,确保交互事件正确分发。

与物理系统的配合

  1. 通过 XR Origin 的摄像机高度,动态调整碰撞体(如角色胶囊碰撞体高度)。

7、常见问题与解决

问题:玩家视角高度不正确

解决

  1. 检查 Tracking Origin Mode 是否为 Floor(需设备支持地面检测)。
  2. 手动设置 Camera Y Offset 或运行设备的高度校准流程。

问题:手柄模型位置偏移

排查

  1. 确认控制器预制体的 Attach Transform 与模型抓取点对齐。
  2. 检查 XR Controller 的 Tracking Origin Mode 是否与 XR Origin 一致。

问题:瞬移后场景错位

  1. 修复:使用 MoveCameraToWorldLocation 而非直接修改 Transform,确保所有追踪设备同步更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一颗橘子宣布成为星球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值