CameraUtil工具类简介

本文介绍了Unity中的CameraUtil工具类,重点讲解了水平FOV的概念及其与垂直FOV的区别,探讨了深度计算方法以及如何根据偏离度实现设备宽度自适应的相机调整。通过示例代码展示了如何利用偏离度动态调整相机距离,以适应不同设备的视野需求。
摘要由CSDN通过智能技术生成

介绍一些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;

        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值