Prosedyre Modellering med MEL Script i Maya

Procedural Modellering med MEL Script i Maya - Dag 1

Denne opplæringen introduserer spennende muligheter for modellering ved hjelp av Maya MEL skriptspråk. I denne første delen, vil vi lære det grunnleggende av MEL kommandoer, og lage to prosessuelle modellskript som kan være nyttig i din egen arbeidsflyt.



Ser Under panseret

The Maya Embedded Language (eller MEL) er kommandostrukturen som Maya bruker til å lage nesten alt du ser på skjermen. Hver gang du oppretter et objekt eller flytte et toppunkt, er en MEL kommando kalt til å gjøre handlingen skje. Selv alle vinduer, hyller, faner, menyer og redaktører er generert og organisert ved hjelp av MEL scripts. Hvis du ønsker, kan du helt re-bygge Maya grensesnitt ved hjelp av noe annet enn MEL, slik at skriptspråk en utrolig kraftig verktøy for å ha under beltet som kunstner. Hvis du kan bruke skripting for å automatisere mest tidkrevende delene av arbeidet ditt, så kan du bruke så mye mer tid å gjøre arbeidet skiller seg ut.

Det beste stedet å lære om spesifikke MEL kommandoer er i den tekniske dokumentasjon del av Maya Docs, og den beste måten å bli kjent med konseptene bak MEL er å se dem i aksjon. La oss grave i systemet og komme i gang med vår første skriptet.



Script En

Den første scriptet vil lage en firkant rør med flate sider justert på X og Z-aksene. Vi skal kjøre gjennom å skape manuset, og lage en hylle for å få tilgang til det.



Trinn 1

Skriv ut Pseudo-kode.

Pseudo-koden er en vanlig engelsk form av et manus, med alle store skritt listet ut. Når du begynner å arbeide på komplekse scripts blir det svært viktig å skissere skriptene før du noen gang komme i gang. For oss kan det pseudo-koden se slik ut:
Lag fire-sidige polygon pipeRotate 45 grader i YMove å sitte på bakken planeMove dreiepunktet til originFreeze transformasjoner



Trinn 2

åpne script editor ved å klikke på knappen nederst til høyre side av hoved Maya vinduet.

Inne i script editor, er det to hovedfelter, statuspanelet ovenfor, og MEL /Python vinduet nedenfor . Kontroller at fanen MEL er valgt.



Trinn 3

Tegn en "pipe" primitive i Maya scene.

Du burde se noe som ligner på denne i statuspanelet til script editor vinduet:
Polypipe -CH på -o på -r 2.958298 -h 2.434319 -t 0,9; //Resultat: pPipe1 polyPipe1 //



Trinn 4
< p> Kopier og lim inn Polypipe kommandoen fra statuslinjen inn i Script Editor.

Du bør få en nøyaktig kopi av den første Polypipe, denne gangen ligger på opprinnelsen.



Trinn 5: Breaking Down anbefalingen

Polypipe kommandoen du bare er én av tusenvis av MEL kommandoer tilgjengelig for deg. Deres struktur (hva programmerere kaller syntaks) er ganske mye det samme for hver kommando:
melCommand -flag verdi -flag2 verdi targetObject;

Den første delen er selve kommandoen, og flaggene (merket med strek tegnet) definere visse attributter av kommandoen. Kommandoer som manipulerer gjenstander som allerede eksisterer krever ofte et mål, som forteller kommandoen hva objektet for å endre. Hver kommando krever også et semikolon, som markerer slutten av kommandoen.

I eksempelet på Polypipe, de tre flaggene under definere radius, høyde og tykkelse av den opprettede rør.
-r 3.162278 -H 3.514619 -t 0,8

Vi vil gå over andre flagg i detalj senere i opplæringen, når vi legger manuset sammen.

Den prosessuelle modellering arbeidsflyten i MEL er egentlig bare en smart kjeding-sammen med kommandoer som skaper eller manipulerer geometri i Maya.



Trinn 6

Slett den opprinnelige pipe, og velge den du nettopp opprettet ved hjelp av MEL kommandoen.



Trinn 7

Angi antall akseinndelinger til fire, og velge noen "hyggelig" heltallsantall for høyde, radius, og dybde. Vi kommer til å endre disse senere, og de vil gjøre eksemplet enklere.

Disse innstillingene kan justeres med Polypipe kommandoen på den tiden at objektet er opprettet ved hjelp av flagg, så ikke bry deg om hva den script editor gir deg.



Trinn 8

Roter objekt på Y-aksen ved 45 grader

Hvis du rotere objektet for hånd, resultatet i script editor bør være noe sånt som dette:
roter -r -os 0 -45 0;

