• 【翻译】 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. 根据视锥体的体积测试对象以及确定是否剔除--必须对每一帧中的每个对象执行此操作。如果每个对象的剔除状态从帧到帧保持不变,则测试本身可以仅在相机移动时进行,即当视锥体更新或透视改变时。
  • 相关阅读:
    7-5 幸运彩票 (15分)
    基于Python实现学生管理系统
    NB-IoT模块烧写详细过程
    IAR软件使用的快捷键配置以及配置cc2530环境
    7-54 求方程的解 (10 分)
    7-52 计算球体积 (10 分)
    7-51 号码牌的制作 (10 分)
    7-48 输出星期名缩写 (70 分)
    7-49 求前n项的阶乘之和 (15 分)
    7-46 jmu-python-求单词长度 (10 分)
  • 原文地址:https://www.cnblogs.com/wildbloom/p/7229519.html
Copyright © 2020-2023  润新知