我有一个方形平面和一个垂直于它的摄像机。
渲染器视图也是平方的。
摄像机只能从平面(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
没有任何成功。有任何想法吗?
如果渲染器视图是平方的,因此宽度等于高度和宽高比为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)))
就这样。