Język osadzony Majów

Maya Embedded Language (MEL) to język skryptowy używany do uproszczenia zadań w oprogramowaniu do grafiki 3D firmy Autodesk Maya . Większość zadań, które można wykonać za pomocą GUI Mayi, można wykonać za pomocą MEL, a także niektóre zadania, które nie są dostępne z GUI. MEL oferuje metodę przyspieszania skomplikowanych lub powtarzalnych zadań, a także umożliwia użytkownikom redystrybucję określonego zestawu poleceń innym osobom, które mogą uznać je za przydatne.

Projekt

MEL jest składniowo podobny do Perla i Tcl . Zapewnia pewne zarządzanie pamięcią i dynamiczną alokację tablic oraz oferuje bezpośredni dostęp do funkcji specyficznych dla Mayi. Większość standardowych poleceń Maya to domyślne skrypty MEL, zapisane w katalogu Maya Program Files.

MEL jest dość ograniczony w porównaniu z głównymi językami skryptowymi. Mel jest przede wszystkim językiem przeznaczonym do rejestrowania sesji Majów [ potrzebne źródło ] , dlatego brakuje mu wielu zaawansowanych funkcji, takich jak tablice asocjacyjne. Python został dodany do Maya jako alternatywa dla MEL w Maya 8.5. Mimo to MEL oferuje Pythonowi pewne zalety:

  • Wykrywalność MEL jest lepsza, ponieważ wbudowany serwer poleceń został stworzony z myślą o MEL.
  • Wiele starszego kodu i wewnętrznego działania Mayi jest w formie MEL. Daje to wiele wglądów w nieudokumentowane wewnętrzne działania Majów.

MEL jest często krytykowany za brak funkcji programistycznych i orientację obiektową. W praktyce jednak MEL jest używany jako metaprogramowania , w którym MEL po prostu instruuje architekturę węzłów Mayi, aby rozwiązała problem. Ponieważ węzły tworzą rzeczywisty rdzeń obliczeniowy Mayi, użycie bardziej niezawodnej, łatwo widocznej metody programowania byłoby bardzo nieefektywnym podejściem. Pod wieloma względami MEL uzupełnia API Maya, z dość wyraźnymi granicami między przydzielonymi zadaniami. To sprawia, że ​​MEL jest trudniejszy do nauczenia się i pełnego zrozumienia.

Używa

Narzędzia zaprojektowane przy użyciu skryptów MEL ogólnie należą do następujących kategorii:

  • We/wy danych
  • Import danych przechwytywania ruchu
  • Własny eksport danych gry
  • Metadane sceny do śledzenia produkcji
  • Tworzenie/modyfikacja geometrii
  • Niestandardowe prymitywy
  • Specyficzny typ danych renderera innej firmy (np. powierzchnie podpodziałowe RenderMan)
  • Narzędzia do modelowania nie oferowane w pakiecie podstawowym
  • Narzędzia animacji
  • Symulatory mięśni
  • Elementy sterujące osprzętem/konfiguracją
  • Zachowanie sztucznej inteligencji tłumu
  • Narzędzia do oświetlenia/renderowania
  • Automatyczne tworzenie typowych złożonych konfiguracji shaderów
  • Efekty przed i po renderowaniu
  • Wykonywanie połączeń z zewnętrznymi rendererami
  • Dynamika
  • Niestandardowe zachowanie cząstek
  • Symulowane gromadzenie się i rojenie wyłaniających się obiektów
  • Algorytmy genetyczne
  • Symulacja tkaniny
  • Konfiguracja i konserwacja scen plików i folderów
  • Dostosowanie interfejsu użytkownika
  • Niestandardowe sterowanie postaciami
  • Usunięcie nieprawidłowych poleceń Maya
  • Niestandardowe interfejsy użytkownika

Przykład

Oto przykład skryptu, który kopiuje wybrany obiekt poprzez jego ścieżkę:


         

       
       
       
        // skrypt animowanych duplikatów/instancji  proc  animowanyDuplikacja  (  int  $rangeStart  ,  int  $rangeEnd  ,  int  $numOfDuplicates  ,  int  $duplicateOrInstance  )  {  int  $range_start  =  $rangeStart  ;  int  $koniec_zakresu  =  $koniec_zakresu  ;  int  $liczba_duplikatów  =  $liczbaduplikatów  ;  int  $rozmiar_kroku  =  (  $koniec_zakresu     
       0
     

          

         
        
     

       
     -  $zakres_początkowy  )  /  $liczba_duplikatów  ;  int  $i  =  ;  int  $ temp  ;  aktualny czas  $range_start  ;  // ustaw na początkowy łańcuch  znaków  $selectedObjects  [];  // aby zapisać wybrane obiekty  $selectedObjects  =  `ls -sl`  ;  // zapisz wybrane obiekty  select  $selectedObjects  ;  while  (  $i  <=  $liczba_duplikatów  )  { 
              
         
        
         
          0
        
            
        
        
        
            
        
        
    


  $temp  =  $range_start  +  (  $step_size  *  $i  );  aktualnyCzas  (  $temp  );  // zaznacz obiekty do zduplikowania lub  wybierz instancję   $selectedObjects  ;  if  (  $duplicateOrInstance  ==  )  {  duplikat  ;  }  else  {  instancja  ;  }  $i  ++  ;  }  }  // Przykład użycia: 
 
 
    0 // zduplikuj bieżące zaznaczenie 5 razy --  // równomiernie rozłożone między ramką 1 a 240  animowaną Duplikacją  (  1  ,  240  ,  5  ,  ); 

Cechy

Maya oferuje również język wyrażeń, który jest nadzbiorem MEL i daje w wyniku węzły, które są wykonywane jako część wykresu zależności Maya. Wyrażenia są opracowywane za pomocą edytora wyrażeń Maya i umożliwiają wyzwalanie skryptów, podczas gdy Maya ocenia plik sceny przy każdej zmianie w czasie, aby symulować złożone zachowania lub wykonywać inne przydatne zadania.

  •   Mark R. Wilkins, Chris Kazmier: „Skrypty MEL dla animatorów Maya”. wydanie drugie, Morgan Kaufmann 2005; ISBN 0-12-088793-2
  •   Pisca, Nicholas, „YSYT - podstawy Maya MEL dla projektantów”. Wydanie 1, 0001d Wydawnictwo 2009; ISBN 978-0-578-00988-9

Linki zewnętrzne