Esame di Grafica 2002/03
|
Marco Serra (Matr. 1617/59)
|
Secondo Progetto
Modellazione 3D mediante superfici NURBS e
Rendering (pacchetti xccurv, xcsurf,
xcrayt) |
Il soggetto
e' un modellino alto 13 cm di un personaggio della Disney, l'assistente di
Archimede che in USA chiamano Lamp, che sta sempre a fianco al mio monitor. |
|
Le note per il download
sono nell’ultimo paragrafo di questa relazione.
L'esperienza.
Ho scelto di modellare, tramite i pacchetti xccurv xcsurf xcrayt, un oggetto
reale e di riprodurlo il piu' fedelmente possibile, rispettando le reali
proporzioni e, nei limti del tempo di ricercare i materiali piu' adatti.
Purtroppo, proprio quando avevo acquisito buon padronanza con i pacchetti, il
tempo e' scaduto e non ho potuto arricchire la scena con dettagli qualificanti.
Ho realizzato le parti "geometriche" del modello usando le superfici usual a disposizione, per le parti "semi-geometriche" ho sfruttato molto la tecnica Tubolar, Revolution ed Extruding.
Per le parti
non geometriche ho adottato quasi sempre la tecnica di Swinging che mi
ha dato grosse soddisfazioni. Per piccoli ritocchi ho usato anche le
funzionalita' di free form deformation, fornite dal plug-in ffd
di xcsurf, ma non spesso in quanto poco precise per le mie esigenze.
Ho avuto
grosse difficolta con il guanto, che e' una superfice libera. Il tentativo di
realizzarlo dito per dito ha generato un monchino con 4 pioli conficcati. Un
obrobrio!! Ho tentato allora un complesso swinging tra il profilo orrizzontale
e quello laterale e mi ha prodotto un guanto accettabile ma solo in certe zone.
Usare quella superfice ha richiesto numerosi interventi. Ho deciso di trimmare,
dove possibile le parti da ricostruire e sono sceso piu' volte alla struttura
dei file .db per modificare certe
caratteristiche o prelevare curve di livello 3D da superfici.
Ho capito troppo tardi che era meglio scegliere un soggetto semmai piu'
complesso, formato da tante parti ma tutte semi-geometriche e comunque mai
naturali.
Un altra scelta forse errata e' stata quella di voler posizionare con xcsurf le
superfici che compongono il modello. Ho scoperto le potenzialita' di xcrayt e
della libreria descriptor solo alla fine, e non ho potuto usufruirne appieno,
visto che non ne avevo piu' bisogno.
Comporre e posizionare il modello intero gia' da xcsurf e' un po' scomodo ma ha
permesso l'immediato caricamento in xcrayt che, infatti, mi ha presentato il
modello renderizzato al primo colpo, senza bisogno di posizionamenti e
aggiustamenti, se non minimi.
Per la
cattura degli screenshot ho usato Gimp, per il ridimensionamento e ritocco delle
stesse ho usato PhotoShop, per questa relazione, avevo fretta e ho usato MS
Word (quindi e’ consigliato IExplorer)
La
Realizzazione
Testa Collo e Lampadina
|
||
|
Tracciato il profilo
in scala con xccurv ho passato il file a xcsurf e per Revolution
ho ottenuto le superfici volute. |
|
Tronco e spalle.
|
||
|
Due cilidri, presi
dalle usual, opportunamente scalati e ruotati. Il tronco e' stato scalato lungo
l'asse y per ottenere la sezione a ellisse delle dimensioni volute |
|
Anche
|
||
Ho tracciato con
xccurv la circonferenza di profilo.
Poi l'arco di cerchio di tracciato (angolo 36° raggio 7,4 cm ... a tanto sono
arrivato. sigh). Ora la superfice e' facile da ottenere con la Tubolar. |
|
|
|
|
|
Gambe e Braccia
|
||
|
Tracciato il profilo
in scala con xccurv della gamba e del braccio, poi ho tracciato le
traiettorie infine ho passato le curve a xcsurf e con la tecnica Tubolar
ho ottenuto le superfici volute. |
|
Le scarpe sono costituite da:
Una bombatura
alla caviglia, ottenuta
per Revolution. |
|
Il Tacco
|
||
|
Ho generato il profilo
e portato in xcsurf, ne ho creato 2 copie traslate piu’ in basso dell'esatto
spessore del tacco. L’ultima l’ho un po’
scalata per darle l’inclinazione presente sul modello. L'idea e' di
generare il tacco per Extruding, ma la superfice rimarrebbe aperta sopra e
sotto. Per chiuderla ho fatto l'Extruding di 5 curve 3D: i 3 profili suddetti e 2 punti interni e
complanari a quello sopra e a quello sotto rispettivamente. |
|
La Suola
|
||
|
Anche
qui un Extruding tra 5 curve: 3 curve di profilo piu' i soliti 2 punti per
chiudere il volume sopra e sotto.. |
|
|
|
La Scarpa
|
||
Per
swinging tra -
un profilo, costituito dall'unione delle 2 curve usate per tacco e suola
e poi splittato per averne solo la meta’ - una traiettoria disegnata
appositamente. La
curva ottenuta andava ritoccata in quanto palesemente troppo
"regolare" e quindi innaturale. Mi sono avvalso della possibilita'
di modifica interattiva fornita da ffd per deregolarizzare un po' la
scarpa. La seconda scarpa l'ho ottenuto copiando la prima. Ho poi deformato
leggermente la scarpa sinistra e ripetuto modifiche speculari sulla destra.
Il risultato mi sembra buono. |
||
|
|
|
Il Polso
|
||
Fa
parte del guanto, ma non ha dato problemi, e' una semplice superfice di
rivoluzione ma per darle l'aspetto esatto che volevo ho creato una
traiettoria e l'ho generato per swinging. |
||
|
|
|
Il Guanto
La soluzione per Swinging.(abbandonata)
|
||
|
Come
gia' accennato all'inizio ho avuto grossi problemi con questa superfice
naturale irregolare. |
|
Lo Swinging senza il pollice
|
||
|
Via
il pollice. Lo swinging per il guanto lo produco con la
stessa curva ma col pollice amputato. Da
questa struttura devo ora togliere il palmo e il dorso, per raccordarli col
polso. Poi aggiungo il pollice |
|
Il Dorso della Mano
|
||
|
Questo
non sono riuscito a trimmarlo. Cosi’ ho cercato un raccordo con il polso
deformando le parti eccedenti del dorso con gli strumenti di ffd. Ha richiesto un po' di tempo perche'
ffd richiede molta manualita', ma alla fine il verdetto di xcrayt mi ha
premiato. (Nella
immagine e’ presente la trimmatura spiegata nel passo successivo) |
|
Il Palmo
|
||
Via
il palmo.
Trimmando la curva sono sparite le parti del palmo che non andavano bene. Ricostruzione
Palmo. Ormai abile
nel prelevare curve di livello dai .db delle superfici, ho prodotto il palmo
per skinning. La curva parte infatti dal semiprofilo della superfice Polso e
termina nel profilo del guanto nel punto in cui e' trimmato. Prelevando le
suddette curve dai rispettivi file .db e facendo uno extruding delle stesse
ho ottenuto il palmo, che per costruzione risulta gia' perfettamente
dimensionato e posizionato. Il risultato e' molto piatto, ma ho provato a
deformarlo per creare bombature con ffd ma ho generato un mutante che ho
subito seppellito |
||
|
|
|
Ricostruzione del Pollice
|
|
Per non
far sembrare il pollice un piolo piantato in cima alla mano (cosa che mi
succedeva regolarmente) ho deciso di ricorrere alla panacea delle tecniche: lo
skinning. Ma lo volevo un po' particolare. Come ultimo profilo da
"skinnare" gli ho dato una curva di livello del guanto, prelevata
direttamente dal file .db dello stesso. L'intento era quello di creare nella
parte bassa del pollice un'adeguamento alla forma del guanto in modo da
addolcirne il raccordo. Il risultato mi da' ragione solo in parte |
|
|
|
Il Guanto finito Che
fatica. |
|
Il Secondo Guanto
Con il
secondo guanto, Lamp fa' OK, quasi a dirmi "puo' bastare amico."
e io che mi trovavo perfettamente daccordo, ho deciso di generare l'altro
guanto per simmetria. Non trovando la funzione in xcsurf ho cambiato il segno
di tutte coordinate x dei C.P. nei file .db e ho ottenuto cio' che volevo. |
|
|
|
|
|
xcrayt
Come ho
gia detto ho scelto di posizionare le superfici con xcsurf ed il beneficio si
e' avuto abbattendo i tempi di setup del modello finito con xcrayt. Il posizionamento e' piu' agevole con
xcrayt, e col senno di poi, procederei diversamente, ma e' stata comunque una
bella soddisfazione vedere il modello completo e renderizzato dopo solo poche
operazioni di configurazione con la libreria descriptor.
Mi e' bastato inserire in un file Lamp.c indicazioni su quali sono le superfici
da caricare e assegnargli un materiale, uno qualsiasi per iniziare,
l'importante e' compilare ed eseguire (make -f Makefile.ok).
L'esecuzione infatt genera un file Lamp.hr che puo' essere letto da xcrayt. Una
volta in xcrayt e' tutto da sperimentare, ma e' molto agevole.
Per tarare le caratteristiche dei materiali ho proceduto un po' per tentativi e
sono abbastanza soddisfatto del risultato, ma penso che il vetro e la plastica
della testa possano essere rese ancora meglio.
Ho posto 3 luci bianche attorno al modello: 2 davanti (sx e dx) e una dietro.
Ho avuto poco tempo per texturizzare e per trovare file .hr o .ppm diversi, e
purtroppo la scenografia non e' delle piu' brillanti.
|
|
|
|
|
|
Bug di
xcsurf ?
L'uso di Xcsurf non ha dato problemi, solo un raro malfunzionamento della
funzione [copia superfici]. In pochi casi, in superfici di swinging appena
generate, la superfice copiata mancava della prima riga di control point (cioe'
appariva leggermente trimmata). In un altro caso la copia di una superfice su
una cella appena vuotata, ha generato una copia parziale della curva copiata ma
con inserimento di parti della curva precedentemente cancellata dalla cella
stessa.
E' possibile effettuare il download del seguente file contenente il modello realizzato:
serra_lampadina.tgz (scompattare con il comando: tar zxvf serra_lampadina.tgz)