前言

关于FOV
FOV 是在任何给定时间通过人眼、相机取景器或在显示屏上可见的可观察世界的范围。它指的是整个区域的覆盖范围,而不是单个固定焦点。FOV 还描述了一个人可以看到可见世界的角度。
FOV 越宽,可以看到的可观察世界就越多。它是水平、垂直和对角线测量的。相机镜头、其焦距和传感器尺寸都在确定 FOV 方面发挥作用。
FOV一般可以分为三种类型, 分别是对角线FOV ,垂直FOV, 水平FOV

在Unity中的相机属性里,可以对相机的视野轴进行设置,详见:Camera component

FOV Axis (when Perspective is selected) 视野轴
Horizontal 摄像机使用水平视野轴
Vertical 摄像机使用垂直视野轴



但是需要注意的是,如果通过代码对相机的Camera.fieldOfView进行赋值,是对相机的垂直FOV进行赋值。也就是说尽管在Camera的属性里设置了使用水平视野轴,通过代码赋值的话需要自行进行计算转换来赋值。

如何将水平FOV转垂直FOV

  • 方法1:手动计算(适用任何情况的FOV转换)
 /// <summary>/// 将垂直FOV转成水平FOV/// </summary>/// <param name="verFOV">垂直FOV值</param>/// <param name="aspect">屏幕分辨率比例</param>/// <returns></returns>public static float ConvertVerticalFOVToHorizontally(float verFOV, float aspect){// 垂直fov角度转成弧度float verFovRadian = verFOV * Mathf.Deg2Rad;// 算出视野高度的一半float camHalfHeight = Mathf.Tan(verFovRadian / 2);// 算出水平视野的弧度float horFOVRadian = Mathf.Atan(camHalfHeight * aspect) * 2;// 将水平视野弧度转成角度float horFOV = horFOVRadian * Mathf.Rad2Deg;return horFOV;}
  • 方法2:UnityEngine.Camera类提供api(适用于Unity内)
 /// <summary>/// 将垂直FOV转成水平FOV/// </summary>/// <param name="verFOV">垂直FOV值</param>/// <param name="aspect">屏幕分辨率比例</param>/// <returns></returns>public static float ConvertVerticalFOVToHorizontally(float verFOV, float aspect){return Camera.VerticalToHorizontalFieldOfView(verFOV, aspect);}

如何将垂直FOV转水平FOV

  • 方法1:手动计算(适用任何情况的FOV转换)
 /// <summary>/// 将水平FOV转成垂直FOV/// </summary>/// <param name="horFOV">水平FOV</param>/// <param name="aspect">屏幕分辨率比例</param>/// <returns></returns>public static float ConvertHorizontalFOVToVertically(float horFOV, float aspect){// 水平fov角度转成弧度float horFOVRadian = horFOV * Mathf.Deg2Rad;// 算出视野宽度的一半float camHalfWidth = Mathf.Tan(horFOVRadian / 2);// 算出垂直视野的弧度float verFOVRadian = Mathf.Atan(camHalfWidth / aspect) * 2;// 将垂直视野弧度转成角度float verFOV = verFOVRadian * Mathf.Rad2Deg;return verFOV;}
  • 方法2:UnityEngine.Camera类提供api(适用于Unity内)
 /// <summary>/// 将水平FOV转成垂直FOV/// </summary>/// <param name="horFOV">水平FOV</param>/// <param name="aspect">屏幕分辨率比例</param>/// <returns></returns>public static float ConvertHorizontalFOVToVertically(float horFOV, float aspect){return Camera.HorizontalToVerticalFieldOfView(horFOV, aspect);}

