兄弟萌,我这边有个问题,是关于动作捕捉的开发。
我个人情况:并没有这方面的基础知识,只能说是赶鸭子上架。
##1.具体情况如下
我们公司决定开发一套动作捕捉的设备,采用的是博世的 BNO055 传感器,并且不采用绑带或者衣服,而是直接贴在身体皮肤表面。目前我在传感器四元数控制 unity3d 模型的旋转方面遇到了一些问题。
##2.关于四元数
我将 BNO055 本身的右手坐标系转换成 unity 的左手坐标系
Quaternion q_lefthanded = new Quaternion( -bno[3], -bno[1], -bno[2], bno[0] );
校准和实时运动
`
Quaternion q_calib; // 站立姿势时的四元数(即校准)
Quaternion q_curr; // 运动时的四元数(实时)
Quaternion q = q_curr * Quaternion.Inverse(q_calib); //之后在 update 函数中,将这个四元数 q 赋值给 3d 模型 ` 我将传感器正对前方,运动时,unity 模型的动作中,有一个轴呈现相反的旋转方向。 ##3.求助,想要的回答 我查阅过博世的论坛,Stack Overflow 之类的也查询过,并没有解决我的问题,想问一下各位兄弟姐妹,有没有什么解决办法?
下面附上问题详情视频,测试时用的是右手
https://v.youku.com/v_show/id_XNTkwMTM2MjA4NA==.html https://youtu.be/D40jWchqDLI
1
MinQ 2022-09-13 17:20:54 +08:00
https://github.com/curiosity-inc/bno055-unity
这里有个 Unity 插件,里面的 DataReceiver_OnDataReceived 是用来转换的,你要不试试看? |
2
cocoZombie OP @MinQ 谢谢,这个试过了,结果令人悲伤。😿
|
3
MinQ 2022-09-13 17:45:07 +08:00
如果只是有一个轴反向旋转的话可能把其中某个数的符号修改一下就行了?
|
4
cocoZombie OP @MinQ 看起来是,实际上并不是。谢谢 :)
我刚又搜了下,终于找到了 https://gamedev.stackexchange.com/questions/182126/sensor-quaternion-to-unity-conversion 贴出来,顺便帮助以后也遇到同样问题的朋友 |