开发者 / Unity / PICO 分步教程
PICO 教程项目
获取 PICO 教程项目,了解其中三个演示分别如何添加触觉。
获取项目
该项目托管在 GitHub 上:HexR-Developer-Tutorial-Pico ↗。你可以克隆它,或在该页面使用 Code → Download ZIP 下载。
shell
git clone https://github.com/MicrotubeTechnologies/HexR-Developer-Tutorial-Pico.git- 使用 Unity 6000.6.0f1(项目保存时所用的版本)打开它。首次打开时,Unity 会从 GitHub 下载 HEXR 插件包,这需要一些时间,并且要求 git 已加入
PATH。 - PICO 的 OpenXR 插件已包含在项目的
Packages/文件夹中,因此无需另外安装任何内容。 - 该项目使用 HEXR
#v0.9.3,比本插件包落后一个版本;将固定版本改为#v0.9.4即可获得相应修复。固定版本位于Packages/manifest.json中com.microtube.hexr那一行的末尾。 - 切换到 Android 平台(File → Build Profiles → Android → Switch Platform),通过 Build And Run 安装到你的 PICO(如何安装到头显),然后从 HexR 菜单连接手套。首次运行时,请允许蓝牙权限;在 PICO 4 上,该权限名为 Location(为什么这很重要)。
演示内容
一个场景中包含三个演示,可通过 HexR 菜单上的 DEMOS 按钮在它们之间切换。Unity 的 XR Interaction Toolkit 负责检测抓取或戳按;HEXR 负责决定手套如何反馈。在 Unity 中选中任意物体,即可查看它的组件。
Grab Demo(抓取演示)
四个可以拿起的物体。
| 对象 | 触觉的添加方式 | 你的感受 |
|---|---|---|
| 苹果 拿起它 | HexRInteractableHaptics,与 XR Grab Interactable 并列 | 拇指、食指和中指受压 |
| 钥匙 捏住它 | 同一个组件 | 拇指、食指和中指感受到捏合 |
| 火把 抓起它,然后把一根手指伸进火焰 | 同一个组件,作用于所有通道。火焰:一个设为 Custom Vibrations 的 SpecialHaptics 区域 | 整只手受到挤压;伸进火焰的手指会感到嗡嗡振动 |
| 心脏 拿起并握住它 | 由 HexRGrabbable 负责拿起,无需 XRI。心脏上有一个设为 Heart Beat 的 SpecialHaptics 区域 | 缓慢而平稳的心跳 |
Rain Demo(雨水演示)
一个喷泉和一朵雨云。把手伸进去试试。
| 对象 | 触觉的添加方式 | 你的感受 |
|---|---|---|
| 喷泉 把手伸进水里 | 一个设为 Fountain 的 SpecialHaptics 区域 | 每根手指和手掌都能感受到细密的水雾 |
| 雨 将手掌放在云下 | 一个设为 Rain Drop 的 SpecialHaptics 区域 | 随机的轻敲,就像雨滴落下。只有手掌能触发它,所以请平摊手掌 |
Puzzle Demo(解谜演示)
按下按钮,点亮所有灯泡。每个按钮的触感都不同。
| 对象 | 触觉的添加方式 | 你的感受 |
|---|---|---|
| 按钮 1 戳按它 | XR Simple Interactable 的 Select 事件会调用 TriggerAllVibrations(0.6) 和 RemoveAllVibrations() | 整只手感受到缓慢的脉冲 |
| 按钮 2 戳按它 | 同样的事件,调用 TriggerAllHapticsIncrease(0.4) | 持续稳定的按压 |
| 按钮 3 戳按它 | 同样的事件,调用 TriggerAllVibrations(10) | 10 Hz 的嗡嗡振动 |
演示中添加触觉的三种方式
- 组件:
HexRInteractableHaptics与 XRI 的 XR Grab Interactable 并列,无需任何绑定。苹果、钥匙、火把。 - 触发区域:将
SpecialHaptics放在触发碰撞体上,任何进入其中的手指都能感受到。火把火焰、心脏、喷泉、雨。 - 交互事件:XR Simple Interactable 的 Select 事件调用 Pressure Controller(压力控制器)上的方法。三个按钮。
每种方式在 Assets/Scenes/ 中还各有一个独立的小场景:1.Basic Tutorial(组件)、2.Special Haptics Tutorial(区域)和 3.Button(事件)。
如何在你自己的项目中设置每种方式:触觉设置。