组件

交互组件

XR交互

每个场景至少需要一个 XR Interaction Manager,以建立交互器和交互对象之间的连接。

 

Input Actions 必须通过 Input Action Manager 启用,要手动添加它们,请找到 Input Action Manager 脚本,并将 Input Action 资产作为元素添加,这些资产位于示例路径中的 Shared Assets > Input Actions 文件夹下。

 

图片27.png

 

控制器

Controller Manager 是除 QCHTI 示例外,用于示例中交互的简单预制件。它包含以下 GameObjects:

 

XR Controller Manager 会根据连接的 InputDevice 过滤应用程序中使用的 XRControllerProfile。有关 Microsoft Mixed Reality Motion Controller Profile 或 Oculus Touch Controller Profile 的详细信息,请参阅 Unity 文档。

 

如果使用的是主控制器,设备指针将被激活。设备指针包含主控制器的网格和输入引用。如果使用的是带有两个控制器的 VR 设备,则会激活 XR Controllers GameObject。XR Controllers 预制件包含左侧和右侧控制器的两个 GameObjects,每个 GameObject 上都有一个 XR Controller(基于操作的控制器)组件,引用了每个控制器预制件和具体的输入引用。

 

交互预制件

交互预制件是一个较复杂的预制件,可用于在不同的交互方法之间切换。它包含在 Snapdragon Spaces Samples 中,并包括三种当前支持的交互方法的预制件。可以使用 XR Interaction Toolkit 示例场景作为如何使用此预制件及其组件的示例。

 

图片28.png


交互管理器组件位于此预制件的根 GameObject 中,它包含处理不同交互输入模式的方法以及输入交互切换的代码。

 

对于 AR 设备,默认配置会首先使用手部跟踪,如果 Unity 项目中没有包含 QCHT 包或手部跟踪与目标设备不兼容,则会回退到凝视指针。否则,它会按以下顺序切换:Hand Tracking > Gaze Pointer > Device Input.。

 

对于 VR/MR 设备,如果控制器被跟踪,它将自动以 XR Controllers 作为默认输入模式。如果没有控制器被跟踪,它将以手部跟踪作为默认输入模式。交互预制件中的自动控制器切换组件会检测控制器的跟踪状态,在控制器被跟踪时自动禁用手部跟踪,或在没有控制器被跟踪时启用手部跟踪。用户可以通过按下左侧控制器上的菜单按钮,在 XR Controllers/手部跟踪和凝视指针输入模式之间切换。


手部跟踪

有关手部跟踪的相关文档,请参阅 QCHT 手部跟踪。


凝视指针

Gaze Pointer预制件由以下游戏对象组成:

 

图片30.png


Gaze Interaction 用户界面组件添加到 XR Gaze Interactor 游戏对象上。它管理 XR Gaze Interactor 组件与场景中 UI 对象的交互,以及指针的计时器持续时间和“点击”功能。


GAZE 指针的限制

目前,Gaze 指针只能与场景中带有 XR Simple Interactable 组件的 UI 对象交互,而指针控制器可以同时与 UI 和 3D 对象交互。


XR Gaze Interactor 预制件还具有 Spaces Composition Layer 组件,有关使用 Composition Layer 渲染视图锁定内容的文档,请参见 Unity Gaze Pointer Composition Layer Sample

 

输入操作速查表

用于输入操作的按钮:



主控制器

XR 右手控制器

XR 左手控制器

选择

轻触触摸板

右触发按钮

左触发按钮

Gaze/指针切换

菜单按钮

左菜单按钮

触摸板

触摸板

右摇杆

左摇杆

锚点位置确认

轻触触摸板

任意触发按钮

任意触发按钮

 

控制器触觉

控制器的触觉反馈通过 Interaction Manager 的 SendHapticImpulse 函数发送到 XR Controller Manager。当调用 SendHapticImpulse 时,在按下 UI 按钮或滚动时,主控制器和 XR 控制器都会触发触觉脉冲。


警告!

目前,无论哪个控制器触发操作,触觉反馈都会在两个 XR 控制器上感受到。


XR 控制器的控制器动画

每个 XR 控制器在 XRControllers 中都有一个引用其 XR 控制器预制件的引用,包含带有按钮形状变化的控制器网格。

 

图片31.png


每个预制件都附有一个 XR 控制器输入动画脚本,该脚本会根据接收到的控制器每个按钮的数值更新混合形状权重值,从而生成按钮动画。

 

编辑器摄像机控制器

尽管构建时间可能相当耗时,但编辑器摄像机控制器允许在 Unity 编辑器中进行快速测试,并提供快捷键在 Gaze 指针和控制器之间切换。切换键会在编辑器控制台中显示。

 

图片32.png 


图片33.png

 

Spaces 手部追踪按钮绑定

XR Interaction Toolkit 示例中的每个按钮、切换或滑块预制件都有一个 Spaces 手部追踪按钮绑定组件,以禁用手部追踪以外的其他交互方式中不必要的 XR Simple Interactable 组件和捕捉体积。

 

交互包

Snapdragon Spaces 插件可以很好地与多个交互包配合使用。请参阅具体页面以了解如何开始使用这些交互包的详细信息:

● MRTK3

● QCHT

● XRIT