THREE.JS:从其位置计算相机FOV,反之亦然

问题描述 投票:0回答:1

我有一个方形平面和一个垂直于它的摄像机。

scene

渲染器视图也是平方的。

摄像机只能从平面(0 ...无限远)沿Z轴行进。我正在寻找一个从更新的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

没有任何成功。有任何想法吗?

three.js camera projection perspectivecamera
1个回答
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)))

就这样。

© www.soinside.com 2019 - 2024. All rights reserved.