數碼資源網

文章頻道 軟件下載 安卓下載 蘋果下載

當前位置:首頁文章中心材質專欄Maya → MAYA材質係統的Utilities工具簡介(一)

MAYA材質係統的Utilities工具簡介(一)

時間:2005-07-12 18:51:18人氣:230作者:網友整理
瑪雅maya最新網站地址1.1.71.4.7
  • 類型:安卓圖像處理大小:33.85M語言:簡體中文 評分:4.0
  • 瑪雅maya最新網站地址APP是一款既熱門又實用的動畫製作編輯軟件。在使用軟件過...
立即下載
Maya影視安卓版(影音資源播放平台) v1.3 手機版
Maya影視安卓版(影音資源播放平台) v1.3 手機版 for Android
  • 類型:安卓影音播放大小:23.92M語言:簡體中文 評分:3.0
  • 您有沒有非常想看的電影找不到資源,要麼就是收費的尷尬情況出現呢?Maya影視安卓...
立即下載
Autodesk mayav1.3
Autodesk mayav1.3 for Android
  • 類型:安卓其他大小:81.30M語言:簡體中文 評分:4.9
  • AutodeskMaya是一款世界知名的三維動畫特技模型建模軟件,廣泛應用於電影...
立即下載

MAYA的材質體係是非常優秀的,它把程序邏輯思想直接體現在高效的操作中。在MAYA中編輯材質其實很象在編寫一段程序。這是有別於MAX的方法。
所以MAYA獨特的思考方法令人難以理解。
掌握MAYA的材質係統不僅僅是創造完美的shader,Maya是一個將感性和理性完美融合的動畫軟件,如果熟練地掌握了Maya材質編輯係統獨特的工作方式,會令我們在材質的設計能力上獲得巨大的技術突破。
因為Maya的“Utilities”工具的能力非凡,並且要想靈活使用這些工具需要較強的邏輯能力,所以我試圖把MAYA的Utilities用我自己的理解解釋一下。
Maya自帶的Help文件非常係統和完善,是最好的學習資料。因此這裏的文字和幫助內容重複是不可避免的。

但我擔心我沒有大段的時間來做這種工作,虎頭蛇尾的話,朋友們不要埋怨。

另:在接觸三維動畫軟件的渲染係統時,很容易碰到“Shader”這個術語。目前國內對這個術語的翻譯有很多種,比如:陰影、材質、明暗生成器等等,我自己更傾向於“明暗生成器”這種譯法。

常規工具節點:
Array Mapper

Array Mapper節點一般是嵌入在粒子係統中用的,粒子通過Array Mapper節點調用Maya的Texture。

Bump Utilities

有兩種方法在一個表麵上創建Bump(凹凸)效果。
應用一個Bump貼圖,從而在表麵產生凹凸感覺。
使用置換(Displacement)貼圖建立凹凸感,置換貼圖是真實地移動物體表麵的幾何結構。
這兩種方法各有利弊。Bump貼圖渲染效率更高,但物體表麵邊緣實現不了凹凸效果,還有一點是Bump貼圖隻能創建輕微的凹凸效果,不能實現極凹凸的感覺。
置換(Displacement)貼圖實際上是移動物體表麵的幾何特性,所以是效果最真實的方法,但應用這種方法的物體的UV段數必須足夠多,所以這種方法的計算量非常大,最後渲染成品的時候比Bump貼圖要慢很多。

Bump 2d 和Bump 3d的公共屬性
Bump Filter和Bump Offset是用來改善Bump貼圖的細節。如果著色後的圖像中凹凸區域有明顯的鋸齒和閃爍,可以通過調節Bump Filter或者Bump Offset的值來改善。Bump Filter的缺省情況下值為1,當其大於1的時候,凹凸的渲染趨向於平滑;小於1的時候,凹凸的渲染效果趨向於尖銳。
Bump Offset的缺省值為0,把它理解為在Bump Filter效果的基礎上相對地放大更通俗一些。缺省情況下,把Bump Offset的值增加很小的一部分就能起到很大的模糊作用。要想精確地看到Bump Offset效果,可以把Bump Filter的值設為0,然後增大Bump Offset的值。
Bump Depth控製凹凸效果的程度。

使用Bump貼圖的方法:
建立一個Bump 2d 或者Bump 3d節點,在Connection Editor中將Bump 2d或者Bump 3d節點的OutNormal連接到材質(比如:Blinn)的NormalCamera上。
將Texture的OutAlpha連接到Bump節點的BumpValue上。

Bump 2d
Bump 2d節點用來轉換一個2D Texture在表麵上產生凹凸效果。用前麵提過的方法可以很輕易地做出凹凸效果來。
有必要提的是,如果材質上要有混合兩種以上的2D texture的凹凸效果時,如何來實現這種材質外觀?Maya4.0的Help裏講述了方法。這裏用一個樣例簡單介紹一下。
1、建立兩個2D Texture,一個是Cloth,一個是Fractal;
2、建立兩個Bump 2d節點和一個Blinn材質;
3、將Cloth1的outAlpha連接到Bump 2d1的bumpValue上,並將Bump 2d1的outNormal連接到Blinn1的normalCamera上。
4、同樣,將Fractal1的outAlpha連接到Bump 2d2的bump Value性上,並將bump 2d2的outNormal連接到bump 2d1的normalCamera上。
5、把Blinn1指定給所需要的物體對象。

還有一個問題就是:如果同時指定了Bump貼圖和環境貼圖(Environment Texture)到物體後,你會發現由環境貼圖生成的反射會不真實。原因是Bump貼圖的信息沒有傳遞到環境貼圖上。有兩種方法來解決:一是用鼠標拖放操作將Bump貼圖的outNormal屬性連接到環境貼圖的normalCamera屬性上;二是利用Maya提供的一個MEL命令來實現,在命令行中輸入以下命令:
cnctBumpProjNormal shader-name
其中shader-name是材質的名稱。

Bump 2d節點還有兩個參數是Adjust Edges和Provide3d Info。
Adjust Edges用來改善邊界效果。缺省情況下,在兩個相接地並指定了Bump貼圖的表麵之間的接縫處渲染後會有一些雜亂,打開Adjust Edges選項後可以解決這個問題。
如果在一個材質網絡中,凹凸效果由一個2D Texture和一個3D Texture嵌套生成,那麼應該打開Provide3d Info選項,這樣,3D Texture的效果才能實現。

Bump 3d
Bump 3d節點的使用方法和Bump 2d節點基本一樣,所不同的是Bump 3d節點是用來轉換一個3D Texture在表麵上產生凹凸效果。

Condition

Condition節點的原理可以按以下形式寫出:
If ( A operation B )
Outcolor = Color1
else
Outcolor = Color2
Condition節點輸出的顏色值是根據預定的條件產生的。Condition節點通過比較A值與B值來發現A值是否大於、小於、等於、不等於、大於等於或小於等於B值,如果條件為真,則Outcolor輸出Color1;否則,Outcolor輸出Color2。
如果懂一點編程的常識,就不難理解Condition節點的原理。
Condition節點總是和其它節點結合使用,它可以使Shader網絡在一種情況下用一種形式工作,而在另一種情況下用另一種形式工作。
Condition節點的這種智能性的可以自動判斷的工作方式極具靈活性,在設計材質時非常有價值。

Light Info

Light Info節點在某種角度上說,其功能有點兒象Sampler Info節點。Sampler Info節點提供物體表麵的信息,而Light Info節點提供場景中燈光的信息。
Light Info節點需要嵌套在其它節點中起作用,主要提供燈光的位置、方向和距離等燈光信息。
下麵的一個簡單樣例可以感性地理解一下Light Info節點的作用:
1、建立一個Nurbs Plane並進行縮放操作使其與Maya透視視圖中缺省的Grid差不多大小;
2、建立一個Spot Light並調整位置和角度:
3、選擇Spot Light,按Ctra+A叫出屬性編輯器,在Light Effects部分,單擊Intensity Curve旁邊的Create按紐。則Maya創建了一個強度曲線節點,並把它連接到Intensity上。
4、選擇Spot Light,在Hypershade中顯示出上、下遊節點,可以看到剛才的操作創建了兩個節點,一個是Light Info節點,一個是IntensityCurve節點。Maya的這個功能允許用戶使用強度曲線來創建自定義的亮度衰減。
5、在Hypershade中選擇spotLightShape1節點,打開Graph Editor,可以看到方才創建的強度曲線。在這裏,可以自由地編輯燈光的強度。為了容易理解和簡化操作,刪除中間的所有編輯點,隻保留首尾兩個編輯點。
6、這裏X軸為取樣距離,Y軸為燈光的強度。將末尾的編輯點Y軸的值設為1,開始的編輯點Y軸的值設為2。利用Maya的IPR渲染場景,以便在改變強度的數值時,可以在渲染視圖中實時地看到調節後的效果。
這個節點網絡的連接情況是這樣:
spotLightShape1.worldMatrix[0]輸出到Light Info.worldMatrix;
Light Info.sampleDistance輸出到IntensityCurve.input;
IntensityCurve.output輸出到spotLightShape1.intensity。

Multiply Divide

Multiply Divide(乘除)節點有三部分——兩個Input屬性和一個Operation(操作)選項。Operation選項給Input1和Input2提供Multiply(乘)、Divide(除)或者Power(冪)的運算規則,然後通過Output將運算的結果輸出。
不同的運算規則產生的結果可以用以下的公式解釋:
Multiply
OutputX = Input1X *Iinput2X
OutputY = Input1Y * Input2Y
OutputZ = Input1Z * Input2Z
Divide
OutputX = Input1X /Iinput2X
OutputY = Input1Y / Input2Y
OutputZ = Input1Z / Input2Z
Power
OutputX = Input1X Iinput2X
OutputY = Input1Y Input2Y
OutputZ = Input1Z Input2Z

需要注意的是Multiply Divide節點不能進行矢量運算,如果需要進行矢量運算,應該用的是Vector Product節點。

Plus Minus Average

Plus Minus Average節點顧名思義,是對Input屬性列中進行Plus(加)、Minus(減)和Average(平均值)運算。Plus Minus Average節點有一些區別於其它工具節點的特性。
首先,它可以輸入多個連接;
其次,Plus Minus Average節點的Input1D、Input2D和Input3D部分的輸入值必須分別是相對應的一個值、兩個值和三個值。比方說,要把“Stucco”的Outcolor輸入到Plus Minus Average節點中,應該連接到Plus Minus Average節點的Input3D中,而不是Input1D和Input2D。因為“Stucco”的Outcolor包括Outcolor R、OutcolorG和OutcolorB三個值。

Projection

Projection節點應用頻率很高,通常是用來把2D Texture投影到3D表麵上。這個節點原理比較容易理解,和其它三維軟件的同類功能相近,很容易掌握,這裏不過多解釋。

Stencil

Stencil節點可以用來創建諸如酒瓶上的標簽這樣的效果。因為Stencil節點的Mask(遮罩)能非常有效地控製表麵紋理哪一部分是透明的。值得一提的事Stencil節點甚至還能對表麵紋理根據進行摳像。Stencil節點有它自己獨特的合成材質的作用。

Reverse

在某些情況下,可能需要將材質或紋理的效果反轉,Reverse節點可以提供這種能力。Reverse節點的原理可以用如下公式表示:
Output = 1 - Input

用實際例子似乎更能提高興趣。
現在來製作一個卡通材質來理解MAYA的材質係統的能力。這個材質是在國外網站上下載的,好象有人寫過類似的教程。我理清了一下思路。

首先,建立以下幾個節點:
一個Blinn材質(不要帶Shading Group);
一個Surface Shader節點(帶Shading Group);
一個Ramp節點(不要帶Placement);
一個SampleInfo節點;
一個Clamp節點;
一個Condition節點。

我們用Blinn控製場景物體上的高光區域。將Blinn的Color設置為灰度。
場景對象的顏色用Ramp的顏色隊列(我是指Ramp上的顏色標簽)來實現。Blinn將通過後麵要講到的方法將它的灰度值重新映射到Ramp的Color中,以達到控製Ramp的強度的目的。
SampleInfo是用來實現卡通材質的“勾邊兒”效果的。

將Blinn的OutColor連接到Clamp的Input屬性中。

Clamp節點的作用是將某個值控製在一定的範圍內。
在這裏是準備將最後的強度值減到不大於1。在實際渲染結果中,有些高光區域也許會過於“白”了,為了事先準備好,這裏設置一個Clamp節點,可以去掉多餘的強度。

將Clamp的MAX文字框中的R值設為1,就是最左邊的那個。

Clamp節點屬性麵板中的Min、Max和Input的文字框從左到右分別代表R、G、B。因為單獨一個通道就可以表現強度值,所以這裏不妨選擇R,選擇別的也可以。MinR的值為0,
MaxR的值為1。
這樣,Blinn Color的顏色強度(注意現在為灰度)被Clamp控製在0——1之間。

連接Clamp的OutputR到Ramp的Vcoord屬性中,確認Ramp的模式為VType Ramp。這樣,Ramp的顏色強度可以用Blinn Color的灰度控製在0——1之間,前麵說的映射就是指這個。

將Ramp OutColor連接到Condition節點的Color1中。
同樣,將SampleInfo的Facing Ration連接到Condition的First Term中。

Sampler Info節點也是不容易理解的節點,然而,Sampler Info節點的作用在Maya的材質編輯中極為重要,經常會用到。Sampler Info節點必須與其它節點嵌套才能發揮作用。
Sampler Info節點主要的功用是提供物體表麵上任意一點的各種空間信息,如位置、方向和相切特性等等。
需要指出的是,Sampler Info節點返回的信息是針對於“相機空間坐標”進行定位的。在Maya中,存在“相機空間坐標”和“世界空間坐標”兩種概念。“世界空間坐標”和“世界空間坐標”的關係可以這樣理解:
假設你就是MAYA場景中的物體,有一個操作MAYA的人在顯示器外麵看著你。“相機空間坐標”的Z軸方向和“世界空間坐標”的Z軸方向相反。
Facing Ratio的值受場景物體朝向相機的表麵的法線和相機目光方向之間角度的影響。
值在0——1之間。
如果物體表麵上的某個位置的法線同相機的目光方向的角度為90度,剛Facing Ratio=0;
如果角度為0,則Facing Ratio=1。

在Surface Shader中增加以下四個自定義屬性。
Thickness:最小值為0,最大值為1,默認值為0.3;
Line R
Line G
Line B
皆為Float 、Scalar屬性。

將Thickness屬性連接到Conditionr 的Secong Term中;
其餘的三個依次連接到Color2的R、G、B通道中。
設置Condition的Operation為Greater Than。

Thickness控製最後渲染效果的“勾邊兒”厚度。其餘三個屬性分別控製“勾邊兒”的顏色。

最後連接Condition的OutColor到Surface Shader的OutColor中。
這個Surface Shader材質網絡即為我們需要的卡通材質。

講一下材質的實現原理:
在Condition中,
如果First Term(就是SampleInfo的Facing Ratio)>Second Term(自定義的Thickness);
則輸出Color1(就是Ramp的顏色);
否則,輸出Color2(由LineR、LineG、LineB實現,這裏我們用黑色)
而Thickness的值可以隨意更改,這樣,就能控製“勾邊兒”的厚度。

卡通材質的顏色同Ramp來決定,卡通上色效果中不同顏色區域之間的過渡是“硬邊兒”。
所以要把Ramp的Interpolation設置為None。

