KULT Underground

una della più "antiche" e-zine italiane – attiva dal 1994

3D per il prossimo millennio

13 min read

3D per il prossimo millennio



A chi è appassionato di sistemi operativi alternativi a quelli Microsoft, in particolare Linux, probabilmente conosce già questo software. Per tutti quelli che non hanno mai lasciato casa Microsoft questo articolo vuole presentare un software completo sulla grafica tridimensionale, interessante anche per i professionisti del settore.
Blender è un programma nato per la creazione di modelli e immagini per giochi su console NeoGeo. Da quel che ho appurato dal sito, fallita la ditta che lo produceva uno dei programmatori Ton Roosendaal ha continuato a sviluppare il software in modo autonomo sotto la bandiera della Not A Number. Blender nato sotto SGI / IRIX è ora disponibile per molti OS1 tra cui BeOS, Windows 9X/NT, FreeBSD, Solaris e non per ultimo Linux. Ho provato prima la versione Linux e poi quella Windows, la cui prima versione è uscita in Aprile. Ora il rilascio delle versione è contemporanea per tutti gli OS1. Tra le due versioni citate consiglio la versione sotto Linux data la presenza di alcuni errori presenti nella conversione per l’OS1 della Microsoft.
A vantaggio della seconda il supporto Hardware delle schede 3D sotto Windows per la visualizzazione in OpenGL. Non ho testato tale supporto non avendo schede non OpenGL a disposizione ma credo che non sia particolarmente ottimizzato. Non sono comunque pochi i progetti di realizzazione di un server X-Windows sotto Linux che sfrutti tale accelerazione e a breve dovremmo vedere circolare qualcosa su Internet.
La prima cosa che mi ha colpito di Blender è la dimensione. Gli utenti del mondo Microsoft sono abituati a concepire 2 Mb come la più piccola dimensione che un software presente su Internet possa avere. Blender è un programma 3D completo in poco più di 900Kb. La seconda cosa che mi ha stupito è la velocità del motore di rendering, ma di questo ne parliamo in seguito.
La versione per Linux permette di scegliere tra quella con MESA statiche e quella con le dinamiche. La prima (con le librerie incluse negli 900Kb del programma) risulta la più veloce, oltre al fatto che installare e compilare con successo le MESA dinamiche non è una delle procedure più semplice per un utente Linux alle prime armi.
Blender non è certamente uno dei software più immediati che vi siano in giro. E’ da consigliare a chi della grafica 3D ne fa il suo pane quotidiano.
Consiglio vivamente a tutti di scaricare il manuale presente sul sito o di acquistare la versione cartacea al costo di 40 euro, circa 80.000 Lire . Notevole la grafica e la impaginazione di quest’ultimo, solo questo basterebbe per deciderne l’acquisto.

L’interfaccia.

Studiata per ovviare alla situazione tipica di una infinità di finestre sovrapposte che occupano in modo caotico lo spazio consentito. Tutte le sezione e le finestre di Blender si dividono, a vostro piacimento, l’area del monitor. Non c’è limite al numero di suddivisioni (finestre) che si possono avere. Potete configurare e salvare diversi lay-out di lavoro, ad esempio: un primo per modellare con le quattro finestre classiche (3 ortogonali e una prospettica ), un secondo con la camera e le finestre di animazione, un terzo per la gestione dei materiali e del render, e così via.
Tutte le barre di strumenti e le icone presenti in Blender sono scorrevoli per permettere la visualizzazione anche su finestre di larghezza ridotta; sono zoommabili, ovvero come per le finestre di lavoro è possibile avvicinarsi ai pulsanti nel caso di risoluzioni elevate in cui risulta difficile distinguere i vari pulsanti.
Tutto il programma è orientato all’uso di entrambe le mani, per cui ogni comando, sezione o finestra oltre ad essere attivabile via mouse con un determinato pulsante, ha un suo acceleratore da tastiera (hotkey2). Tutti e tre i pulsanti del mouse intervengono nel funzionamento, che lo rendono un requisito indispensabile.
Il programma permette pure di avere più scene aperte contemporaneamente, mantenendole separate.
Le sezioni o finestre di Blender sono 9 oltre a due sezioni, una fissa in alto (fissa perché non alterabile ma comunque nascondibile ) per le opzioni del programma e una variabile in basso con le opzioni dei vari strumenti.
Le finestre più importanti sono: vista schematica (Shift-F9), le classiche 3D prospettiche e ortogonali (Shift-F5), una di gestione delle curve di animazione (Shift-F6), una per il posizionamento di una immagine o una sequenza di esse sotto le viste prospettiche, tecnicamente il rotoscoping (Shift-F7), una di post-produzione per il montaggio delle animazioni (Shift-F7), una di selezione per nome degli oggetti presenti in una scena (Shift-F4).

