如何通过Windows Mixed Reality控制器[MRTK2]模仿HoloLens 2手部跟踪?

时间:2019-08-29 18:58:35

标签: unity3d hololens

HoloLens 2将具有手部跟踪功能,并具有伸出和戳出 UI元素的能力。使用Unity和Mixed Reality Toolkit V2,手动跟踪的近距离交互(即戳戳)的输入来自PokePointer类,并为具有BaseNearInteractionTouchable组件的GameObjects生成事件。

我的问题是,我们如何从虚拟现实控制器(例如Windows Mixed Reality控制器)中获取相同的PokePointer事件?这样一来,就可以使用VR头戴式耳机在桌面上进行原型制作,甚至可以直接在VR应用程序中使用混合现实工具包的相同交互方式。

能否将PokePointer组件附加到作为控制器模型的手动GameObject?还是有更好的方法通过MRTK配置文件系统来做到这一点?

1 个答案:

答案 0 :(得分:2)

实际上,可以向VR设备添加戳指针和抓取指针。实际上,无需编写任何代码就可以完成不可视化的基本功能!

获取现有的抓取和戳指针以与VR一起使用

  1. 通过在场景视图中选择MixedRealityToolkit对象,打开当前的指针配置配置文件,转到检查器窗口,然后导航到“输入”->“指针”。
  2. 在指针选项下,设置PokePointer和Grab指针的控制器类型以包括您的VR控制器类型(在我的情况下是Windows Mixed Reality,尽管您可能希望使用OpenVR) pointer options

  3. The指针配置为遵循食指姿势,而VR则不存在。因此,您需要打开PokePointer.prefab文件,然后在检查器的“ Poke Poker-> Pose Action”下,将值设置为“ Pointer Pose”

enter image description here

  1. 打比赛。抓取指针将稍稍位于运动控制器Gizmo的下方,并位于其右侧,而戳戳指针将显示在原点的右侧。 enter image description here

奖金:改进抓取,通过使用自定义指针戳指针

通过使用自定义指针而不是默认指针,可以极大地改善您拥有的指针。例如,您可以:

  • 通过将PokePointer的raycastorigin字段设置为自定义变换,使戳指针与Gizmo原点偏移
  • 添加视觉效果以实际显示指针的位置

我创建了一个示例,演示了自定义抓斗和p指针,该指针可视化了抓斗和p的位置,并且还偏移了oke的位置,以更加方便。您可以下载unitypackage of the sample here,也可以克隆mrtktips repository并查看VRGrabPokePointers场景。

enter image description here

注意:要使视觉效果真正显示出来,请使用以下脚本(指针当前会在启动时禁用所有渲染器以避免闪烁)。

using UnityEngine;

public class EnableRenderers : MonoBehaviour
{
    void Start()
    {
        foreach (var renderer in GetComponentsInChildren<Renderer>())
        {
            renderer.enabled = true;
        }
    }
}

您可以在示例hereVRGrabPokePointersUnity scene

中看到自定义MRTK和指针配置文件的示例