本教程主要MAYA中磨損做舊效果的實現
先看看效果圖
感謝很多朋友對上一篇教程的熱烈響應。本文寫於2004年初,依然是一篇比較古老的教程。
"做舊"一直是制作真實感3D效果不可缺少的因素。
我們先看幾張現實中的照片,並分析一下他們的特點:
圖(01)這是一張非常典型的具有磨損效果的銅制器具的照片。
圖(02)同樣是一張表現具有磨損效果的石柱照片。
圖(C)這尊佛像同樣是磨損效果的典型范例。
從以上三張照片我們不難發現所謂磨損效果的特點。觀察一下他們的表面,凡是突起的部分,都因手的長期摩擦而顯得異常光亮,而一些內凹的轉折拐角兒處,由於平時手很難觸及得到,或有一些髒物無法清除,顏色顯得較深(或顏色跟本不同),質地也較粗糟。
如果是在MAX中,事情可能會變得相對簡單,因為MAX有專門針對這種效果的外掛插件。但MAYA中,沒有直接提供這樣的功能,也沒有有針對性的插件可以用。網上曾經看到過一個關於這方面問題的討論,但討論是基於Renderman展開的,做為一般的3D制作人員來說,Renderman是極難掌握的。我曾經多次在網上的一些論壇提過是否可以通過MAYA自身的節點連接制作這種效果的問題,但始終沒有得到滿意的答案。看來除非編程,否則用maya自身的材質節點網似乎很難辦到。想來想去,通過手工繪制帖圖來模擬成為唯一的手段了。但是這種帖圖繪制起來將會是非常麻煩的,尤其對那些非常復雜的模型來說(比如像有豐富細節的雕塑等等)。既然手工繪制帖圖成為唯一的手段,那麼,我們現在思考的重心就是:能否通過什麼方法來加速這個繪制帖圖的過程呢,如果能讓MAYA幫我們自動完成一些什麼的話…那就好了。
偶然間我想到了GI,大家可能會說,這和GI有什麼關系。呵呵~~~是啊,表面上沒什麼關系。但仔細想想,他們在效果上是不是感覺有某種程度的類似呢?我們想象一下,假如上面的佛像是一個3D模型,並用GI將它渲染出來。是否也會是像我們前面所講的"佛像的突起部分會比較亮,而一些內凹的轉折拐角兒處,會比較暗呢!(網上類似的素模GI渲染圖很多,大家可以找些來觀察一下)"喔~好像是差不多…既然是這樣,那麼我們只要將GI對模型的光照效果記錄成為一張帖圖,那麼這張帖圖上保留的不正是我們想要的東西嗎!那麼,思路就理出來了:通過將GI效果烘培成帖圖來代替手工繪制的帖圖。當然,這樣生成的可能還不算太精確(畢竟G和磨損完全是兩回事,盡管他們效果上類似),所以帖圖還需要經過Photoshop或DEEP paint 3D進一步修繕才能得到較好的效果。但即便如此,這也將大大的加速制作過程。
首先,我從模型庫中找到一個雅典娜神像的多邊形模型做為演示模型。將模型導入MAYA,並為其賦予一個Lambert材質。(如圖04)
GI效果,我用了GI_Joe這個插件來模擬。可能很多朋友都用過這個maya的插件,他通過在場景中建立燈光陣列來模擬GI效果,出來的效果很不錯,速度也較快。(這裡,最好使用2.1版本,舊的版本在進行烘培帖圖操作時可能會遇到問題),GI_Joe建立的燈光陣列是由兩組組成的(SkyLight和GroundLight)。按如(圖05)方式設置,建立為16/16的燈光陣列。
陣列建立好後,先按默認參數設置渲染,看一下效果。(如圖06)
我們發現,在默認參數下渲染的效果很不滿意,光線太暗,GI效果也不強烈。試著調節GI_Joe的相關參數,以達到比較滿意的效果。如圖07所示,對於修改過的參數,我用不同的顏色分別進行了標記。下面分別說明一下這些參數的含義。(注意:如上面所述,GI_Joe的燈光陣列是由兩組組成的。所以圖07中的每種參數也各有兩個。)
紅框參數:這是SkyLight和GroundLight的燈光顏色屬性,默認狀態為一個偏藍,一個偏黃。由於我們只是想利用他們的亮度信息,所以這裡將這兩個顏色屬性都改為純白色。
綠框參數:這個參數控制燈光陣列的亮度,如前面(圖06)所示,默認的渲染效果太暗,所以這裡我們加大這個參數值。(圖中統一設置為了0.25)
藍框參數:這個參數是打開燈光陣列的陰影,默認狀態GroundLight的陰影是關閉的,這裡把他們都設置為On狀態。
黃色參數:陰影顏色。默認為黑色,這裡我們將其值調到-0.4左右。以使暗部的效果更暗,來增強其效果。(注意:由於顏色亮度為負值,所以菜單窗口中顯示為不准確的灰色)
紫色參數:這是深度貼圖陰影的尺寸值。增加它可以強化明暗的變化。這裡將其值由默認的128提升至512(注意,加大此值會使渲染速度變慢)
修改完成後,再次渲染。(圖07)中右側為新的渲染圖。效果已經比默認狀態好了很多,基本上能滿足要求了。
在烘培貼圖之前,我們還要把模型的貼圖坐標完全展開。這個應該很容易理解了,因為如果坐標有重疊,則無法烘培出正確的貼圖。為了簡單起見,可以使用Edit Polygons--->Texture--->Automatic Mapping將貼圖坐標自動展開。如(圖08)
坐標展開後,開始烘培貼圖(所謂烘培貼圖就是把模型受的光照及陰影的影響都記錄到一張貼圖上),相信在游戲制作過程中經常會用到類似的功能。 方法如(圖09)所示。打開MAYA的Hypershade窗口,同時選中模型和模型的材質
坐標展開後,開始烘培貼圖(所謂烘培貼圖就是把模型受的光照及陰影的影響都記錄到一張貼圖上),相信在游戲制作過程中經常會用到類似的功能。
方法如(圖09)所示。打開MAYA的Hypershade窗口,同時選中模型和模型的材質球,選擇Hypershade窗口Edit菜單下的Convert to File Texture(Maya Software)右側的小方塊兒,打開烘培貼圖的設置面板。
打開"Bake Shading Group Lighting"和"Bake Shadows"以使生成的貼圖記錄下光照和陰影的信息。X Resolution和Y Resolution用來設置生成貼圖的尺寸,這裡設置得大一些,1600*1600,文件格式設成TGA(也可自定)如(圖10)
參數設置好後,點Convert鈕,稍作等待…(因速度不同,較慢的電腦可能會花幾分鐘時間)
經過一段時間的計算,MAYA會在當前的工程目錄中生成一個圖像文件。通過觀察可能會覺得某些方面還並不十分滿意,我們可以在Photoshop中將它打開,進行一些編輯,比如調整亮度、對比度等等。如(圖11)
注意此時場景中模型的材質已經因執行了"Convert to File Texture(Maya Software)"而變成了"Surface Shader"類型材質。刪除這個材質,並重新建立一個默認的Lambert材質賦給模型。將剛才生成並經過Photoshop處理過的圖片帖到Lambert材質的Incandescence屬性上(注意:帖圖的Filter Typer類型應該改為OFF,否則渲染出來可能會產生比較嚴重的類似裂痕的效果,這是由於帖圖坐標比較碎,導致坐標與坐標的邊界處產生的接縫。如圖12),並將Color屬性調成黑色。
刪除GI_Joe生成的燈光陣列,因為光照信息已經被保存在帖圖上了,此時我們已經不需要它。
用默認燈光渲染一張看一下。效果如(圖13),看一下渲染效果,基本滿意。但做為磨損效果,畢竟和GI效果是不完全相同的,所以一些局部不合理的地方還需要修改,另外,可能有時候還是會