Maya inbäddade språk

Maya Embedded Language (MEL) är ett skriptspråk som används för att förenkla uppgifter i Autodesks 3D Graphics Software Maya . De flesta uppgifter som kan uppnås genom Mayas GUI kan uppnås med MEL, samt vissa uppgifter som inte är tillgängliga från GUI. MEL erbjuder en metod för att påskynda komplicerade eller repetitiva uppgifter, samt tillåta användare att omfördela en specifik uppsättning kommandon till andra som kan ha nytta av det.

Design

MEL är syntaktisk lik Perl och Tcl . Det ger viss minneshantering och dynamisk array-allokering, och ger direkt tillgång till funktioner som är specifika för Maya. Majoriteten av vanliga Maya-kommandon är standard MEL-skript, sparade i Maya Program Files-katalogen.

MEL är ganska begränsad jämfört med vanliga skriptspråk. Mel är i första hand ett språk som är avsett att journalföra Maya-sessionen [ citat behövs ] , saknar därför många avancerade funktioner som associativa arrayer. Python lades till Maya som ett alternativ till MEL i Maya 8.5. Fortfarande erbjuder MEL några fördelar med Python:

  • Upptäckbarheten av MEL är bättre eftersom den inbyggda kommandoekoservern skapades med MEL i åtanke.
  • En hel del äldre kod och Mayas inre arbete är i MEL-form. Detta ger många insikter om Mayas odokumenterade inre arbete.

MEL kritiseras ofta för sin brist på programmeringsfunktioner och objektorientering. I praktiken används dock MEL som ett metaprogrammeringsspråk där MEL bara instruerar Mayas nodarkitektur att lösa problemet. Eftersom noder utgör den faktiska beräkningskärnan i Maya, skulle det vara ett mycket ineffektivt tillvägagångssätt att använda en mer robust och lätt uppenbar programmeringsmetod. På många sätt kompletterar MEL Maya API, med något tydliga gränser mellan tilldelade uppgifter. Detta gör MEL svårare att lära sig och helt förstå.

Används

Verktygen som utformats med hjälp av MEL-skript faller vanligtvis under följande kategorier:

  • Data I/O
  • Importera rörelsefångstdata
  • Proprietär speldataexport
  • Scen-metadata för produktionsspårning
  • Skapande/modifiering av geometri
  • Anpassade primitiver
  • Tredjepartsrenderarespecifik datatyp (t.ex. RenderMan-underavdelningsytor)
  • Modelleringsverktyg erbjuds inte i baspaketet
  • Animationsverktyg
  • Muskelsimulatorer
  • Reglage för riggning/installation
  • Crowd AI-beteende
  • Belysning/renderingsverktyg
  • Automatiskt skapande av vanliga komplexa shader-inställningar
  • Effekter före och efter rendering
  • Ringa anrop till tredjepartsrenderare
  • Dynamik
  • Anpassat partikelbeteende
  • Simulerad objekt som emergent flockas och svärmar
  • Genetiska algoritmer
  • Simulering av tyg
  • Installation och underhåll av fil- och mappscen
  • Anpassning av användargränssnitt
  • Anpassade teckenkontroller
  • Borttagning av ogiltiga Maya-kommandon
  • Anpassade användargränssnitt

Exempel

Detta är ett exempel på ett skript som kopierar ett markerat objekt genom dess sökväg:


         

       
       
       
           
       0
     

          

         
        
     

       
    
              
         
        
         
          0
        
            
        
        
        
            
        
        
    


 
 
 
    0 // animerade duplicates/instances script  proc  animatedDuplication  (  int  $rangeStart  ,  int  $rangeEnd  ,  int  $numOfDuplicates  ,  int  $duplicateOrInstance  )  {  int  $range_start  =  $rangeStart  ;  int  $range_end  =  $rangeEnd  ;  int  $num_of_duplicates  =  $numOfDuplicates  ;  int  $step_size  =  (  $range_end  -  $range_start  )  /  $antal_of_duplicates  ;  int  $i  =  ;  int  $temp  ;  aktuellTid  $range_start  ;  // satt till intervall startsträng  $  selectedObjects  [];  // för att lagra valda objekt  $selectedObjects  =  `ls -sl`  ;  // lagra valda objekt  välj  $selectedObjects  ;  while  (  $i  <=  $antal_of_duplicates  )  {  $temp  =  $range_start  +  (  $step_size  *  $i  );  aktuellTid  (  $temp  );  // valde objekten att duplicera eller instansvälj  $  selectedObjects  ;  if  (  $duplicateOrInstance  ==  )  {  duplicate  ;  }  annat  {  instans  ;  }  $i  ++  ;  }  }  // Användningsexempel:  // duplicera det aktuella urvalet 5 gånger --  // jämnt fördelat mellan bildruta 1 och 240  animatedDuplication  (  1  ,  240  ,  5  ,  ); 

Funktioner

Maya erbjuder också ett uttrycksspråk som är en superuppsättning av MEL och resulterar i noder som exekveras som en del av Mayas beroendegraf. Uttryck utvecklas med Mayas uttrycksredigerare och låter skript triggas medan Maya utvärderar scenfilen vid varje förändring i tid, för att simulera komplexa beteenden eller utföra andra användbara uppgifter.

  •   Mark R. Wilkins, Chris Kazmier: "MEL Scripting for Maya Animators". 2:a upplagan, Morgan Kaufmann 2005; ISBN 0-12-088793-2
  •   Pisca, Nicholas, "YSYT - Maya MEL Basics for Designers". 1:a upplagan, 0001d Publishing 2009; ISBN 978-0-578-00988-9

externa länkar