Limba încorporată Maya - Maya Embedded Language

Maya Embedded Language (MEL) este un limbaj de scripting folosit pentru a simplifica sarcinile în Autodesk 3D Graphics Software Maya . Majoritatea sarcinilor care pot fi realizate prin GUI- ul Maya pot fi realizate cu MEL, precum și anumite sarcini care nu sunt disponibile din GUI. MEL oferă o metodă de accelerare a sarcinilor complicate sau repetitive, precum și permite utilizatorilor să redistribuie un set specific de comenzi către alții care ar putea fi de folos.

Proiecta

MEL este similar sintactic cu Perl și Tcl . Oferă o anumită gestionare a memoriei și o alocare dinamică a tablelor și oferă acces direct la funcțiile specifice Maya. Majoritatea comenzilor Maya standard sunt scripturi MEL implicite, salvate în directorul Fișiere de programe Maya.

MEL este destul de limitat în comparație cu limbajele de scripturi mainstream. Mel este în primul rând un limbaj destinat publicării sesiunii Maya, astfel că îi lipsește multe funcții avansate, cum ar fi tablourile asociative. Python a fost adăugat la Maya ca o alternativă la MEL în Maya 8.5. Totuși MEL oferă câteva avantaje pentru Python:

  • Descoperirea MEL este mai bună deoarece serverul ecou de comandă încorporat a fost creat cu MEL în minte.
  • O mulțime de cod moștenire și funcționare interioară a Maya este în formă MEL. Acest lucru oferă multe idei despre lucrările interioare nedocumentate ale Maya.

MEL este adesea criticat pentru lipsa de caracteristici de programare și de orientare a obiectelor. În practică, totuși, MEL este folosit ca limbaj de metaprogramare , unde MEL instruiește doar arhitectura nodului Maya pentru a rezolva problema. Având în vedere că nodurile formează nucleul propriu-zis al calculației Maya, folosirea unei metode de programare mai puternice ușor aparente ar fi o abordare foarte ineficientă. În multe moduri, MEL completează API-ul Maya, cu limite oarecum clare între sarcinile alocate. Acest lucru face MEL mai greu de învățat și de înțeles pe deplin.

utilizări

Instrumentele proiectate folosind scripturile MEL se încadrează, în general, în următoarele categorii:

  • I / O de date
  • Import de date de captura de mișcare
  • Export de date de joc proprietate
  • Scena meta-date pentru urmărirea producției
  • Creare / modificare geometrie
  • Primitive personalizate
  • Tipul de date specifice unui furnizor terț (de exemplu, suprafețe subdivizionale RenderMan)
  • Instrumente de modelare care nu sunt oferite în pachetul de bază
  • Instrumente de animație
  • Simulatoare musculare
  • Controluri de instalare / instalare
  • Comportamentul AI mulțimii
  • Instrumente de iluminat / redare
  • Crearea automată a setărilor comune de shader complexe
  • Efecte pre și post-redare
  • Efectuarea de apeluri către furnizori terți
  • dinamică
  • Comportamentul particulelor personalizate
  • Obiect simulat apărut în flocuri și roi
  • Algoritmi genetici
  • Simulare de pânză
  • Configurarea și întreținerea scenei fișierelor și folderului
  • Personalizarea interfeței de utilizator
  • Controale de caractere personalizate
  • Eliminarea comenzilor Maya nevalide
  • Interfață de utilizare personalizată

Exemplu

Acesta este un exemplu de script care copiază un obiect selectat pe calea sa:

// animated 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) / $num_of_duplicates;
    int $i = 0;
    int $temp;

    currentTime $range_start;     // set to range start

    string $selectedObjects[];    // to store selected objects
    $selectedObjects = `ls -sl`;  // store selected objects
    select $selectedObjects;

    while ($i <= $num_of_duplicates)
    {
        $temp = $range_start + ($step_size * $i);
        currentTime ($temp);
        // selected the objects to duplicate or instance
        select $selectedObjects;
        if($duplicateOrInstance == 0)
        {
            duplicate;
        }
        else
        {
            instance;
        }
        $i++;
    }
}

 // Usage example:
 //  duplicate the current selection 5 times --
 //  evenly distributed between frame 1 and 240
 animatedDuplication(1, 240, 5, 0);

Caracteristici

Maya oferă, de asemenea, un limbaj de expresie care este un super-set de MEL și are ca rezultat noduri care sunt executate ca parte a graficului de dependență al lui Maya . Expresiile sunt dezvoltate cu editorul de expresii Maya și permit declanșarea scripturilor în timp ce Maya evaluează fișierul scenelor la fiecare schimbare de timp, pentru a simula comportamente complexe sau pentru a efectua alte sarcini utile.

Referințe

  • Mark R. Wilkins , Chris Kazmier : „ Scripturi MEL pentru animatori Maya ”. Ediția a II-a, Morgan Kaufmann 2005; ISBN  0-12-088793-2
  • Pisca, Nicholas , " YSYT - Bazele Maya MEL pentru designeri ". Ediția I, Editura 0001d 2009; ISBN  978-0-578-00988-9

linkuri externe