E’ ora di sfatare un mito una volta per tutte: quello che vuole GNU/ Linux non adatto alla grafica 3D o meglio, quello secondo il quale non esistono programmi per svolgere questo tipo di attività. Per quanto riguarda la grafica 3D a livello “industriale”, non ci sono problemi: gli effetti speciali di numerosi film di successo elaborati su piattaforma GNU/Linux ne sono la prova. Ma noi abbiamo deciso di dimostrare che è pronto anche per la grafica 3D professionale ma più “umana”, con una vasta offerta di applicazioni gratuite e commerciali che spaziano dall’animazione all’arredamento. Si tratta perlopiù di software capaci di garantire risultati eccellenti con la possibilità di allestire una workstation interamente dedicata alla grafica 3D. In alcuni casi si tratta di programmi Open Source, o quasi, a seconda delle necessità. Nel prosieguo dell’articolo comprenderemo il significato di quel “quasi”. Laddove possibile, infatti, daremo l’assoluta precedenza al software Open Source evitando, però, di “chiudere” la strada a quei software proprietari validi e che prevedono anche una versione per GNU/Linux (gli “integralismi” non ci piacciono, in tutte le forme e colori). Data la vastità dell’argomento non avremo la “presunzione” di scrivere una schiera di tutorial da poter applicare a specifiche circostanze: l’obiettivo principale sarà quello di fornire un’idea della attuale situazione della grafica 3D in ambiente GNU/Linux. Tutto questo per fornire agli utenti che decidono di cimentarsi in questo “colorato” campo con GNU/Linux, tutti gli elementi per iniziare nel migliore dei modi.
I software utilizzati
L’offerta di programmi orientati alla grafica è molto ampia, pertanto abbiamo cercato di prendere il meglio con la speranza di non aver lasciato fuori qualche “perla”, soprattutto Open Source. Naturalmente un certo numero di programmi rimarrà, per motivi di spazio, escluso da questa rassegna, ma ciò non significa assolutamente che le loro caratteristiche non siamo idonee per i motivi per i quali essi sono stati progettati anche perché la scelta di ogni singolo programma nella “catena” grafica è funzione delle proprie necessità e del risultato finale che si vuole conseguire. Gli utenti, per la maggior parte dei casi, non sono dei programmatori e il loro principale obiettivo è avere (o provare) un programma per verificare (o trovare) la soluzione più adatta al proprio progetto. Per poter creare oggetti tridimensionali occorrono un certo numero di passi e ci si può fermare solo quando un risultato prossimo al nostro obiettivo è stato raggiunto. Sinteticamente, possiamo riassumere i passaggi che vanno dalla creazione di un modello “scheletrico” fino al file di uscita che può essere, a seconda dei casi, un’immagine statica in svariati formati oppure un’animazione (ad esempio un film).
Le soluzioni proprietarie per GNU/Linux Solo per citare i software più famosi abbiamo: 3Delight (www.3delight.com), Gelato, specifico per le schede nVidia, (www. nvidia.com/page/gz_home.html) e i “superbi” Mental ray (www.mentalimages.com) e Maxwell Render (www.maxwellrender.com), il primo dei quali utilizzato da programmi del calibro di Maya e Softimage|XSI.I “motori chiusi”
Renderer, Il “motore” grafico
Trattare tutti i motori di render nonché riportarne le “rese grafiche” attraverso le immagini è praticamente impossibile. Ci limitiamo, allora, principalmente a progetti Open Source e nel box “I motori chiusi” ne illustreremo alcuni proprietari, anche perché entrambi i gruppi sono utilizzabili sia con programmi Open Source che commerciali eseguibili su GNU/Linux. Facciamo presente che alcuni programmi di “categoria superiore” potrebbero far uso di un proprio motore di rendering. Abbiamo utilizzato il termine “categorie superiori” perché, nella catena grafica, la renderizzazione è l’ultimo anello e come si può intuire è anche il processo più “intenso” dal punto di vista computazionale e per questo assistito anche dal processore grafico della scheda video utilizzata (GPU – Graphics Processing Unit). Ogni motore basa il suo funzionamento su particolari algoritmi e su un linguaggio di descrizione delle scene che definisce delle specifiche, alcune delle quali sono lo stato dell’arte che dettano la creazione per le scene 3D in ambiente cinematografico (leggete il box “Algoritmi e specifiche”). Senza voler assolutamente entrare in dettagli di analisi matematica e fisica ottica alla base di questi complessi algoritmi di rendering, citiamo alcuni dei motori Open Source più noti e visto che lo stato dell’arte è dettato dalle specifiche RenderMan allora non possiamo che riportare due motori In seguito ci occuperemo di altri motori di rendering in “azione”. A conclusione di questa prima carrellata di programmi, vogliamo segnalare una nota su POV-Ray. è definito come un programma Open Source (vengono distribuiti anche i sorgenti), ma l’uso di cui se ne fa è “vincolato” dalla licenza “POV-Ray License”che vi invitiamo a leggere prima di renderizzare le vostre creazioni con questo motore (www. povray.org/povlegal.html).
Strumenti per la modellazione
Un gradino sopra i motori di rendering ci sono i programmi utilizzati per produrre un modello 3D a partire da una sua definizione in due dimensioni. Anche per programmi di questo tipo, diversamente da quello che si potrebbe pensare, GNU/ Linux non è secondo a nessun altro sistema operativo. Senza voler fare nomi “eclatanti” (ad esempio commerciali), rimaniamo in una categoria di programmi più “abbordabili” in grado, però, di fornire un modellatore 3D semplice da usare e sufficientemente potente da garantire modelli realistici. In questo ambito di programmi, un riferimento di modellazione 3D per Microsoft Windows è il programma AC3D della software house Invis (www. inivis.com). Le sue principali caratteristiche sono la compatibilità con un elevato numero di formati e il supporto a numerosi motori di rendering. Poiché la Invis rilascia anche la versione per GNU/Linux (trial, in prova per 14 giorni), quest’ultima capacità è, in verità poco utile, visto che i motori di rendering supportati sono relativi a programmi proprietari la maggior parte dei quali non ha alcun porting per GNU/Linux. Ad ogni modo è garantito il supporto al motore POV-Ray ovvero ad un tool a linea di comando che definisce la scena utilizzando un linguaggio di scripting nativo elaborandolo successivamente con l’algoritmo di Ray tracing per la definizione grafica dell’ambiente. Potrebbe essere “scomodo” per molte persone descrivere un modello utilizzando un linguaggio di programmazione ed è per questo motivo che sono nati diversi tool grafici attraverso i quali è possibile editare complesse scene senza metter mano ad una sola linea di codice. Fortunatamente esistono ottime alternative anche Open Source le quali appoggiandosi ai diversi motori di rendering permettono di disegnare modelli molto complessi. Naturalmente il confronto tra i diversi programmi (Open Source e non) non potrà che avvenire sullo stesso motore di rendering e in questo caso un ottimo tool, oltremodo integrato nell’ambiente KDE, è KpovModeler .
I più noti e i software che li producono La grafica 3D è entrata di prepotenza nella pubblicità, nei film e nella progettazione e con essa sono nati numerosi formati di file. Per citarne alcuni: dxf (Data eXchange Format (porting dati tra diversi programmi CAD), 3ds (3DS Max), pov (POV-Ray), lwo (Lightwave), hpgl e hpgl2 (plotting in tutte le dimensioni in alta qualità), hrc (SoftImages|XSI), ndo (Nendo), obj (Wavefront), ai (Adobe Illutsrator), bvh (Biovision Hierarchy).Formati dei File
Animazione 3D
Ai professionisti della grafica provenienti da altri sistemi operativi diversi da GNU/Linux nomi come 3ds Max, Maya e SoftImage|XSI non suonano nuovi e, anzi, potrebbero risultare programmi abbastanza familiari anche nell’uso. Facciamo presente che questi software “importanti” (ad eccezione di 3ds Max) vengono rilasciati anche per GNU/Linux e chi volesse provarli può scaricarne le versioni demo previa compilazione di una form a partire dalla sezione download dei rispettivi siti. La domanda a questo punto è: esistono programmi analoghi Open Source? Fermo restando che quando si parla di “gestione” della grafica 3D non limitandosi più alla “sola” modellazione ma passando alla realizzazione di una scena completa (un’animazione) si sta indicando una categoria di programmi tra i più complessi in assoluto perché attraverso le proprie caratteristiche, che nascondono complessi algoritmi per ogni singola funzione, devono ricreare nella maniera più fedele possibile la realtà che circonda l’ambientazione della scena (luci e ombre sugli/degli oggetti, proprietà degli stessi, riflessioni, etc). Premesso questo, quando si parla di animazione 3D professionale, in ambito Open Source il pensiero va subito ad un nome: Blender. La storia di Blender è abbastanza complessa. La sua nascita risale al 1998 a opera della software house NaN (Not a Number) interna ad uno studio di animazione olandese. Fino al 2001 Blender era un software free, ma non Open Source. Alla fine del 2002, in seguito a problemi di carattere economico e dopo una estenuante raccolta fondi, nasce la Blender Foundation che porta subito al rilascio del programma con licenza Open Source a partire dalla versione 2.25. Da questo momento una schiera di programmatori entusiasti ha iniziato a lavorare sui sorgenti creando, al tempo stesso, una folta comunità di appassionati del settore (leggere il box “Blender community”). Blender oggi è disponibile praticamente per tutte le distribuzioni oltre ad essere multipiattaforma, infatti, può essere utilizzato sui diversi sistemi operativi tra cui Windows e Mac OS X. Per poterne descrivere solo le principali caratteristiche del programma e ogni singola funzione, occorrerebbero decine di pagine e allora, rimanendo nel “generico”, possiamo fare un elenco parziale rimandando gli interessati alle più piccole e intime funzionalità al sito del progetto. Modellazione al top e alla pari di sistemi software proprietari (e costosi!). Ottimo sistema di rendering: è possibile scegliere tra un motore interno o il renderizzatore Yafray il quale ha raggiunto la versione 0.0.9 e se pensate che un numero di versione così basso possa significare “qualità mediocre”, vi sbagliate! Per convincervi provate a vedere, dal link presente nella home page di Yafray, il cortometraggio di Martin White “The goat, the boy and the sun” animato e modellato con Blender e renderizzato con Yafray! In più aggiungiamo un Game Engine che permette di compilare videogiochi, il formato del file è unico per tutte le scene, le immagini e i suoni, e l’estensione è .blend. Supporta molti file per il formato 2D e 3D, tra i quali ac3d, lwo, bvh, ndo, obj, wings e dxf, per i formati multimediali jpg, png, tga, gif, tiff e avi, e per ognuno di essi è possibile definirne le varie opzioni e, laddove possibile, i livelli di compressione, codec e filtri vari. Il numero di funzioni è molto alto e non sempre facile da padroneggiare/gestire in ogni aspetto. Il file in questione è relativ. blend incluso nel pacchetto degli esempi relativi alle animazioni, posizionati nella directory /usr/share/doc/blender/ test244/animation su Mandriva 2008.1. Se si prova ad avviare l’animazione (tasti freccia destra e freccia sinistra) è possibile vedere la maschera cambiare di espressione! Qualora si volesse qualcosa di più semplice dal punto di vista dell’uso e più “leggero” nelle caratteristiche, si potrebbe optare per Moonlight|3D (www. moonlight3d.eu/cms), che si appoggia al motore Sunflow per il rendering, oppure K-3D (www.k-3d.org), che può far uso di Yafray o di alcuni motori RenderMancompliant. Un’altra possibile soluzione (commerciale) potrebbe essere RealSoft3D (www.realsoft.com).
Algoritmi e specifiche
Radiosity e Ray tracing quelli più utilizzati
Il primo basa il funzionamento su formule adoperate in campo energetico “adattate”, in questo caso, a riflessioni/assorbimenti della luce. Non tiene conto, però, delle riflessioni/ rifrazioni dirette ed è per questo motivo che per ottenere immagini più realistiche viene utilizzato l’algoritmo Ray tracing poiché esso costruisce l’immagine tracciando il percorso di ogni singolo raggio di luce. Sono state scritte, ad opera della Pixar (www. pixar.com), opportune specifiche dette RenderMan (https://renderman.pixar.com) e i motori che le adottano sono definiti RenderMan-compliant. Per gli interessati è possibile scaricare il PDF all’indirizzo https://renderman. pixar.com/products/rispec/rispec_pdf/ RISpec3_2.pdf.
Altri modellatori 3D
Le alternative a KPov Modeler sono molto numerose
Per chi usa un ambiente desktop differente da KDE o un motore di rendering alternativo a POV-Ray, sono disponibili Yaprm (Yet Another Pov Ray Modeler http:// yaprm.sourceforge.net), Ayam (licenza BSD – www.ayam3d.org) in grado di utilizzare diversi motori anche proprietari e tra i quali Gelato, Wings3D (http://wings.sourceforge. net) e Art of illusion scritto in Java (www.artofillusion.org). Segnaliamo anche la soluzione proprietaria Equinox3d (www. equinox3d.com).
Figure umane in 3D
Esistono applicativi “specializzati” nella creazione (modellazione e animazione) di manichini 3D, sia maschili che femminili, nonché di scheletri e animali. Programmi di questo tipo devono essere in grado di fornire una nutrita libreria di capigliature, abbigliamento e altri piccoli particolari capaci di rendere variegata e realistica la creazione dei soggetti. A tutti gli effetti questi programmi sono dei “modeler” ai quali sono state aggiunte una serie di librerie dedicate e un’interfaccia verso un motore di rendering. Programmi rappresentativi per Microsoft Windows sono Poser (http://graphics.smithmicro. com/article/articleview/1156/1/281) e DAZ Studio (www.daz3d.com). Purtroppo questi programmi, oltre ad essere commerciali, non sono disponibili per GNU/Linux. Allora noi non possiamo usufruire di programmi di questo tipo? In parte si e in parte no! In questo caso ci occuperemo di un programma agli “esordi” e la scelta è ricaduta su di esso affinché sia possibile conoscerlo e (per i programmatori) migliorarne le caratteristiche. Il programma in questione è QAvimator. Si tratta di un front end grafico dell’editor Avimator originariamente scritto per l’uso in Second Life come semplice alternativa a software commerciali capaci di creare modelli più sofisticati (Poser e Maya). In rete sono disponibili diversi tutorial che illustrano come creare dei modelli e importarli in Second Life (ad esempio http://it.youtube. com/watch?v=h_-3c_aC-O4&NR=1). L’unico formato supportato, al momento, è il bvh e le possibilità di editing sono limitate (ad esempio non è possibile vestire il manichino, adottare una capigliatura etc). Questo, però, non significa che non è possibile creare figure più complesse e complete; è sufficiente orientarsi verso un altro programma sempre Open Source nato da una “costola” di Blender e ora completamente “stand alone”: Make Human (leggere il box omonimo). Una possibile alternativa potrebbe essere, il programma freeware Poseray (http://mysite. verizon.net/sfg0000), ma bisogna installarlo utilizzando Wine (www.winehq.org).
Blender community
Vasta e molto attiva. Tipico dell’Open Source
I siti dedicati a questo potente modellatore/ animatore sono numerosi e di ottima qualità. In ognuno di essi è possibile trovare esempi, tutorial e documentazione di carattere generale. Solo per citarne alcuni: www. blender.it per la comunità italiana, www. cgtutorials.com/c3/Blender/top/1 dove è possibile trovare diversi tutorial per padroneggiare le funzioni principali e l’interfaccia, e, infine il progetto GNOS (Graphics Network Open Source) che ha come obiettivo quello di riunire tutte le persone che utilizzano Blender anche per il proprio lavoro www. blender3d.it.
C’è anche make human
Il migliore per creare forme umane in 3D con GNU/Linux
Make Human è un software di modellazione Open Source (distribuito con licenza GNU GPL) che permette di modellare un manichino in pochi passi grazie ad innovative caratteristiche che permettono una simulazione avanzata della muscolatura. In questo momento è disponibile la versione 0.9.1rc1, e dalla 0.9.2 gli sviluppatori garantiscono ulteriori miglioramenti e nuove caratteristiche. Fa uso del motore RenderMan-compliant Aqsis e può esportare nei formati collada (www.collada.org) e obj. Per saperne di più www.dedalo-3d.com.
Il disegno assistito o CAD
Il “tallone d’Achille” dei sistemi GNU/Linux sono da sempre i programmi CAD (Computer Aided Design, in italiano disegno assistito dal calcolatore) capaci di competere con l’attuale standard “imposto” dal programma più rappresentativo per i sistemi Microsoft Windows ovvero AutoCAD (www.autodesk.it). Con un po’ di amarezza dobbiamo constatare che se restiamo nell’ambito dei progetti Open Source il gap rimane ancora molto alto anche se, in funzione delle proprie necessità, è possibile provare uno degli applicativi liberi presenti e vedere se le caratteristiche ci permettono di soddisfare il nostro target (nel box “CAD alternativi” sono riportate alcune possibili scelte commerciali e non). Se, invece, volgiamo lo sguardo verso il software proprietario il gap si riduce notevolmente. Se quello di cui necessitiamo sono particolari esigenze di disegno 2D e 3D per il campo ingegneristico, impiantistico, dell’edilizia e di capacità amministrativa dei dati allora, grazie alla software house CAD Schroer GmbH (www.cad-schroer.com) e al suo software CAD Medusa4 (proprietario, ma gratuito per uso personale), AutoCAD potrebbe diventare solo un ricordo! Ufficialmente le distribuzioni supportate sono CentOS, Fedora, Mandriva, Red Hat, SuSE e Ubuntu. Nel nostro caso lo abbiamo installato su una Slackware 12.1 senza riscontrare alcun problema. Nel tutorial è illustrata l’installazione con il comodo wizard. Occorre dapprima scaricare il file e poi “attivarlo” (durante la fase di installazione) con la “licenza personale” che ci verrà inviata via e-mail. L’unica richiesta è l’obbligatoria presenza di una scheda di rete. Vediamo di capirne il motivo e come procedere. Puntiamo il browser sulla home page della software house e clicchiamo sul tab Medusa4. Nella nuova pagina clicchiamo sul banner rosso “Register for your FREE Personal License” e successivamente sulla scritta “STEP 1: Request your FREE personal license”. A questo punto compiliamo la form nei cui spazi appare anche la riga Mac Address ovvero l’indirizzo fisico (hardware) della nostra scheda di rete che altro non è che un codice (univoco per ogni scheda) a 6 byte (48 bit). è sufficiente aprire una shell, loggarsi come root ed eseguire il comando ifconfig. Nell’output l’indirizzo di nostro interesse sarà riportato nell’interfaccia eth0 (di default e nel caso di una sola scheda di rete) alla voce HWaddr. Ad esempio una sequenza del tipo HWaddr xx:yy:zz:xy:xz:yz. A questo punto dovremo inserire questa sequenza di caratteri nel campo della form nella modalità indicata, cioè l’intera sequenza attaccata oppure ogni coppia di caratteri divisa da un segno meno “-”. Ricordiamo, inoltre, di spuntare la voce Linux nella scelta del sistema operativo (Platforms). Al termine della compilazione clicchiamo in basso su Send. Ci verrà inviata una e-mail alla quale rispondere e in seguito a cui ci verrà inviato un altro messaggio con allegato un file lic che rappresenta la nostra licenza personale per l’uso di Medusa4. A questo punto, possiamo scaricare il software cliccando sul link “STEP 3: Linux – Download the MEDUSA4 Personal software”. Infine, inizierà il download del file medusa4_ v3_0_1_1_linux_personal.sh (190MB circa). Ottenuto il file, per installare il programma bisogna prima renderlo eseguibile con il comando