Szörfész szlájd! part two

Köszöntöm azon bátor vállalkozókat akik beleolvasnak a második részbe is :) Ahogy korábban említettem itt készítünk egy pofás kis kódot amivel gombnyomásra aktiválhatjuk a Surface Slide opciónkat. Először is nézzük sorjában mi kell a recepthez hogy jó legyen a kaja...

1. modell lemásolása
Az első dolog aminek biztosan működnie kell az a kijelölt modelled lemásolása. Viszont feltételezem éppen modellezel. Tehát komponens módban vagy. A maya csak akkor tud másolni modelleket ha kilépsz object módba előbb. Azt nem várhatod el a felhasználótól hogy ezt magától megtegye.

toggleSelMode;

A másik dolog amit itt kell elintéznünk az az, hogy eltároljuk az eredeti modell nevét. Ez pedig úgy néz ki hogy létrehozunk egy változót. Egy script esetében mindig úgy kell gondolkoznod hogy az ne csak egy bizonyos esetben legyen bevethető hanem bármikor amikor szükség van rá. És itt jön az a rész hogy megismerkedünk a változókkal (variables). A változók ahogy arra a nevük is utal változó dolgokat tárolnak. Tehát nem konkrét neveket, számokat, hanem alkalmazkodnak például egy kijelölt tárgy nevének változásaihoz.

Változókból több féle van mindegyik specializálódott valamilyen feladatra. Az egyik csak egész számokat tárol (integer) a másik csak tört számokat (float) és így tovább. Nekünk, mivel a kijelölt modell nevében lehetnek számok és betűk is, string típusú változót kell alkotnunk. Így fog kinézni:

string $originalObject[] = `ls -sl`;

Ahogy láthatod először fel kell írni a változó típusát. Azt követően mindig $ jel következik. Ebből tudja a Maya hogy most nem csak gépelgetsz összevissza hanem ez egy változó lesz. Utána beírod a nevét. Lehet bármilyen név egy dologra vigyázz! Sosem kezdődhet számmal!

string $6selectedObject;       Ez rossz!
string $selectedObject6;       Ez már jó lesz.

A nevét követő szögletes zárójelek azt jelzik hogy ez egy array típusú változó. Az a jellemzője hogy egyszerre több dolgot is el tud tárolni. Pl ha egyszerre több modelled van kijelölve, mindegyik nevét eltárolja. Ha túl vagyunk a keresztségen és van neve a gyereknek a következő lépés az, hogy meg kell tölteni valami tartalommal. Ez mindig egyenlőség jel után következik. A mi esetünkben ez egy MEL parancs lesz amit úgy is le lehetne írni hogy:

ls -sl   azaz   List Selected

Valami ilyesmi kell nekünk. Egy olyan bigyó ami mindig megnézi a kijelölt tárgy nevét. Jöhet a másolás. Ezt most úgy fogjuk megtenni hogy nem csak lemásoljuk az eredeti modellt hanem át is nevezzük hogy később könnyű legyen rá hivatkozni:

duplicate -name "liveObject";

Ez eddig egyszerű. Az első feladat megvan. A scriptünk lemásolja a kijelölt modellt.



3. Szmúsz
Következő lépés. Tegyünk rá egy Smooth-ot hogy szép egyenletes felszínt kapjunk a modellezéshez. Ez könnyű. Ha rányomsz a Smooth gombra akár ki is másolhatod a script editorból ezt a sort:


SmoothPolygon;


4. MakeLive
Jöhet a Make Live funkció. Ez is másolós cucc:


MakeLive;


Ja igen. Ha rányomsz a Make Live gombra nem fogsz a script editorban látni semmit amit kimásolhatnál. Trükkös a kicsike :) Nyomj rá az undo-ra miután kiadtad a parancsot. Az undo hatására megjelenik a legutóbb kiadott parancs MEL kódja az ablakban.


5. Másolat eltüntetése

Ha kész a Live object tüntessük el a viewportból, hogy ne zavarja a modellezést. A live funkció ugyanis akkor is működik ha a Live Object maga nem látszik. Jó nem? :)


setAttr "liveObject.visibility" 0;

Ekkor eltűnik a másolat de vissza kellene rakni az eredeti modellt component módba hogy ott folytathassuk a modellezést ahol abbahagytuk. Itt jól fog jönni az hogy az elején eltároltuk a modell nevét.

select -r $originalObject;
toggleSelMode;

Hogy a kényelem teljes legyen kapcsoljuk át a Move Tool-t Tweak módba:
strsTweakMode( {"2"} );

Azt hiszem ezzel készen is volnánk. Ja mégvalami. Ha befejezted a vertextologatást kényelmes megoldás lenne ha le is törölnénk a LiveObject-ünket mert ő csak ideiglenesen lett létrehozva. Tweak mode kikapcs a végére.

6. Törlés és kilépés Live módból
delete liveObject;
strsTweakMode( {"0"} );

Ezt persze nem árt ha külön futtatod le az eddigi kódtól mert a vége az lesz hogy írtál egy MEL kódot ami nem csinál semmit :D

A kész scriptedet feldobhatod a Shelf-re hátha szükség lesz még rá :)

//LiveObject elkészítése
toggleSelMode;
string $originalObject[] = `ls -sl`;
duplicate -name "liveObject";
SmoothPolygon;
MakeLive;
setAttr "liveObject.visibility" 0;
select -r $originalObject;
toggleSelMode;
strsTweakMode( {"2"} );

//Kilépés Live módból
delete liveObject;
strsTweakMode( {"0"} );

Nincsenek megjegyzések:

Megjegyzés küldése