Grafica (C.d.S. Informatica)
2005
Relazione del Progetto di Grafica assegnato il 27/05/2004
Modellazione e Resa realistica di un trenino a vapore

Alberto Musetti



INDICE


OBIETTIVO

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

    Si realizzi il modello geometrico di un singolo oggetto (una o piu' superfici NURBS) avente una complessita' di forma apprezzabile. Si realizzi poi una scena (geometricamente semplice) in cui inserire l'oggetto precedentemente modellato. Per esempio, l'oggetto da modellare potrebbe essere un monile, un soprammobile, un giocattolo, un logo 3D. Si realizzi quindi lo scene-graph della scena 3D e si producano alcune immagini di buona qualita' (almeno due immagini a campo largo e piu' immagini dell'oggetto e di suoi particolari).

    Le specifiche complete sono disponibili al seguente indirizzo web: http://www.dm.unibo.it/~casciola/html/graficaproject2_0304.html

top
SCELTA DEL MODELLO E DELLA SCENA

    Come modello si e' scelto di realizzare il modellino di una locomotiva a vapore.
    Per avere una scena piu' ampia e' stato realizzato il piano di un tavolino su cui è appoggiata la teca di vetro contenente il trenino.
    Come spunto per la realizzazione, si sono cercate diverse immagini in rete per avere un'idea generale dei componenti, delle forme, dei materiali, delle dimensioni e dei colori che compongono il treno.
    Il modellino e' stato appoggiato su binari in un piedistallo di legno per renderlo piu' relalistico.

top
MODELLAZIONE DEGLI OGGETTI

    La maggior parte degli oggetti realizzati sono superfici di rivoluzione, mentre le curve sono quasi tutte di grado 2 o 3.
    Di seguito e' descritta la realizzazione dei componenti in dettaglio:



    Fig 1



    Fig 2


    La cabina di pilotaggio e' formata da quattro componenti:

    • le due pareti laterali realizzate con un "extrusion" di due "shape" di grado 3 con partizione uniforme, create con xccurv, questo per creare una porta di accesso alla cabina di pilotaggio.

    • la facciata della cabina e' stata creata da una curva di grado 3 con partizione uniforme create con xccurv.

    • il tetto e' stato creato da una curva di grado 3 con partizione uniforme create con xccurv e poi estrusa per andare a coprire tutta la cabina di pilotaggio.

    Tutte e quattro i componenti sono stati estrusi per dare un minimo di spessore alle pareti e quindi rendere l'oggetto piu' realistico.

    E' stato creato il file gabbia.obj che racchiude tutte le componenti della cabina di pilotaggio. Questo file non e' stato utilizzato in quanto nella fase di resa si e' avuta la necessita' di associare ad ogni singolo componente un colore o un materiale diverso.



    Fig 3


    Il camino e i due cilindri posizionati sopra la cisterna sono formati partendo da una curva che ne disegna il profilo facendola ruotare attorno all'asse Z di 360°.
    E' stato aggiunto un anello sulla sommita' di questi oggetti creato anch'esso con una rivoluzione di una "shape" attorno all'asse Z.



    Fig 4


    Per realizzare le ruote motrici, i ruotini anteriori e posteriori della locomotiva si è partiti sempre modellando curve di grado 3 con xccurv e con xcsurf rivoluzionate attorno all'asse Z.
    La differenza principale, tra i ruotini e le ruote motrici del treno, oltre alle dimensioni, e' che i primi hanno un cerchione che collega la ruota al perno centrale, mentre le seconde hanno 7 raggi e un semicerchio che funge da contrappeso per la ruota per il corretto funzionamento della ruota.

    I raggi sono stati creati a partire da un cilindro predefinito opportunamente scalato e ruotato, mentre il contrappeso e' stato creato estrudendo una curva.



    Fig 5


    Nella parte frontale del treno sono state posizionate due lanterne create interamente con xcsurf.
    Sono partito da un cubo predefinito che funge da involucro della lanterna, da un cilindro che crea il vetro della luce e da un secondo cilindro che serve per sostenere l'intero oggetto.
    Tutti e tre i componenti sono stati ruotati, scala e traslati opportunamente per andare a formare l'oggetto voluto.



    Fig 6


    Nella parte anteriore della locomotiva e' stato posizionato inferiormente un rosso ("caccipietre").
    I raggi del rostro sono stati creati con la funzione "tubular"; facendo percorrere a una sezione rettangolare una traierroria a "L" opportunamente inclinata.



    Fig 7


    Sono state create due scalette per accedere alla gabina di pilotaggio della locomotiva.
    I tre scalini sono stati fatti estrudendo una curva, questo per dare uno spessore all'oggetto.
    Gli scorrimano sono stati creati con la fnzione "tubular"; facendo percorrere ad una sezione circolare una traiettoria ricurva.
    I sostegni sono stati ottenuti facendo rivoluzionare una curva che rappresenta il profilo del pomello.




    Fig 8




    Fig 9




    Fig 10




    Fig 11




    Fig 12




    Fig 13




    Fig 13




    Fig 14




    Fig 15




    Fig 16


top
CREAZIONE DELLA SCENA

    Tutti i componenti della locomotiva e gli oggetti della scena sono stati opportunamente collocati nella giusta posizione con xcsurf, questo per avere una visione completa del modello che si vuoleva creare gia' in fase di modellazione.

    d La scena e' stata realizzata alternando l'utilizzo dell'interfaccia di xcrayt e la compilazione dello script C per evitare problemi di importazione degli oggetti creati.
    Lo script C si occupa soltanto di caricare i file, di settare le luci e i materiali degli oggetti che comporranno la scena; per oggetti uguali non vengono fatte copie all'inetrno dello script C.

    Per quanto riguarda le luci sono state utilizzate 3 spot-light tutte all'interno della teca di vetro, per rendere proprio l'idea di moellino esposto. Una rivolta verso la punta della cisterna e due sul corpo centrale della locomotiva. Tutte quante producono luce bianca ma ognuna ha differenti caratteristiche di intensita', ampiezza del cono e del range massimo.
    E' stata utilizzata anche un "point_light", con luce bianca e intensita' debole, posizionata al di sopra della teca di vetro.
    In aggiunta e' presente anche la luce ambiente di color binaco e bassa intensita' (0.7).

    Per quanto riguarda i materiali degli oggetti si e' cercato tramite molteplici prove di ottenere una resa il piu' realistica possibile attraverso piccoli aggiustamenti sui diversi parametri che ne definiscono le caratteristiche.

    All'interno della scena e' stata inserita una texture applicata al piedistallo della locomotiva.

top
IMMAGINI DI RESA

    Alcune immagini di resa reale:



Fig 17


Fig 18


Fig 19


Fig 20


Fig 21


Fig 22


Fig 23


Fig 24


Fig 25


Fig 26


Fig 27


Fig 28
top
PROBLEMI INCONTRATI

    Grossi problemi non sono stati trovati, si e' dovuto prendere un po' la mano, prima di iniziare il prgetto vero e proprio, nell'usare i programmi in modo completo in particolare xcsurf.
    Il pacchetto xcrayt inizialmente spesso si bloccava non appena veniva premuto il tasto Render riportando un messaggio di errore nel file .md che a quel punto non veniva piu' caricato dal programma. Ma questo problema e' stato facilmente risolto facendo uso dello script C in cui si definisce tutta la scena.

    Altro problema incontrato nella fase di render della scena e' quello riportato nella figura 29-30.
    In cui non venivano renderizzati i lati della gabina di guida della locomotiva, pur venendo caricati dal file .md.
    Questo problema e' stato risolto passando dalla versione 3.0 alle versione 3.2 di xcmodel.



    Fig 29


    Fig 30

    Per quanto riguarda la grafica, il pacchetto xcsurf 3.2 e' miglioratato rispetto la versione precedente, tanto da rendere il suo utilizzo molto piu' semplice e intuitivo.

top
DOWNLOAD

    E' possibile scaricare il codice sorgente da treno_xcmodel.tgz 11Mb.

    Aprire il file .tgz dentro la directory xcmodel.
    Verrano create le seguenti cartelle:

    • models/Treno: con le superfici modellate (.db, e .obj), script C (treno.c) per lo scene-graph, file .md (treno.md), diversi file .vw, .arg, Imakefile e file .hr delle rese prodotte.

top