Blinn也可以給一個Bump Map看看是什麼效果,也可以換一個別的材質。
Ramp的設置如圖:


材質的連接方式如圖:


我用《MAYA從入門到精通》裏的小狗渲染了一下。效果如圖:

有朋友建議我用實例來解釋各個節點的作用,這樣更好理解。
實際上也是這個道理,隻是機械地看參數,看完了也不知道怎麼用。
所以以後的教程我都用實例來講解MAYA的材質節點。MAYA的有些節點如果用語言來描述它的作用的話是非常麻煩的,遠不如簡單地操作幾步來得直接。
我準備的實例有些是從國外的網站下載的,有些是自己製作的,原則是根據內容需要來選用。所以有的內容可能會看著“眼熟”。

這一節探討BlendColor節點和surfaceLuminance節點。
兩個節點從字麵意義上都很好理解。
BlendColor節點是以Blender參數為條件,然後混合它的Color1和Color2輸出。
surfaceLuminance節點顧名思義,作用是解決表麵受光的問題。它可以控製表麵的飽和度、對比等等。

首先在MAYA中生成一個簡單的NurbsPlane,然後指定一個Lambert Shader,再指定一個file貼圖。這裏我用了Luis的一幅幻想畫的局部。
在NurbsPlane前麵用一個pointLight提供照明。
將pointLight的Intensity設置為3,渲染一下。
我們看到渲染效果“曝光”過度了。如圖:
這是經常會碰到的情況,想要提高場景的照明,但離光源近的地方又會出現圖中的問題


現在來解決這個問題。
建立一個BlendColor節點;
建立一個surfaceLuminance節點。
連接情況是這樣的:
surfaceLuminance.OutValue輸出到BlendColor.Blender;
BlendColor.Output輸出到file.ColorGain。
並調整BlendColor節點的Color1和Color2的顏色如圖:



調節一下BlendColor節點的顏色值,可以看到不同的效果。
當然也可以將BlendColor.Output輸出到別的參數裏。

常規工具節點(續)

Set Range

Set Range節點將一段範圍內的值,重新映射到另一段範圍內,然後輸出。
注意它和Clamp節點的區別,Clamp節點是專門針對顏色值的。
舉一個MAYA幫助中的小例子可以理解Set Range節點的作用。

建立一個nurbsSphere,然後指定一個Blinn材質。
生成一個Set Range節點。
我們下麵要做的是用nurbsSphere的X、Y、Z軸向的旋轉來控製Blinn的ColorR、ColorG、ColorB。
換句話說,是將0——360這一範圍的值,重新映射到0——1這一範圍內。

打開Connection Editor,
將nurbsSphere的RotateX、RotateY、RotateZ、分別連接到Set Range節點的ValueX、ValueY、ValueZ上。
把Set Range.OutValue輸出到Blinn.Color上。然後設置Set Range節點的各項值如圖:

現在說明一下Set Range節點的各項參數:
Min和Max的值是我們所希望得到的,在這個例子裏是Min=0,Max=1;
而Old Min和Old Max代表原來範圍的值,在這裏是Old Min=0,Old Max=360。
Value可以理解為輸入值的接口。

Set Range節點的工作原理可以由如下公式來解釋:
OutValue = Min + (((Value-OldMin)/(OldMax-OldMin)) * (Max-Min))

現在,我們旋轉nurbsSphere,它的顏色就會根據旋轉的方向和角度變化。



相關文章

感謝速聯科技、八度網絡、九九數據、億恩科技、群英網絡讚助部分帶寬!

關於本站 | 聯係方式 | 版權聲明 | 下載幫助(?) | 網站地圖

Copyright 2002-2020 95262.com 【數碼資源網】 版權所有 粵ICP備2020128507號-1

本站所有軟件來自互聯網,版權歸原著所有。如有侵權,敬請來信告知 ,我們將及時撤銷。