gpt4 book ai didi

javascript - 根据相机 View 变化计算对象旋转

转载 作者:行者123 更新时间:2023-12-03 10:25:41 24 4
gpt4 key购买 nike

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

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

和结束摄像机 View :(位置[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)

关于javascript - 根据相机 View 变化计算对象旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29416235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com