OpenGl 中的焦距到 Fov 公式

FocalLength to Fov formula in OpenGl

我正在写一个 FBX reader,相机给了我 FocalLength(从相机到兴趣点的距离)。

在 opengl 中,我使用 Field of View(视角)初始化视口。

在网上进行一些研究后,我在几个地方看到了这个公式:

FOV=2.0f*atanf((pixelwidth/2.0f)/focalLength);

但是,这个公式的结果给了我一个小值。 PD:我认为它可能是弧度,但将它从弧度转换为度数结果太大了。

但公式不起作用。我在这里做错了什么?

FOV=ANGLE * ((float)Math.PI / 180f);

有一个角度值表示度数,例如,如果您使用 相机 35 毫米,那么您需要在 FOV 中提供 63 度。 所以 ANGLE 等于 63

以下是摄像机视角的主要角度:

超长焦 600 mm - 400 mm -> ANGLE=4 or 5 or 6

长焦 300 mm - 100 mm -> ANGLE=8 or 12 or 18 or 24

中长焦 85 mm- 80 mm -> ANGLE=28 或 30

正常 70 毫米 - ~42 毫米 -> -> 角度=34 或 46 或 52

广角 ~40 mm - 23.2 mm - > ANGLE=rangle[60..83]

极广角 24 毫米 - 14 毫米 -> 角度=范围[84..114]

如果您小于 14 毫米,则使用极广角 -> ANGLE=range[115..178]

鱼眼 ~8 毫米 -> 角度=范围[178..179]

CreatePerspectiveFieldOfView(FOV, m_AspectRatio, 0.1f, 100.0f);

很快就这样了。