包含1節(jié)視頻教程
關(guān)注2.8萬次
maya在烘培方面最常使用的是海龜渲染器,它在gi渲染方面有獨特的優(yōu)勢,穩(wěn)定而且強(qiáng)大。
教大家個使用MAYA中法線貼圖的應(yīng)用的綜述
個人感覺這個教程太有用了,很全面很直觀的分析了MAYA中發(fā)現(xiàn)的各種使用方法及技巧。很是實用收藏一下吧
最近搜集了不少資料和試驗,打算把MAYA中法線貼圖(NORMAL MAP)的相關(guān)信息綜合一下并且心思一下思路。慢慢來!:)
法線貼圖(NORMAL MAP)是一種較新的貼圖技術(shù),類似于BUMP MAP,通過對模型表面的法線的矯正來用以表現(xiàn)模型的細(xì)節(jié)與紋理,其效果比后者要好,能達(dá)到BUMP MAP所達(dá)不到的效果,但是其并不能真正的在模型表面產(chǎn)生細(xì)節(jié),相對于DISPLACEMENT MAP而言,又不如其滿意。而且其制作和應(yīng)用很麻煩,問題也很多,所以這種技術(shù)CG中并不常用,不過,在游戲中卻有相當(dāng)?shù)陌l(fā)展空間。其他不多說了,先來看個圖:
為什么同一個模型(10*10段的多邊形球體)會出來兩種效果,我使用了SOFTEN/HARDEN EDGE命令來柔化了右邊的模型邊,這樣看起來就圓滑了很多!
我現(xiàn)在打開了CUSTOM POLYGON DISPLAY OPTIONS,顯示出來法線來看看區(qū)別:
模型的法線有兩種:點法線和面法線。面法線是在面中心發(fā)出,表示面的方向;而點法線是從點發(fā)出的,取決于點周圍的面的方向,左右模型的區(qū)別說明了SOFTEN/HARDEN EDGE命令工作原理。同時也NORMAL MAP的基礎(chǔ)。(其實還有一種:UV COODINATE NORMAL。但MAYA中似乎沒有這個概念,這個東東是在NORMAL MAP應(yīng)用中許多問題產(chǎn)生的根源,這里暫不講述)
下面我們開始。建立一個POLYGON球體,參數(shù)如下。
然后再復(fù)制出一個隱藏。
對這個球體平滑2次后,用雕刻工具作出一些細(xì)節(jié)。
打開HYPERSHADE,賦予這個球一個新的LAMBERT材質(zhì)。
再建立一個SAMPLEINFO和SETRANGE節(jié)點,作如下連接:
這樣我們把這個球的法線與攝象機(jī)信息輸入,將其輸出到物體材質(zhì)的COLOR上,這里我的材質(zhì)選擇了SURFACESHADER,這并不重要。只是為了方便觀察效果。
調(diào)節(jié)參數(shù):我們將法線變量轉(zhuǎn)化為顏色值,需要重新定義取值區(qū)間,由[-1,1]轉(zhuǎn)化為[0,1]。
顏色改變,但是你會發(fā)現(xiàn)硬件顯示的顏色與渲染的顏色不一樣!
這可是個問題的關(guān)鍵!而且不管你如何移動或旋轉(zhuǎn)攝象機(jī)和模型,物體的顏色分布都不變化,上面是綠色,左邊藍(lán),右邊紅。這可不是我們想要的。
這個問題的原因是因為SAMPLEINFO輸出的法線信息是基于攝象機(jī)的,所以與攝象機(jī)關(guān)聯(lián),而并非物體本身,這樣我們后面的得到的也是不能用的法線信息。
為了解決這個問題,我們斷開SAMLPEINFO和SETRANGE之間的聯(lián)系,新建一個VECTOR PRODUCT節(jié)點,如下連接。
將透視攝象機(jī)的節(jié)點拖進(jìn),輸入其世界矩陣信息到VECTOR PRODUCT節(jié)點,運算方式為VECTOR MATRIX PRODUCT,再將輸出值連接到SETRANGE的
VALUE上。
這樣做是矢量與矩陣運算,把攝象機(jī)坐標(biāo)系轉(zhuǎn)換為世界坐標(biāo)系,這樣攝象機(jī)的變化不在影響物體的顏色分布了,但是如果我們轉(zhuǎn)動物體,問題仍然出現(xiàn)。所以要把物體的變化的信息也要加進(jìn)去,將世界坐標(biāo)系轉(zhuǎn)換為物體坐標(biāo)系。
如果將此時的顏色轉(zhuǎn)換為貼圖,我們就叫它World-space normal map。(后面在介紹這些分類)
如圖再加入如下類似的節(jié)點,注意這次選擇的是WORLD INVERSE MATRIX。
圖中COLORBALL就是這個球體的模型節(jié)點,你可以在OUTLINER中找到它,拖到HYPERSHADE里。
這樣,我們看到顏色顯示與渲染的一致了,以渲染出來的為準(zhǔn),這樣移動攝象機(jī)或物體,顏色分布就正確的象貼在物體上一樣。
選中球體和其材質(zhì),使用CONVERT TO FILE TEXTURE OPTIONS將顏色轉(zhuǎn)化為貼圖,參數(shù)如下,分辨率和自行設(shè)置。
此時生成的貼圖,顏色以紅,綠,藍(lán)分布類似彩虹,就叫做
Object- 或 Local-space normal map。這個與上面的World-space normal map看上去會很類似。
下面看看如何使用這張貼圖
顯示出原來的復(fù)制出的那個低精度的球體,命名為NORMALBALL。賦予一個材質(zhì),然后連接。使用這樣的貼圖相當(dāng)于一次逆運算。我想不用多說了吧。
看看效果,我這里用的SOFTWARE渲染。
效果還不錯,但是問題總是伴隨著,如果我們保持?jǐn)z象機(jī)不動,旋轉(zhuǎn)物體,你看會怎樣?
細(xì)節(jié)正確,但是光影卻完全錯誤,陰影也象貼圖一樣“粘”在模型上,與燈光的位置毫無關(guān)系了,這可是不允許的!
所以,我們還要把NORMBALL的節(jié)點引入,再次逆運算。
這樣,模型細(xì)節(jié)和光影都正常了,旋轉(zhuǎn)模型和鏡頭都沒有問題,可以用于構(gòu)建場景了。
但是,這樣就完了嗎?
我們先來看看在HARDWARE渲染和HIGH QUALITY RENDING渲染結(jié)果。
這是什么玩意的一坨啊?
顯然,在即時運算更新時顯示是不正常的,這意味著對于游戲的設(shè)計顯然是不可用的 ,同樣,MENTALRAY渲染也是不行的!
而且后面還有更大的問題存在呢!
按F9進(jìn)入點元素模式,對這個球隨意進(jìn)行一些變形。
再轉(zhuǎn)回物體模式,渲染看。注意場景中只有一盞燈。
發(fā)現(xiàn)了嗎,光影還是錯誤的,又是這個討厭的問題!
這就意味著如果要在物體以下的級別變形,比如蒙皮,綁定等,就會出現(xiàn)嚴(yán)重的問題。
在MAYA7以后有這樣一組工具:SURFACE SAMPLER(相當(dāng)于MAYA6中
TRANSFER SURFACE OPTIONS),這個工具里面包含了很多有用的工具。
當(dāng)MAP SPACE選中OBJECT SPACE時,那么TRANSFER IN WORLD SPACE
/OBJECT SPACE所生成的NORMAL MAP就相當(dāng)于World-space normal map
和Object- 或 Local-space normal map。
那么還有個TANGENT SPACE是什么呢?
TANGENT SPACE就是切線坐標(biāo),即與法線垂直正交的方向,其有個很重要的特性就是它是針對模型上的每個點的坐標(biāo),而不是整個物體,這正是我們需要的特性。
這個工具的用法我以前的帖子里講過的,很簡單的。文件格式常用TIF的,有很多優(yōu)勢。
生成的貼圖就是所謂的Tangent-space normal map,其明顯不同,顏色是以蘭色為基調(diào)的。這個應(yīng)該說是比較完美的,不會出現(xiàn)前面的問題。來看看。
MAYA中沒有直接的NORMAL MAP的通道,使用麻煩,不象3DMAX或LIGHTWAVE,所以這方面的文章才比較少,不過MAYA7以后加入了,它是隱藏在
BUMP2D的節(jié)點中,使用和BUMP MAP一樣簡單。
打開HIGH QUALITY RENDERING,這樣我們終于看到了期望的結(jié)果。
而且各個角度都正常。
有時硬件即時顯示并不能很正確,如果看不到正確結(jié)果,可以用
HARDWARE渲染一下看。
不過遺憾的是,MAYA中這個節(jié)點只能被硬件渲染,同樣不支持在SOFTWARE和MENTALRAY渲染。但是也是,本來MAYA中這個節(jié)點就是為了制作游戲而生的,針對的多是游戲中的渲染引擎。
還有人用這樣的方法連接:
這種直接連接的方法可得到同樣的硬件渲染效果,也可以 軟件渲染,但是光影失真;不支持MENTALRAY。最大的問題就是:如果要與其他BUMP MAP聯(lián)合使用就會很困難。
繼續(xù)……
至此我們可以先總結(jié)一下,以便有更好的理解和應(yīng)用。
World-space normal map
1. 彩色.
2. 使用后物體不能旋轉(zhuǎn)和以點為基礎(chǔ)的變形,否則材質(zhì)和陰影會亂掉
3. 適用于不動的物體(比如建筑物).
4. 計算快
Object- or Local-space normal map
1. 和World-space normal map一樣,不同的只是針對了部分元素游戲編碼
2. 物體可以旋轉(zhuǎn),但是不能在物體以下級別變形.
3. 適用于某些簡單機(jī)械運動中的元素(門,車輛,機(jī)械等)
4. 計算較快
Tangent-space normal map
1. 以蘭色為基調(diào)
2. 物體可以旋轉(zhuǎn)和變形
3. 適用于變形物體(角色,水面,布料等)
3. 計算最慢(并不經(jīng)常).
如果我們要在軟件渲染或MENTALRAY渲染中也應(yīng)用該則呢們辦呢?
一般來說,在MAYA中或第三方的渲染器渲染NORMAL MAP,需要建立一定的節(jié)點來模擬,這可不是一件愉快的事情。我這里用MAYA的節(jié)點軟件渲染,看看效果:
還不錯,但是它的節(jié)點卻是比較復(fù)雜的。這個節(jié)點來自于headus (metamorphosis) Pty Ltd。但是原節(jié)點的坐標(biāo)并不適用MAYA(針對的是ZBRUSH),我將其修改重新連接。
總的來說就是要把攝象機(jī)的NORMALCAMERA和TANGENTU,V的信息都輸出,與NORMAL MAP輸出的信息進(jìn)行點乘運算,連接到物體材質(zhì)的
NORMALCAMERA。這樣軟件渲染時就可以收集到相應(yīng)信息。
如果需要,我在后面共享了這個節(jié)點,耐心讀完我的帖子,你可以找到它。
適用與任何版本的SOFTWARE渲染,速度較慢,不支持硬件渲染。
但是MENTALRAY就比較麻煩,目前我試驗的節(jié)點如下:
相當(dāng)于在軟件渲染節(jié)點上再與透視攝象機(jī)進(jìn)行矢量矩陣運算,輸出到材質(zhì)。
遺憾的是,只支持MAYA6.5以下的MENTALRAY版本,MAYA7中的MENTALRAY由于更新了渲染方式和代碼,無效!
你也可以使用Jan Sandstrom的JS_Normalmapper的MENTALRAY節(jié)點。但是同樣是不支持MAYA7。
同時,在MENTALRAY渲染中可以使用GLOBAL ILLUMINATION,但開啟FINAL GATHER渲染無效!這是由于FG的運算方式?jīng)Q定的,目前尚未有辦法解決!
下來我們介紹一下NORMAL MAP與BUMP MAP的聯(lián)合使用。
從本質(zhì)來說,NORMAL MAP更接近BUMP MAP而不是DISPLACEMENT MAP。
但是也就是說NORMAL MAP要和BUMP MAP合用,是很難發(fā)現(xiàn)區(qū)別的,所以會產(chǎn)生錯覺,在應(yīng)用中較難發(fā)現(xiàn)錯誤,這是在游戲運用中比較麻煩的,往往不能及時更正,導(dǎo)致計劃拖延。
先來介紹硬件即時渲染中的合用。
BUMP MAP分為BUMP3D和BUMP2D,曾經(jīng)有位介紹過了這兩種
BUMP效果的合用,你可以在以前的帖子里找到。但是在試驗中發(fā)現(xiàn),如果合用的話,其效果只能在軟件渲染中體現(xiàn),硬件渲染是無效的。這樣NORMAL MAP和BUMP MAP直接采用這種合用,即時顯示是無法正確的。而我們需要在游戲制作中能即時瀏覽到。
所以我采用了層紋理(LAYERED TEXTURE)來混合。這里用了個BUMP3D的節(jié)點。
在層紋理中混合方式選擇OVER,NORMAL MAP在上層?刂破銩LPHA值調(diào)節(jié)凸凹效果(或BUMP DEPTH)。注意!這樣做會其實是削弱了NORMAL MAP的效果,所以ALPHA不能太低。其實在后面的SETRANGE節(jié)點的用途是可以輸入表達(dá)式通過與ALPHA值相關(guān)聯(lián)的矯正削弱現(xiàn)象。
你也可以將BUMP3D層放在上層混合,你看看會有什么結(jié)果?
即時顯示的效果出現(xiàn),但是似乎哪里不對勁。
我前面提到了,這個區(qū)別是很難看出來,因為我們用的BUMP紋理并不是法線貼圖,但是用法是直接連入,但仍有效,是因為其是3D紋理,這點視覺差別是幾乎可以忽略的。
那么實際的用法該如何呢?
這里我們要用到一個小插件:TranSpace(你可以在網(wǎng)上很容易找到)
它的作用是把BUMP信息轉(zhuǎn)化為TANGENT NORMAL信息,可以用來
BAKE NORMAL MAP。
As Color Output:確保顏色值區(qū)間。應(yīng)當(dāng)鉤選。
Invert Y(V):對于某些ATI和某些其他軟件,要反轉(zhuǎn)Y(V)方向。選擇鉤選
Normalize Output:確保法線值區(qū)間。選擇鉤選。
這個插件可以用我前面的方法模擬,不過很麻煩。
下面是HRADWARE渲染后效果。
BUMP2D的紋理或文件紋理就比較麻煩了。因為大多數(shù)時候,他們并不能被正確的硬件顯示!采用與BUMP3D相同的連接。
解決這個很簡單,只要把BUMP紋理轉(zhuǎn)換成一張法線貼圖就可以了,然后混合。
在軟件渲染中就比較容易,和BUMP嵌套是一樣的,2D和3D紋理都一樣的可以得到滿意的效果。
朱峰社區(qū)網(wǎng)頁版(手機(jī)掃描-分享-添加到屏幕)
朱峰社區(qū)微信公眾號(微信掃一掃-關(guān)注)
未知用戶
2005-2025 朱峰社區(qū) 版權(quán)所有 遼ICP備2021001865號-1
2005-2025 ZhuFeng Community All Rights Reserved
VIP