由於是Dynamic chain,我們不能對於IK進行位移的調整。
以上是創建單一的Dynamic chain,下麵我們來創建多個Dynamic chain。首先,讓我們先刪除上麵創建的Dynamic chain,如圖操作。
然後,執行select -r nurbsPlane1;HfCreateAttractor;disable -v 0 gridGrp;disable -v 1 followDelayGrp;設置如圖。
這是個多麼複雜的場景,讓我們來隱藏我們現在不想看到的物體吧。
為NURBS打上關鍵幀,播放動畫;你也可以,當然最好執行這段語言來設置。playblast來觀看。
我們發現,其實這個動作並不自然,讓我們回去調整FurAttractor的差數吧
setAttr "FurDescription1.Scraggle" 0.2;
setAttr "FurDescription1.ScraggleFrequency" 1.5;
setAttr "FurDescription1.Attraction" 0.65;
setAttr "FurAttractors1.AttractorsPerHair" 8;
setAttr "FurAttractors1.Power" 0;
setAttr "FurAttractors1.StartLength" 0.5;
setAttr "FurAttractors1.EndLength" 10;
setAttr "FurAttractors1.ThresholdLength" 0;
差異還是很大的,我們接下來從理論上來了解Dynamic chain,了理論才能掌握Dynamic chain(動力學鏈)根本。
2 Dynamic chain(動力學鏈)的結構和組成
看到上麵的例子你一定想知道Fur受到吸引器運動的原理,下麵我們來看看Fur的Dynamic chain的構成吧:
新建文檔,用這個腳本創建場景。
選擇grid類型用8×8 ,選擇Dynamic chain ,執行Create >繼續執行Window->OutlinerWindow ,讓我們來看清Dynamic chain 的結構吧。
好複雜是吧,我們先來對它做個了解。
在DynamicFurAttractor下麵有分別有:
IK,骨骼,複製曲線,曲線,粒子和彈簧。
它們的關聯關係是:
彈簧 控製>- 粒子 控製>- 曲線 控製>- 關聯的複製曲線 控製>- 骨骼 受控>- IK
也就是說,彈簧是控製的根源,由於彈簧的運動帶動粒子的運動,影響了曲線的變化,才導致骨骼的運動和變化。
有點複雜,如果你還沒有明白,繼續往下看吧。
由上麵的理論我們得出結論要想很好的控製Dynamic chain,其關鍵是選擇Dynamic chain中的粒子和彈簧進行編輯。
的確,如果是個更大的場景有上百個粒子和彈簧,那選擇將是一件費力不討好的工作,並且這樣的操作很會引起誤選和錯誤。
Maya強大的Mel這時該出場了,讓我們用Mel來幫忙吧。你可以直接 運行這個腳本(此腳本為本人原創)。
腳本運行後將在Shelf上多了兩個按鈕,分別標注為 “Sl_P” 和 “Sl_S” ,
執行“Sl_P”後,將場景內的所有粒子選擇,並放在創建標注為“DCPP”的層中,將層模板化;
執行“Sl_S”後,將隻顯示出場景內的所有彈簧(原始的場景是看不到彈簧的,隻有在運動後才會有彈簧顯示出來),方便選擇。
執行下麵的命令為NURBS打上關鍵幀
playbackOptions -min 0 -max 120;
currentTime 0 ;
select -r nurbsPlane1 ;
setKeyframe ".tz";
setKeyframe ".rx";
currentTime 20 ;
move -r 0 0 -2 ;
rotate -r 20 0 0 ;
setKeyframe ".tz";
setKeyframe ".rx";
currentTime 0 ;
modelEditor -e -allObjects 1 modelPanel4;
modelEditor -e -locators 0 modelPanel4;
modelEditor -e -xray 1 modelPanel4;
DisplayShaded;
performPlayblast 3;
播放playblast。
對比……
currentTime 0 ;
modelEditor -e -allObjects 1 modelPanel4;
modelEditor -e -nurbsCurves 0 modelPanel4;
modelEditor -e -joints 0 modelPanel4;
modelEditor -e -ikHandles 0 modelPanel4;
modelEditor -e -dynamics 0 modelPanel4;
modelEditor -e -grid 0 modelPanel4;
performPlayblast 3;
3 彈簧部分試驗
其實我們上麵所作的所有試驗,僅僅是告訴大家彈簧和粒子在動力學中的作用,接下來就讓我們來點實用的吧,使用這個腳本創建新的場景。最好將這個腳本用中鍵拖拽到shelf上做個按鈕,以便接下來繼續使用。選擇grid類型用3×12 ,選擇Dynamic chain ,執行Create > ,執行Playblast。
調整:
第一步>-
setAttr "FurAttractors1.AttractorsPerHair" 6;
setAttr "FurAttractors1.Power" 0.5;
setAttr "FurAttractors1.Influence" 5;
第二步>-
用上節所提到的“Sl_P”按鈕,選擇粒子調整conserve 0.97;
(請在通道框中調整,如果在屬性列表中調整隻能對單一的粒子進行調整)
同樣用“Sl_S”按鈕,選擇彈簧調整參數
stiffness 40
(請在通道框中調整,如果在屬性列表中調整隻能對單一的彈簧進行調整)
damping 0.35
第三步>-
modelEditor -e -allObjects 1 modelPanel4;
modelEditor -e -nurbsCurves 0 modelPanel4;
modelEditor -e -joints 0 modelPanel4;
modelEditor -e -ikHandles 0 modelPanel4;
modelEditor -e -dynamics 0 modelPanel4;
DisplayShadedAndTextured;
執行Playblast。
下麵我們來著重介紹一下spring(彈簧)兩個重要參數stiffness (硬度): 默認值是20,當數值為0時spring最硬,數值約大,spring越軟。推薦調節在10~100之間效果較好。damping (阻尼,衰減): 默認值是0.2,當數值為0時spring最大保持原始狀態,數值約大,變化幅度約大。推薦調節在0.1~1之間效果較好。
常見的毛發類型比較:
stiffness 100;damping 10,stiffness 35;damping 1,stiffness 35;damping 1。
毛發2。
毛發3。
毛發4。
對於彈簧的理解我們先到這裏,因為影響毛發運動的不止是彈簧,還有其他的因素,比方說粒子和動力場。
4 力場部分試驗
新建文件>--用這個腳本創建場景。選擇grid類型用4×4,選擇Dynamic chain ,執行Create >,場景如圖:
(air)風力場測試
點擊按鈕“Sl_P”按鈕。
SelectAllParticles;
air -pos 0 6 0 -m 3 -att 1 -dx 1 -dy 0 -dz 0 -s 0.5 -iv 0 -iro 1
-vco 0 -es 0 -mxd 20 -vsh none -vex 0 -vof 0 0 0 -vsw 360 -tsr 0.5 ;
connectDynamic -f airField1
curve1Particle curve2Particle curve3Particle curve4Particle curve5Particle
curve6Particle curve7Particle curve8Particle curve9Particle curve10Particle
curve11Particle curve12Particle curve13Particle curve14Particle curve15Particle
curve16Particle;
setAttr "airField1.visibility" 0;
modelEditor -e -allObjects 1 modelPanel4;
modelEditor -e -nurbsCurves 0 modelPanel4;
modelEditor -e -joints 0 modelPanel4;
modelEditor -e -ikHandles 0 modelPanel4;
modelEditor -e -dynamics 0 modelPanel4;
setAttr "FurDescription1.Scraggle" 0.15;
setAttr "FurDescription1.LengthNoise" 1;
setAttr "FurAttractors1.AttractorsPerHair" 4;
setAttr "FurAttractors1.Influence" 2;
setAttr "FurAttractors1.InfluenceNoise" 2;
DisplayShadedAndTextured;
playbackOptions -min 0 -max 120;
currentTime 0 ;
playblast -percent 50 ;
風吧毛發給吹翻了。
點擊按鈕“Sl_S”按鈕,選擇屏幕上顯示的所有彈簧,其實應該是隻有彈簧顯示。
設置stiffness 100;damping 5;
setAttr "FurAttractors1.Influence" 0.5;
expression -s "airField1.magnitude = sin (time/4)" -o airField1 -ae 1 -uc all ;
modelEditor -e -allObjects 1 modelPanel4;
modelEditor -e -nurbsCurves 0 modelPanel4;
modelEditor -e -joints 0 modelPanel4;
modelEditor -e -ikHandles 0 modelPanel4;
modelEditor -e -dynamics 0 modelPanel4;
playbackOptions -min 200 -max 400;
currentTime 200 ;
DisplayShadedAndTextured;
重新播放動畫。
(turbulence)紊亂力場測試
新建文件>--用這個腳本創建場景。
選擇grid類型用4×4,選擇Dynamic chain ,執行Create >
點擊按鈕“Sl_P”按鈕,執行Fields->Turbulence
然後執行
playbackOptions -min 0 -max 120;
currentTime 0 ;
setAttr "turbulenceField1.visibility" 0;
DisplayShadedAndTextured;
playblast -percent 50 ;
很明顯的變化。
修改參數,點擊按鈕“Sl_S”按鈕,選擇屏幕上顯示的所有彈簧,修改damping 2;
setAttr "FurAttractors1.AttractorsPerHair" 4;
setAttr "FurDescription1.Scraggle" 0.15;
setAttr "FurDescription1.LengthNoise" 1.5;
setAttr "FurDescription1.InclinationNoise" 0.2;
setAttr "turbulenceField1.magnitude" 20;
setAttr "turbulenceField1.attenuation" 0.2;
modelEditor -e -allObjects 1 modelPanel4;
modelEditor -e -nurbsCurves 0 modelPanel4;
modelEditor -e -joints 0 modelPanel4;
modelEditor -e -ikHandles 0 modelPanel4;
modelEditor -e -dynamics 0 modelPanel4;
DisplayShadedAndTextured;
(radial)放射力場測試
保持這個場景,執行下麵的腳本
currentTime 0 ;
select -r turbulenceField1 ;delete;
setAttr "FurDescription1.Length" 2.3;
setAttr "FurDescription1.LengthNoise" 1.5;
radial -pos 0 4 0 -m 5 -att 5 -typ 0 -mxd 20
-vsh none -vex 0 -vof 0 0 0 -vsw 360 -tsr 0.5 ;
setAttr "radialField1.visibility" 0;
connectDynamic -f radialField1 curve2Particle curve1Particle
curve3Particle curve4Particle curve5Particle curve6Particle
curve7Particle curve8Particle curve9Particle curve10Particle
curve11Particle curve12Particle curve13Particle curve14Particle
curve15Particle curve16Particle;
expression -s "radialField1.magnitude = sin(frame*20)+5"
-o radialField1 -ae 1 -uc all ;DisplayShadedAndTextured;
playblast -percent 50 ;
(uniform)統一力場測試
保持這個場景,執行下麵的腳本
currentTime 0 ;
select -r uniformField1 ;delete;
uniform -pos 7 4 0 -m 20 -att 5 -dx 1 -dy 0 -dz 0
-mxd -1 -vsh none -vex 0 -vof 0 0 0 -vsw 360 -tsr 0.5 ;
connectDynamic -f uniformField1 curve2Particle curve1Particle
curve3Particle curve4Particle curve5Particle curve6Particle
curve7Particle curve8Particle curve9Particle curve10Particle
curve11Particle curve12Particle curve13Particle curve14Particle
curve15Particle curve16Particle;
select -r uniformField1 ;
setKeyframe "uniformField1.tx";
currentTime 50 ;
move -r -14 0 0 ;
setKeyframe "uniformField1.tx";
currentTime 100 ;
move -r 14 0 0 ;
setKeyframe "uniformField1.tx";
currentTime 0 ;
DisplayShadedAndTextured;
playblast -percent 50 ;
(gravity)重力場測試
點擊按鈕“Sl_S”按鈕,選擇屏幕上顯示的所有彈簧,修改 damping 0;修改 damping 0;保持這個場景,執行下麵的腳本。
select -r uniformField1 ;delete;
playbackOptions -min 0 -max 120;
currentTime 0 ;
select -r nurbsPlane1 ;
setKeyframe "nurbsPlane1.rx";
setKeyframe "nurbsPlane1.tz";
currentTime 10 ;
rotate -r 25 0 0 ;
move -r 0 0 -6 ;
setKeyframe "nurbsPlane1.tz";
setKeyframe "nurbsPlane1.rx";
gravity -pos 0 4 0 -m 4 -att 0 -dx 0 -dy -1 -dz 0
-mxd -1 -vsh none -vex 0 -vof 0 0 0 -vsw 360 -tsr 0.5 ;
connectDynamic -f gravityField1 curve2Particle curve1Particle
curve3Particle curve4Particle curve5Particle curve6Particle
curve7Particle curve8Particle curve9Particle curve10Particle
curve11Particle curve12Particle curve13Particle curve14Particle
curve15Particle curve16Particle;
setAttr "FurAttractors1.Influence" 1;
currentTime 0 ;
DisplayShadedAndTextured;
playblast -percent 50 ;
上述,隻是部分的力場測試,大家有興趣的話可以做更多的比較。上麵的腳本,都是經過反複驗證的,很好用,並且速度很快,如果你實在看不懂,那就請一句一句的執行,以“;”表示為一句。我的經驗和關鍵參數全都在上麵的腳本裏了。大家不要問我為什麼不用漢字,而用腳本,其實,我是實在找不到比用腳本告訴你更好的方法了,多看看,你也許會悟出點門道,了解Maya的語言,其實就是了解Maya的真正麵貌。
5 分吹草地***(超實用的動力學草地)
到了精彩的部分了,如果你現在還沒用啟動Maya,那接下來激動人心的時刻你是感受不到了。
第一步:用這個腳本創建一個比較複雜的場景
日出時一個安靜的草地被一個意外到來的足球而打破,背景用了誇張的手法,從清晨直到正午,燈光的變化使得整個場景更加生機勃勃。場景中有一個可供渲染的攝像機 Cam_view,和一個長滿草的坡地。調皮的足球在你執行腳本的時候已經將Key烘焙好了,所以現在的回放速度應該是十分流暢。材質和燈光都已經設置好了,當然你不滿意還可以繼續調整。
第二步:為草地添加動力學吸引器
選擇草地平麵 "ground",Fur->Create Attractor,請設置如圖,以便使接下來的操作不至於出錯。
第三步執行這個腳本為你的草地添加力場。
如果你的第二步按圖執行的話,這一步將不會出錯。
第四步:現在場景有點複雜了,回放速度也慢了很多;很多東西如果你在視圖看不到,可以在Outliner裏查找,另外場景為你新增加了幾個層,方便你的選擇。
對於草地的運動當然還可以進一步調整,比如將粒子與草地平麵產生碰撞等,產生更精確和細膩的效果。接下來的事情你應該很熟悉了,選渲染設置。設置Production Quality的圖像品質,建議用 HD 720 輸出模式,鎖定等比後你可以自定義圖像大小。試試看吧,一個含有動力學草地的短片即將在你的手中誕生。
小節:
雖然場景中的幾乎所有參數都已經設置好,你還是可以根據你的喜好來調整的。場景中的做法和參數應該是很有價值的,保存場景或是保存創建場景的腳本,你可以仔細研究,算是對我們這個係列教程的總結和實戰發揮。
創建場景的腳本中附加了很多有用的東西,比如,如何讓Maya為你立刻創建一個足球,還有一個不錯的動態無縫天空,變化的流雲,例外場景中的圖麵氣氛也是很優秀的,如果你是初學者,那要好好研究一下了。
結束:
當你看到這裏時,我想我可以在網上教程中講到的MayaFur的技術點,都講完了。
學習應該是很快樂的,在大家開心的欣賞直觀而又思路清晰的教程時,是否可想到在你們的學習之路上,這個教程將會是帶動你學習Maya興趣的重要部分。
或許教程中的還有很多內容沒有講完整,那是想留更多的空間讓你來試驗和感受,當你在學習中得到一份收獲時,那種喜悅是無法言表的,在大家的學習之路上,這或許隻是一滴水,一塊石,但願用我一點點的時間能激起大家學習的千層浪。雖然你在網上可以如此輕鬆的瀏覽和學習到Maya的諸多知識,但請不要忘記那些編繪教程的網友,當然也包括我。他們是用自己的知識和時間來換取你的進步。或許我們是同道中人,或許還不是;但是隻要你可以保持良好的學習力,相信在CG的天空一定會有你的光輝。
中國的CG之路還很長,我或許和你一樣都在等待,等待一個真正可以一展的時代;在那一刻到來之前我們所有能做的隻是準備,再準備。如果你是個熱愛學習的人,你是高尚的。因為這世界上所有高尚的東西都是要花時間和精力去學的,包括Maya 。
最後,要建議大家選擇一個適合你的主題進行練習,那當然不是長發飄飄或是劇烈運動的毛發;即使如此,Maya的Fur還是能夠創造出多種多樣優秀的毛發效果。想要熟悉掌握本篇所有的內容,獲得更多有關Fur的控製能力:不斷練習,也隻有不斷練習,才是個好辦法。