我們使用三角網格描述物體,在物體被轉換到視空間之後,下一步就將被轉換到螢幕座標。
背面消隱指的是刪除背向視點(相機的觀察點)的多邊形。
基本的背面消隱演算法數學原理很簡單:
(1)要求所有的三角形按照統一的方式(順時針或者逆時針)排列頂點,這很重要,因為關係到平面法向量的計算。
(2)根據三角形的頂點資訊計算該三角形的外法向量。
(3)使用觀察向量(觀察向量是指相機點到三角形某個頂點的向量)測試三角形的外法向量,如果這兩個法向量的夾角嚴格小於90度,那麼多邊形對於觀察者而言是可見的。
簡單說明一下(1):
對於該物體,顯然面oab和obc與abc對於觀察者來說不可見,假設觀察向量為view,四個面的法向量計算結果為n1,n2,n3,n4。
(面法向量是由頂點的叉乘計算出來的)
根據我們的演算法,應當只有view與n1(oac的外法向量)嚴格小於90度,但是如果不規定三角形頂點的儲存順序,那麼n1,n2,n3,n4的計算方式就會不統一。又面法向量是由頂點叉乘計算得來的,且叉乘是不可交換的,所以可能會出現view與n2,n3,n4的夾角小於90度的情況。
bool backfaceculling(vertex p1, vertex p2, vertex p3)
return false;
}
3D渲染管線中的背面消除
背面消除在世界空間中進行,背面消除完成之後,再進行世界座標到相機座標的變換。背面消除工作原理如下 物體的所有多邊形的三個頂點以統一的方式進行標記,例如順時針。計算該根據多邊形的兩個向量,計算多邊形的面法線 su ce normal 計算觀察向量 view vector 計算面法線和觀察向量的點乘,若...
OpenGL ES渲染管線
渲染管線 graphics pipeline 在 opengl es 1.0 版本中,支援固定管線,而 opengl es 2.0 版本不再支援固定管線,只支援可程式設計管線。什麼是管線?什麼又是固定管線和可程式設計管線?管線 pipeline 也稱渲染管線,因為 opengl es在渲染處理過程中...
opengl渲染管線
學習著色器,並理解著色器的工作機制,就要對opengl的固定功能管線有深入的了解。首先要知道幾個opengl的術語 渲染 rendering 計算機根據模型 model 建立影象的過程。模型 model 根據幾何圖元建立的物體 object 幾何圖元 包括點 直線和多邊形等,它是通過頂點 verte...