Unity学习笔记 关于Unity相机的FOV以及水平FOV和垂直FOV之间的转换相关推荐

  1. Unity学习笔记 球形全景图平面像素坐标与三维坐标系上的坐标之间的转换

    前言 本文将讲解如何通过球形全景图上的二维坐标通过换算得到三维坐标系上的三维坐标.具体场景就是,已知道一张全景图上某个点的像素位置(px,py),最终可以算出该点对应在球体上的三维坐标(X,Y,Z). ...

  2. 【Unity学习笔记】[Unity中文课堂教程] C#中级编程代码

    [Unity学习笔记][Unity中文课堂教程] C#中级编程代码 最近想补一补C#基础,Unity官方的C#中级编程教程质量很高,于是开个帖子把跟着敲+记录了部分价讲解和我自己的理解的代码存在这 原 ...

  3. Unity学习笔记:Unity 3D 飞机大战

    Unity学习笔记:Unity 3D 飞机大战 1.打开unity软件后,首先新建Quad作为背景,导入飞机模型,并为其添加刚体 然后创建C#脚本,挂载到飞机上. 2.给飞机创建子弹,让子弹成为预制体 ...

  4. 【Unity学习笔记】Unity中的欧拉角(Euler Angle)和万向节(Gimbal)

    声明:此篇文章是个人学习笔记,并非教程,所以内容可能不够严谨.可作参考,但不保证绝对正确.如果你发现我的文章有什么错误,非常欢迎指正,谢谢哦. 目录 1 奇怪的现象 1.2现象一 1.2 现象二 1. ...

  5. Unity学习笔记:unity介绍(一)

    一.Unity是什么? 1.Unity发音[ˈjuːnəti] 2.俗称有U3D,Unity3D.unity 3.Unity开发商是美国的Unity公司,成立于2004年,位于美国旧金山. 4.uni ...

  6. Unity学习笔记5 unity的js转c#

    上一篇已经说过,unity的js是一种变种的js,和真正的js还是有区别的,所以有时候会给人一种有点不伦不类的感觉--如果对于完全没有编程基础的人来说,建议一开始就直接学c#吧,不要浪费时间去学js. ...

  7. Unity学习笔记(8) Unity残影效果整理,3D、2D、通用方案

    Unity做残影效果是个不难的工作. 但是一些细节会对使用方法产生限制,这里整理一下各种情况下推荐的残影效果实现方案 1.3D网格 (高性能) 2.2D人物 (非骨骼动画) (高性能) 3.其它场景 ...

  8. Unity学习笔记——Mesh

    Unity学习笔记--Mesh Unity中的Mesh组件是一个很好玩的东西,这次的目标是根据高程图创建出一个平面. 1.用脚本创建一个简单的三角形 新建空的物体,挂上MeshFilter.MeshR ...

  9. Unity学习笔记1 简易2D横版RPG游戏制作(一)

    这个教程是参考一个YouTube上面的教程做的,原作者的教程做得比较简单,我先参考着做一遍,毕竟我也只是个初学者,还没办法完全自制哈哈.不过我之前也看过一个2D平台游戏的系列教程了,以后会整合起来,做 ...

最新文章

  1. 卓晴老师“标杆课教师“采访提纲
  2. 关于前后端交互的一些基础知识点
  3. 第二季3:海思MPP模块与视频缓冲池
  4. java cygwin 乱码_windows10乱码怎么解决
  5. 《钢铁神兵》里的较量的数学题,都是什么级别的难题?
  6. 取消hibernate的外键生成
  7. 惯性制导精度是多少_美军激光炸弹真实精度性能:炸小卡车,直接从驾驶员车窗钻进去炸...
  8. 让你人见人爱的27个原则
  9. php图片存储内容读取,php读取和保存base64编码的图片内容
  10. 2020-8-5 Codeforces摸鱼报告
  11. Java和python哪个好,学哪个有用。
  12. 大数据技术原理与应用(第一章,大数据概述)
  13. RFID技术在智能超市中的应用
  14. 1、synchronized、Lock、volatile
  15. 独立按键之长按、短按、单击、双击
  16. 自动同步github项目到本地gitlab
  17. Java小白入门200例39之Java字符串拼接(连接)
  18. [机缘参悟-53]:《素书》-2-俊、豪、杰[正道章第二]
  19. 【常用算法】辗转相除法求最大公约数
  20. 使用wacom数位板配套的笔无法利用按键实现滚动的问题

热门文章

  1. HTML制作色带,PS简单制作一个漂亮的混合色带gif动画效果
  2. 软考证书值得考吗?怎么考?
  3. DSA加密算法以及破解
  4. 怎么通过小米账号查出买家的手机号?
  5. 网站图标的生成和使用--web前端
  6. 揭开OKR (Objectives and Key Results) 的面纱
  7. DS1302时钟模块
  8. MacOS-从 UIKit 到 AppKit
  9. 难得!微软招测试开发了!
  10. Conway‘s Game of Life - Unlimited Edition(康威生命游戏-无限版)