翻译 View Frustum Culling --1 View Frustum’s Shape

Posted WildBloom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了翻译 View Frustum Culling --1 View Frustum’s Shape相关的知识,希望对你有一定的参考价值。

这是一些列来自lighthouse3d的视锥体裁剪教程。旨在学习总结,及便于查阅。

 

1、视锥体的形状

 在OpenGL中,透视投影是由两个函数定义的gluPerspectivegluLookAt。我们先来回顾下这两个函数的参数

  • gluPerspective(fov, ratio, nearDist, farDist);
  • gluLookAt(px,py,pz, lx,ly,lz, ux,uy,uz);

照相机的位置在四棱锥的顶点处(px,py,pz) 记为向量p,

观察点的位置在(lx,ly,lz) 记为向量l,

这样照相机朝着观察点发出的射线的就可以记为d = l - p,

**面和远*面都与d垂直,它们与摄像机的距离分别为nearDist和farDist。

**面与远*面上的矩形区域的小可以由fov(照相机垂直的视角)和ratio(**面和远*面上的宽高比)计算出来。

计算公式如下:

     Hnear = 2 * tan(fov / 2) * nearDist
     Wnear = Hnear * ratio
      Hfar = 2 * tan(fov / 2) * farDist
      Wfar = Hfar * ratio

        

为了进行视图裁剪,我们分两步走
  1. 在每次视锥体变化时,提取视锥体的提及信息。比如,当相机移动或者当透视的参数发生变化时;
  2. 根据视锥体的体积测试对象以及确定是否剔除--必须对每一帧中的每个对象执行此操作。如果每个对象的剔除状态从帧到帧保持不变,则测试本身可以仅在相机移动时进行,即当视锥体更新或透视改变时。

以上是关于翻译 View Frustum Culling --1 View Frustum’s Shape的主要内容,如果未能解决你的问题,请参考以下文章

视锥体剔除(Frustum Culling)算法详解-透视投影矩阵直接推导

视锥体剔除(Frustum Culling)算法详解-透视投影矩阵直接推导

视锥体剔除(Frustum Culling)算法详解-透视投影矩阵直接推导

unity性能优化之——视锥体剔除(Frustum Culling)

Screen position out of view frustum

Screen position out of view frustum