【问题标题】:How can I recognise HoloLens gestures in C#?如何在 C# 中识别 HoloLens 手势?
【发布时间】:2019-12-18 14:51:21
【问题描述】:

所以前几天我上网搜索了如何识别 C#/Unity 中的 HoloLens 手势(例如普通的 Tap Gesture)。

例如,我尝试了 GestureRecognizer,但它似乎已经过时,我无法让它工作。

我通过在 Unity(混合现实工具包)中模拟并按住“空格”以查看手并单击鼠标左键对其进行了测试。

这样我可以像正常使用 HoloLens 一样与对象交互,但我无法让 GestureRecognizer 工作。

任何代码 sn-ps 都会有所帮助。如果识别出单击或双击,我只是尝试记录(或稍后调用方法)。

【问题讨论】:

    标签: c# hololens mrtk hololens-emulator


    【解决方案1】:

    我认为这里有几件作品在起作用。 首先,混合现实工具包的模拟手不会通过常规 GestureRecognizer 发送他们的事件,这可以解释为什么您看不到那里的事件。不过,它们确实通过 MRTK 的输入系统发送输入和手势事件。您可以通过以下方式收听这些事件:

    public class TapListener : MonoBehaviour, IMixedRealityGestureHandler
    {
        [SerializeField]
        private MixedRealityInputAction selectAction; // You'll need to set this in the Inspector to Select
    
        private void OnEnable()
        {
            CoreServices.InputSystem?.RegisterHandler<IMixedRealityGestureHandler>(this);
        }
    
        private void OnDisable()
        {
            CoreService.InputSystem?.UnregisterHandler<IMixedRealityGestureHandler>(this);
        }
    
        public void OnGestureCompleted(InputEventData eventData)
        {
            if (eventData.MixedRealityInputAction == selectAction)
            {
                Debug.Log("Tap!");
            }
        }
    
        public void OnGestureStarted(InputEventData eventData) { }
        public void OnGestureUpdated(InputEventData eventData) { }
        public void OnGestureCanceled(InputEventData eventData) { }
    }
    

    其次,MRTK 目前不支持双击,但如果您可以在 repo 上提交功能请求以便记录它,那就太好了。

    【讨论】:

      猜你喜欢
      • 2013-08-03
      • 2021-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多