In generale la gestione dei tasti del mouse e delle più comuni hotkey2 da tastiera non varia per le varie finestre. Un esempio per tutti: il pulsante destro del mouse seleziona gli oggetti nelle finestre ortogonali, nella perspettica o nella schematica, o le curve di animazione nella rispettiva finestra. Il pulsante sinistro ha un utilizzo classico: attivazione dei pulsanti, funzioni, variazione dei parametri tramite cursori, posizionamento e trasformazioni degli oggetti. Con il pulsante sinistro è possibile posizionale un cursore nelle finestre ortogonali e prospettiche che funge da riferimento per il posizionamento di nuove geometrie (Shift-a) o per la creazione di oggetti di rivoluzione (Spin). Con Shift-a si inserisce un oggetto nelle finestre 3D e una animazione nella sezione di post-produzione. Con B si attiva una modalità di selezione nelle finestre 3D (a rettangolo o a pennello) che risulta uguale sia nella sezione di post-produzione che nella sezione di animazione. Stessa cosa per il Tab che nelle finestre 3D permette la selezione e modifica dei componenti di un oggetto (vertici, facce, CV, ecc.) mentre nella sezione di animazione permette la modifica delle tangenti della curva in uno o più punti chiamati chiavi di animazione (keyframes).
Blender gestisce gli "stroke" ovvero a seconda del movimento che fate con il mouse attivate una differente funzione di trasformazione degli oggetti selezionati : un arco per la rotazione, un movimento secco in una direzione per la traslazione o una "V" per il ridimensionamento. Il pulsante di mezzo ha la funzione di limitare le trasformazioni lungo un asse o la funzione di rotazione nelle finestre 3D e con il Ctrl la funzione di zoom in tutte le finestre.
Blender non aggiorna in tempo reale i risultati delle nostre modifiche fino a che non si completata l’operazione, sia essa il cambiamento di un parametro, la modifica di una curva di animazione o estrusione, il colore di un materiale, ecc. A volte occorre forzare tale aggiornamento uscendo e rientrando in modalità di Editing (vedi sotto) o per la visualizzazione in shaded uscire (z) e rientrare con z o Ctrl-z.

Editing e Modelling

Con il tasto Tab si passa dalla gestione degli oggetti alla gestione dei componenti di essi e viceversa. Per cui sarà possibile modellare un oggetto nella maniera convenzionale, muovendone ad esempio i vertici. Con Ctrl-pulsante sinistro del mouse sarà possibile aggiungere vertici o CV partendo dall’ultimo di essi selezionato.
Blender supporta estrusioni libere, lungo un asse cartesiano o una curva, bevel degli spigoli, creazione e eliminazione di singoli componenti quali vertici, facce o spigoli o CV. Permette di creare oggetti di rivoluzione (Spin). Ha funzioni per ammorbidire la geometria (smooth), eliminazione di elementi doppi o sovrapposti, ricostruzione di curve e superfici NURBS, variazione della pesatura dei CV in una NURBS, conversione di NURBS in b-spline, poly e viceversa.
Per duplicare un oggetto basta Shift-d ma se usiamo Alt-d (duplicazione dell’intero albero di costruzione) Blender duplica anche tutti i modificatori tra cui ad esempio un lattice collegato all’oggetto da duplicare.
Blender supporta le gerarchie sia per gli oggetti che per la associazione di tali a scheletri. Per cui sarà possibile agganciare ( in gergo parentare ) oggetti uno all’altro in modo che l’ultimo selezionato (Padre) influenzi tutti quelli sotto di lui (Figli) ma non avvenga il contrario. Supporta anche la possibilità di parentare un oggetto ad un vertice o CV di un altro.
Blender gestisce i layer (livelli), fino a 20, per l’organizzazione degli oggetti. Ognuno di essi può essere spostato da un livello all’altro senza problemi con il tasto M.
Una visione rotoscopica permette di posizionare una immagine o una sequenza di esse, sotto una delle viste ortogonali per ricalcare una sagoma.

