【風宇沖】Unity3D教程寶典之Shader篇:第十九講凹凸貼圖

來源:互聯網
上載者:User
原創文章如需轉載請註明:轉載自風宇沖Unity3D教程學院

                               Shader第十九講 凹凸貼圖

本講分為兩個部分一:原理二:實現
                                      
                
一:原理 (1)眼睛與光讓我們來看看一個粗糙的表面。     

  從遠處看,你判斷這個物體是粗糙的的唯一證據是在它表面上下的亮度有改變。你的大腦能夠獲得這些亮暗不一的圖案資訊,然後判斷出它們是表面中有凹凸的部位。左邊的一幅圖就說明了這一點。你可以發現它是一個浮雕式的表面。一些矩型和字母被印入表面,但是它們摸上去就像是一個隱藏的監控器的玻璃。如果這個映像是在適當的位置上,那麼它除了改變亮度,不需要再做任何其他的工作。
  那麼你也許會問:我是怎麼知道哪些點要亮,哪些點要暗呢?這不難。絕大多數人生活在這樣一種環境下——這個環境的大多數光源來自上方(譯者註:比如白天主要的光來自太陽,夜晚主要的光來自天花板上的日光燈)。所以向上傾的地方就會更亮,而向下傾的地方就會更暗。所以這種現象使你的眼睛看到一個物體上亮暗地區時,可以判斷出它的凹凸情況。相對亮的塊被判斷是面向上的,相對暗的塊被判斷是面向下的。所以我只需要給物體上的線條簡單得上色。
  如果你想要更多的證據,這裡還有一幅幾乎相同的圖,不同於前的是它旋轉了180度。所以它是前一幅圖倒轉的映像。那些先前看起來是凹進去的地區,現在看起來是凸出來的了。     
  這個時候你的大腦並沒有被完全欺騙,你腦中存留的視覺印象使你仍然有能力判斷出這是前一幅圖,只是它的光源變了,是從小往上照的你的大腦可能強迫性地判斷出它是第一幅圖。事實上,你只要始終盯著它,並且努力地想像著光是從右下方向照射的,你就會理解它是凹的(譯者註:因為日常生活的習慣,你會很容易把這些圖形判斷成凸出的圖形,但是因為有了上一幅對照圖的印象,你可能才會特別注意到這些圖塊其實還是凹入的,只是判斷方法不符合我們日常生活習慣,因為這時大多數光不是從上方照射,而是從下往上照射)。(2)法線之前15講提到過,法線對光的反射很重要。而一般來說一個三角形上某點的法線就等於垂直整個三角型的法線。但是我們可以通過灰階圖或者從法線貼圖取得法線,達到更真實的畫面效果。

                                                   
 二:實現
(1)與灰階圖疊加 這種方式也叫fake bump mapping,假凹凸貼圖。因為並沒有改變物體表面點的位置或者法線。僅僅是把Bump
Map疊加在已經渲染好的表面上,造成亮度上的擾動,從而讓眼睛以為是凹凸的。計算複雜度是基本加減法。缺點是並不會隨著光方向的改變而改變明暗地區。
(2)產生法線由於(1)的方法有不能對光進行反應的硬傷。於是有了更逼真的方法:用高度計演算法線。高度計演算法線的方法比較多,這裡主要介紹的是CG裡廣泛採用的一種。方法:在對灰階圖上的點採樣的時候,不單取該點的高度Hg,而且取該點之右的點Hr和該點之上的點Ha以這三個點作2個向量:第一個向量V1是(1,0,Hr - Hg) 第二個V2是(0,1,Ha - Hg)法線為 單位化後的 v1與v2的向量積。
如果把結果儲存在一張圖上,那麼就產生了法線貼圖了。Unity3d能替我們做這些,將灰階圖轉換為法線貼圖。就是下面的(3)
(3)Unity裡高度圖轉法線貼圖具體步驟:1)匯入heightmap2)選中之後將Texture Type改為Normal map3)勾選Create from Grayscale4)Apply之後就看到unity裡該圖直接變成了呈藍色的法線貼圖。

PS: Unity3D裡內建的Bump Map Shader,即Bumped Diffuse等Shader是法線貼圖的方式。也就是用的是RGB的法線貼圖,一般呈藍色。Unity內建的Shader是沒有直接使用灰階圖的,而提供能是灰階圖轉法線貼圖的功能。本文部分內容出自http://freespace.virgin.net/hugo.elias/graphics/x_polybm.htm

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.