设置摄像机的变换矩阵后,旋转不会改变

时间:2015-06-13 11:33:32

标签: javascript 3d three.js

知道如何将转换矩阵应用于PerspectiveCamera吗? 我有一个转换矩阵,我使用

将它设置为透视相机
camera.applyMatrix(transformationMatrix);

它正确设置camera.position,但camera.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();

它产生相同的结果,一切都设置正确但是trackballcontrols不起作用。

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

1 个答案:

答案 0 :(得分:0)

在动画循环内尝试在camera.matrix.identity()之前致电camera.applyMatrix(transformationMatrix)并在controls.update()之后致电camera.applyMatrix(transformationMatrix)

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