proceduremæssige model med mel manuskripter i maya - dag 2,,,,,,, denne lektion er en introduktion til brug af eksterne mel filer og procedurer, funktioner, sløjfer og planlagt interaktion i maya arbejdsrum.vi kommer over grundlæggende kodning praksis, og at sammensætte en fiks geometriske objekt, som vil være meget vanskeligt at skabe uden scripting.,,,, supplerende dokumenter /plugins:,, downloade sidste manuskript, skabe procedurer i denne forelæsning, vil vi skabe en ekstern manuskript fil med fire "procedurer", - indbygget manuskripter, der skal opnå konkrete mål.den første procedure vil tage flere objekter udvalgte i maya viewport og skabe en lænket hierarki for let dobbelt forandringer.det andet manuskript vil fn 's stiftende udvalgte objekter, og det tredje vil flytte omdrejningspunkter for udvalgte objekter til verdens rummet oprindelse.disse tre alfabeter, kan du let skabe nogle interessante virkninger med flere objekter.den fjerde procedure vil kombinere alle de første tre for at skabe en fermat spiral, svarende til den komplekse grenkrans fandt på solsikke hoveder.,, trin 1, maya.i løbet af denne lektion, jeg vil bruge maya 2010, men det samme har bør arbejde for de fleste versioner af maya.start ved at skabe en terning i midten af viewport.,, trin 2, gå til "edit > to særlige" og klik mulighed rubrik at sætte dette dialog.skaber ni kopier.,, trin 3, gå til "vindue > hypergraph hierarki.vi har nu brug for, at forældrene terninger sammen for at skabe et "forsyningskæde".for at gøre det første klik "pcube2" og så shift - klik "pcube1", og slå "p" på dit tastatur.denne forældre første udvalgte objekt (pcube2) til anden udvalgte (pcube1). fortsætte denne proces (udvælgelse af barnet, så den forælder, og så slår "p" til at kæde dem sammen,) for hver af vores terninger.når den er færdig, hver genstand midt i hierarkiet skal have en forælder og barn terning, og den samlede hierarki skal se sådan ud:,, trin 4, tæt på den hypergraph hierarki vindue.vælg alle objekterne af plakat ud over eller i midten af viewport.så, at alle terningerne udvalgte, gå og roterende.,, fordi hver terning er forandringer er nu i forhold til kuben et skridt frem for i den kæde, som gør det muligt for dig at komme dobbelt forandring eller i en unik måde - små oversættelser hurtigt bliver store ændringer,.,, trin 5. alle de terninger stadig udvalgte, slå shift-p på dit tastatur til fn 's stiftende terningerne.vi har nu igennem alle de vigtige skridt, som vi ønsker at automatisere med vores manuskript.så begynder en ny maya fil, og åbne en tekst, redaktør.min favorit er blok + +, som selv har en mel sprog, stik af, der er til rådighed.det er gratis at benytte den tekst, redaktør, du foretrækker, men nu bruger jeg den gode, gamle microsoft notesblok.blok er enkel, men det får arbejdet gjort.,, trin 6, gå videre og redde din fil.ved at redde en mel dokument, sørg for at vælge "dokumenter" under "medmindre type".gem dit nummer som. mel fil i din maya manuskripter fortegnelse.jeg vil bruge edw_doubletransform.mel som min fil navn.,, trin 7, med henblik på at skabe en procedure, du må vide et par ting på forhånd.for det første skal definere en "anvendelsesområde" for proceduren.anvendelsesområde fastlægges, hvor en procedure, der er adgang til fra."lokale" anvendelsesområde betyder, at kodeksen kun er tilgængelig for andre procedurer i samme. mel fil. "global "betyder, at proceduren er tilgængelige for andre manuskript filer og brugerne, og som også er ladt tilbage i hukommelsen.i almindelighed, jeg bruger en masse globale procedurer.det er ikke den bedste, kodning, praksis, men jeg vil gerne have min procedurer til rådighed over flere manuskripter.og du skal vælge et navn til deres fremgangsmåde. de.generelt forsøger at samle noget enestående og beskrivende - hvis proceduren er global, vil du ikke have det navn i modstrid med enhver anden procedure i andre manuskript.jeg arbejder som regel en slags initialer i navnet, og fordi det manuskript, vi skriver kaldes "doubletransform", går jeg med "dt" i denne sag.på det mest grundlæggende, det er den procedure, vi bygger: global proc dt_makeparentchain() (//aktioner af manuskriptet};,, trin 8, den første ting, vi gør med vores fremgangsmåde er at definere en variabel, som i sidste ende vil parlamentet en liste over objekt navne.i mel, variabler, er angivet med et dollartegn ($), før den variable navn.der er flere forskellige former for data, som en variabel kan indeholde - tråde af tekst, hele tal til hele tal, flydende - komma - decimal numre, vektor værdier osv. syntaks for at erklære en variabel, er dette:, datatype $variablename;, for nu skal vi lave en tom snor variabel: streng $selectedobjects; hvis vi ønsker det, kan vi også benytte data til variabel i den samme linje i kode.to citater, anvendes til at fastlægge strenge tekst.streng $selectedobjects = "dette er en kæde af tekst", en enkelt lighedstegn betyder "variablen,".en dobbelt lighedstegn betyder "er lig med", og som er anvendt til at sammenligne variabler.,, trin 9, for at prøve vores nye variabel, er vi nødt til at tilføje et aftryk kommando.dette vil produktionen en snor til manuskriptet redaktør, når det er færdigt.i dette tilfælde har vi simpelthen trykning indholdet af variablen $selectedobjects. fingeraftryk $selectedobjects;,, trin 10, tilføje en bemærkning til den nye procedure.jeg har en tendens til at tilføje en kommentar, før hver enkelt procedure, således at jeg kan hurtigt få dem senere.nogle af mine manuskripter har dusinvis af procedurer og bemærkninger gøre processen af debugging - og skiftende kode meget lettere.den fulde kode bør nu ser sådan ud: //gøre forældre kæde globale proc dt_makeparentchain() {snor $selectedobjects = "dette er en kæde af tekst" print $selectedobjects;};,, trin 11, medmindre sagen og vende tilbage til maya.når maya først starter den skanner manuskripter fortegnelse og belastninger, en liste over alle de sager, der.hvis du har tilføjet et manuskript til registret og maya er allerede åben, så systemet ikke ved, at den sag.i dette tilfælde har de to muligheder, enten genoptage maya, eller du kan bruge "gentagelse" kommandoen til at tvinge maya at ajourføre nævnte liste af filer.vi skal bruge den anden metode, så gå til "vindue > generelle redaktører > manuskript redaktør, type:, gentagelse, og nu slår ctrl ind at drive kommando.,, trin 12, til at teste dit manuskript, du bliver nødt til at" påbegynd "det maya."gentagelse" kommandoen siger, maya, at filen eksisterer, og "kilde" kommandoen siger maya til last manuskriptet i hukommelsen.- følgende i manuskriptet redaktør: kilde edw_doubletransform. mel og så type kommandoen for den procedure, vi har skabt i manuskriptet, dt_makeparentchain; dette er hvad du får i manuskriptet redaktør efter udførelsen af proceduren:,, trin 13, nu hvor vi har sammensat en velfungerende procedure, - tal ud pseudocode for det, vi ønsker, at denne procedure i vores sidste manuskript:,, skrive en liste over udvalgte objekter for en variabel, få antallet af udvalgte objekter, forældre hver genstand for tidligere i listen, punkt 14, for at få en liste over de ting, der er udvalgt i forbindelse med maya viewport, bruge listen kommandoen "er".liste anvendes normalt med et flag, der fortæller ordre til at tag hvad i øjeblikket udvalgt til maya viewport, forsøge at udvælge visse genstande - sl i maya viewport type, og den fulde kommando (se nedenfor) i manuskriptet redaktør, husk at slå "ctrl træde at køre kommandoen, er - sl. trin 15, listen kommando output, en masse tråde, der repræsenterer den fuldstændige liste over udvalgte objekter.for at gøre dette nyttige oplysninger til os, vi er nødt til at skrive på grund af "listen" kommandoen til en variabel.for at gøre det, afslutte listen kommando i tik mærker (note, tik mark, også kaldet en backquote, normalt er beliggende over tab nøgle på tastaturet.være sikker på ikke at bruge den fælles citere mark ved enter).at en kommando i tik mærker kan oversættes til "produktion".vores kommando nu ser sådan ud: streng $selectedobjects = "er - sl «, trin 16, den variable $selectedobjects er en enkelt streng tekst.det, vi virkelig har brug for, er noget, der hedder en snor array - - en ordentlig liste over krav, der er indeholdt i en enkelt variabel.for at gøre vores snor i en snor system, anvender kantet parentes ved anmeldelsen af variabel: streng $selectedobjects [] = "er - sl «, når vi henviser til de variable, vi kan anvende enten hele den vifte: $selectedobjects //alle trådene i system.eller en individuel snor i nettet, ved at levere et indeks - den snor, vi ønsker i den vifte af sig selv.indekset værdier i mel altid starte ved nul som vist nedenfor, trykke $selectedobjects [0]; //afkast første snor i array - print $selectedobjects [2]; //afkast tredje snor i mange skridt 17, har vi også brug for en måde at finde ud af, hvor mange objekter i nettet.du kan bruge "størrelse" kommandoen til at gøre det.lad os skabe en ny variabel til at opbevare disse oplysninger.en hel række er repræsenteret ved et tal, som altid er omhandlet i mel som en "int":, int $numselectedobjects = er størrelse ($selectedobjects) «, gå 18. nu har vi brug for en måde at forældre hver genstand i henhold til sin plads i rækken.der er en række måder at gøre dette på, men nu bruger vi en grundlæggende "til" loop.for loops er fælles i programmeringen som en måde til at gøre en indsats for et antal gange.syntaksen af en sløjfe, der er ti gange, er dette: for (int $jeg = 0 $jeg < 9 $i + +) (//handling at gøre}, løkken struktur har tre dele.- jeg = 0 definerer et heltal, variable, $jeg, for ($jeg = 0 $jeg < $numselectedobjects. $i + +) (//aktion udføres}, skridt 19, er vi nu nødt til at bruge en "modervirksomhed" kommandoen til at skabe et hierarki kæde.syntaksen for denne post er som følger:, forældre childobject parentobject;, og i vores tilfælde modervirksomheden kommandoen ville være: for ($i = 1 $jeg < $numselectedobjects. $i + +) (modervirksomhed $selectedobjects [(1)] $selectedobjects [i];};,, gå 20, med vores loop er afsluttet, skal vi nu deseiect det sidste objekt i udvælgelsen, "vælg" kommandoen med "deseiect" flag.til beregning af indeks for det sidste formål udvalgte, vi tager det samlede antal genstande, og fordi indekset for enhver array i maya begynder på 0, fratrække 1. vælg - deseiect $selectedobjects [($numselectedobjects - 1)], gå 21, og med, at vores første procedure nu fuldstændig: //gøre forældre kæde globale proc dt_makeparentchain() {snor $selectedobjects [] = "er - sl «; int $numselectedobjects = er størrelse ($selectedobjects) « ($i = 1 $jeg < $numselectedobjects. $i + +) (modervirksomhed $selectedobjects [($- 1)] $selectedobjects [$jeg]}; udvælge - deseiect $selectedobjects [($numselectedobjects - 1)]}, skridt 22, under" dt_makeparentchain, skabe en ny procedure for at unparent udvalgte objekter.den kode under forældre de udvalgte objekter til verden, hvilket er det samme, som fn 's forældre. global proc dt_unparentselected() {forælder - w);,, gå 23, vores tredje procedure kan automatisere at flytte et objekt er omdrejningspunkt for oprindelse.ligesom før, vi begynder ved at skabe proceduren oversigt: global proc dt_pivottoorigin() (//procedure foranstaltninger}, gå 24, hvor vi så anvende samme metode som i den første procedure til at skrive en liste over de udvalgte objekter til en variabel: streng $selectedobjects [] = "er - sl «.,, gå 25, er vi nu nødt til at tilføje, i et loop.vi kan bruge den samme slags for loop som i den første manuskript, lad os tage et for hver sløjfe i stedet."for hver" loop er en speciel udgave af for loop, der henretter en gang for hver værdi i et system.det lader du skriver en variabel, der repræsenterer det løbende indeks værdi.syntaksen ser sådan ud: for ($hver $arrayvariable) (//gør det her med $hver}, $hver variabel indeholder værdien af det løbende indeks af nettet.for vores manuskript, dette er hvad koden skal se ud: for ($thisobj $selectedobjects) (//- - for $thisobj}; det samme teknik kan anvendes til at automatisere en maya kommando for en række udvalgte objekter.,, gå 26, ved hjælp af de $thisobj variabel kan vi nu vælge den genstand, i øjeblikket under behandling i det loop:, udvælge - f $thisobj;,, skridt 27 for at flytte frem til oprindelse, kan vi bruge "xform" kommando - og nulstille - rp (rotatepivot) og - sp (scalepivot) flag til 0 i x, y og z - aksen:, xform - ws - rp - 0 - 0 - 0 - sp 0 0 0, 28, skridt, de væsentligste elementer af manuskriptet er nu afsluttet, og din kode, der indeholder alle tre procedurer skal se sådan ud: //gøre forældre kæde globale proc dt_makeparentchain() {snor $selectedobjects [] = "er - sl «; int $numselectedobjects = er størrelse ($selectedobjects) « ($i = 1 $jeg < $numselectedobjects. $i + +) (modervirksomhed $selectedobjects [($- 1)] $selectedobjects [$i];); udvælge - deseiect $selectedobjects [($numselectedobjects - 1)]}; //fn 's stiftende objekter globale proc dt_unparentselected() {forælder - w); //kom - oprindelse globale proc dt_pivottoorigin() {snor $selectedobjects [] =" er - sl « for ($thisobj $selectedobjects) {udvælge - f $thisobj; xform - ws - rp - 0 - 0 - 0 - sp 0 0 0;}}, skridt 29, nu er vi ved at skabe en fjerde metode, som vil bruge de tre foregående at skabe en interessant geometrisk "fermat spiral", som er baseret på engular forhold i den gyldne forholdstal, phi.det er en form, der er almindeligt forekommende i naturen, og det følger alle mulige interessante geometriske regler.lad os starte med at skrive den pseudocode:,, skabe et område, skaber tusinder eksemplarer, forælder kæde alle områder, flytte genstande i x - aksen, flyt alle område er omdrejningspunkter for oprindelse, drej de områder i y - 137, 5 grader (den gyldne vinkel), trin 30, således at begynde med lad os skabe en ny procedure oversigt: global proc dt_fermatspiral() {}, skridt 31, nu er vi ved at skabe et område med 8 radiale og 8 højde splittelse, og skrive den resulterende omdanne og forme knudepunkter med en snor system, så vi kan holde styr på dem.de fleste befaler at skabe geometri output to tråde - navnet på omdanne knudepunkt, og navnet på den form node.for det meste, vil du arbejde med at omdanne node snor, som vil blive opbevaret i [0] - indeks for $seedsphere system variabel skabt nedenfor: streng $seedsphere [] = er polysphere - sx 8 - sy 8 «, trin 32, nu er vi ved at skabe en tom snor system variabel: streng $allspheres [], gå 33, så åbne for loop, der er 1000 gange: for ($i = 1 $jeg < 1000 $i + +) {, skridt 34, er vi nu nødt til at gentage vores nye område, og skrive. den resulterende omdanne og forme knudepunkter med en variabel: streng $duplicatedsphere [] = "duplicate";,, skridt 35, her, vi sætte vores navn gentaget omdanne knude til slutningen af $allspheres system.du kan bruge "størrelse" kommando at afgøre, hvor mange ting allerede er i nettet, og brug det resultat, som indekset for vores nye værdi. $allspheres [størrelse ($allspheres)] = $duplicatedsphere [0], trin 36, vi udvælger alle de skabte områder, og den forældre kæde kommandoen, vi tidligere har skabt: vælg - f $allspheres; dt_makeparentchain;,, skridt 37, efter som de områder, vi udvælger dem igen og flytte dem alle. 05 i x "gå" kommandoen:, udvælge - f $allspheres; - 0, 05 0 0, 38, skridt efter nulstilling af oprindelse holdning ved hjælp af vores tidligere skabt "pivottoorigin" procedure, vi udvælger de områder, en sidste gang, - - og dreje dem 137, 5 grader i. med det, vore unparent manuskript, dt_pivo:ttoorigin; udvælge - f $allspheres, drej 0 137, 5 0; dt_unparentselected;,, skridt 39, og det bliver vores sidste forhandling.så vores fuldstændige manuskript skal se sådan ud: //gøre forældre kæde globale proc dt_makeparentchain() {snor $selectedobjects [] = "er - sl «; int $numselectedobjects = er størrelse ($selectedobjects) « ($i = 1 $jeg < $numselectedobjects. $i + +) (stiftende $selectedobjects [($- 1)] $selectedobjects [$jeg]}; udvælge - deseiect $selectedobjects [($numselectedobjects - 1)]}; //fn 's stiftende objekter globale proc dt_unparentselected() {forælder - w); //kom - oprindelse globale proc dt_pivottoorigin() {snor $selectedobjects [] =" er - sl « for ($thisobj $selectedobjects) (vælg - f $thisobj; xform - ws - rotatepivot 0 0 0 - scalepivot 0 0 0;}}; //skabe fermat spiral af kugler globale proc dt_fermatspiral() {fejlbold. andenng $seedsphere [] = er polysphere - sx 8 - sy 8 « snor $allspheres []; ($i = 1 $jeg < 1000 $i + +) (string $duplicatedsphere [] = "duplicate". $allspheres [størrelse ($allspheres)] = $duplicatedsphere [0]}; udvælge - f $allspheres; dt_makeparentchain; udvælge - f $allspheres; - 0, 05 0 0; dt_pivottoorigin; udvælge - f $allspheres, drej 0 137, 5 0; dt_unparentselected;}, gå 40, og med, at vi er færdige!redde manuskriptet, og løb "gentagelse" /'source "proces, som beskrevet ovenfor.derefter træder følgende kommando til maya er manuskript redaktør, slå "ctrl ind og vent et par sekunder:, dt_fermatspiral(); og der har du fermat spiral, fremstillet udelukkende ved hjælp af mel.så prøv at spille med forskellige profiler og forandringer i den endelige procedure - du kan få alle mulige interessante mønstre.det er dag 2, resten i en serie - - gå på dag 1.