前两天算是仔细研究了Kinect里PoseDetectionDemo里面的核心脚本的匹配原理。最近在做本科毕业设计,核心设计也是姿态匹配度检测。动作为太极拳中的云手,因为Kinect官方Demo中的姿势比对在正面无覆盖的姿势对比效果较好,但是在转身以及深度不同的动作检测上有较大偏差。主要体现如下: (图中左为PoseModel,右为AvatarModel)
可以看见根据骨骼生成的模型,在腿膝,手臂处都很有问题。下蹲动作表现的不明显,且因为身体转向甚至发生了腿膝关节的转向。在与标准动作比对时,因为在水平面上的转向将会导致更大的用于比对的向量之间的偏差。另外,在图中右手臂有一定深度时,手臂肘关节发生了折转,也是在前后(z轴)方向上的偏差。
现在拟用骨骼数据在xOy平面上的投影和关节点的距离来作为约束或者匹配条件,应该可以解决部分问题。
Vector3 vec3 = new Vector3(1, 2, 3);
Vector2 vec2 = vec3;
Debug.Log(vec2);
尝试了一下直接将Vector3赋值给Vector2,日志中打印的结果是(1,2)。直接将末尾z轴信息省略,是我们所需要的结果。所以对原PoseDetectionScript脚本稍作改进即可。