3d game programming lab5- texture mapping

17
3D Game Programming Lab5- Texture Mapping

Upload: colt-hewitt

Post on 01-Jan-2016

89 views

Category:

Documents


3 download

DESCRIPTION

3D Game Programming Lab5- Texture Mapping. Goal. 讀入材質並對應貼圖座標到幾何物體 設定材質中的各項參數 管理多個材質 自行製作能對應到模型的材質貼圖 了解各種貼圖的原理. 貼圖技術. Bump mapping(1978) Normal mapping (1996) Displacement mapping (1984) Parallax mapping (2001) Relief mapping(2005). Bump mapping. 凹凸貼圖背後的原理 - 表面起伏細節的加強 什麼是凹凸貼圖. - PowerPoint PPT Presentation

TRANSCRIPT

3D Game ProgrammingLab5-

Texture Mapping

3D Game ProgrammingLab5-

Texture Mapping

GoalGoal

讀入材質並對應貼圖座標到幾何物體設定材質中的各項參數管理多個材質自行製作能對應到模型的材質貼圖了解各種貼圖的原理

貼圖技術貼圖技術Bump mapping(1978)Normal mapping (1996)Displacement mapping (1984)Parallax mapping (2001)Relief mapping(2005)

Bump mappingBump mapping

凹凸貼圖背後的原理- 表面起伏細節的加強

什麼是凹凸貼圖

Bump mappingBump mapping

Bump Map技術-( Phong Shading Technique)的一項擴展

- 延伸技術

Bump mappingBump mapping

Bump map的缺陷-Per-pixel 的凹凸紋理以較低的花費增加了豐富的幾何細節。但該方法在側影輪廓處存在缺陷。這些地方,我們看到的還是光滑的輪廓線,而沒有任何凹凸感。

- 凹凸紋理不會投下自身陰影,從而看起來不真實。

Normal mappingNormal mapping

[Krishnamurthy 1996] normal mapping

法向量資訊生成表面的細節

Normal Map兩種主要形式-世界空間 Normal Map(不實用 )- 切空間的 Normal Map(常見 )

切空間 (tangent space)切空間 (tangent space)

Z:原本表面的法向量方向XY:表面的 UV座標兩個方向 ( 切線和

bitanget vector)以 XYZ為基底的空間 : tangent space

Normal mappingNormal mapping

RGB表示法向量在切空間的向量

•面臨取負值的問題

•把 XYZ每個軸上的法線投影長度進行N+1/2的運算。這樣就把所有的法線壓縮到了0 和 1 的範圍裡

Normal mappingNormal mapping

缺點-Normal Map帶來的優勢是遠大於它的缺點- 只有視點在垂直於平面的時候 NormalMap才會發揮最好的作用

Parallax mappingParallax mapping

NormalMapping的增強算法真正具有實用價值的 NormalMapping沒有明顯改善 NormalMap的問題

Displacement mappingDisplacement mapping

由 Cook提出,並在 Renderman中得到了商業應用。改變幾何,而不是一般凹凸貼圖中改變的法向量

Bump mapping

Displacement Displacement mappingmapping

Relief mappingRelief mapping

[Fabio 2005] Real-Time Relief Mapping on Arbitrary Polygonal Surfaces

計算光線與高度場相交

圖 :Relief mapping

光線高度場相交演算法光線高度場相交演算法1.計算從視點到多邊形表面上的 3D 位置點的方向 (VD),用向量來表示這個方向

2. 把 VD 轉換到切線空間 (tangent space)(定義為切線、法線和次法線組成的向量)

3. 從 VD'(轉換過的 VD)和A 、貼圖坐標(s,t) ,直到計算到B,貼圖坐標 (u,v),這個位置已經到了深度值是 1.0 的地方

4.使用 A 和 B 之間的二分查找來計算 VD' 和高度域表面的相交點

5.使用計算出來的相交點的貼圖坐標來渲染每一個 fragment的屬性

使用 A 和 B 之間的二分查找來計算 VD' 和高度域表面的相交點,數字表示計算中點的順序。

問題問題如果視線與高度域表面相交不止一個點的時候,二分搜尋的方法就可能會帶來不正確的結果

線性搜尋