MaxScript
MAXScript | |
MaxScript | |
Paradigmă | scripting, orientat pe obiecte |
---|---|
Apărut în | 1997 |
Proiectat de | John Wainwright, Larry Minton |
Dezvoltator | Kinetix, Autodesk |
Ultima versiune | Version 2008 |
Tipare | dinamic |
Influențat de | BASIC |
Sistem de operare | Windows |
Modifică date / text |
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.
Sintaxă
[modificare | modificare sursă]Comentarii
[modificare | modificare sursă]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.
Matrice
[modificare | modificare sursă]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ă]- https://web.archive.org/web/20090902011002/http://wiki.cgsociety.org/index.php/MAXScript
- https://web.archive.org/web/20110926095642/http://www.kxcad.net/autodesk/Autodesk%5FMAXScript%5FReference%5F9/
- Autodesk 3ds Max 9 MAXScript essentials (2007), Focal Press, ISBN 9780240809328
- Roger Cusson, Pia Maffei, 3ds max 7 fundamentals and beyond courseware manual, Focal Press (2005), ISBN 9780240807393