使用加速度计旋转object3D

时间:2019-05-11 06:34:56

标签: three.js rotation accelerometer

我正在使用MEM加速度计通过THREE.js库移动虚拟形象。但是,由于我的虚拟形象无法正确定位,因此当传感器同时绕X,Y和Z旋转时,我面临一个问题。我的意思是,它不反映MEMs加速度计的位置。让我用图像解释一下。我们将传感器置于此初始位置。红色轴是X,绿色是Y,蓝色是Z:

初始位置

https://i.stack.imgur.com/fQSsL.jpg

现在,当传感器旋转到新位置时,它将发送X = 90,Y = -90,Z = 90度的信号:

https://i.stack.imgur.com/njGBO.jpg

这是传感器发送的,因为将对象坐标与世界坐标进行比较,实际上X现在是Z所在的位置,Z是Y所在的位置,Y是X所在的位置;然后将它们全部旋转。

我面临的问题是我不知道如何指示我的化身达到这个位置。使用带有或不带有四元数的局部或世界旋转,我仅用2个旋转即可得到该点。例如,使用四元数,我只需要在X和Z -90角度旋转。

    var rotation = new THREE.Quaternion();
    rotation.setFromEuler( new THREE.Euler(x_angle, y_angle, z_angle, 'XYZ') );
    bone.setRotationFromQuaternion(rotation);

阅读这篇文章:https://gamedev.stackexchange.com/questions/136174/im-rotating-an-object-on-two-axes-so-why-does-it-keep-twisting-around-the-thir

我有一个更深入的了解,但是这是从两个角度完成的,最后谈到我认为是我所具有的限制。但是,我不明白他针对此限制发布的解决方案。

如何利用传感器提供的信息来达到这个位置?有一种方法可以知道哪个是冗余轴?

非常感谢您的帮助。谢谢:)

0 个答案:

没有答案