前言

文中使用插件为KinectForUnity

如要支持Unity2019或更高需自行升级插件,文末会提供方法
百度云 https://pan.baidu.com/s/1dAEhJgXbXL0_ZtQdWd-ATA
提取码 3nsv

需安装Kinect Studio,Visual Gesture Builder

若安装KinectStudio则自带Visual Gesture Builder
百度云 https://pan.baidu.com/s/1s6oFAmcTJVHj1l8icwP6VQ
提取码 2vs7

录制训练视频

打开Kinect Studio

参考链接: https://docs.microsoft.com/en-us/previous-versions/windows/kinect/dn785306(v=ieb.10)

修改录制视频路径

参考链接: https://docs.microsoft.com/en-us/previous-versions/windows/kinect/dn785518(v=ieb.10)

录制训练视频

参考链接: https://docs.microsoft.com/en-us/previous-versions/windows/kinect/dn785516(v=ieb.10)

参考链接: https://blog.csdn.net/nijiayy/article/details/68926979

生成VG1

参考链接: https://blog.csdn.net/nijiayy/article/details/68926979

VG库导入Unity

找到Build出来的VG库

VG库

拖入Unity的StreamingAssets文件夹内

如果不进行下面可选操作,需要将VG库放到Resources根目录下
拖入Unity的StreamingAssets文件夹内

更改VG文件读取路径(可选)

此处为可选操作,为了后面更方便的获取和使用VG库
如果不进行此处操作,需要将VG库放到Resources根目录下
打开VisualGestureManager脚本

第一处修改 注释默认读取文件方法

打开VisualGestureManager脚本,注释默认的获取VG文件代码
注释代码

第二处修改 修改文件读取路径

修改完成后
将上图

using (VisualGestureBuilderDatabase database = VisualGestureBuilderDatabase.Create(gestureDatabase))

代码改为

using (VisualGestureBuilderDatabase database = VisualGestureBuilderDatabase.Create(System.IO.Path.Combine(Application.streamingAssetsPath,gestureDatabase)))

参考链接: https://blog.csdn.net/gheartsea/article/details/85849719

Unity监听动作

挂载VGM组件

首先在KinectManager上挂载Visual Gesture Manager组件
挂载VGM组件

参数意义
PlayerIndex该组件跟踪的播放器索引。 0表示第一个玩家,1 - 第2个,2 - 第3个等。
GestureDatabaseVG数据库的文件名,由视觉手势识别器使用。(要写全称带文件名后缀)
GestureNames追踪的视觉手势列表。如果留空,则将跟踪VG数据库中的所有手势。
MinConfidence需要最小的完成度阈值,以考虑完成的离散手势。可信度在0.0和1.0之间变化。越低手势完成度就越低,越容易触发监听,越高手势完成度越高,越不容易触发监听。
VisualGestureListeners场景中的视觉手势侦听器列表。如果列表为空,则会在场景启动时检测可用的手势侦听器。
DebugTextGUI文本显示VG-Manager调试消息。

这里的GestureDatabase需要注意,如果没有按照之前步骤更改VG库读取位置则将VG库放置于Resouces文件根目录下,如果修改了,放在StreamingAssets文件根目录下

挂载监听组件

之后创建脚本GestureController并挂载在KinectManager上,如果触发手势则可以在此脚本中监听到消息。
创建脚本并挂载

修改监听组件

增加VG监听接口

增加VisualGestureListenerInterface接口
增加VG监听接口

增加手势完成监听

增加手势完成监听打印
增加手势完成监听打印

参数意义
gesture手势名称
userIndex用户编号

当动作完成后,将自动触发此函数。

(附)在Unity2019或更高版本使用KinectForUnity

将所有脚本中的GUI函数替换为UGUI函数即可。

示例1

替换示例

示例2

替换示例

示例3

替换示例

示例4

替换示例


  1. 由Visual Gesture Builder建立自定义姿势识别训练库 ↩︎

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