In questo post analizzeremo la metodologia per creare nuovi preset in Tilemancer. Per una panoramica sul software, rimando al post dedicato.
Un preset è composto da una serie di nodi collegati tra loro, pronti per essere riutilizzati.
Nota: il seguente articolo fa riferimento alla versione 0.2.0
Come è composto un Preset Tilemancer
Per essere considerato come preset, un file .lua deve possedere due metodi:
init()
che inizializza il presetapply()
che viene chiamato una volta, quando il preset viene aggiunto nel canvas
Creando un file di questo genere:
ed inserendolo nella cartella Presets di Tilemancer, sarà possibile visualizzarlo nella lista, come elemento vuoto (senza nome) e la stessa cosa succederà una volta che sarà inserito nel canvas.
Il Metodo init()
All’interno del metodo init()
è possibile effettuare una serie di chiamate di inizializzazione, alcune delle quali pressoché obbligatorie per il buon funzionamento del preset: analizziamole nel dettaglio.
setName(name)
Questo metodo assegna un nome al preset, che verrà utilizzato per identificare l’elemento all’interno della lista dei preset.
- name: il nome del nodo
setDesc(description)
Assegna al preset un testo descrittivo.
- description: il testo della descrizione, visualizzato nel canvas quando si effettua un rollover sull’elemento nella lista dei preset
Il Metodo apply()
All’interno del metodo apply()
verranno effettuate tutte le operazioni che produrranno la sequenza di nodi e le loro connessioni. Analizziamo in dettaglio le operazioni disponibili.
addNode(filename, x, y)
Aggiunge un nodo al preset. Ogni nodo aggiunto con questo metodo, viene aggiunto in una lista per essere poi recuperato successivamente.
- filename: il nome del file del nodo da aggiungere (compresa l’estensione .lua)
- x: la coordinata x della posizione del nodo nel canvas
- y: la coordinata y della posizione del nodo nel canvas
setParameter(nodeIndex, parameterIndex, value)
Definisce il valore di un parametro all’interno di un nodo precedentemente aggiunto al canvas.
- nodeIndex: l’indice del nodo di riferimento, nella lista di quelli aggiunti nel canvas
- parameterIndex: l’indice del parametro nella lista di quelli aggiunti al nodo
- value: il valore del parametro
addConnection(nodeA, output, nodeB, input)
Collega l’input di un nodo con l’output di un altro nodo.
- nodeAIndex: l’indice del primo nodo di riferimento, nella lista di quelli aggiunti nel canvas
- outputIndex: l’indice dell’output da collegare
- nodeBIndex: l’indice del secondo nodo di riferimento, nella lista di quelli aggiunti nel canvas
- inputIndex: l’indice dell’input da collegare
Tutorial: Creare un Preset
In questo breve tutorial, ci proponiamo di creare un preset che generi l’effetto di una serie di cerchi nell’acqua.
In particolar modo, cercheremo di generare la seguente sequenza di nodi:
Fig. 1 – La sequenza di nodi
Creazione del file
Per prima cosa creiamo un file di testo chiamato water_ripples.lua, che andremo a salvare nella cartella Presets di Tilemancer.
All’interno di esso creiamo i due metodi init()
e function apply()
:
Setup del Preset
All’interno del metodo init()
andremo ad inserire, gli elementi per inizializzare il preset:
Come è possibile notare, sono stati inseriti nome e descrizione.
Aggiungere i Nodi
Andiamo ora ad aggiungere i nodi all’interno di apply()
che, ricordiamo, verrà eseguito una sola volta, nel momento in cui il preset sarà aggiunto nel canvas.
Se proviamo ad aggiungere il preset al canvas, otterremo la seguente configurazione:
Fig. 2 – I nodi aggiunti al canvas, sconnessi
Possiamo notare che i nodi sono stati aggiunti, ma sono sconnessi tra di loro: andiamo quindi ad aggiungere le connessioni.
Aggiungere le Connessioni
Come abbiamo visto in precedenza, le connessioni tra i vari nodi vengono create tramite il metodo addConnection(). Nel nostro caso ne serviranno 5:
- tre tra il primo nodo ed il secondo
- una tra il secondo nodo ed il terzo
- una tra il terzo nodo ed il quarto
Fig. 2 – I nodi connessi
I nodi sono ora connessi, ma i parametri vanno aggiustati secondo le nostre esigenze.
Modificare i parametri
La modifica dei parametri è, a questo punto, immediata:
Nel mio caso ho optato per le dimensioni della texture massima (pari a 64×64 pixel), perché restituisce un risultato meno sgranato.
Fig. 4 – Il preset completo