知道如何将变换矩阵应用于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();
它产生相同的结果,一切都设置正确,但轨迹球控件不起作用。
编辑:我想设置一次矩阵,而不是每一帧。
在 animate 循环中尝试在 camera.applyMatrix(transformationMatrix)
之前调用 camera.matrix.identity()
,在 camera.applyMatrix(transformationMatrix)
之后调用controls.update()
:
http://jsfiddle.net/95u904m7/1/