THREE.JS:根据其位置计算摄像机视场,反之亦然

时间:2018-09-05 21:40:55

标签: three.js camera projection perspectivecamera

我有一个方形的平面,并且照相机垂直于该平面设置。

scene

渲染器视图也是平方的。

摄像机只能沿Z轴从平面(0 ...无穷大)行进。我正在寻找一个公式来根据更新的Z计算FOV,因此该平面与渲染器视图的大小相同。

反之亦然,要重新计算给定FOV的相机Z位置,则平方的平面将匹配平方的渲染器视图。

尝试使用公式

var FOV = 2 * Math.atan( planeWidth / ( 2 * camera.position.z ) );

var FOV = 2 * Math.atan((aspect) / (2 * camera.position.z)) * (180 / Math.PI); //aspect is 1.0

没有成功。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果渲染器视图是正方形的,则宽度等于高度,纵横比为1.0,则可以使用以下公式:

//FOV from distance
FOV = THREE.Math.radToDeg(Math.atan(renderWidth / Math.abs(distance * 2))) * 2;

//distance from FOV
distance = renderWidth / (2 * Math.tan(THREE.Math.degToRad(FOV / 2)))

就是这样。