Unity3d 如何使用Windows混合现实控制器[MRTK2]模拟HoloLens 2手动跟踪?

Unity3d 如何使用Windows混合现实控制器[MRTK2]模拟HoloLens 2手动跟踪?,unity3d,hololens,Unity3d,Hololens,HoloLens 2将具有手跟踪功能,并能够接触和戳出UI元素。有了Unity和Mixed Reality Toolkit V2,手动跟踪近交互(即戳)的输入来自PokePointer类,并为具有BaseNearInteractionTouchable组件的游戏对象生成事件 我的问题是,我们如何从虚拟现实控制器(如Windows混合现实控制器)获得相同的PokePointer事件?这将使使用虚拟现实耳机在桌面上制作原型成为可能,甚至可以在虚拟现实应用程序中直接使用混合现实工具包的相同近似交互 P

HoloLens 2将具有手跟踪功能,并能够接触和戳出UI元素。有了Unity和Mixed Reality Toolkit V2,手动跟踪近交互(即戳)的输入来自PokePointer类,并为具有BaseNearInteractionTouchable组件的游戏对象生成事件

我的问题是,我们如何从虚拟现实控制器(如Windows混合现实控制器)获得相同的PokePointer事件?这将使使用虚拟现实耳机在桌面上制作原型成为可能,甚至可以在虚拟现实应用程序中直接使用混合现实工具包的相同近似交互


PokePointer组件是否可以连接到作为控制器模型的手持游戏对象?还是有更好的方法通过MRTK配置文件系统实现这一点

实际上,可以向VR设备添加戳指针和抓取指针。事实上,在没有可视化的情况下添加基本功能甚至不需要编写任何代码就可以完成

使用VR获取现有的抓取和戳指针
  • 通过在场景视图中选择MixedRealityToolkit对象,转到inspector窗口,然后导航到Input->Pointers,打开当前指针配置文件
  • 在指针选项下,设置PokePointer和抓取指针的控制器类型,以包括您的VR控制器类型(在我的例子中,它是Windows混合现实,尽管您可能希望使用OpenVR)

  • 戳指针配置为跟随食指姿势,这在VR中不存在。因此,您需要打开
    PokePointer.prefate
    文件,并在inspector中的Poke Poker->Pose Action下,将值设置为“指针姿势”

  • 打球。抓取指针将略低于运动控制器gizmo的右侧,戳指针将显示在原点的右侧。
  • 奖励:通过使用自定义指针改进抓、戳指针 通过使用自定义指针而不是默认指针,可以极大地改进现有指针。例如,您可以:

    • 通过将PokePointer的
      raycastorigin
      字段设置为自定义变换,使戳指针偏离gizmo原点
    • 添加视觉效果以实际显示指针的位置
    我创建了一个示例,演示了一个自定义的抓取和戳指针,它可以可视化抓取和戳的位置,还可以偏移戳的位置以更加方便。您可以下载一个,或者只是克隆并查看场景

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

    使用UnityEngine;
    公共类使能呈现器:MonoBehavior
    {
    void Start()
    {
    foreach(GetComponentsInChildren()中的var呈现器)
    {
    renderer.enabled=true;
    }
    }
    }
    

    您可以在示例中看到自定义MRTK和指针配置文件的示例,也可以在

    中看到,实际上,可以向VR设备添加戳指针和抓取指针。事实上,在没有可视化的情况下添加基本功能甚至不需要编写任何代码就可以完成

    使用VR获取现有的抓取和戳指针
  • 通过在场景视图中选择MixedRealityToolkit对象,转到inspector窗口,然后导航到Input->Pointers,打开当前指针配置文件
  • 在指针选项下,设置PokePointer和抓取指针的控制器类型,以包括您的VR控制器类型(在我的例子中,它是Windows混合现实,尽管您可能希望使用OpenVR)

  • 戳指针配置为跟随食指姿势,这在VR中不存在。因此,您需要打开
    PokePointer.prefate
    文件,并在inspector中的Poke Poker->Pose Action下,将值设置为“指针姿势”

  • 打球。抓取指针将略低于运动控制器gizmo的右侧,戳指针将显示在原点的右侧。
  • 奖励:通过使用自定义指针改进抓、戳指针 通过使用自定义指针而不是默认指针,可以极大地改进现有指针。例如,您可以:

    • 通过将PokePointer的
      raycastorigin
      字段设置为自定义变换,使戳指针偏离gizmo原点
    • 添加视觉效果以实际显示指针的位置
    我创建了一个示例,演示了一个自定义的抓取和戳指针,它可以可视化抓取和戳的位置,还可以偏移戳的位置以更加方便。您可以下载一个,或者只是克隆并查看场景

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

    使用UnityEngine;
    公共类使能呈现器:MonoBehavior
    {
    void Start()
    {
    foreach(GetComponentsInChildren()中的var呈现器)
    {
    renderer.enabled=true;
    }
    }
    }
    

    您可以在示例中以及

    中看到自定义MRTK和指针配置文件的示例,谢谢!我将输入->指针设置为包括WindowsMR控制器/w PokePointer和GrabPointer,然后制作PokePointer预置的变体,并将偏移子变换作为“Poke Pointer”光线投射原点,以便在手指的大致位置进行Poke操作。伟大的解决方案和演练!谢谢朱莉娅!我将输入->指针设置为包括WindowsMR控制器/w PokePointer和GrabPointer,然后制作PokePointer预置的变体,并将偏移子变换作为“Poke Pointer”光线投射原点,以便Poke操作大约在
    using UnityEngine;
    
    public class EnableRenderers : MonoBehaviour
    {
        void Start()
        {
            foreach (var renderer in GetComponentsInChildren<Renderer>())
            {
                renderer.enabled = true;
            }
        }
    }