关于使用 BNO055 传感器的动作捕捉问题

2022-09-13 16:34:05 +08:00
 cocoZombie

兄弟萌,我这边有个问题,是关于动作捕捉的开发。
我个人情况:并没有这方面的基础知识,只能说是赶鸭子上架。

##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

877 次点击
所在节点    程序员
4 条回复
MinQ
2022-09-13 17:20:54 +08:00
https://github.com/curiosity-inc/bno055-unity
这里有个 Unity 插件,里面的 DataReceiver_OnDataReceived 是用来转换的,你要不试试看?
cocoZombie
2022-09-13 17:25:41 +08:00
@MinQ 谢谢,这个试过了,结果令人悲伤。😿
MinQ
2022-09-13 17:45:07 +08:00
如果只是有一个轴反向旋转的话可能把其中某个数的符号修改一下就行了?
cocoZombie
2022-09-13 19:00:59 +08:00
@MinQ 看起来是,实际上并不是。谢谢 :)
我刚又搜了下,终于找到了
https://gamedev.stackexchange.com/questions/182126/sensor-quaternion-to-unity-conversion
贴出来,顺便帮助以后也遇到同样问题的朋友

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/879748

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX