Modellazione 3D con xcmodel 3.0  -  GRAFICA  -  a.a. 2002/03
 

 

  SPECIFICHE_
 
Obiettivo


Utilizzando i pacchetti xccurv, xcsurf e xcrayt di xcmodel 3.0, realizzare un'esperienza significativa di modellazione e resa realistica.

Testo

Si progetti prima su carta e poi con i pacchetti messi a disposizione un'intera scena composta da oggetti i cui boundary siano definiti da una o piu` superfici NURBS. Si richiede la modellazione di almeno un oggetto (una o più superfici) di forma complessa e stilisticamente apprezzabile. Si generino alcune immagini realistiche della scena realizzata con particolare attenzione ai dettagli dell'oggetto piu` complesso che si è modellato.
 

  INSTALLAZIONE_
 
Download


Il progetto è contenuto nel tarball donati_anfora.tgz, decomprimibile in ambiente unix tramite il comando: tar -zxvf donati_anfora.tgz.
Se il link non dovesse funzionare cercarlo nella mia home page, link in fondo alla pagina.
Il file deve necessariamente essere decompresso dentro alla directory models del pacchetto xcmodel, poichè il makefile fa riferimento a questa posizione relativa per cercare le librerie (descriptor.h principalmente).
Una volta decompresso il file viene creata una directory contenente tutte le sottodirectory degli oggetti modellati, il file in linguaggio C usato per l'applicazione delle textures ed il makefile. Da notare che i files dei modelli sono stati ricopiati dalla loro cartella originale alla radice per circostanziare i soli modelli realmente utilizzati.

Ricompilazione del file della scena


Tramite il comando make dalla directory principale del progetto è possibile ricompilare il sorgente .c che crea la scena e che è stato necessario scrivere per applicare le textures. Se durante la fase di compilazione vengono generati errori di librerie non trovate, come la descriptor, si renderà necessario ricompilare i sorgenti del pacchetto xcmodel, dalla directory sources, tramite la sequenza di comandi:

  • xmkmf
  • make install

in ciascuna sottodirectory dei sorgenti in cui sia presente un file Imakefile.

Screenshots


Sono state "fotografate" quattro viste della scena, renderizzata con parametri di raytracing decenti ma non particolarmente accurati per via della mancanza di un hardware all'altezza. Sono presenti nella sottodirectory screenshots del progetto in formato .hr, ma vengono comunque presentate anche di seguito in formato BMP con risoluzione 800 x 800 pixel.
Queste immagini sono state ottenute con l'algoritmo di ray-tracing del pacchetto xcrayt con parametri di tolleranza piuttosto fini; se la visualizzazione da browser dovesse apparire di qualità scadente (forte effetto di aliasing) salvare l'immagine su disco e visualizzarla con un programma qualsiasi eccetto un browser.

 

  GALLERIA IMMAGINI_
 
L'anfora in alabastro
Un dettaglio della base del tavolo










Una vista d'insieme dall'alto con ombre sulla parete
Una vista dal basso: riflessioni multiple del piano di cristallo










 

  CREAZIONE DEL MODELLO DEL TAVOLO_
 
Descrizione del modello reale


Il modello reale è rappresentato da un tavolo con base in marmo e piano in cristallo.
La base è composta da marmo rosa e bianco, intervallati con un paio di anelle dorate (toroidi).
Per la modellazione di questo oggetto si è effettuato prima uno schizzo su carta delle viste più importanti, principalmente del profilo per la generazione del solido di rotazione, successivamente si è provveduto alla modellazione al calcolatore apportando alcune modifiche al modello reale per questioni di difficoltà nella realizzazione di un capitello alquanto elaborato che è stato eliminato dal modello 3D.
Sostanziali difficoltà sono state riscontrate nella fase di resa per quanto riguarda il settaggio dei parametri del ripiano in cristallo e delle anelle dorate, in modo da avere un effetto sufficientemente realistico.

Creazione e assemblaggio delle parti del tavolo


La base quadrata del tavolo è stata creata scalando opportunamente un cubo, sopra è stata appoggiata la superficie di rivoluzione ottenuta da questa semplice curva profilo modellata con xccurv (cliccare sull'immagine per ingrandire e visualizzare anche i control point):

Il materiale di questa superficie è pietra bianca, l'effetto di porosità della pietra si è cercato di renderlo tramite una texture poichè il bump mapping non è implementato in questa versione di xcrayt. Il texture mapping in questo caso è avvenuto previa rotazione sull'asse X dell'oggetto prima dell'immersione nello spazio texture, per poi essere nuovamente ruotato nella posizione corretta.


Subito sopra è posta un'altra superifice di rivoluzione, a profilo semicircolare, molto semplice ma di marmo rosa. In questo caso il texture mapping si è rivelato più difficoltoso, rendendo necessarie diverse prove prima di ottenere l'effetto voluto.


L'anella dorata posta attorno alla base di marmo rosa appena descritta è una sperficie tubolare. Il problema principale nella resa di questa superficie è stato quello di rendere un effetto oro gradevole e non eccessivamente riflettente.

La colonna di pietra è stata ottenuta come superficie di estrusione a partire dalla curva nell'immagine sottostante:

Questa curva ha grado 3 e per ottenere l'effetto spigolo quasi vivo tra gli scassi della colonna sono stati modificati i pesi dei corrispondenti control point, effetto che si può vedere dalla figura sottostante ottenuta dalla finestra di editing di xcsurf in phong shading:



Immediatamente sopra la colonna è stata inserita la seconda superficie in marmo rosa, rappresentata come superficie di rivoluzione in wireframe nella figura sottostante e prelevata dal tool xcsurf:



Tutti i posizionamenti relativi degli oggetti del tavolo sono stati effettuati dal tool xcsurf ed è stata salvata la lista di tutte le superfici nel file tavolo.obj. Anche la seconda anella dorata, posizionata attorno alla base di marmo rosa nella figura sopra, è stata scalata e posizionata da questo tool, in modo da avere il tavolo già assemblato nella successiva fase di resa con xcrayt.


Sopra ancora è posizionato un ripiano la cui superficie laterale è stata ottenuta per estrusione, mentre le due superfici piane sono state realizzate estrudendo lo stesso profilo con un punto. Di seguito l'immagine relativa alla curva di estrusione:



L'ultima parte che compone il tavolo è il ripiano di cristallo, modellato da una semplice curva profilo da cui si è ottenuta per rivoluzione la superficie.
In fase di resa si è dovuto creare l'attributo glass, che in realtà sarebbe cristallo, e sono state effettuate numerosissime prove per rendere un effetto il più realistico possibile, sia per quanto riguarda il coefficiente di rifrazione che per quanto riguarda le componenti di luce ambiente, diffusa e speculare del materiale.
Questo piano è stato volutamente lasciato sospeso e non appoggiato alla superficie precedente, per creare un effetto di riflessione molto accattivante e che rispecchia, tra l'altro, il reale posizionamento che avviene su piccolissimi distanziali di gomma.

 

  CREAZIONE DEL MODELLO DELL'ANFORA_
 
Descrizione del modello reale


L'anfora reale in alabastro ha una trama molto particolare e non è stato possibile trovare una texture identica da applicare al modello, anche se quella utilizzata è molto simile.

Creazione e assemblaggio dei tre modeli dell'anfora


La base dell'anfora è stata ottenuta per rivoluzione dalla seguente curva, modellata con xccurv, di grado 3 e con qualche aggiustamento di forma mediante la modifica dei pesi:

Il doppio profilo di questa parte, unita con quella superiore descritta di seguito, ha creato un buon effetto di realismo. Il suo scopo originario però era quello di ottenere un effetto realistico rendendo l'anfora trasparente, come nella realtà, e lavorando sulle proprietà del materiale cercare di ottenere quella particolare luce soffusa, con effetto molto opaco sulla superficie dell'anfora.


Sopra alla base è stato posizionato il seguente oggetto, sistemando le posizioni relative degli oggetti col tool xcsurf:

La sua forma è stata ottenuta partendo da un semplice oggetto di rivoluzione, simile ad un cilindro, con profilo doppio uguale alla base sottostante, per poi essere modellato, sfruttando abbondantemente le deformazioni di Barr e lo spostamento manuale dei singoli control point, dal tool xcsurf.


Il manico dell'anfora è stato ottenuto come superficie tubolare utilizzando questa curva profilo

e facendola scorrere sulla seguente traiettoria

Durante la fase di assemblaggio, da xcsurf, sono state modificate diverse parti dell'anfora per poter unire correttamente le tre parti.
In modo particolare l'attacco del manico sulla superficie superiore dell'anfora ha richiesto la modifica di numerosi control point, operazione resa particolarmente complessa dall'elevato numero di control point che ha portato ad una difficile selezione dei punti desiderati per la modifica.


E' necessario fare una piccola considerazione sull'applicazione delle texture all'anfora.
L'anfora, per ragioni di comodità, è stata immersa nello spazio texture tutta assemblata, quindi l'effetto ottenuto non è perfettamente realistico ad un occhio un po attento. A questo problema si poteva ovviare caricando nella scena i tre oggetti rendendoli indipendenti e poi texturizzarli ruotandoli in modo differente l'uno dagli altri.
Unico neo di questa procedura è che ogni scala, rotazione o traslazione comporta la perdita del contatto fra le componenti. Per evitare questo si dovrebbero ruotare e scalare già definitivamente gli oggetti in fase di modellazione con xcsurf, allora si otterrebbe un effetto ancora migliore.