整個渲染過程應該分為兩個大的部分:
1) material synthesis(材質綜合),包括紋理和表面屬性。
2) illumination(光照),包括各種光照模型和渲染模型。
在這 裡主要涉及到的內容是illumination。
在opengl中,若需要計算光照模型(light model),就需要在指定頂點(vertex)的時候,為頂點新增兩個屬性:
1) 頂點的顏色;
2) 頂點出的法向向量;
這兩 個屬性的值直接參與光照模型的計算公式中。下面就順便提一下如何計算頂點處的法向向量:
首先計算任意乙個三角平面的法向量。可以通過三角形平面中 三個頂點的座標計算出這個面的法向量:
a _| _
| _
| _
c---b
上面畫的三角形的三個頂點是以順時針順序排列的,與之對應的是左手座標系。 在opengl中採用的左手座標系,而在direct3d採用的是右手座標系。根據三個頂點計算三角形面法向量的計算公式是:
normal=cross( (b-a), (c-a) )
在 單個三角形平面中,三個頂點處的法向量就是此平面的法向量,但是很多情況下,幾何體的乙個頂點被多個平面共享,那頂點的法向量如何處理呢?一般情況下,我 們通過計算共有該點的所有的三角形平面的法向量的平均值而獲得。計算公式是:
normal=cross( (b-a), (c-a) ); //注意這裡結果並沒有歸一化
n=( n1+n2+...+nk )/||(n1+n2+...+nk)||;
這種處理方法是基於這樣的實事:兩個向量的叉積於這兩個向量所形成的三角形的面積成正比.可以看 出,三角形的面積越大,則對該頂點法向量的影響也越大,相當於對三角形法向量根據它們的面積做加權平均。
ue4 離線渲染 遊戲引擎開發新感覺!渲染引擎篇
我們在引擎架構篇裡介紹了大致的開發範圍和第三方依賴 star.e 遊戲引擎開發新感覺!引擎架構篇 zhuanlan.zhihu.com 已經有很多人問啦,渲染怎麼跨平台,這篇大致介紹下渲染引擎部分的設計。首先讓我們回想一下,我們作為引擎 圖形程式設計師,心裡到底想要什麼。引擎簡單易用,做了很好的圖形...
Libgdx遊戲引擎之ScrollPane元件
1 執行介面 這是乙個不顯示滾動條的水平scrollpanel,通過手勢控制scrollpanel水平移動 2 示例 import com.badlogic.gdx.graphics.color import com.badlogic.gdx.scenes.scene2d.actor import ...
段落文字渲染引擎
最近在乙個專案中要渲染段落文字,找了很多文字渲染庫,發現都不能滿足我的要求,所以只能自己做。字型渲染還是找freetype完成吧,雖然小字號效果不好,不過可以生成大圖再縮小來解決掉,自己寫乙個字型渲染引擎也是不可望也不可及的事。有了freetype實現底層字型渲染,我只需要處理一些布局方法即可,其中...