Primitive

Blender supporta 3 tipi di primitive : poligoni (Mesh), Bezier spline e NURBS. Il testo è trattato come un elemento a parte. La struttura degli oggetti di Blender ricorda altri software 3D parametrici, in cui ogni primitiva è formata da una parte generatrice in cui sono contenute informazioni per la creazione della primitiva e una seconda che rappresenta l’oggetto vero e proprio. Sarà quindi possibile avere più oggetti oggetti creati da un unico generatore in modo che ogni modifica apportata ad uno di essi sia ripetuta per tutti gli altri oggetti collegati. Il che rappresenta la possibilità di creare istanze di un oggetto. Ogni modifica applicata ai vertici di un oggetto, poiché ciò interessa il generatore, viene ripetuta a tutti gli altri.

Poligoni:
Se decidete di aggiungere elementi ad un oggetto sappiate che Blender non crea o rimuove facce in modo automatico. Una volta creata una sequenza di punti per aggiungere una faccia ad un poligono si dovrà specificare a Blender che quei punti devono diventare una faccia. Giustamente Blender sa quali punti usare e in che modo unirli per creare le facce da voi pensate. Basterà selezionare i punti di una faccia e premere F.
RemDoubles, avendo selezionato dei vertici a priore, sostituisce con un solo punto tutti i punti che occupano lo stesso posto nello spazio e fonde i segmenti che avevano tali punti in comune.

Spline:
Il comando Cyclic permette di rendere una curva disegnata chiusa. Con il comando BevOb è possibile creare oggetti tramite la estrusione di un profilo lungo un percorso. Nello specifico è ‘ possibile creare oggetti di rivoluzione utilizzando come profilo di estrusione un cerchio. Questa funzione permette di creare svariate tipologie di oggetti quali rotaie, profilati, tubolari, parafanghi, bicchieri, vasi, ecc.


NURBS :
I comandi CyclicU e CyclicV permettono di chiudere la superficie lungo le U e le V di essa. Blender non possiede funzioni di Trim, Brail o estrazione di curve isoparametriche. Anche qui valgono le considerazioni fatte per le curve di tipo Spline sulla possibilità di creare oggetti per estrusione di un profilo.

Testo:
Blender legge un qualunque font di tipo Adobe Type 1 (font di tipo Postscript). Possiede la funzione di deformare una scritta in base ad una curva. Ottime la qualità del bevel sul testo.
Ho notato che il valore ottimo per un bevel è intorno al 0.040 per il secondo valore di estrusione. Potete tranquillamente tenere il valore del bevel al massimo (10) senza appesantire particolarmente il render. Il manuale cita la possibilità di convertire il testo in curve da poi modellare con Ctrl-C ma devo dire che ho provato più volte tale funzione senza esiti.

Particelle

Un qualunque oggetto poligonale può divenire la sorgente di particelle. Una volta attivato l’effetto particelle nella sezione di animazione (New Effect -> Build -> Particle) e avendo specificato un materiale di tipo Halo l’oggetto perde la sua forma e viene rappresentato come una nuvola di punti. Questi rappresentano il generatore di particelle. Settando in modo adeguato i parametri del materiale si possono ottenere effetti molto interessanti, come tentacoli plasmatici, fumo, fuoco, effetti pirotecnici, acqua, blob gelatinosi. Anche in questo caso la flessibilità dei materiali e un rapido render aiutano moltissimo ad ottenere l’effetto desiderato. Le particelle possono essere influenzate da forze, hanno una loro durata (lifespan), e molti altri parametri che permettono di ottenere gli effetti più disparati. L’animazione avviene tramite l’inserimento di chiavi sul generatore come se si trattasse di un oggetto convenzionale.


