Grafica (C.d.L. Informatica) 2006/2007


Modellazione e Resa realistica



di Cibelli Luca



Sommario


  1. Obiettivo
  2. Progettazione componenti del veicolo e superfici
  3. La fase di resa
  4. Immagini di resa
  5. Animazione
  6. Problemi e bug

Obiettivo


Utilizzando i pacchetti XCCurv, XCSurf e XCRayt di XCModel 4.0, realizzare un'esperienza significativa di modellazione e resa realistica insieme alla progettazione di una breve animazione digitale.

Tenendo presente che un algoritmo di ray-tracing produce delle rese super-realistiche, tipicamente di interni, si chiede di progettare un interno in cui collocare almeno un modellino di un veicolo di terra, aria o acqua (esclusi veicoli spaziali e sommergibili) la cui modellazione 3D deve essere particolarmente curata nei dettagli.
La fase di modellazione venga realizzata facendo esclusivamente uso degli strumenti introdotti nel corso e a disposizione in XCSurf; se singoli oggetti sono composti da piu' superfici, queste vengano assemblate nella fase di modellazione (in ambiente XCSurf).
Si realizzi poi lo scene-graph della scena 3D mediante libreria descriptor e script C e si producano:
- alcune immagini fotorealistiche con alcuni primi piani;
- una piccola animazione di al piu' un centinaio di frame con risoluzione 300x300.

VEICOLO SCELTO: aereo concorde


Progettazione componenti del veicolo e superfici


La scena è stata realizzata creando le varie parti dell' aereo separatamente, assemblate con xcsurf, e successivamente caricate tramite script .c per creare la scena. Le varie parti create sono:



- Il corpo principale e' stato creato per extruding. La curva profilo curv2Dcorpo.db che ha origine in xccurv, viene caricata e duplicata più volte in xcsurf. Vengono definite dimensioni e posizioni delle singole curve in modo da creare la forma desiderata.



La superficie è stata trimmata in modo da creare le quattro finestre della cabina di pilotaggio.




- Il timone posteriore è stato creato con un operazione di extruding di curve profilo.
La curva madre è curv2Dtimone.db.




- Le ali ovviamente sono due: sinistra e destra. Per prima viene costruita l' ala sinistra per skinning di sei curve profilo curv2Dala.db.



Dalla stessa curva ricaviamo entrambe le parti posteriori all' ala per extruding.
Modificando la stessa superficie riusciamo a creare i due alettoni posteriori, che in sostanza sono molto simili, ma che in realta' subiscono delle piccole modifiche di dimensione ed una leggera curvatura per quanto riguarda l'alettone piu'esterno (per intenderci quello piu' lungo).




- Il motore invece è composto da due superfici estruse.
La curva madre è curv2Dengine.db dalla quale ricaviamo con quattro curve profilo per prima l' oggetto engine.



Successivamente viene creata con sole due curve la superficie enginepezzo da aggiungere nella parte superiore del motore dove verranno inserite le turbine.



L' oggetto engine viene duplicato e posizionato al fianco del primo. Successivamente assembliamo tutti i pezzi in modo da creare l' intero motore del concorde che sara' uguale e complementare per la parte destra dell' aerea.





- Ed in fine abbiamo la turbina che viene creata per rivoluzione della curva curv2Dturbine.db.



L' oggetto in questione viene trasformato per assumere una forma più consona al modello.





- Una volta creati tutti questi oggetti per il lato sinistro, vengono copiati e traslati in maniera perfettamente simmetrica per il lato destro dell' aereo.




torna all'indice



Fase di Resa



Per definire in maniera piu' semplice e veloce nello script (concorde.c) gli attributi per i singoli oggetti dell' intero modello concorde con xcsurf leghiamo in unico file .obj tutte le superfici che hanno uguali propieta'.
In modo particolare:

- alasxintera.obj: alasx.db (oggetto ala), alasxpezzo1.db (alettone piccolo), alasxpezzo2.db (alettone grande).

- aladxintera.obj: aladx.db (oggetto ala), aladxpezzo1.db (alettone piccolo), aladxpezzo2.db (alettone grande).

- timonefine.obj: timone.db.

- concordefinale.obj: corpo.dbe (corpo principale dell' aereo trimmato); enginedx1.db, enginedx2.db.( i due motori)

- engine_turbine.obj: turbinedx1.db, turbinedx2.db (turbine destre); turbinesx1.db, turbinesx2.db(turbine sinistre), enginepezzosx.db, enginepezzodx.db (rispettivamente pezzo sinistro e destro superiore ai due motori).

- finestrini_obj.obj: finestradx1.db, finestradx2.db, finestrasx1.db, finestrasx2.db (semplicemente i quattro finestrini della cabina di pilotaggio dell' aereo).

In questo script vengono applicate le texture e le proprieta' dei materiali. La texture concorde_corpo1.hr e' stata modificata per creare l'effetto finestrini nella parte laterale del corpo principale dell' aereo.
Le immagini di resa sono state create tramite xcrayt.


torna all'indice



Immagini di Resa



torna all'indice



Animazione



Per quanto riguarda l'animazione, nello script e' stato inserito del codice che modifica la scena nei diversi frame; in particolar modo la posizione dell' aereo nell' andare in avanti e nel salire leggermente quando effettua una rotazione per decollare in alto. Il file .ani risultante e' stato caricato con xcrayt e renderizzato. Il file risultante .hra è stato aperto con xcmovie ed esportato in gif animata (che sembra essere troppo lenta).

torna all'indice



Download



Il modello puo' essere scaricato qui.

torna all'indice



Problemi e bug



- Il problema principale è che a volte il programma va in crash per qualche motivo.



torna all'indice