为相机设置变换矩阵后,旋转不会改变

Rotation does not change after setting transformation matrix for camera

本文关键字:旋转 改变 相机 设置 变换      更新时间:2023-09-26

知道如何将变换矩阵应用于PerspectiveCamera吗?我有一个变换矩阵,我正在使用将其设置为透视相机

camera.applyMatrix(transformationMatrix);

它正确设置camera.positioncamera.quaternion保持不变。旋转仅在我设置camera.matrixAutoUpdate = false时才有效,但它会破坏轨迹球控制。我也尝试在轨迹球控件中添加camera.updateMatrix,但这再次重置旋转。 我尝试手动设置相机的位置,四元数和比例为:

camera.matrixAutoUpdate = false;
camera.useQuaternion = true;
var position = new THREE.Vector3();
var quaternion = new THREE.Quaternion();
var scale = new THREE.Vector3(1, 1, 1);
transformationMatrix.decompose(position, quaternion, scale);
camera.position.copy(position);
camera.quaternion.coy(quaternion);
camera.scale.copy(scale);
camera.updateMatrix();

它产生相同的结果,一切都设置正确,但轨迹球控件不起作用。

编辑:我想设置一次矩阵,而不是每一帧。

在 animate 循环中尝试在 camera.applyMatrix(transformationMatrix) 之前调用 camera.matrix.identity(),在 camera.applyMatrix(transformationMatrix) 之后调用controls.update()

http://jsfiddle.net/95u904m7/1/