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:
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.
|
|
|