在遇到Normal map上出現接縫時是十分棘手的。它不像Diffuse和Specular那樣,可以直觀的在ZB或者BodyPaint裏用投射的方法去修平。這是因為Normal map本身原理所致。
在這裏我想先再詳細講一下Normal Map的原理。如果你覺得自己對Normalmap已經非常熟悉可以跳過這一節。
● NormalMap 原理:
我建議新手在得到一張NormalMap時,把Red/Green/Blue三個通道分開來看,因為NormalMap的三個通道之間是互相獨立的,在R/G/B三個通道中,不同的灰度,表達了低模表麵上法線偏移的程度。大家知道,法線在物理中的定義是垂直於物體表麵的一條假想的直線。而在MAYA中,法線的概念並不一樣,它不一定要垂直於物體表麵,並且具有方向行。我們可以在MAYA中直觀的看到物體上每個頂點的法線的方向。
顯示頂點法線後的模型:
[page]
我們可以選擇頂點,用Edit Polygons->Normals->Vertex Normal Edit Tool試著調整頂點法線的偏移。來讓模型看起來與現在不同。
經過這樣調整法線方向以後,模型表麵像增加了一個曲度。這種調整的原理類似於NormalMap對法線偏移的調整。隻不過NormalMap能夠調整模型上的每一處細節;但用這種方法,隻能調整低模上有限的點。
如果我們建立了如下圖的高低模,並烘焙出法線貼圖。
那麼實際上是把LowPoly表麵的法線偏移方向調整成了HighPoly表麵的法線方向。如下圖。
[page]
● 結論和規律
我們再做一個簡單的實驗,測試了三色通道的具體含義,得出後麵的結論。
這個是圓環模型
這個是用光照的方法生成的Normal
以下是R、G、B三個通道:
Red通道
Green通道
Blue通道
由上圖得出以下結論:
在紅色通道裏:白色表示法線向右偏,黑色表示法線向左偏。
在綠色通道裏:白色表示法線向下偏,黑色表示法線向上偏。
在蘭色通道裏:越黑表示越深。
如果想把某出的Nomalmap填平,可以在上麵覆蓋一層RGB值為128、128、255的顏色,編號為:8080ff
MAYA裏Normalmap的綠色通道和MAX裏Normalmap的灰度相反。
有了這些研究成果,以後修改Normal就方便多了。甚至可以手繪部分細節。
這樣就可以得出下麵的規律:
所有Normal貼圖的紅色通道,都是在水平方向上有黑白漸變。
所有Normal貼圖的綠色通道,都是在垂直方向上有黑白漸變。
根據這個現象可以很容易的在通道裏判斷出哪裏的Normal不正常,需要紅綠通道交換。
[page]
修理Normalmap接縫
在做人物的時候如果遇到下圖這樣的接縫,最開始做的應該是弄清是哪張貼圖產生的接縫,而不要盲目的直接去修Diffuse。正確的做法應該是排除其他貼圖的幹擾,單獨貼上Diffuse, 修掉Diffuse上的接縫,再單獨把 Specular貼到color上修掉接縫,最後再修Normalmap的接縫。
對於Diffuse和Specular上的接縫,可以很容易的用ZBrush的ZApplink插件修掉。但對於Normal上的接縫,是不能用直觀的方法修掉的。因為接縫兩邊的法線偏移的值並不是相同的,也就是說,顏色是不同的。下麵我們就來探討一下如何去處Normalmap上的接縫,而不僅僅是用8080ff的顏色把所有細節塗平。
我們先排除其他貼圖的幹擾,隻貼NormalMap,可以看到有一條明顯的接縫。現在的法線看起來似乎是圖上箭頭所表示的趨勢。在前一節已經探討了Normalmap的原理。脖子後麵接縫的產生也是因為左右兩邊法線偏移方向不對。我們要想修正這條接縫就是調整要Normalmap上的顏色,使接縫兩邊的法線方向一致。
↑現在看上去的法線方向
↑修改後應該達到的法線方向
所以要將左邊綠色網格對應區域的法線向左偏,白色網格對應區域的法線向右偏。
[page]
根據“在紅色通道裏:白色表示法線向右偏,黑色表示法線向左偏。”的原則,要在紅色通道裏把綠色網格那邊的Normalmap加深,白色網格那邊的Normalmap減淡。這樣就可以把接縫修掉了,而且不會損失Normalmap上的細節。如圖:
在紅色通道裏把綠色區域接縫附近的Normalmap的減淡(上圖),把白色區域附近的Normalmap的加深(下圖)。
這樣就把脖子後麵的接縫修掉了。雖然看起來原理很複雜,但隻要理解了每個通道所代表的含義,很直接的會想到在通道裏用加深減淡的方法修正法線偏移。如果實在弄不清到底是用加深還是減淡,就先隨便用加深或者減淡試一下,如果接縫變淺了那就對了。但記住,修接縫的時候一定要排除其他貼圖的幹擾,隻貼一張圖去修。最終修好的效果如圖: