unity3d - 如何使用 Windows 混合现实控制器 [MRTK2] 模拟 HoloLens 2 手部跟踪?
问题描述
HoloLens 2 将具有手部跟踪功能以及伸出和戳UI 元素的能力。在 Unity 和混合现实工具包 V2 中,手动跟踪近距离交互(即戳)的输入来自 PokePointer 类,并为具有 BaseNearInteractionTouchable 组件的游戏对象生成事件。
我的问题是我们如何从虚拟现实控制器(如 Windows 混合现实控制器)获得相同的 PokePointer 事件?这将使使用 VR 耳机在桌面上进行原型制作成为可能,甚至可以直接在 VR 应用程序中使用与混合现实工具包相同的近距离交互。
PokePointer 组件可以附加到作为控制器模型的手游戏对象吗?或者有没有更好的方法通过 MRTK 配置文件系统来做到这一点?
解决方案
实际上,可以在 VR 设备上添加戳指针和抓取指针。事实上,无需可视化即可添加基本功能,甚至无需编写任何代码!
让现有的抓取和戳指针与 VR 一起使用
- 通过在场景视图中选择 MixedRealityToolkit 对象打开当前指针配置文件,转到检查器窗口,然后导航到 Input -> Pointers。
在指针选项下,设置 PokePointer 和 Grab Pointer 的控制器类型以包括您的 VR 控制器类型(在我的情况下,它是 Windows Mixed Reality,尽管您可能希望使用 OpenVR)
戳指针被配置为跟随食指姿势,这在 VR 中不存在。因此,您需要打开
PokePointer.prefab
文件并在检查器中,在 Poke Poker -> Pose Action 下,将值设置为“Pointer Pose”
奖励:通过使用自定义指针改进抓取、戳指针
您可以通过使用自定义指针而不是默认指针来大大改进您拥有的指针。例如,您可以:
raycastorigin
通过将 PokePointer 的字段设置为自定义变换,使 poke 指针从 gizmo 原点偏移- 添加视觉效果以实际显示指针的位置
我创建了一个示例,演示了一个自定义抓取和戳指针,它可视化了抓取和戳位置,并且还偏移了戳位置以更方便。您可以在此处下载示例的 unitypackage,或者只是克隆mrtktips 存储库并查看VRGrabPokePointers场景。
注意:要真正显示视觉效果,请使用以下脚本(指针当前在启动时禁用所有渲染器以避免闪烁)。
using UnityEngine;
public class EnableRenderers : MonoBehaviour
{
void Start()
{
foreach (var renderer in GetComponentsInChildren<Renderer>())
{
renderer.enabled = true;
}
}
}
推荐阅读
- javascript - 奥赛罗极小极大算法在 React.js 中不起作用
- python - 如何在 Dockerfile CMD 和 ENTRYPOINT 执行模式下正确转义 [] 字符?
- c# - 在后面的代码中将依赖属性绑定到另一个依赖属性
- python - 在 Notebook - Odoo 14 中根据组权限限制添加评论
- reactjs - 使用 Create-React-App 动态导入图像
- spring - 在 Spring Boot 中以编程方式删除和重新创建表
- python - Python textwrap:终端打印与写入文件的不同结果
- php - 比较多个字符串并在php中找到相似的子字符串
- json - 如何使用 jq 写入 JSON 文件而不更改 Powershell 的二进制文件?
- javascript - 计算对象数组中的项目