惯性人体姿态解算——动捕上位机的实现 Part2
1.设计思路
通信方面没有太多要说的,是做了一个UDP的服务器用来接收设备的广播数据,然后将固定格式的数据进行解析,得到各个肢体的三轴值数据。
人物模型采用的是通过Vroid生成的模型,骨骼使用mixamo进行绑定,并在Unity中做人形骨骼绑定。得益于我设备是每个关节(肢体)可以分别获取Roll、Pitch和Yaw角,因此我可以直接进行正向动力学,即将获取到的肢体的角度偏转值直接赋值给上位机中的人体模型。因此,控制人物模型的核心代码其实很短:
1 | // 将三轴值转化为Quaternion |
2.模型初始状态问题
与直观的欧拉角不同,即使传入的初始状态都是(0,0,0),在头部应用的时候还没有问题,但是应用在模型手臂会导致手臂初始状态朝上而不是T-Pose,因此需要给手臂加一个初始状态矫正的Offset:
1 | // 将三轴值转化为Quaternion |
引入矫正前
引入矫正后
3.最终效果
最终效果可以点击链接查看视频–> https://github.com/isNineSun/Human-Pose-Estimation---Motion-Capture-Device/assets/42261713/1a74626f-e1af-4e56-bceb-0fe2316b3c24
4.最后
还真是迟来的Part2了,生活中有不少的事情这个就一直搁置下来了,最后实现的效果也并不能说尽善尽美了,还有很多遗憾和不足,希望能在之后的项目中注意并避免,能够弥补这次的些许遗憾。
项目软硬件皆以开源,Part1文章中有所有的开源链接–>惯性人体姿态解算——动捕设备的实现 Part1,本上位机实现也在GitHub上开源了–>Motion-Capture-Host-Software
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.