Materiali

Blender possiede una serie di materiali procedurali (calcolati) al suo interno. Questo aggiunto alla possibilità di usare texture (immagini) dei formati più comuni.
Ogni oggetto può avere più materiali. Esistono funzioni di posizionamento e di ridimensione delle texture. Blender gestisce texture animate (sequenza di fotogrammi), il canale di trasparenza (alpha channel) se presente se no lo si può creare analizzando il colore più comune. Possiede filtri di campionamento delle immagini, rotazione e ridimensionamento e calibrazione dei colori.
Ogni texture, procedurale o no, di un materiale può essere composta con le precedenti e con le caratteristiche ottiche del materiale stesso secondo 4 modi: Miscelazione (Mix), Moltiplica (Mul), Addizione (Add) e Sottrazione (Sub). Ognuna di queste texture può essere riferita ad aspetti differenti del materiale come il colore primario, quello speculare, effetti di rilievo (Bump), emissione di luce, ecc. Attenzione alla applicazione di una texture sul Bump (NOR) poiché’ molto spesso sono troppo piccole per essere visualizzate, per cui scalate il materiale con i pulsanti sizeX, sizeZ, sizeY.
La quantità di combinazioni è tanto elevata da poter creare i più disparati materiali ed effetti.

Painter

Al suo interno Blender ha una versione semplificata di un programma painting 3D. Si tratta di un Vertex Painter ovvero di un pennello che cambia il colore dei vertici rispetto quello del materiale dell’oggetto in base un colore scelto. Basta attivare il pulsante VerCol tra le opzioni dell’oggetto. In modalità "shaded" con la gestione delle luci presenti nella scena (Ctrl-Z) su un oggetto poligonale è possibile disegnare con un determinato colore in modo da creare effetti di invecchiamento, di sporco, bruciature, plasma, ferro fuso, ecc. Anche qui come per i materiali si può’ applicare il colore su quello di base dell’oggetto come Miscelazione (Mix), Moltiplica (Mul), Addizione (Add) e Sottrazione (Sub).

Animazione

La finestra di animazione si basa sulle curve chiamate "Ipocurve". Queste si creano con l’inserimento di chiavi di animazione (keyframe) in un determinato fotogramma. Una gestione piuttosto convenzionale sia per come inserire le chiavi che per la gestione di esse. Sarà quindi possibile spostare singole chiavi o gruppi di esse, alterare la forma delle curve (lineare, discreta, bspline), inserire o cancellare chiavi, ecc.
Una qualunque curva, una volta attivato il bottone CurvePath, diventerà un percorso di animazione. Questo vale anche se la curva in questione viene poi estrusa e/o beveled, o anche modellata aggiungendo o eliminando vertici.
Siccome in Blender ogni curva nasce come vincolata in un piano se si vuole creare un percorso nello spazio si deve attivare il bottone 3D nelle opzioni dell’oggetto. Analogamente è possibile creare un oggetto chiamato Path che altro non è che una spline senza vincoli. In entrambi i casi si potrà assegnare ad un oggetto tale curva come percorso. Esistono funzioni di Follow per tale percorso (immaginate un tubo fatto scorrere su un filo rigido, esso scorrerà sul filo mantenendo tangente ad esso il suo asse primario) in cui impostare asse di direzione dello spostamento e il vettore che indica l’alto (up-vector).
Analogamente è possibile animare gli elementi di un oggetti come vertici di un poligono, i CV di una NURBS o i vertici di un lattice.
I lattici sono gabbie di deformazione la cui suddivisione è variabile lungo i 3 assi cartesiani. Blender permette anche di collegare lattici alle particelle.

Gestione delle scene

Avviene tramite 2 sezione : Salva e Carica scena. Nella versione per Windows (1.63) ho notato un difetto per cui non risultava un file appena salvato se veniva ricaricato dalla stessa finestra. Il problema scompare se si carica da un altra finestra. Una terza sezione permette di salvare l’ultimo render eseguito.
L’importazione e l’esportazione in altri formati è stata implementata di recente, ma solo per gli utenti registrati. Questa, oltre pochissime nuove caratteristiche, sono escluse dalla versione gratuita. Una volta registrati sarà possibile ad esempio importare ed esportare in DXF (noto formato della Autodesk).

