【翻譯】 View Frustum Culling --1 View Frustum’s Shape
阿新 • • 發佈:2017-07-24
near com 矩形區域 狀態 翻譯 cnblogs 位置 移動 距離
這是一些列來自lighthouse3d的視錐體裁剪教程。旨在學習總結,及便於查閱。
1、視錐體的形狀
在OpenGL中,透視投影是由兩個函數定義的gluPerspective和
gluLookAt。我們先來回顧下這兩個函數的參數
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
為了進行視圖裁剪,我們分兩步走
- 在每次視錐體變化時,提取視錐體的提及信息。比如,當相機移動或者當透視的參數發生變化時;
- 根據視錐體的體積測試對象以及確定是否剔除--必須對每一幀中的每個對象執行此操作。如果每個對象的
【翻譯】 View Frustum Culling --1 View Frustum’s Shape