如题,由于是商业项目,无法公开源码,这里主要说一下实现此功能的思路。
人体关节点识别
基于Mediapipe Unity插件进行开发,性能比较低的CPU主机,无法流畅地运行Mediapipe,这个要注意一下。
Mediapipe33个人体关节点图如下:
Mediapipe关节点映射到Unity人体骨骼
这是开发此功能的一个难点,涉及到了关节点位置与骨骼位置的映射,还有骨骼反向运动。
1、使用unity IK插件比如:Animation Rigging、Final IK等
2、参考ThreeDPoseUnityBarracuda自行去映射关节点。
我这边使用的是第二种方法。主参照ThreeDPoseUnityBarracuda项目中的VNectModel.cs脚本,其中abdomenUpper这个关节点的位置要我们根据Mediapipe传过来的位置进行手动计算再赋值,其他位置可以直接从Mediapipe传过来的值中得到。
另外Build的时候记得将资源加载的方式改为StreamingAssets
最终效果如下:
MediaPipe Pose Tracking