介绍一些Camera相关的方法:
水平FOV
我们知道Camera的fieldOfView(FOV)属性是垂直-垂直-垂直(重要的说三遍)方向上,投影矩阵(Project Matrix)上平面与下平面的夹角,默认为60度。
我们这边引入水平FOV的概念,有一些时候这个更常用到,其实我们平时所说的可视角应该指的水平FOV。
下面介绍一下它们的一些特性以及获取方法。
1. 不同设备Size是不同的,垂直FOV是保持不变的,水平FOV是变化的,取决于视口的宽高比。
2. 垂直FOV调整大时,远离视角中心的物体会越显示失真,即视野边缘失真。调整小时,视野不失真。
3. 相机的视野,以度为单位,注意与弧度的变换。
4. 当相机是正交时fieldofView被忽略(参考orthographic matrix)
代码如下很简单的三角运算
static public float GetHorizontalFOV(Camera camera){
float fFov = 0f;
float l = 1 / Mathf.Tan(camera.fieldOfView / 2 / 180 * Mathf.PI);
float a = Mathf.Atan(Camera.main.aspect / l);
return a / Mathf.PI * 180 * 2;
}