透视与正交

视锥体是当前3D行业最重要的透视模型,想要理解视锥,首先要区分透视和正交的区别。

正交与透视的对立统一:当视点远离物体无穷远,视野角度无穷小,此时的透视就是正交。

透视投影是模拟物理世界的规律,将眼睛或相机抽象成一个点,此时视锥体内的物体投影到视平面上的物体满足近大远小的规律,而正交投影的所有投影射线都平行,物体大小不随距离变化而变化。

本期讨论的重点是透视投影中的视锥头部,也就是被近截面截掉的那一部分金字塔模型。这个四棱锥本身就是一个初等几何体,没有曲面,所以比较简单,花一点点时间研究一下非常有必要。

先认识一下相关的名词,看一下上图就好了。然后看一下近截面的面积公式:其中宽和高都和近截距成正比(截距=视点到截面中心的距离),和FoV的正切值成正比,这些都不言而喻,可以画个图简单证明一下,这里就不证明了。

虚幻引擎的FoV默认指的是水平FoV,即hFoV,但是可以根据以下的等比公式计算出垂直方向和斜边方向的FoV,可以看出,它们的半角正切值和它们在近截面上的投影线端的长度成正比,证明略。

比较难懂的是立体FoV,即视锥头占据的立体角,由于立体角的计算涉及到球面积的积分,属于高等几何学的范畴,所以这里只要记住它的公式就行了。如果想要证明的话,外网搜索关键词“四棱锥顶点”+“球面度”找一找。

视锥体——初等几何解析相关推荐

  1. DirectX11进阶5_硬件实例化与视锥体裁剪及鼠标拾取交互

    一.硬件实例化(Hardware Instancing) 硬件实例化指的是在场景中绘制同一个物体多次,但是是以不同的位置.旋转.缩放.材质以及纹理来绘制(比如一棵树可能会被多次使用以构建出一片森林). ...

  2. 【unity】性能优化之——视锥体剔除(Frustum Culling)(一)

    一.应用背景 在现代游戏中,游戏资源越来越多,游戏场景也越来越大越来越复杂,虽说硬件设备更新迭代很快,性能也日渐强大,但这还远不能缓解复杂繁多的资源带来的性能压力,因而性能优化仍然很有必要.场景资源的 ...

  3. 土圭垚㙓数学课(二)视锥体八个顶点的计算方法

    视锥体是摄像机可见的空间,看上去像截掉顶部的金字塔.视锥体由6个裁剪面围成,构成视锥体的4个侧面称为上左下右面,分别对应屏幕的四个边界.为了防止物体离摄像机过近,设置近切面,同时为了防止物体离摄像机太 ...

  4. OpenGL 视锥体求法

    看了这个https://blog.csdn.net/qq_31709249/article/details/80175119 是高手 讲的是假设P是空间的一点(x,y,z)写成vec4(x,y,z,1 ...

  5. 视锥体与AABB和OBB包围盒相交判断

    1.视锥体与AABB包围盒相交判断 template <class TYPE> class Frustum { public:Frustum(){}Frustum(const Frustu ...

  6. 【基础】什么是视锥体

    前言 视锥体常出现在计算机3D图形软件当中,用于定义用户的视角. 理解视锥体对掌握好3D图形图像有很大的好处. 目录 前言 视锥体 约束 总结 参考资料 视锥体 视锥体是摄像机可见的空间,看上去像截掉 ...

  7. 视锥体裁剪(从矩阵中提取6个裁剪面)

    视锥体(frustum),是指场景中摄像机的可见的一个锥体范围.它有上.下.左.右.近.远,共6个面组成.在视锥体内的景物可见,反之则不可见.为提高性能,只对其中与视锥体有交集的对象进行绘制. 视锥体 ...

  8. webgl 视锥体剔除不可见的物体

    这里新的东西就是 包围盒,就是把物体用盒子装起来,这样只需要计算面到这个是否相交,在外边,减少了很多计算量: 这个其实就是计算问题, 视锥体求的那个几个面的公式,自己用就可以了,不要问为什么,推导很麻 ...

  9. 【Unity】相机视锥体剔除算法

    视锥体剔除是Unity常用的剔除方法,其原理就是通过判定目标包围盒与组成相机视锥体的6个平面进行同侧判定,只要在6个平面之间的包围盒即为可见. 具体原理可见参考以下文章: 视锥体剔除(Frustum ...

最新文章

  1. 提高 Github 下载速度的方法「100% 有效」可达到 2MB/s
  2. web 平台搭建-LNMP-源码包(CentOS-7)
  3. python多态的三种表现形式_python小结----面向对象的三大特征(封装,继承,多态)
  4. 《HTML5移动应用开发入门经典》—— 1.1 了解HTML5的由来
  5. DFS解01背包问题
  6. python能print中文吗_python怎么print汉字
  7. 80-30-010-原理-React模式-简介
  8. 使用Firebase、Angular 8和ASP.NET Core 3.1保护网站
  9. 两个摄像头合成一路_64个高空抛物摄像头安装到位 同德社区居民双手点赞
  10. html 获取当前页面地址,通过js获取当前页面url的信息
  11. 关于扫描枪输入英文乱码问题
  12. 微信小程序echarts问题整理与解决
  13. 程序员的外包经验:印度、中国和菲律宾
  14. 笔记本电脑频繁假死的一个解决办法
  15. 解决sublime无法下载插件问题
  16. WCP人员管理之添加人员
  17. 尝试创建windows XP最长的路径名
  18. 三大框架分别是Spring+SpringMVC+Mybatis ,这些东西必须融汇贯通
  19. vue 生命周期的详解
  20. css获取时间,改变CSS 样式,获取当前日期

热门文章

  1. Word控件Spire.Doc 【邮件合并】教程(六): 使用 C# 识别 Word 中的合并字段名称
  2. 总线协议一(UART/RS232/RS485/IIC/SPI)
  3. 重庆邮电计算机考研专业课,重庆邮电大学计算机专业考研全攻略!报录比、辅导书、分数线等全都有!...
  4. 基于Python的名片管理系统
  5. Linux 中的文件类型
  6. 欢迎光临我的个人博客网站
  7. 【阿里云】如何使用阿里云搭建个人网站
  8. 基于matlab数字处理系统设计新颖,基于MATLAB的单相光伏并网逆变系统的设计
  9. 2020软考 信息安全工程师(第二版)学习总结【二】
  10. E-mark认证审核工作的重要性