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

目录

一、插件介绍

二、主要组件

[XR Interaction Manager](#XR Interaction Manager)

[XR Controller](#XR Controller)

[XR Interactor](#XR Interactor)

[XR Direct Interactor](#XR Direct Interactor)

[XR Ray Interactor](#XR Ray Interactor)

[XR Socket Interactor](#XR Socket Interactor)

[XR Gaze Interactor](#XR Gaze Interactor)

[XR Interaction Group](#XR Interaction Group)

[XR Interactable](#XR Interactable)

[XR Simple Interactable](#XR Simple Interactable)

[XR Grab Interactable](#XR Grab Interactable)

[三、XR Origin](#三、XR Origin)

1、组件介绍

2、核心功能与作用

空间坐标系管理

设备追踪整合

摄像机与视角控制

跨设备兼容性

3、组件结构与层级

[XR Origin 层级结构](#XR Origin 层级结构)

4、关键配置参数

[XR Origin 组件属性](#XR Origin 组件属性)

跟踪原点模式

5、实际应用场景

场景1:基础玩家设置

场景2:地面高度校准

场景3:传送后更新原点

6、与其他组件的协作

[与 Teleportation Provider 的集成](#与 Teleportation Provider 的集成)

[与 XR Interaction Manager 的协同](#与 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 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:基础玩家设置

  1. 创建空对象,添加 XR Origin 组件。
  2. 在子对象中创建 Camera Offset,附加 Main Camera 和 Tracked Pose Driver。
  3. 添加左右手控制器对象,绑定 XR Controller 和 XR Direct Interactor。

场景2:地面高度校准

cs 复制代码
// 脚本动态校准地面高度
public XROrigin xrOrigin;
public float manualHeight = 1.75f;

void Start()
{
    xrOrigin.RequestTrackingOriginMode(TrackingOriginMode.Floor);
    xrOrigin.CameraYOffset = manualHeight; // 若自动校准失败,手动设置
}

场景3:传送后更新原点

cs 复制代码
// 传送后调整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,确保所有追踪设备同步更新。
相关推荐
阿松爱学习8 小时前
【Unity开发】Aspose.PDF的使用
unity·pdf·c#
淡海水9 小时前
02-04-原理篇-GC Roots与对象图遍历
算法·unity·c#·图·gc·遍历·roots
辻弋2014 天前
五年前的旅行视频糊成马赛克?Video2X用Real-ESRGAN逐帧重建细节,但只支持Windows、集显用户建议直接放弃
服务器·数据库·windows·游戏引擎·电脑
Martina_03215 天前
AI生成3D场景导入 Unity/Unreal 后,NPC 总串层?用6步检查导航高度与跨层连接
人工智能·游戏·数学建模·3d·unity·自然语言处理·aigc
小贺儿开发5 天前
Unity 局域网遥控幻灯片展示工具 3.0
科技·http·unity·工具·ppt·通信·网页
WarPigs7 天前
Unity对象不应该使用null传播的问题
unity
每日出拳老爷子8 天前
【VR】【Unity】抓走转放系列21|一天搭完门和抽屉工具槽:小场景按这个次序拼装
unity·vr·驱动·排错·snap zone
淡海水9 天前
02-02-原理篇-分代GC
算法·unity·c#·游戏引擎·.net·gc
小贺儿开发9 天前
Unity 文物新生 会讲故事的文物展墙
人工智能·科技·unity·ai·视频·互动·演示
淡海水9 天前
02-03-原理篇-大对象堆
unity·c#·游戏引擎·.net·gc