使用 LeapMotion 插件跟踪手和手指
概述#
LeapMotion 插件允许您在基于 UNIGINE 的应用程序中跟踪手和手指。
Leap Motion 系统识别并跟踪手和手指。该设备以高精度和跟踪帧速率近距离运行,并报告离散位置和运动。
Leap Motion 控制器使用光学传感器和红外光。传感器沿 Y 轴定向——当控制器处于标准操作位置时向上——并且具有大约 150 度的视野。 Leap Motion 控制器的有效范围从设备上方大约 25 毫米到 600 毫米(1 英寸到 2 英尺)。
当控制器具有清晰、高对比度的物体轮廓视图时,检测和跟踪效果最佳。 Leap Motion 软件将其传感器数据与人手的内部模型相结合,以帮助应对具有挑战性的跟踪条件。
坐标系#
Leap Motion 系统使用右手笛卡尔坐标系。原点在 Leap Motion 控制器的顶部居中。 X 轴和 Z 轴位于水平面,X 轴平行于设备的长边。 Y 轴是垂直的,正值向上增加(与大多数计算机图形坐标系的向下方向相反)。 Z 轴具有朝向用户增加的正值。
手#
手部模型提供有关检测到的手的身份、位置和其他特征、手所附着的手臂以及与手相关联的手指列表的信息。
手由 Hand 类表示。
武器#
手臂是一个类似骨骼的对象,它提供了手臂的方向、长度、宽度和端点。当肘部不在视野中时,Leap Motion 控制器会根据过去的观察以及典型的人体比例估计其位置。
武器由 Arm 类表示。
手指#
Leap Motion 控制器提供有关手上每个手指的信息。如果手指的全部或部分不可见,则基于最近的观察和手的解剖模型来估计手指特征。手指由类型名称标识,即 thumb, index, middle, ring, pinky。
手指由 Finger 类表示。
骨头#
每个手指都有一组骨骼,描述相应解剖手指骨骼的位置和方向。所有手指都包含从根部到尖端排列的四根骨头。
骨骼由 Bone 类表示。
骨骼被识别为:
- Metacarpal — 将手指连接到手腕(拇指除外)的手内部骨骼。
- Proximal Phalanx — 手指根部的骨骼,与手掌相连。
- Intermediate Phalanx — 手指的中间骨骼,在尖端和基部之间。
- Distal Phalanx — 手指末端的终端骨骼。
传感器图像#
连同计算出的跟踪数据,您可以从 Leap Motion 相机获取原始传感器图像。
图像数据包含测量的红外亮度值和校正复杂镜头畸变所需的校准数据。您可以将传感器图像用于增强现实应用程序,尤其是当 Leap Motion 硬件安装到 VR 耳机时。
也可以看看#
LeapMotion API:
- 有关通过 API 管理 LeapMotion 的更多详细信息,请参阅 LeapMotion 接口文章。
- 有关通过 API 管理武器的更多详细信息,请参阅 LeapMotion Arm 类文章。
- 有关通过 API 管理手指骨骼的更多详细信息,请参阅 LeapMotion Bone 类文章。
- 有关通过 API 管理手指的更多详细信息,请参阅 LeapMotion Finger 类文章。
- 有关通过 API 管理手牌的更多详细信息,请参阅 LeapMotion Hand 类文章。
使用 LeapMotion 支持实现 Unigine 应用程序#
要在 UNIGINE 应用程序中使用 LeapMotion 插件,请执行以下操作:
- 下载 Leap Motion SDK 并安装 Leap Motion 设备驱动程序。
-
通过 UNIGINE SDK 浏览器创建一个支持 LeapMotion 的新项目:单击 Plugins,在打开的表单中选中 LeapMotion support (LeapMotion plugin) 选项,然后单击 OK。
Plugins 面板上的 LeapMotion 插件要将 LeapMotion 支持添加到现有项目,请在 UNIGINE SDK Browser 中单击 Other Actions -> Configure Project -> Plugins -> LeapMotion support (LeapMotion plugin) -> OK。 - 实施您的应用程序。
- 发射应用程序启动时的 LeapMotion 插件。
启动 LeapMotion#
要启动插件,请在应用程序启动时指定 extern_plugin 命令行选项,如下所示:
main_x64d -extern_plugin UnigineLeapMotion
如果您通过 UNIGINE SDK 浏览器运行应用程序,请在 Customize Run Options 表单中指定上面给出的命令行选项。