Structure Synth utilizza un linguaggio descrittivo detto EisenScript per generare strutture 3D complesse.
Le strutture generate possono essere successivamente esportate come .obj, quindi importate in blender o in un raytracer per modificarle, utilizzarle in scene e renderizzarle.
Le primitive di disegno attualmente implementate sono :
box, una scatola
grid, una griglia
sphere, una sfera
line, una linea
point un punto
triangle un triangolo
Le primitive vengono eseguite in uno stato (esattamente come funzionava LOGO), e dallo stato dipendono posizione, rotazione e colore, gli stati vengono modificati da trasformazioni di stato.
I cambiamenti di stato vengono dichiarati tra parentesi graffe {}, le traslazioni vengono indicate con la quantità e l'asse su cui traslare {x 1 y 2} sposterà il centro di 1 lungo l'asse x e di 2 lungo l'asse y,
le rotazioni con rx,ry e rz con le quantità in gradi, s per scalare.
Le azioni possono essere iterate mettendo avanti il numero di iterazioni e *.
Ad esempio, 3 * {x 2 y 3} box disegnerà 3 scatole una a (2,3) una a (4,6) ed una a (6,9).
Anche i colori possono essere trasformati, Structure Synth utilizza HSV per la rappresentazione (Hue, Saturation and Value), qunindi le modifiche saranno hue, sat e b.
Structure Synth permette la definizione di regole, grazie alle quali si possono creare strutture complesse, le regole create si possono invocare come tutte le primitive, e possono chiamare anche ricorsivamente se stesse.
La ricorsione termina perchè è settato il valore di default per il numero massimo di iterazioni a 1000, modificabile con set maxdepth valore, la stesso può essere ottenuto controllando il massimo numero di oggetto generati (set maxobjects).
La stessa regola può essere definita più di una volta con lo stesso nome e trasformazioni differenti, alla chiamata, l'implementazione scelta sarà casuale.
Structure Synth è una estensione di Context Free Art, un altro software open source che genera immagini bidimensionali grazie ad un linguaggio dichiarativo chiamato CFDG (Context Free Designing Grammar)
A questo punto mi viene naturale prendere uno degli esempi, eseguirlo ed importarlo in Blender, userò Arc Sphere.es
Importato in blender ne modifico i materiali mettendoci due HALO e un solid con colori tra il giallo ed il rosso, con il node compositing creo un fotomontaggio con la mia mano e l'oggetto incendiato che lievita sul mio palmo per esempio.
Mi è anche venuto in mente di farne un rendering unbiased (fotorealistico), per fare questo ho importato l'obj in blender, ho settato YafaRay come motore di rendering, ho scelto tre materiali di tipo Coated Glossy per l'oggetto importato, con tre colori differenti, ho piazzato un paio di luci ed ho lanciato un rendering con illuminazione direct lighting con photon map ed ambient occlusion durato una mezz'oretta, ottenendo la figura di sotto.
A parte le varie prove che si possono fare, limitate solo dalla fantasia, devo dire che il linguaggio mi sembra un pò scarno, mi sarebbe piaciuto avere primitive trigonometriche e potere applicare le trasformazione non solo ai numeri ma anche a delle funzioni, comunque il prodotto è molto simpatico e abbastanza potente, malgrado queste, a mio avviso, piccole limitazioni.
Nessun commento:
Posta un commento