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 OriginXR Interaction Toolkit 中用于管理 XR 玩家视角与设备追踪 的核心组件,充当玩家在虚拟空间中的"锚点"。它定义了用户的头部(摄像机)、手部(控制器)的位置追踪逻辑,并协调与 XR 设备的空间映射,是构建 XR 应用的基石。

XR Origin 的作用是将对象和可追踪特征转换到它们在 Unity 场景中的最终位置、方向和缩放比例。


2、核心功能与作用

空间坐标系管理

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

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

设备追踪整合

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

  2. 自动绑定 XR ControllerXR 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 SpecifiedDevice 时显示。

跟踪原点模式

跟踪原点模式 描述
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 CameraTracked Pose Driver
  3. 添加左右手控制器对象,绑定 XR ControllerXR 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 OriginMoveCameraToWorldLocation 方法实现玩家瞬移。
  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 ControllerTracking Origin Mode 是否与 XR Origin 一致。

问题:瞬移后场景错位

  1. 修复 :使用 MoveCameraToWorldLocation 而非直接修改 Transform,确保所有追踪设备同步更新。
相关推荐
一颗橘子宣布成为星球4 小时前
Unity XR-XR Interaction Toolkit开发使用方法(十三)组件介绍(XR Grab Interactable)
unity·游戏引擎·xr
虾球xz4 小时前
游戏引擎学习第126天
java·学习·游戏引擎
BuHuaX8 小时前
UGUI优化
unity·c#·游戏引擎·游戏程序·游戏策划
TWO85710 小时前
Unity中的CanvasGroup组件的显示隐藏
unity·c#·游戏引擎
奔跑的犀牛先生18 小时前
unity学习56:旧版legacy和新版TMP文本输入框 InputField学习
unity
虾球xz1 天前
游戏引擎学习第124天
java·学习·游戏引擎
Thomas_YXQ2 天前
Unity3D 战斗系统架构与设计详解
开发语言·unity·架构·系统架构·unity3d
Nicole Potter2 天前
内存泄漏指什么?常见的内存泄漏有哪些?
开发语言·游戏·unity·面试·c#
Jditinpc2 天前
Unity FBXExport导出的FBX无法在Blender打开
unity·游戏引擎·blender