maya mel proceduremæssige model for kunstnere

maya mel proceduremæssige model for kunstnere - unesco 's statistiske kontor,,,,,,, denne lektion er en introduktion til bygning af grafiske brugergrænseflader (ho) i mel til maya 2010 og nedenfor.maya 2011 blev der indført en ny metode til at skabe guis, som ikke vil være dækket her.vi kommer over ordentlig koder for unesco 's statistiske kontor, behandling af fejl, og vi sammensætter en meget nyttig manuskript, der giver dem en betydelig kontrol over en genstand er omdrejningspunkt.,,, brugergrænseflader, hvis du har planer om at give dem til en kunstner, så kan det være utroligt nyttigt at sammensætte en brugervenlig gui, der gør din kode tilgængelig for ikke - programmører.i disse dage, jeg bruger sjældent skik hotkeys, i stedet for at stole på en håndfuld af unesco 's statistiske kontor, som jeg har bygget i mel at automatisere maya processer.jeg kan tage dem med mig, og ikke behøver at ændre eventuelle præferencer med henblik på at arbejde hjemme i flere arbejdspladser.evnen til at skabe og bevare unesco 's statistiske kontor er en stærk, men undertiden frustrerende redskab i mel værktøjskasse.,, trin 1, lad os se på, hvad vi skal lave i dag.start med at redde "edw_pivotcontrol. mel" fil er medtaget i denne forelæsning i jeres manuskripter fortegnelse.så, åben op maya.jeg vil bruge maya 2010 for varigheden af denne forelæsning, men de samme regler bør arbejde for de fleste maya versioner.- følgende i kommando linjen og trykke enter: kilde edw_pivotcontrol; edw_pivotcontrol;,, trin 2, skal vi have et åbent vindue op med et par knapper på den.prøv at skabe nogle geometri og eksperimentere med manuskriptet.målet er at skabe et manuskript, som giver dig om flyve kontrol over objekt omdrejningspunkter.,, trin 3, fastsætte, hvilke procedurer vi bliver nødt til at gøre det her manuskript:,, edw_pivotcontrol - starter de vigtigste manuskriptet, epc_pivotcontrol - skaber eu - erhvervsgrenen, epc_getbounds - brug xform ordre til at få den afgrænser æske med de udvalgte mål, epc_movepivotlocal - trin genstand er drejes til en lokal holdning (y min x min osv.), epc_movepivottoobject - flytter frem til et andet objekt er placering, bruger jeg epc_ som min adgangskode.som i de foregående tutorials, vil du sørge for, at deres procedurer har enestående navne, for ikke at interferere med andre manuskripter.,, trin 4, begynder vi vores manuskript af åbningen af det gamle standby, microsoft notesblok.den første procedure er let:,,,, løntrin 5, 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_pivotcontrol.mel som min fil navn, men føler mig fri til at vælge, hvad du vil.,, trin 6, nu kommer vi til den svære del.oprettelse af unesco 's statistiske kontor i mel aldrig har været en særlig elegant proces, så jeg vil gøre mit bedste for at gøre processen så smertefri som muligt.nogle gange er det bedst bare at gøre noget på papir, før vi begynder at skrive kode, så opstiller en oversigt for, hvad du vil have den sidste eu - erhvervsgrenen til at se ud.manuskriptet er ret enkelt, men når du begynder at beskæftige sig med tekniske vurderingsorganer menuer, scrollbars osv. vil du være sikker på, at du har en plan i tankerne.,, trin 7, vi skal se på tre forskellige typer - kommandoer:,, windows - øverste genstande, der har standard knapper af alle os vindue, som f.eks. mindske, maksimere, og luk., layout - forskellige måder at organisere genstande inden for en vinduer. kontrol - knapper, kiks, tekstfelter osv. det er den interaktive elementer i eu - erhvervsgrenen, her er en opdeling af vores skitse i henhold til mel kommandoer, der anvendes til at skabe dem.:,,,, trin 8, det første skridt til at skabe eu - erhvervsgrenen er at fastsætte det vindue.fordi vores vindue mod har et unikt navn, maya, kan ikke have to af samme vindue åbent på én gang.den første del af vores procedure kontrol for at se, om vinduet er åbent, og lukker det, hvis det er. //skabe ui globale proc pivotcontrol() (< br /> hvis (vindue - findes pivotcontrolmain) (< br /> deleteui pivotcontrolmain; < br />}; //...};,, trin 9, lad os prøve at skabe et vindue i kodeksen, og se, hvad der sker, vindue - rte i irland og rtp i portugal 1 - t "edw pivot" - mnb 1 - mxb 1 - w - 450 - h 300 pivotcontrolmain,,, - resizetofitchildren (- rte i irland og rtp i portugal), hvis det er sandt, vinduet vil automatisk resize til at passe alle de skemaer og kontrol skaber, - afsnit (t) teksten afbildet i afsnit bar øverst på vinduet, - minimizebutton (- mnb) muliggør eller deaktiverer minimere knap, - maximizebutton (- mxb) muliggør eller deaktiverer maksimere knap - bredde (w) bredde i vinduet i pixel - højde (h) højde på vinduet i antal pixels, gå 10, lige nu, vinduet er blevet skabt i manuskriptet, men en kommando, der er behov for at vise det.denne kommando vil altid komme tilbage efter alle eu - erhvervsgrenens ordrer til vinduet. showwindow pivotcontrolmain;,, trin 11, vores fulde kode skal se sådan ud: //hovedfunktion globale proc edw_pivotcontrol() {pivotcontrol;}; //skabe eu - erhvervsgrenens globale proc pivotcontrol() (hvis (vindue - findes pivotcontrolmain) (deleteui pivotcontrolmain;}; gennemskinneligt - rte i irland og rtp i portugal 1 - t "edw pivot" - mnb 1 - mxb 1 - w - 200 - h - 350 pivotcontrolmain; showwindow pivotcontrolmain;}, gå 12 kilde i den nye kodeks og løb fra maya kommando linjen.det er, hvad du bør få: kilde edw_pivotcontrol; edw_pivotcontrol; < over klasse = "tutorial_image" > < img src = "http://cdn.tutsplus.com/cg/uploads/legacy/249_maya_edwhetstone3/6.jpg" data oprindelige url = "http://cgtuts.s3.amazonaws.com/249_maya_edwhetstone3/6.jpg" alat = "grænse =" 0 "/> < /span >,, trin 13, vinduet er den øverste mål i vores eu - erhvervsgrenen hierarki.alle skemaerne og kontrol er børn af dette objekt.den første skitse, vi bruger, er en kolonne layout, holde knapper:, columnlayout - adjustablecolumn 1 - rowspacing 0 epc_maincolumnlayout,,, - adjustablecolumn (ac) kolonne automatisk vil resize i henhold til bredden af det vindue, - rowspacing (- r) afstanden i antal pixels mellem hver række i kolonnen,,, punkt 14, jeg har fundet den, herunder nogle instrukser eller præciseringer i eu - erhvervsgrenen kan gøre det mere anvendelig.tilføje en tekst, at manuskriptet:, tekst - l "flytte frem til:",,, - etiket (l), selve kontrollen,,,,, trin 15, næste, vi vil gerne have noget at holde de knapper på toppen af vinduet, for at flytte midtpunkter omkring.en opstilling, vi kan bruge, er gridlayout, der skaber en række jævnt fordelt celler, der indeholder et objekt., gridlayout - cwh 60 24 - nrc 2 5,,, - cellwidthheight (- cwh) fastsættes den bredde og højde for hver enkelt celle. - numberofrowscolumns (nrc) fastsætter antallet af horisontale linjer og i lodrette kolonner i nettet,,,,, trin 16 hver celle i nettet kan indeholde en fælles kontrol.det er automatisk fyldt, når man skaber objekter under udformning.i vores tilfælde ønsker vi at oprette ni knapper.vi vil bruge den - flag senere at fortælle knapper, hvilken procedure at kalde:, knap - l "centret" knap - l - y min "knap - l" y max "knap - l" oprindelse "knap - l" udvalgt "knap - l" x. "" - l x max "knap - l" z min "knap - l" z max ",,, - etiket (l) teksten afbildet på knappen,,,,, skridt 17, nu har vi brug for en måde at fortælle maya, vi er færdige med gridlayout, og vi vil tilføje flere elementer til columnlayout.for at gøre det, vi skal bruge mel kommando til moderselskabet i gridlayout., setparent..,,., indikerer, at du far til layout et trin op hierarkiske kæde.vi kunne også bruge navnet på indretningen, men dette er kun nyttigt, hvis alle de skemaer har udtrykkelig navne:, setparent epc_maincolumnlayout;,, gå 18, vores pivotcontrol manuskript nu ser sådan ud: global proc pivotcontrol() (hvis (vindue - findes pivotcontrolmain) (deleteui pivotcontrolmain;} vindue - rte i irland og rtp i portugal 1 - t "edw pivot" - mnb 1 - mxb 1 - w - 200 - h - 350 pivotcontrolmain; columnlayout - adjustablecolumn 1 - rowspacing 0 epc_maincolumnlayout; tekst - l "flytte frem til:" gridlayout - cwh 60 24 - nrc - 2 5 - ag 1; knap - l "centret" knap - l "y min" knap - l "y max" knap - l "oprindelse" knap - l "udvalgt" knap - l "x." "- l x max" knap - l "z min" knap - l "z setparen max".t... og showwindow pivotcontrolmain;}, skridt 19, ligesom gridlayout, columnlayout skal være afsluttet ved, at moderselskabet. setparent...,,, gå 20, kilde i manuskriptet, og se hvad du får:,,,, skridt 22 eu - erhvervsgrenen procedure er færdig!//hovedfunktion globale proc edw_pivotcontrol() {pivotcontrol;}; //skabe eu - erhvervsgrenens globale proc pivotcontrol() (hvis (vindue - findes pivotcontrolmain) (deleteui pivotcontrolmain;}; gennemskinneligt - rte i irland og rtp i portugal 1 - t "edw pivot" - mnb 1 - mxb 1 - w - 200 - h - 350 pivotcontrolmain; columnlayout - adjustablecolumn 1 - rowspacing 0 epc_maincolumnlayout; tekst - l "flytte frem til:" gridlayout - cwh 60 24 - nrc - 2 5 - ag 1; knap - l "centret" knap - l - y min "knap - l" y max "knap - l" oprindelse "knap - l" udvalgte "knap - l x min" knap - l x max "knap - l" z min "knap - l" z max ". setparent..; setparent..; showwindow pivotcontrolmain;}, gå 23, nu skal vi skabe than koden for faktisk bevægede sig et objekt er omdrejningspunkt.for at gøre det, vil vi skabe to procedurer, som vil arbejde sammen,,, epc_getbounds vil bruge en xform kommando - og lidt matematik til at returnere tegnkasse minima, grænser, og gennemsnit., epc_movepivotlocal vil hente tegnkassen oplysninger ved hjælp af epc_getbounds flytte - steder.,,, fastlægge de trin. pseudo - kode for epc_getbounds:,, udvælge genstand fra epc_movepivotlocal, skrive, resultatet af et spørgsmålstegn xform kommando til et system, få fat i gennemsnit af x, y og z minima og maksima er vendt tilbage fra de xform, vedlægges det gennemsnit på tilbagevenden array returnere tegnkasse system sammen med gennemsnittene. skridt, 25, skabe skelet til proceduren, komplet med et afkast, type og en vedtaget ændring(., globale proc flyde [] epc_getbounds (string $objsel) {}, gå 26, udvælge genstand som argument, og få tegnkassen oplysninger. global proc flyde [] epc_getbounds (string $objsel) (vælg - f $objsel; flyde $getboundarray [] = er xform - q - ws - bb «),,, - spørgsmål (q) forespørgsel kommando, i stedet for at gøre noget, - worldspace (ws) sørg for, - boundingbox (bb) vender tilbage til min - og max positioner i omskreven firkant,,, - boundingbox flag tilbage seks værdier. en række mindstekrav: x, x maksimale, y y z minimum maksimum, minimum, og z maksimale.,, skridt 27, beregne gennemsnit mellem minima og maksima.husk, at arrays begynder altid med et indeks på nul, flyde $bbxav = (($getboundarray [3] + $getboundarray [0]) /2); //xmax plus xmin divideret med to flyde $bbyav = (($getboundarray [4] + $getboundarray [1]) /2). ////////ymax plus ymin divideret med to flyde $bbzav = (($getboundarray [5] + $getboundarray [2]) /2); //zmax plus zmin delt i to, gå 28, beregne gennemsnit mellem minima og maksima.Remember that arrays always start with an index of zero., float $bbXAv = (($getBoundArray[3] + $getBoundArray[0])/2); //xmax plus xmin divided by two float $bbYAv = (($getBoundArray[4] + $getBoundArray[1])/2); //ymax plus ymin divided by two float $bbZAv = (($getBoundArray[5] + $getBoundArray[2])/2); //zmax plus zmin divided by two, , Step 28 , Append the newly calculated averages and return the final array., $getBoundArray[6] = $bbXAv; $getBoundArray[7] = $bbYAv; $getBoundArray[8] = $bbZAv; return $getBoundArray;, , Step 29 , The final procedure should look like this:, global proc float[] epc_getBounds(string $objSel){ select -r $objSel; float $getBoundArray[] = `xform -q -ws -bb`; float $bbXAv = (($getBoundArray[3] + $getBoundarray [0]) /2); flydende $bbyav = (($getboundarray [4] + $getboundarray [1]) /2); flydende $bbzav = (($getboundarray [5] + $getboundarray [2]) /2 $getboundarray [6] = $$getboundarray bbxav; [7] = $bbyav. $getboundarray [8] = $bbzav; tilbage $getboundarray;}, gå 30, kan vi nu sætte denne kodeks for at arbejde i vores epc_movepivotlocal procedure.skriver de pseudo - kode:,, skrive en liste over udvalgte objekter til et mønster, få tegnkassen oplysninger for hver genstand udvalgt ved hjælp af epc_getbounds procedure, skabe et skifte sag erklæring til at kontrollere, hvor centertappen skal flytte til skridt 31, skabe skelet til proceduren.oprette et i kredsløb, således at den kode udføres én gang for hver genstand, der indgik i scene. global proc epc_movepivotlocal (string $modus) {snor $sel [] = "er - sl « for ($thisobj $sel) (//kode går her}}, skridt 32, anvendes proceduren tilbage værdi fra epc_getbounds at skrive en float - system: at svæve $af [...] = er epc_getbounds $thisobj «, trin 32 nu, så skal vi bruge en kontakt, sag erklæring til rent faktisk at flytte dreje rundt.den grundlæggende struktur af en kontakt, er dette:, skift ($variabel) (//variabel kan være enhver type, herunder strenge og flyder sag variablevalue: //hvis variablen tændstikker variablevalue //- kode knækker; sag othervalue: //kode her bryder;}, skifte sag erklæring en brusende system, hvilket betyder, at hvis du ikke omfatter "pause" kommando efter hver sag, resten af sagerne vil udføre det.for vores procedure, vi vil gerne have en kontakt, som vil give os mulighed for at anvende samme procedure for at flytte et omdrejningspunkt for mange forskellige holdninger.vores bytte sag vil se sådan ud:, skift ($modus) {"center": centerpivot $thisobj; bryde; sag "ymin": - en - rpr $pos [6] $pos [1] $pos [8] ($thisobj + ". rotatepivot") ($thisobj + ". scalepivot"); pause.}, gå 33, fortsat at tilføje nye tilfælde i manuskriptet, så hver af vores eu - erhvervsgrenen knapper har en tilsvarende sag.The full procedure should look like this:, global proc epc_movePivotLocal(string $mode){ string $sel[] = `ls -sl`; \tfor ($thisObj in $sel){ \tfloat $pos[] = `epc_getBounds $thisObj`; \t\tswitch($mode){ \t\t\tcase "center": \t\t\tCenterPivot $thisObj; \t\t\tbreak; \t\t\t \t\t\tcase "ymin": \t\t\tmove -a -rpr $pos[6] $pos[1] $pos[8] ($thisObj + ".rotatePivot") ($thisObj + ".scalePivot"); \t\t\tbreak; \t\t\t \t\t\tcase "ymax": \t\t\tmove -a -rpr $pos[6] $pos[4] $pos[8] ($thisObj + ".rotatePivot") ($thisObj + ".scalePivot"); \t\t\tbreak; \t\t\t \t\t\tcase "origin": \t\t\tmove -a -rpr 0 0 0 ($thisObj + ".rotatePivot") ($thisObj + ".scalePivot"); \t\t\tbreak; \t\t\t \t\t\tcase "xmin": \t\t\tmove -a -rpr $pos[0] $pos[7] $pos[8] ($thisObj + ".rotatePivot") ($thisObj + ".scalePivot"); \t\t\tbreak; \t\t\t \t\t\tcase "xmax": \t\t\tmove -a -rpr $pos[3] $pos[7] $pos[8] ($thisObj + ".rotatePivot") ($thisObj + ".scalePivot"); \t\t\tbreak; \t\t\t \t\t\tcase "zmin": \t\t\tmove -a -rpr $pos[6] $pos[7] $pos[2] ($thisObj + ".rotatePivot") ($thisObj + ".scalePivot"); \t\t\tbreak; \t\t\t \t\t\tcase "zmax": \t\t\tmove -a -rpr $pos[6] $pos[7] $pos[5] ($thisObj + ".rotatePivot") ($thisObj + ".scalePivot"); \t\t\tbreak; \t\t}; \t}; };, , Step 33 , Our last procedure follows pretty much the same idea., global proc epc_movePivotToObject() { string $selLast[] = `ls -sl -tail 1`; string $copyToObj = $selLast[0]; select -deselect $copyToObj; string $selSet[] = `ls -sl`; float $pivotSel[] = `xform -q -piv -ws $copyToObj`; print $pivotSel; \tfor ($each in $selSet){ \tmove -a $pivotSel[0] $pivotSel[1] $pivotSel[2] ($each + ".rotatePivot") ($each + ".scalePivot"); \t}; };, There are only two new flags in this procedure: , , -tail (-tl) only writes the last object selected to the array (ls command), -pivot (-piv) queries the current location of the pivot on an object (xform command), , Step 35 , Now all that remains is to make our buttons in the UI actually call the procedures we've written., button -l "Center" -c "epc_movePivotLocal center"; button -l "Y Min" -c "epc_movePivotLocal ymin"; button -l "Y Max" -c "epc_movePivotLocal ymax"; button -l "Origin" -c "epc_movePivotLocal origin"; button -l "Selected" -c "epc_movePivotToObject"; button -l "X Min" -c "epc_movePivotLocal xmin"; button - l "x -" - c "epc_movepivotlocal xmax" knap - l "z min" c "epc_movepivotlocal zmin" knap - l "z" max "- c epc_movepivotlocal zmax",,, - kommando (- c) kræver en kommando eller liste over kommandoer, når knappen er trykket,, skridt, 35, og vi er færdige.,,,















Previous:
Next Page: