由於本文涉及有關 Maya 質感的高級運用,是一種更適合有經驗的用戶的形式來編寫的。加上我的翻譯水平有限,文中所譯難免有不妥之處,懇請諸位看官海涵。
在這一課裏,完全地展示了如何創建卡通材質(Cartoon shader)的實際工作步驟,我們使用RAMP節點,以及其他的幾種工具節點,對Blinn材質進行重新分布(Remapping),最終,即能達到類似卡通效果的著色方式(Shader)。
此外,本課的內容能加深對連接編輯器(Connection Editor)和工具節點(Utility nodes)、創建自製的著色網絡(Custom Shading Networks)的深層理解。
第一步:在 Hypershade 窗口裏,選擇 Create->Create Render Node.. 分別創建下列節點:Material nodes:Blinn (no Shading Group) (無著色係),Surface Shader (with Shading Group) (有著色係),Texture nodes:Ramp (no Texture Placement, Normal) (無貼圖坐標),Utility nodes:Sampler Info,Clamp,Condition,在 Hypershade 中應該如圖。
Blinn 材質節點用於描繪物體上的高光。因為Ramp 可以將灰階值重新分布成連續的色彩,會使灰階 blinn 變成卡通效果。Sampler info 節點獲取物體邊界的信息。
第二步:在 Hypershade 窗口裏,鼠標中鍵拖動Blinn1節點至Clamp1 節點上釋放,選 Other… 彈出連接編輯器 (Connection Editor)窗口,將左邊 Blinn1 節點的 Outcolor 與 Clamp1 節點的 Input 相連。
[page]
接下來,讓Clamp1 節點降低灰階值,使這些值小於等於1(<=1),同時會切斷所有灰階大於1(>1)的高光。(superwhite)。
開啟 Clamp1 節點的屬性編輯器(Attribute Editor),將 Max 左邊的輸入框設為1。這個輸入框代表紅色通道(中間=綠色,右邊=藍色),由於灰色是R,B,G各相等值混合而成的,所以,在此隻需要一個通道就可以了。 Min 應設為0。
第三步:以上述方法,用連接編輯器,將 Clamp1 節點的 Output R 與 Ramp1 節點的 V coord 相連。
請確保 Ramp1 節點的 Type 為 V Ramp。現在Ramp1 的 color output實際上等於 Input 的灰階值(0<= clamp1 Color R Output <=1)。這種方法稱為重繪(Remapping)。
第四步:將 Ramp1 節點的 Out Color 與 Condition1 節點的 Color If True (Color1) 相連。將 Sample info1 節點的 Facing Radio 與 Condition1 節點的 First Term 相連。Facing Ratio 是表麵上點麵向攝影機的角度,如果這個點距離攝影機90度,Facing Ratio =0,如果表麵法線和攝影機射線之間角度是0,Facing Ratio=1。具體請查閱 Maya在線手冊。
[page]第五步:開啟 Surface shader1 的屬性編輯器。選 Add->Add Attributes… 添加下列屬性(float,scalar):LineThickness: Min 0, Max 1, Default .2;LineR;LineG;LineB;LineThickness和顏色都屬於用戶可定(user-definable)的。
第六步:
將 Suerface shader1 節點的 LineThickness 與 Condition1 的 Second Term 相連。
Suerface shader1 節點的 Line R 與 Condition1 的 Color If False (Color2 R) 相連。
Suerface shader1 節點的 Line G 與 Condition1 的 Color If False (Color2 G) 相連。
Suerface shader1 節點的 Line B 與 Condition1 的 Color If False (Color2) 相連。
將 Condition 的Operation 設為 Greater Than。
如果 Facing Ratio (condition1的第一個條件)小於 LineThickness (第二條件),Condition1 的Output = Color2 (surface shader1裏設置的LineRG,否則 Output = Color1 (來自ramp1-blinn1 的顏色)。將 Condition1 節點的 Out Color 與 Surface shader1 節點的 Out Color相連。下圖是 Hypershade 中的節點關係。
第七步:可以把 Ramp1 調成你喜歡的色彩。卡通材質通常把 Ramp 顏色之間的 Interpolation 設為 None,這樣能產生較為均勻的邊線。下圖為 Ramp1 最終的外觀。
[page]
此外,也可以做一些額外的修改:
1.在surface shader1 屬性編輯器裏調整Line Thickness 和 colorRGB,這兩個值分別控製邊線的粗細和顏色。
2.調節 blinn1 參數能產生不同的高光。
3.甚至可以給 Blinn1 添加一個凹凸貼圖,這種方法一般用於運動的小蟲。
4.也可用其他的材質代替 Blinn1 ,產生各式各樣高光。
總結:
本課闡述了如何創建卡通材質,通過這一課的學習,掌握了創建卡通著色技術,同時也對各種節點之間工作原理及建立複雜的著色網絡有了更加清楚地認識。
要在上麵貼圖隻需稍微改動貼圖節點,具體步驟是:
用 Create Render Node... 添加文件節點,貼圖方式為As Pojection或是As stencil,指定貼圖文件,用連接編輯器將 projection7 的 Out Color 與 ramp1 的 Color Entry[n].color 相連。Color Entry 是顏色漸變的數組入口。參見下圖。
現在 Hypershader 應該如下。
[page]
至於 Ramp 的黑色就是貼圖的區域,也就是ColorEntryList[0].Color的第一個數組。
最後貼圖將出現在球體上。
最終效果如下。