Rendering

La gestione delle viste di rendering (camera) non è particolarmente complessa, supportano i clipping plane (piani ortogonali alla camera di limitazione della vista) e il tipo di obiettivo. Effetti come Riflessi di lente o di glow vengono creati con un apposito materiale. L’effetto risultante è molto buono. Blender ha quattro tipi di luci : puntiforme (Lamp), faro (Spot), all’infinito (Sun), direzionale (Hemi).
Le luci hanno una buona quantità di parametri e caratteristiche che le rendono assieme ai materiali uno dei punti di forza del programma. Ogni luce può proiettare uno o più materiali procedurali e non (fino a 6 ), tra di loro combinati, essere volumetrica e sempre restando entro tempi di rendering molto bassi creare ombre morbide e sfumate.
Come ho accennato sopra il render di Blender è velocissimo. Ho fatto alcune prove e sono rimasto strabiliato. Ho eseguito alcune prove tra cui una : 25 metaball con mappature diverse per Specular, Trasparenza, ecc. tutte di tipo procedurale (calcolate) oltre a 5 oggetti tra poligonale e NURBS mappati anche essi con materiali procedurali e 3 luci di cui una con luce volumetrica e l’altra con proiezione di texture; a questo aggiungo una nebbia di tipo volumetrico. Bene i tempi di rendering variando i tipi di materiali e gli oggetti avendo messo al massimo i valori si ammorbidimento delle ombre, i livelli di campionamento dell’anti-aliasing e la qualità totale su una risoluzione PAL (720×576) non superava i 40 secondi (a dire il vero raramente superavo i 30).
Come spesso sento i motori di rendering sono criticati e/o snobbati per la mancanza di un effetto o di un caratteristica (radiosity, caustiche, effetti volumetrici, spessore dei materiali, ecc.). Ritengo importante invece valutare come si comportano nelle scene più comuni, i tempi di rendering, la qualità generale e la affidabilità nelle scene più critiche. Nel motore di Blender ho apprezzato soprattutto quest’ultima caratteristica assieme ad una ottima qualità delle ombre e alla versatilità dei materiali.

Post-produzione

Blender presenta al suo interno anche una sezione di post-produzione per montare più sequenze di fotogrammi con effetti di fading (dissolvenza). E’ molto semplice ma efficace. Notare una opzione molto utile che permette di montare assieme a immagini o sequenze di esse il rendering della scena corrente senza doverlo eseguire in precedenza. Grazie al velocissimo motore di rendering si può in tempo reale vedere un effetto dissolvenza tra una sequenza di fotogrammi salvata su disco e il rendering della corrente scena, sia essa una singola immagine o una animazione.
Per operazioni molto semplice di montaggio la presenza di tale sezione evita l’acquisto di un programma dedicato.

Conclusioni:
Blender è un software adatto a chi del 3D fa il suo pane quotidiano. Non è sicuramente uno strumento adatto a chi è alle prime armi con questo settore, perché non concede nulla all’utente. E’ stato pensato per la rapidità e non l’intuitività. La produttività è massima sia in fase di creazione, editing che in fase di rendering. La possibilità’ di avere più lay-out, la gestione a layer, più scene aperte indipendenti tra loro, lo rende molto flessibile. La qualità e velocità del rendering lo mette al livello di software più evoluti, soprattutto con la recente l’implementazione delle routine di importazione da altri formati 3D.
Ho già utilizzato questo software per fare semplici animazioni o redering di interni data la qualità delle ombre e la velocità di del rendering anche con i parametri di anti-aliasing al massimo. Devo dire che nessun altro software che conosco è dotato di questa esplosiva combinazione il che rende Blender uno strumento unico nel genere.

Note Web:
Home Page: http://www.blender.nl


Gianluca Meassi
wkult@pianeta.it o gmeassi@erlug.linux.it

1
Sistema Operativo dall’inglese Operative System.

2
Acceleratore da tastiera. Tasto che funge come sostitutivo di un comando o della pressione di un pulsante.

Commenta