THREE.js PerspectiveCamera focalLength 偏离两倍,与 FOV 不一致
THREE.js PerspectiveCamera focalLength off by a factor of two, inconsistent with FOV
在THREE.js中我们使用下面的函数构造一个相机
const camera = new THREE.PerspectiveCamera(75, width / height, 0.1, 1000);
我们从光学中知道,相机的视场角与焦距的关系如下式
FOV = arctan(d/2f)
其中 FOV
是以度为单位的垂直 FOV,d
是以毫米为单位的图像平面高度,f
是以毫米为单位的相机焦距。
阅读 the documentation 后,似乎 d
默认设置为 35mm / aspectRatio
。
我们可以这样表达FOV
FOV = arctan((35/(width/height))/2f) = arctan(filmHeight / 2f)
作为健全性检查,我打印了以下值,看看我是否能取回 75
的输入 FOV。
Math.atan(camera.getFilmHeight()/(2 * camera.getFocalLength())) * 180 / Math.PI;
但是..这个值是37.50000000000001
正好是75
预期焦距的一半。
所以,我想知道我是否在某处做错了数学运算,或者我是否误解了 THREE.js 的报告值。
在THREE.js中我们使用下面的函数构造一个相机
const camera = new THREE.PerspectiveCamera(75, width / height, 0.1, 1000);
我们从光学中知道,相机的视场角与焦距的关系如下式
FOV = arctan(d/2f)
其中 FOV
是以度为单位的垂直 FOV,d
是以毫米为单位的图像平面高度,f
是以毫米为单位的相机焦距。
阅读 the documentation 后,似乎 d
默认设置为 35mm / aspectRatio
。
我们可以这样表达FOV
FOV = arctan((35/(width/height))/2f) = arctan(filmHeight / 2f)
作为健全性检查,我打印了以下值,看看我是否能取回 75
的输入 FOV。
Math.atan(camera.getFilmHeight()/(2 * camera.getFocalLength())) * 180 / Math.PI;
但是..这个值是37.50000000000001
正好是75
预期焦距的一半。
所以,我想知道我是否在某处做错了数学运算,或者我是否误解了 THREE.js 的报告值。