尝试在 Three.js 中将 Go Pro GYRO 数据转换为旋转

bee*_*eek 2 javascript rotation euler-angles three.js gopro

我正在尝试将 Go Pro 陀螺仪数据转换为 Three.js 坐标,以便我可以将素材投影到球体内部,旋转球体并具有 3D 稳定性。

在此处输入图片说明

相机是这样定向的,坐标的顺序是 Z,X,Y

我正在尝试应用这个向量来旋转球体,就像这样

    this._nextVec3.set(this._next[0],this._next[1],this._next[2])
    this.el.object3D.rotation.setFromVector3(this._nextVec3) 
Run Code Online (Sandbox Code Playgroud)

但是我无法让旋转与相机的旋转相匹配,我认为这与左/右手配置有关?

任何人都可以帮忙吗?

Mar*_*zzo 5

首先,确保您指定了正确的rotation.order属性。既然你说的是ZXY,那应该是一个简单的

this.el.object3D.rotation.order = "ZXY";
Run Code Online (Sandbox Code Playgroud)

其次,查看来自编辑器的 Three.js 轴:

在此处输入图片说明

如您所见,WebGL 轴与 GoPro 不同。我认为你必须翻转 X 轴,并交换 Z 和 Y。所以可能是这样的:

let xRot = this._next[0];
let yRot = this._next[1];
let zRot = this._next[2];
this.el.object3D.rotation.set(-xRot, zRot, yRot); 
Run Code Online (Sandbox Code Playgroud)