Hvis du rotere objektet ved å skrive i rotasjon verdi, vil resultatet bli:
setAttr "pPipe3. rotateY "45;

For nå, vil vi bruke roterings kommandoen i skriptet. I senere tutorials, vil vi bruke setAttr å arbeide med konkrete objekt attributter.



Trinn 9

Flytt røret, slik at det er å sitte på nettet flyet

Hvis du flytter objektet for hånd, bør koden i script editor være:
flytte -r 0 1 0;

Hvis du flytter objektet ved å skrive inn y-verdi:
setAttr "pPipe3. translateY "1;

Igjen, vi vil bruke farten kommandoen i stedet for setAttr



Trinn 10

Press." Sett inn "og flytte pivot av røret ned til opprinnelse.

Dette vil tillate deg å enkelt skalere røret fra en grunnplanet. Dette er koden jeg får i script editor:
flytte 0 0 0 pPipe3.scalePivot pPipe3.rotatePivot;

Legg merke til at koden her har to mål - polyPipe3.rotatePivot og polyPipe3.scalePivot. Dette betyr at koden kan bare brukes når det aktuelle objektet heter polyPipe3. I senere tutorials, vil vi løse dette problemet ved å bruke variabler, men for nå, vil vi omgå det ved å bruke en annen kommando som gjør det samme:
XForm -a -rotatePivot 0 0 0 -scalePivot 0 0 0;



Step 11

Frys den transformasjoner på objektet ved å gå til endre menyen, og velge Freeze trans~~POS=TRUNC

koden i script editor.
makeIdentity -Bruk sant -t en -r en -s en -n 0;

makeIdentity er en måte å fryse forvandler, men det er ikke en veldig intuitivt nevnte kommandoen. Maya har ganske mange innebygde skript som automatiserer visse prosesser, inkludert frysing forvandler



Trinn 12:. La oss prøve det igjen ...

I script editor, gå til historie og slå på Echo Alle kommandoer. Dette tvinger script editor til "ekko" eller vise alle kommandoene som maya kjører, selv om brukeren ikke aktivt engasjere dem.



Trinn 13

Frys den forvandler igjen , og ta en titt på utgangen fra script editor. Du vil se følgende kode:
FreezeTransformations; makeIdentity -Bruk sant -t en -r en -s en -n 0;

FreezeTransformations er en maya hjelper manus, en "runtime kommando" som kaller makeIdentity. I motsetning til vanlig Maya kommandoer, runtime kommandoer vanligvis starter med store bokstaver. Vær forsiktig når du bruker disse skript-kommandoer inne koden din, fordi de ikke kan støttes på samme måte på tvers av alle installasjoner av Maya. For FreezeTransformations, ulempen at kommandoen tar verdiene som er satt i Freeze Transform dialogboksen Alternativer som kan settes forskjellig avhengig av siste gang du brukte den. Jeg sjelden endre innstillingene fra standard, så jeg er komfortabel med å bruke FreezeTransformations og andre hjelpe skript. Dette er en personlig preferanse, men jeg føler at fordelene med å bruke runtime kommandoer stiger risikoen for at et skript kan bryte. Men det er viktig å forstå at i komplekse skript, kan runtime kommandoer føre til problemer, og bruker noen script som er avhengig av maya dialog-bokser er dårlig praksis hvis du har tenkt på å gi manuset til noen andre. Det har blitt sagt, bruker Echo alle kommandoer er en god måte å finne bakgrunnen skript og kommandoer som ikke er oppført i den tekniske dokumentasjonen



Trinn 14:. Putting It All Together
< p> Så langt har vi gått gjennom fem kommandoer som kan settes sammen for å lage vår objekt. La oss stille disse kommandoene opp med vår pseudo-kode, og ta en titt på hver ens spesifikke flagg. Hver flagget har to "moduser", et langt navn og en forkortelse. Vanligvis har den kortform bare én eller to bokstaver. Jeg personlig foretrekker å bruke stenografi når det er mulig, men å bruke fullt navn kan være nyttig for nybegynnere, og gjør koden mer lesbar for ikke-skripter. La oss bryte ned kommandoene:
//Lag fire-sided polygon rør (en dobbel-skråstrek betegner en kommentar i koden, som er ignorert av MEL) Polypipe -r 3 h 4 -t en -SA 4;

Relevante flagg:

-radius (-r) definerer radius av røret

-Høyde (h) definerer y-høyden

-thickness (-t) definerer tykkelsen på Polypipe, målt fra kanten rundt radius innover

-subdivisionsAxis (-SA) definerer hvor mange sider det Polypipe har
//Roter 45 grader i Yrotate -r -Y 45;

Relevante flagg:

-relative (-r) roterer objektet i forhold til sin nåværende posisjon

