OpenGl中的FocalLength to Fov公式

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

我正在编写FBX阅读器,并且照相机给了我FocalLength(从照相机到兴趣点的距离)。

在opengl中,我使用“视场”(视场角)初始化视口。

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

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

但是,此公式的结果给了我很小的价值。PD:我以为可能是弧度,但是将其从弧度转换为度数却太大了。

  • 对于35mm的焦距,我应该得到54.432度的FOV
  • 对于50mm的焦距,我应该获得39.598度的FOV
  • 对于85mm的焦距,我应该得到23.913度的FOV

但是该公式无效。我在这里做错了吗?

opengl graphics viewport
1个回答
0
投票

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

[有一个角度值给出了度数,例如,如果您使用35毫米的相机,则需要给出FOV的度数63。所以ANGLE等于63

这里是摄像机视角的主要角度:

超远摄600毫米-400毫米->角度= 4或5或6

远摄300毫米-100毫米->角度= 8或12或18或24

中焦距85毫米-80毫米->角度= 28或30

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

[大角度〜40毫米-23.2毫米->角度=角[60..83]] >>

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

如果您在14毫米以下,则为超广角->角度=范围[115..178]

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

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

简而言之。

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