Sari la conținut

MaxScript

De la Wikipedia, enciclopedia liberă
MAXScript
MaxScript
Paradigmăscripting,

structurat, imperativ,

orientat pe obiecte
Apărut în1997
Proiectat deJohn Wainwright, Larry Minton
DezvoltatorKinetix, Autodesk
Ultima versiuneVersion 2008
Tiparedinamic
Influențat deBASIC
Sistem de operareWindows

MAXScript este un limbaj de scripting încorporat pentru pachetul de modelare tridimensional Autodesk 3ds Max, conceput pentru a automatiza sarcinile de rutină, pentru a optimiza utilizarea funcționalităților existente, a crea noi instrumente de editare și interfața cu utilizatorul. Prin API-ul de script vă permite să controlați și să modificați obiectele scenei tridimensionale: geometrie, texturi, animație și multe altele. Este posibil de creat diverse pluginuri și utilitare pentru a accelera executarea anumitor sarcini. Uneltele Autodesk 3ds Max utilizează MAXScript într-o varietate de funcții, inclusiv utilități originale și elemente de interfață.

Publicul țintă și ușurința de utilizare

[modificare | modificare sursă]

Limba este destinată unei game largi de utilizatori - de la modele la directori tehnici și programatori. Acesta oferă o sintaxă destul de liberă mai asemănătoare cu limba BASIC decât cu C++ sau shell-ul de comandă UNIX (cum este cazul scenariului Maya MEL). Structura internă are multe în comun cu limba LISP și se bazează pe expresii. O nouă funcție personalizată creată cu MAXScript este ușor integrată în 3ds Max și poate fi utilizată ca orice alt instrument implicit încorporat. Limba este concepută pentru un utilizator obișnuit și, așa cum a fost concepută de către creatori, să o folosească, nu este nevoie să aveți o vastă experiență de programare în niciuna dintre limbile de programare comune.

Comentariile sunt marcate cu "-" (liniuță dublă) la începutul unei linii. Comentariile bloc sunt evidențiate folosind o sintaxă asemănătoare C:

-- comentariul dvs. obișnuit
/* comentariul tău bloc */

Sensibilitatea variabilelor și variabilele de șir

[modificare | modificare sursă]

Limba nu este sensibilă la minuscule. Singura excepție este o comparație a variabilelor șir. Se oferă, de asemenea, un tip special de variabile de nume care sunt sensibile la minuscule și sunt de obicei folosite ca tip enumerat pentru trecerea la funcții în loc de șiruri de caractere. Pentru a declara o astfel de variabilă, utilizați simbolul #. Există, de asemenea, o funcție MatchPattern încorporată, care vă permite să comparați șiruri de caractere cu și fără sensibilitate la caz:

 "HELLO" == "hello"
  -->false
  "HELLO" as name == "hello" as name --convertește la tip name
  -->true
  #HELLO == #hello  --# declară o variabilă de tip name
  -->true
  matchPattern "HELLO" pattern:"hello"
  -->true
  matchPattern "HELLO" pattern:"hello" ignorecase:false
  -->false

Instrucțiuni

[modificare | modificare sursă]

Instrucțiunile nu trebuie să se încheie cu un punct și virgulă (;). Acest lucru trebuie făcut numai atunci când sunt pe aceeași linie:

      a = 10
      print a
      --înregistrarea este similară cu cea de mai jos:
      a = 10;
      print a;
      --care este similar cu a merge mai jos:
      a = 10; print a;

Declarație variabilă

[modificare | modificare sursă]

Variabilele nu necesită o declarație de tip explicită sau o alocare de valori. Variabilele neinițializate returnează întotdeauna valoarea specială nedefinită, care este echivalentă cu NULL. Tipul unei variabile depinde de valoarea pe care o stochează și se poate modifica dinamic:

      a = 10 -- tipul de variabilă a este un număr întreg
      a = "b" -- tipul de variabilă a devenit un șir

Organizarea codurilor

[modificare | modificare sursă]

Parantezele sunt folosite pentru a desemna blocuri de cod și spațiile de nume.

Matricele sunt notate folosind sintaxa # () și nu sunt strict membri ai tipului - una și aceeași matrice poate să conțină elemente de orice tip, inclusiv alte matrice.Indexarea matricei începe de la un (1).

Rețele de biți

[modificare | modificare sursă]

Parantezele curbate sunt utilizate numai ca parte a declarării unui bitmap (bitArray) după cum urmează: #{}. Rețelele de biți sunt liste comprimate care conțin numai steaguri (false sau adevărate) și sunt utilizate pentru a stoca starea elementelor selectate, cum ar fi punctele de vârf sau triunghiurile unui obiect tridimensional.

Acces prin index

[modificare | modificare sursă]

Parantezele sunt utilizate pentru accesarea indexată sau numită a unor părți ale obiectelor sau elementelor matrice:

       aBox = box() -- creați un cub
       --> $Box:Box01 @ [0.000000,0.000000,0.000000]
       aBox[3] -- avem cea de-a treia piesă de animație
       --> SubAnim:Transform
       aBox[#Transform] --obținem aceeași pistă de animație utilizând numele de acces
       --> SubAnim:Transform
       aBox[3][1] -- primim primul element din piesa de transformare
       --> SubAnim:Position
       aBox[3][1][2] --obținem cel de-al doilea element din poziția pe pistă
       --> SubAnim:Y_Position
       someArray = #(1,2,5,6,"Hello") -- declarăm o matrice
       --> #(1,2,5,6,"Hello") 
       someArray[4] --primim al 4-lea element
       --> 6
       someArray[5] --primim al 5-lea element
       --> "Hello"
       someArray[6] --primim elementul 6 - nu există
       --> undefined

Accesul la obiecte de scenă

[modificare | modificare sursă]

Nodurile scenă (obiecte de scenă) pot fi accesate folosind prefixul $ la începutul numelui. De exemplu, $Box01 returnează un obiect denumit Box01. Aceeași sintaxă poate fi utilizată pentru a accesa mai multe obiecte cu nume similare folosind *. De exemplu, $Box* returnează o listă a tuturor obiectelor ale căror nume încep cu Box, cum ar fi "Box01", "Box02", "Boxer" și așa mai departe.

Accesul la proprietățile obiectului

[modificare | modificare sursă]

Proprietățile sunt accesate utilizând un punct la sfârșitul unei variabile, prin analogie cu alte limbi cunoscute (Object.Property Name) sau prin apelurile către funcțiile GetProperty/SetProperty. Pentru a obține o listă cu proprietățile disponibile, utilizați metoda showProperties (sau o înregistrare mai scurtă). Se spune, pentru a obține proprietățile unui obiect Box01, este nevoie de procedat în felul următor:

      showProperties $Box01
      --sau înregistrare mai scurtă:
      show $Box01
      -- pentru a obține o listă cu toate proprietățile ca nume:
      theProperties = getPropNames $Box01

Legături externe

[modificare | modificare sursă]