Grafica (C.d.S. Informatica) 2006/07
Relazione del Progetto di Grafica assegnato il 27/05/2003
Modellazione e Resa realistica di un carro armato
T-34 russo
di Fabrizio Amici
Obiettivo
L'obiettivo di questo progetto è la modellazione e resa grafica di un interno
dove collocare un modellino di un veicolo di terra, aria o acqua a scelta la cui
modellazione 3D deve essere particolarmente accurata. Nel mio caso è stato scelto
un veicolo di terra e più precisamente un carro armato russo T-34.
Descrizione modello Reale
Il carro armato preso in considerazione è uno dei più famosi della seconda
guerra mondiale: il T-34 russo. Per la modellazione sono state prese come spunto le foto presenti
su questo sito.
Progettazione oggetti della scena e superfici
La progettazione è suddivisa in 2 parti. La progettazione dell'interno e quella
del carro armato. Iniziamo a vedere i passi effettuati per la progettazione dell'interno.
Armadio
L'armadio è composto da 11 superfici. I 4 piedi dell'armadio e le 2 maniglie sono
state ottenute da una rivoluzione di curve 2d. Il corpo dell'armadio non è altro che un cubo
opportunamente scalato a cui è stata aggiunta una superficie rettangolare (riga.db) per
simulare la separazione delle ante. La parte superiore dell'armadio è composta da
3 superfici. Una è ottenuta attraverso l'extruding di una stessa curva 2d copiata più
volte e traslata di un valore costante. Le altre due che completano l'armadio sono
state create attraverso lo skinning della curva 2d con un punto 3d.
Immagini:
Quadro
Il quadro è formato da 5 superfici. La cornice è formata da quattro cubi
opportunamente scalati e ruotati mentre la tela è un semplice piano.
Immagini:
Tavolino
Il tavolino è un unica superfice ottenuta attraverso la rivoluzione di
una curva 2d.
Immagini:
Progettazione carro armato:
Ora vediamo come è stato progettato il carro armato che vediamo qui in
figura nella sua completezza:
Cingolo
Un cingolo è composto da 4 superfici. Ogni singolo cingolo è composto da una
superficie cingolo esterno e una cingolo interno e la completano due superfici spessore (una
davanti e una dietro). Prima di tutto è stata disegnata la forma del cingolo tramite una curva 2d,
che poi successivamente è stata copiata e traslata per poi ottenere attraverso la tecnica
dell'extruding il cingolo esterno. Stessa cosa ma con una curva 2d scalata leggermente è stato
fatto per ottenere il cingolo interno. I due spessori invece non sono altro che uno skinning delle
due curve 2d sopra citate.
Immagini:
Parafango
Il parafango è stato creato in modo simile al cingolo. Si è prima disegnata
la curva 2d del cingolo; la curva è stata traslata e tramite extruding si è ottenuta la
superficie 3d del cingolo a cui poi sono stati aggiunti gli spessori ottenuti tramite skinning
di una curva 2d e un punto 3d.
Immagini:
Ruote
Il carro aramto possiede 5 ruote grosse per cingolo con relativo perno e 2
ruote piccole senza perno. Tutte le ruote e i perni sono stati ottenuti tramite cilindri
opportunamente scalati.
Immagini:
Struttura del carro
Data l'irregolarità del corpo del carro armato è stato scelto di dividerlo in
due superfici: una parte superiore e una inferiore. Dal momento che la parte superiore e
inferiore del corpo del carro armato devono essere inclinate è stata utilizzata la tecnica
dell'extruding di due rettangoli di dimensioni diverse opportunamente traslati. Per completare
il tutto sono state aggiunti due piani per chiudere sia la parte superiore che quella inferiore.
Immagini:
Torretta
La torretta è stata una delle parti più difficili da costruire data
l'irregolarità della sua forma. La parte difficile è stato quello di fornire più curve 2d della
forma della torretta che andassero piano piano rimpicciolendosi per poi effettuare l'extruding.
Per molti tentavi i risultati non sono stati sufficentemente simili alla torretta reale. Per
chiudere la superficie sono state utilizzate due superfici ottenute dallo skinning della curva 2d
della torretta con un punto 3d. Infine per concludere sono stati aggiunti un cannone (cilindro
scalato) e un paio di cilindri appiattiti sulla sommità della torretta.
Immagini:
Dettagli del carro
Sono stati infine aggiunti dei dettagli al carro armato: 4 barre laterali
(cubi scalati) che erano presenti sopra il parafango, 3 cilindretti ai fianchi, 2 sferette
allungate nella parte posteriore del carro, 2 piani sul fianco per poi rappresentare in fase
di texturing una stella rossa e un numero, 2 cilindretti e una sferetta nella parte frontale
insieme ad un fanale. Per quanto riguarda il fanale è stata presa una sfera e la si è trimmata
per poi aggiungere un piano sferico.
Descrizione Scena
La scena finale è una stanza composta da tre pareti e un pavimento.
Sono presenti all'interno un armadio, un quadro e un tavolino. Su quest'ultimo è posizionato
un carro armato. Il carro armato risulta la vera attrattiva della scena dati gli sforzi profusi in
fase realizzativa con XCSurf.
Immagini di Resa
La maggior parte delle superfici è stata texturata attraverso domain texture.
Sono state utilizzate sia texture non ripetute come nel caso della tela, sia texture ripetute
come nel caso delle mattonelle di marmo del pavimento. Per le pareti e la cornice del quadro
sono stati utilizzati due particolari attributi creati attraverso XCrayt per simulare il legno
(nel caso della cornice) e dell'intonaco grigio (nel caso delle pareti).
Gif Animata
Successivamente si è seguito passo passo il tutorial presente su
questa pagina
per la creazione di una animazione di 300x300 px formata da 86 frame. Finita l'animazione sono
stati utilizzati il programma xmovie e il programma gifmerge per ottenere la gif animata (con
loop infinito) presente qui sotto.
Download
Per scaricare l'archivio contente il progetto cliccare
qui.
Problemi e Bug
Tra i bug riscontrati cè stata l'impossibilità di aprire correttamente i
file .obj, dal momento che spesso non venivano caricate tutte le superfici .db. In alcuni casi
anche importando singolarmente le superfici .db non veniva richiesto il loro salvataggio ed ad
una successiva apertura della scena con xcryat apparivano come piani e non erano visualizzabili
corretamente, questo poteva portare anche al crash di xcryat durante il caricamento della scena;
se ciò accadeva la scena era irrimediabilmente persa ed era necassario riprendere il lavoro da
una scena di backup.
Se invece la scena viene creata normalmente attraverso il file stanza.c non viene riscontrato
nessun errore o crash. Durante la registrazione dei frame dell'animazione sono avvenuti alcuni
crash di cui però non ho capito bene la natura.