zlo*_*lon 1 javascript orthographic perspectivecamera coordinate-transformation three.js
我尝试在脚本中在透视相机和正交相机之间切换。我希望物体处于一定深度以保持其投影尺寸。我放弃了去理解几何......
您能否提供一些简单教程的链接,这对我来说太复杂了。
对于position.z==0我的对象有:
perspCamera = new THREE.PerspectiveCamera(45, W / H, 1, 1000);
perspCamera.position.z = 100;
var S=Math.tan((45/180)*Math.PI)*100;
orthoCamera = new THREE.OrthographicCamera( -S, S, S, -S, 1, 1000 );
Run Code Online (Sandbox Code Playgroud)
这是不正确的。
我明白了,我将用 codepen 链接发布答案
透视投影时,Z 距离与尺寸之间的关系为:
var fov_y = 45;
var depht_s = Math.tan(fov_y/2.0 * Math.PI/180.0) * 2.0;
Run Code Online (Sandbox Code Playgroud)
所以正交投影必须是(THREE.OrthographicCamera):
var Z = 100;
var aspect = W / H;
var size_y = depht_s * Z;
var size_x = depht_s * Z * aspect;
orthoCamera = new THREE.OrthographicCamera(
-size_x/2, size_x/2,
size_y/2, -size_y/2,
1, 1000 );
Run Code Online (Sandbox Code Playgroud)