Show / Hide Table of Contents

    Gestures (手势)

    手势是基于人手的输入事件。有两种类型的设备会在MRTK中引发手势输入事件(gesture input events):

    • Windows Mixed Reality设备,例如HoloLens。这描述了捏合手指("Air Tap")和点击并按住的手势。

      有关HoloLens手势的更多信息,请参见Windows Mixed Reality 手势文档.

      WindowsMixedRealityDeviceManager 包装了Unity XR.WSA.Input.GestureRecognizer来在Unity中激发来自HoloLens 设备的手势事件。

    • 触屏设备 UnityTouchController 包装了支持物理触摸屏的 Unity Touch class类。

    这两个输入源都使用 Gesture Settings profile 来将Unity的Touch和Gesture事件分别转换为MRTK的Input Actions。可以在 Input System Settings profile 下找到此配置文件。

    Gesture Events

    通过实现以下gesture handler接口之一来接收gesture events: IMixedRealityGestureHandler 或者IMixedRealityGestureHandler<TYPE> (查看表event handlers).

    有关gesture event handler的示例实现,请参见示例场景。

    当实现通用版本时,OnGestureCompleted 和 OnGestureUpdated事件可以接收以下类型的类型化数据:

    • Vector2 - 2D位置手势。由触摸屏产生,以通知其 deltaPosition.
    • Vector3 -3D位置手势。由HoloLens产生,用于通知:
      • cumulativeDelta 用于一个 manipulation 事件
      • normalizedOffset 用于一个 navigation 事件
    • Quaternion - 3D旋转手势。可用于自定义输入源,但当前不由任何现有输入源产生。
    • MixedRealityPose - 组合的3D位置/旋转手势。可用于自定义输入源,但当前不由任何现有输入源产生。

    events 顺序

    根据用户输入,有两个主要的事件链:

    • "Hold":

      1. Hold tap:
        • 开始 Manipulation
      2. Hold tap 超过 HoldStartDuration:
        • 开始 Hold
      3. Release tap:
        • 完成 Hold
        • 完成 Manipulation
    • "Move":

      1. Hold tap:
        • 开始 Manipulation
      2. Hold tap 超过 HoldStartDuration:
        • 开始 Hold
      3. Move hand 超过 NavigationStartThreshold:
        • 取消 Hold
        • 开始 Navigation
      4. Release tap:
        • 完成 Manipulation
        • 完成 Navigation

    示例场景

    HandInteractionGestureEventsExample场景在 MixedRealityToolkit.Examples\Demos\HandTracking\Scenes 显示了如何使用pointer Result在命中位置生成对象。

    Gesture Tester script 是通过GameObjects可视化手势事件的示例实现。handler functions 会更改指示器对象的颜色,并在场景中的文本对象中显示最后记录的事件。

    • Improve this Doc
    Back to top Generated by DocFX