我們今天的目的是用一個圓球的X旋轉屬性做為驅動值,連接一個智能的判斷節點(這是材質類型),從而達到讓球體根據旋轉的角度來分別賦予不同的材質。打開maya,隨便在場景中創建一個nurbs球體(類型沒關係),把名稱改為Ball,然後打開Hypergraph窗口,並且在保持球體選中的情況下展開節點連接圖。
可以看到球體和默認的shader的連接情況,現在再打開Hypershade窗口,這個可比以前的multilister好多了,就是打開的速度慢。接下來要做的就是用幾個材質節點和球體的幾何屬性連接。
點擊放大
或者打窗口麵板布置成下圖所示,這樣很方便拖放不同節點。
點擊放大
[page]
先說說要做的效果和原理,為了要讓球體的X旋轉屬性來驅動一個節點,並且能夠智能判斷,所以場景中要加入一個conditionl,這是一個判斷的節點。它的原理相當於程序語言中少不了的if,我不會編程,所以用中文表示一下它的意思。如果值1 VS 值2 則 ?? 結果為A ?? 否則 結果為B.
是不是可以這樣寫
if first term VS second term then
??value = color true
??否則
??value = color false
這裏VS可以是等於、大於、小於、不等於等等幾個類型,這是數學裏的。接下來在hypergraph窗口中(所有的節點都已經顯示在裏麵,,現在可以連接了)。用中鍵按住Ball不放,拖到conditionl上釋放,在彈出的菜單中選擇other。
點擊放大
現在在連接窗口中找到Rotate,點擊前麵的+號,選擇展開後的Rotate X,然後在右邊窗口中選擇First Term,現在就把rotate X和first Term連接起來了,也可以選擇Second Term,原理一樣。first Term的意思想必都明白,就是用它和second tem來做對比,從而判斷出值的True和false。
由於我們要做的是如果X軸旋轉小於180度,則用一個材質,否則用另一個材質。所以點擊conditionl節點,按下ctrl + A,打開conditionl的屬性編輯窗,做如下設定。
這裏的second term我們用了180,這就是用來做對比的一個數值,這裏要說一下,從小到大接受的差不多都是進製為10,100,這些觀念,在maya中老是弄錯,它所采用的數值格式大多數是最大值為1,最小值為0,好比剛用maya時習慣於RGB的255,老把HSV也當成RGB,結果出了很多錯。operation是選擇不同的比較方式,這裏我們用小於(less than),下麵的兩個選項是如果比較值為true和為false時的不同情況,到這裏可能都明白怎麼做了,隻要在它們後麵分別指定材質就可以做到智能的判斷效果。這個例子中在color if true後麵指定一個checker貼圖,在color if false後麵指定一個ramp貼圖。現在的hypergraph窗口連接情況。
[page]
看起來還算有條理,如果場景中太多物體話,那才真叫做頭大啊。現在很好辦,主要的連接都完成,隻需要創建一個shader就可以實現了。點擊hypershade中的blinn,創建一個blinn材質,然後中鍵按住conditionl,拖到blinn1上釋放,在彈出的菜單中選擇color。
最後一步,把blinn1指定給場景中的球體,可以先選定球體,直接把blinn1拖給球體(ball),或者在hypershade中操作更加方便,最後的節點情況和場景如圖。
點擊放大
最後一步,把blinn1指定給場景中的球體,可以先選定球體,直接把blinn1拖給球體(ball),或者在hypershade中操作更加方便,最後的節點情況和場景如圖。
點擊放大
旋轉一下球體,注意這裏我們用的是X軸,當小於180度的時候它表現出來的是黑白的棋盤格,當大於或者等於180度表現出來的則是ramp。