根据相机视图变化计算对象旋转

Calculate object rotation from camera view change

我需要计算 3D 对象的旋转 space。我正在尝试使用 threejs,但一直无法弄清楚。 我需要的是:(rotationX, rotationY, rotationZ),以度为单位。

我有开始的相机视图: (位置[x,y,z],目标[x,y,z],向上[x,y,z])

和结束镜头视图: (位置[x,y,z],目标[x,y,z],向上[x,y,z])

如有任何帮助,我们将不胜感激。

我现在无法测试这个,我也没有使用 three.js 的经验,但逻辑应该是这样的:

var m1 = new THREE.Matrix4();
m1.lookAt(pos1, tar1, up1);
var q1 = new THREE.Quaternion();
q1.setFromRotationMatrix(m1);

var m2 = new THREE.Matrix4();
m2.lookAt(pos2, tar2, up2);
var q2 = new THREE.Quaternion();
q2.setFromRotationMatrix(m2);


q1.inverse();
var q3 = q2.multiply(q1);


var a = new THREE.Euler();
a.setFromQuaternion(q3, 'XYZ');

这里的方法就是获取两个代表物体旋转的四元数。这也可以使用 .quaternion() 直接从对象中获取 自:

QStart * QTransition = QResult

导致

QTransition = QResult * inverse(QStart)