Javascript 如何正确切换透视相机和正交相机?
我现在的问题是,当我从正交摄影机切换到透视摄影机时,我无法始终正确计算摄影机的位置。 这是我的密码:Javascript 如何正确切换透视相机和正交相机?,javascript,camera,Javascript,Camera,我现在的问题是,当我从正交摄影机切换到透视摄影机时,我无法始终正确计算摄影机的位置。 这是我的密码: function toPerspective() { var fov_y = 60; var depht_s = Math.tan(fov_y / 2.0 * Math.PI / 180.0) * 2.0; var size_y = cameraOrtho.top * 2; var Z = size_y / depht_s;
function toPerspective() {
var fov_y = 60;
var depht_s = Math.tan(fov_y / 2.0 * Math.PI / 180.0) * 2.0;
var size_y = cameraOrtho.top * 2;
var Z = size_y / depht_s;
var normal = cameraPerspective.position.normalize();
cameraPerspective.position.copy(normal.multiplyScalar(Z));
//controls.update();
cameraPerspective.updateProjectionMatrix();
};
function toOrthographic() {
var fov_y = 60;
var depht_s = Math.tan(fov_y / 2.0 * Math.PI / 180.0) * 2.0;
var Z = activeCamera.position.distanceTo(controls.target);
var size_y = depht_s * Z;
var size_x = depht_s * Z * aspect;
cameraOrtho.left = -size_x / 2;
cameraOrtho.right = size_x / 2;
cameraOrtho.top = size_y / 2;
cameraOrtho.bottom = -size_y / 2;
cameraOrtho.zoom = 1;
//cameraOrtho.updateProjectionMatrix();
};
function onKeyDown(event) {
switch (event.keyCode) {
case 79: /*O*/
if (type === "Ortho") return;
var old = controls.target.clone();
cameraOrtho.position.copy(cameraPerspective.position);
activeCamera = cameraOrtho;
controls.object = activeCamera;
toOrthographic();
controls.update();
activeCamera.updateProjectionMatrix();
type = "Ortho"
break;
case 80: /*P*/
if (type === "Perspective") return;
var old = controls.target.clone();
cameraPerspective.position.copy(cameraOrtho.position);
activeCamera = cameraPerspective;
controls.object = activeCamera;
toPerspective();
controls.update();
activeCamera.updateProjectionMatrix();
type = "Perspective"
break;
}
console.log(activeCamera);
}
透视摄影机从该链接切换到正交摄影机方法:
对于透视摄影机,使用轨道控制右键单击平移,然后再次切换到正交摄影机将显示偏移。但我不知道是什么问题。我希望有人能帮助我,谢谢