-rotateY (-y ) setter rotasjon på y-aksen
//Flytt til å sitte på bakken planemove -r 0 1 0;

Relevante flagg:

-relative (-r) flytter objektet i forhold til sin nåværende posisjon

flyttingen kommandoen her bruker en litt annen syntaks fra roterings kommandoen. 0 1 0 er forkortelse for sette 0 i x, sette en i y, og oversette 0 i z. MEL er en svært fleksibel språk, og ofte har mer enn én måte å gjøre akkurat det samme. I dette tilfellet kunne vi har også gjort:
//Flytt til å sitte på bakken planemove -r -y 1;

Valget er ditt, og en stor del av scripting utvikler dine egne preferanser og stiler.
//Flytt dreiepunkt til originxform -ws -rp 0 0 0 -SP 0 0 0;

Relevante flagg:

-worldSpace (-ws) flytter til en absolutt posisjon i verdensrommet

-rotationPivots (-rp) flytte rotasjons svinger i x-, y- og z-retningene

-scalePivots (-SP) flytte skala svinger i x, y, og z-retningene

XForm har et stort antall flagg, og kan brukes for et stort antall funksjoner. Vi vil definitivt se dette igjen i fremtidige tutorials
//objektets transformasjoner
FreezeTransformations fryse;.



Step 15

Sett alle kommandoene i skriptet redaktør. Dette er hva du bør ha:



Step 16

Marker koden i script editor, og midt-mus dra manuset til "polygoner 'sokkel. Dette vil skape et tilpasset hylle ikon med skriptet knyttet til den. Hver gang du klikker på denne knappen, vil skriptet kjøres.



Step 17

For å legge til en egendefinert etikett til hyllen knappen, åpne hyllen redaktør ved å klikke og holde på den nedadgående -facing pilen helt til venstre i vinduet. Inne i sokkel Editor, finne et nyopprettet knappen, og legge til en etikett og ikon navn. Ikonet Navnet bør vanligvis være under fem tegn. Gratulerer! Du har nå fullført den første MEL-drevet modellering script.



Script 2

Nå som vi har lært tauene, la oss fyke gjennom en mer lik eksempel. Her vil vi bruke det vi allerede har lært og skape en grunnleggende "avrundet cube" modell.



Trinn 1

Skriv ut Pseudo-kode.
Lag et polygon cubeMove å sitte på bakken planeMove dreiepunktet til originFreeze transformsselect alle kanter av objectbevel kantene med tre divisjoner



Trinn 2

Opprett polygon kuben kommandoen Twitter //opprette en cubepolyCube -w 4 h 4 d 4 -Sx en -sy en -SZ 1;

Relevante flagg:

-Bredde (w)

-Høyde (w)

-depth (w)

-subdivisionsX (-Sx)

-subdivisionsY (-sy)

-subdivisionsZ (-SZ)



Trinn 3

Lag "flytte til grunnplanet", "flytte svinger", og "fryse forvandler" kommandoer, akkurat som den forrige skriptet .
//flytte cubemove -r 0 2 0; //Flytt dreiepunkt til originxform -ws -rp 0 0 0 -SP 0 0 0; //freezeFreezeTransformations;



Trinn 4

Bruk en kommando for å velge alle kantene på kuben. Det er et par måter du kan gå om du gjør dette. Siden målet allerede er valgt når MEL genererer det, liker jeg å bruke en av Maya helper skript for å gjøre dette
//velger edgesConvertSelectionToEdges;.



Trinn 5

Bruk en skråkant kommando å lage nye kanter på kuben
//bevelpolyBevel -oaf en -o 0,2 -sg 3 -fn en -mv en -SA 180;

Relevante flagg.

- offsetAsFraction (-oaf) når sant, skrå beløpet vil bli bestemt av en brøkdel av lengden av tilstøtende kanter

-offset (-o) bestemmer hvor mye beveling å legge

. - segmenter (-sg) antall kanter for å legge til de skrå kanter

-fillNgon (-fn) når sant skal dele hjørnene hvor skrå skaper n-sided ansikter

-mergeVertices (-mv) når sant, vil fusjonere de opprettede punktene av de fylt N-kantet ansikt

-smoothingAngle (-SA) bestemmer i hvilken vinkel vinkel bør herde normaler


< h2> Trinn 6

Sett det hele sammen:
polyCube -w 4 h 4 d 4 -Sx en -sy en -SZ 1; flytte -r 0 2 0; XForm -ws -rp 0 0 0 -SP 0 0 0; FreezeTransformations, ConvertSelectionToEdges; polyBevel -oaf en -o 0,2 -sg 3 -fn en -mv en -SA 180;



Trinn 7

Lag din hylle ikon, endre navn på det, og vi er ferdig!




Previous:
Next Page: