Kinect For Unity3D 利用Kinect Studio 和Visual Gesture Builder建立自定义姿势之录制连续动作,判断Progress

此篇文章灵感来自,本文只做扩展,扩展一些“ AAArlex”博主未讲到的一些内容:

https://blog.csdn.net/nijiayy/article/details/68926979
如果对录制姿势一无所知的同学,请看完此篇文章再看以下文章。

看了“ AAArlex”博主的,发现博主在Create New Project With Wizard选择Progress时选择的是离散动作,并非持续动作。
添加录制生成的.gbd文件
Kinect For Unity3D 利用Kinect Studio 和Visual Gesture Builder建立自定义姿势之录制连续动作,判断Progress_第1张图片

插播一句,关于.gbd的文件的存放和读取更改:
官方:
官方给的方法是直接在项目根目录下存放读取,Assets文件夹同级;
读取源码VisualGestureManager里:
Kinect For Unity3D 利用Kinect Studio 和Visual Gesture Builder建立自定义姿势之录制连续动作,判断Progress_第2张图片
并且生成项目后还需要手动再复制进项目根目录下,与***_Data同级。个人觉得比较麻烦。

优化:
直接存放在StreamingAssets文件夹内,发布也不用再次手动复制,直接保存。
更改代码:
Kinect For Unity3D 利用Kinect Studio 和Visual Gesture Builder建立自定义姿势之录制连续动作,判断Progress_第3张图片
删除原本的代码,更改为我这句,这样就可以实现了。

**离散动作:**判断这个我们动作“发生了“还是“没有发生“,就是一个1还是0的判断。
代码实现:
Kinect For Unity3D 利用Kinect Studio 和Visual Gesture Builder建立自定义姿势之录制连续动作,判断Progress_第4张图片
**持续动作:**即有动作完成进度的动作。判断Kinect检测到的姿势和我们分类器的姿势的吻合度有多少,它不是一个是否的判断而是一系列的数字来表示当前的姿势和分类器姿势的重合度,而且,这个Progress数字越高,表示当前检测的动作和分类器的标志动作越像(完成度越高)。
Kinect For Unity3D 利用Kinect Studio 和Visual Gesture Builder建立自定义姿势之录制连续动作,判断Progress_第5张图片

步入正题,怎么录制并且生成持续的自定义动作:
1.首先,离散动作录制生产就看这篇博客。https://blog.csdn.net/nijiayy/article/details/68926979
2.持续动作,在https://blog.csdn.net/nijiayy/article/details/68926979博客基础上,(二.9步骤)Progress选项时选择Yes。后面的操作照旧完成就行了。

划重点!怎么训练持续动作?如果训练操作不对,根本没有任何效果!
首先说一下我的创建的内容:
1.下半身无影响;
2.不分左右手;
3.持续动作;
4.用Kinect Studio共计录制了三组视频动作,2组作为正样本,1组作为负样本。(关于这个,录制的越多,学习的越多越精确。关于正负样本的说法没什么好说的,就是对比吧,无太大影响)。

Kinect For Unity3D 利用Kinect Studio 和Visual Gesture Builder建立自定义姿势之录制连续动作,判断Progress_第6张图片

学习制作:
离散动作的制作就是选区域划线,选中的区域(要学习的动作片段)为true,反之为false。
(选中方法:动作开始的地方按住shift键拖动鼠标,到结束的位置松开鼠标按Enter键即可。)
Kinect For Unity3D 利用Kinect Studio 和Visual Gesture Builder建立自定义姿势之录制连续动作,判断Progress_第7张图片
Kinect For Unity3D 利用Kinect Studio 和Visual Gesture Builder建立自定义姿势之录制连续动作,判断Progress_第8张图片

上面的不是重点,重点是如何学习持续动作。
持续动作是要设置顶峰(数值为1)和坡底(数值为0)。(这部分只可意会不可言传,具体根据自己的理解)
顶峰:比如鼓掌的动作,合掌为鼓掌进行,即设为1。
坡底:比如鼓掌的动作,分开手掌到两侧为鼓掌结束(开始),设为0。
以此区间来连接曲线。中间可以加很多点。

Kinect For Unity3D 利用Kinect Studio 和Visual Gesture Builder建立自定义姿势之录制连续动作,判断Progress_第9张图片

当然我是持续鼓掌,也可以连贯起来。同理
Kinect For Unity3D 利用Kinect Studio 和Visual Gesture Builder建立自定义姿势之录制连续动作,判断Progress_第10张图片
至此动作学习完成,创建gbd动作文件:

Kinect For Unity3D 利用Kinect Studio 和Visual Gesture Builder建立自定义姿势之录制连续动作,判断Progress_第11张图片
然后就可以按照文章的开头来读取gbd文件了。

录制学习动作,虽然简单方便,可以实现一个代码不容易实现的动作。但是存在一定的问题,可能会检测不灵敏……等问题。如果有能力还是更建议使用代码实现。奉上代码实现的方法:
代码实现鼓掌动作判断:
传动门

你可能感兴趣的:(Unity,Kinect)