Il presente tutorial riporterà scrits base per realizzare tools utili su 3Ds Max. Il linguaggio utilizzato è 3DS Max Script. Richieste conoscenze base di programmazione.
Iniziamo con lo spiegare come alcune differenze base fra quello che si desidera ottenere.
Esistono due “tipologie” di tool ottenubili, quello che li differenzia è essenzialmente la UI (User Interface) ottenuta, oltre a piccole variazioni a livello di codice. MS (MaxScript) creerà una finestra “esterna” al programma 3DS Max , MCR (MacroScript) creerà un pannello integrabile con la UI del programma. A livello di codice se inseriremo l’intestazione qui sotto citata in un file con una delle due estensioni otterremo sempre un pannello integrato nel programma.
macroscript myMacro category:"my category" tooltip:"tooltip text" buttonText:"button text" ( )
N.B.: Cliccando da tastier asu F11 torna utile il MAXScript Listener che altro non è che una finestra dove vengono riportati tutti i “risultati di debug” con annessi avvisi e comandi utili a comprendere cosa sta succedendo mentre noi stiamo agendo all’interno del programma. Se si ha un minimo di dimestichezza con 3Ds Max o con i software di modellazione invito chiunque a provare ad aprire tale finestra e poi realizzare un semplice cubo. Una volta fatto ciò si potrà notare come nella parte in alto della finestra di Listener appaia il codice utile a realizzare quello specifcio comando. Il consiglio è di tenere sempre aperta tale finestra di MAXScripst Listerner mentre si realizza il codice.
REALIZZIAMO UNO SCRIPT MS (.ms)
Per realializzare un MS (MaxScript) consiglio di cliccare sul menu, solitamente posto in alto nel software, alla voce MAXScript , per poi cliccare su New Script.
Fatto ciò si potrà notare come si aprirà un sistema di scrittura adibita all’inserimento del nostro codice.
Analizziamo il seguente codice:
try ( closeRolloutFloater RolloutFloterTemplate) catch()
rollout RolloutTemplate “View”
(button viewportFrontButton “Front” width:50 height:30 pos:[0,0]
on viewportFrontButton pressed do
(
actionMan.executeAction 0 “40060”
))
RolloutFloterTemplate = newrolloutfloater “Function” 175 600
addrollout RolloutTemplate RolloutFloterTemplate
Questo qui sopra è lo script generale , qui di seguito analizzerò riga per riga del codice.
try ( closeRolloutFloater RolloutFloterTemplate) catch()
La parte di codice qui sopra riportata non fa altro che: nel caso in cui la finestra del tool sia gia aperta , fai in modo che si chiuda e ne venga aperta un altra. Senza questa parte del codice il software ogni volta che si lancia l’applicazione, intesa come il nostro codice, creerà una nuova istanza del codice. Se l’obiettivo è lanciare in continuazione varie finestre contenente il risultato visivo del nostro codice basta eliminare questa parte qui sopra di codice. Ovviamente il consiglio è di mantenere tale parte del codice.
Continuando l’analisi del codice qui sopra ed entrando nello specifico con il comando closeRolloutFloater si impone al software di chiudere la finestra della nostra applicazione , applicazione che viene indicata con il nome RolloutFloterTemplate.
N.B.: Facendo un piccolo salto in avanti nel codice , serve far notare come RolloutFloterTemplate sia il nome della nostra finestra che contiene il risultato visivo del presente codice. Da notare in oltre che il nome della finestra dell’applicazione riceva le specifiche di dimensioni e creazione della finestra stessa alla fine del codice.
La successiva parte del codice:
rollout RolloutTemplate “View”
Non è altro che un “riquadro/indice” visivo presente nella finestra dell’applicazione. Tale rollout sarà il contenitore del nostro pulsante che il restante codice crea. Entrando nello specifico la parola rollout è il metodo del sistema utile a realizzare appunto tale “indice” , RolloutTemplate è il nome assegnalo a tale metodo mentre “View” (scritto fra doppi apici) è il nome che visualizzeremo a video.
Il codice successivo:
button viewportFrontButton “Front” width:50 height:30 pos:[0,0]
Non fa altro che realizzare un pulsante con annessi dati di personalizzazione. Analizzando nello specifico il codice : button è il “comando” utile per realizzare il pulsante , viewportFrontButton è il nome del button (utile successivamente per essere richiamato nella parte successiva del codice) , “Front” (fra doppi apici) nonn è altro che il testo che vedremo all’interno del pulsante , width: – height: rappresentano le dimensioni del pulsante , mentre la pos: indica la posizione del pulsante all’interno dell’applicazione. Lasciando [0,0] all’interno dei dati il pulsante verrà posto in alto a sinistra nella finestra della nostra applicazione , se scrivessimo [50,0] il pulsante si sposterebbe verso destra di 50px ma come altezza di posizionamento rimarrebbe uguale, se invece scrivessimo [0,50] il pulsante tornerebbe in alto a sinistra ma abbassato di 50px rispetto alla posizione precedente.
Il codice :
on viewportFrontButton pressed do
(
Essenzialmente dichiara che : se il pulsante viewportFrontButton (come specifico del pulsante sopra creato) viene cliccato (pressed) il software deve eseguire (do) il codice che segue:
actionMan.executeAction 0 “40060”
Questo è il comando reperito semplicemente sfruttando il comandod a tastiera F11 che apre il MAXScript Listerner.
Per ogni sopecifico comando consiglio di leggersi la documentazione di riferimento dell’Autodesk 3Ds MAX Script o prendere il codice utile direttalmente dalla finestra MAXScript Listerner.
In fine rimangono le ultime due righe di codice da analizzare:
RolloutFloterTemplate = newrolloutfloater “Function” 175 600
Come gia scritto in precedenza RolloutFloterTemplate è la variabile di riferimento che serve a realizzare la finestra della nostra applicazione. Si può notare come il metodo newrolloutfloater serve appunto per realizzare il nostro contenitore visivo , “Function” è il nome generale della finestra mentre i dai 175 e 600 si riferiscono rispettivamente a laghezza (width) e altezza (height) della finestra.
L’ultima parte del codice :
addrollout RolloutTemplate RolloutFloterTemplate
Non fa altro che aggiungere al RolloutFloterTemplate l'”indice” RolloutTemplate mediante il metodo addrollout , associando cosi alla finestra del nostro tool l’indice che contiene il pulsante.
Qui di seguito si può vedere il risultato visivo:
Una volta terminato il codice si consigli adi salvarlo in C:\Program Files\Autodesk\3ds Max 2015\scripts
cosi che andando a cliccare sulla voce Run Script … nel menu MAXScript posto solitamente in alto , si possa direttamente lanciare ed eseguire il nostro codice.
N.B.: Cliccando da tastier Ctrl + E si eseguirà in modo rapido il codice realizzato.
REALIZZIAMO UNO SCRIPT MCR (.mcr)
Come ho scritto all’inizio di questo articolo vedremo qui di seguito come realizzare uno script integrato nel software.
macroScript netkingZ3DsViewFront
category:”Custom”
buttontext:”F”
toolTip:””
(
on execute do
(
actionMan.executeAction 0 “40060”
)
)
Come fatto per il precedente codice analizzerò anche questo riga per riga , ricordando che per realizzare questo codice servirà sempre andare su New Script nel menu MAXScript.
Analizziamo la prima parte del codice:
macroScript netkingZ3DsViewFront
mediante il metodo macroScript si realizzerà la “finestra di contenimento” del nostro tool , mentre in questo specifico caso il nome della nostra applicazione sarà netkingZ3DsViewFront.
N.B.: Mi pare scontato dire che il nome assegnato può essere cambiato come meglio si crede.
Continuando l’analisi:
category:”Custom”
Altro non è che la specifica della categoria dove il codice deve essere “inserito” e dove è possibile ritrovarlo.
Qui devo aprire una doverosa parentesi. Andando nel menu in alto Customize e più precisamente alla voce Customize User Interface… potremo notare come si aprirà una finestra dedicata alla personalizzazione dell’interfaccia del software 3Ds Max. In alto nella finestra si potrà notare la voce ToolBar con un successivo elenco di categorie. Queste categorie saranno appunto le voce in relazione al codice qui sopra riportato.
Per comodità ho deciso di utilizzare la categoria Custom.
N.B.: Da notare che la dicitura Custom è diverso dallo scrivere custom (con la “c” minuscola) , quindi il consiglio che do è quello di scrivere in modo corretto i nomi delle categorie.
Il codice successivo:
buttontext:”F”
Non fa altro che assegnare un testo al nostro pulsante , mentre il toolTip:”” sarà un riempitivo di informazioni extra al passaggio del mouse sul pulsante senza che esso sia stato cliccato.
on execute do
(
Non fa altro che imporre al software di eseguire il codice contenuto al suo interno una volta cliccato sul pulsante.
Codice che è identico a quello che ho ripreso dal MAXScript Listener e che ho citato gia in precedenza nel paragrafo riguardante il tool realizzato in estensione MS:
actionMan.executeAction 0 “40060”
L’ultima azione da compiere è quella di realizzare “fisicamente” la finestra dove allocare il nostro tool.
Prima di fare questo ricordo sempre di salvare il file in questo percorso:
C:\Users\**NOMEUTENTE**\AppData\Local\Autodesk\3dsMax\2015 – 64bit\ENU\usermacros
con estenzione del file .mcr .
Come scritto poco sopra consiglio di seguire questo procedimento per realizzare la finestra di contenimento del vostro tool:
- Cliccare su Customize User Interface nel menu in alto alla voce Customize
- Nella nuova finestra nel menu in alto cliccare su ToolBars
- All’interno di questa sezione cercare alla voce Category la nostra categoria dove abbiamo “allocato” il tool (nel nostro esempio la categoria è: Custom)
- All’interno della categoria selezionata , se avrete salvato correttamente il file e senza errori di scrittura e compilazione, dovreste ritrovare il nome del macroscrip , cioè nel nostro esempio netkingZ3DsViewFront
Una volta compreso dove si trova il nostro tool sarà necessario creare il nostro pannello:
- Sempre rimanendo nella finestra ToolBars sulla destra della finestra possiamo notare il pulsante New … che serve per creare appunto un nuovo pannello
- Cliccliamo sul pulsante New … e diamo un nome al nostro pannello.
- Noteremo che ci verrà creata una finestra che se spostata può essere ancorata a vari punti della UI del software
- Adesso basterà selezionare e trascinare il nostro tool all’interno di quella finestra per associarci il tool da noi realizzato.
La speranza è quella che questo piccolo tutorial scritto possa aiutare qualcuno ad intraprendere qualche script e comprendere il funzionamento di 3Ds Max Script .
About The Author
netkingZ