Grafica (C.d.S. Informatica Specialistica)
2005/06
Relazione del Progetto di Grafica assegnato il 30/05/2006
Modellazione e Resa realistica del quadro
"L'impero delle luci" di Magritte
di Michele Geri
Obiettivo
L'obiettivo del progetto era la modellazione e la resa, mediante l'utilizzo del sistema di modellazione Xcmodel 4.0,
di una scena rappresentata in un quadro di autore noto.
Dopo aver posto la mia attenzione su vari dipinti la mia scelta è ricaduta sul quadro "L'impero delle luci" (1954) del
pittore belga René Magritte.
Descrizone Scena
Il quadro descrive una scena crepuscolare in cui è presente una casa in parte coperta da un albero che si specchia in un laghetto. La scena presenta, inoltre, tra gli oggetti principali 13 finestre, un cancello, un muro alla sinistra della casa, un lampione e una pietra in primo piano.
La scelta di questo quadro è dovuta in principal modo al mio interesse di realizzare quegli effetti luminosi presenti nel quadro. Inoltre mi ha interessato da subito la resa del lago e del lampione.
Dalla scena ho deciso di eliminare l'albero nonostante fosse molto interessante da modellare. La scelta di eliminarlo è maturata dopo una lettura di tutorial che spiegavano delle tecniche di realizzazione di alberi con software commerciali e mi è sembrato eccessivamente laborioso realizzarlo con le sole funzioanlità fornite da XCModel e fare un albero "pieno" non mi avrebbe soddisfatto.
La scena realizzata è composta da:
1 Casa: 3 oggetti (1 struttura casa, 1 tetto della casa, 1 tetto campanile);
13 Finestre: 1 oggetto replicato 13 volte (ogni finestra è formata da due ante e un davanzale, le sei finestre in basso presentano inoltre 4 cardini su ogni finestra);
1 Lampione: 1 oggetto (1 base, 1 copri lampada, 4 vetri, 1 telaio vetri);
1 Muro laterale: 1 oggetto;
1 Cancello: 1 oggetto (2 sfere, 2 colonne, 2 base cancello, 1 stipite centrale, 1 barra orizzontale e 12 pali);
2 muri di congiunzione: 2 oggetti;
1 marciapiede: 1 oggetto (4 parti);
1 pietra: 1 oggetto;
1 lago: 1 oggetto;
Piani scena: prato, strada e sfondo;
per un totale quindi di 221 oggetti in scena e di 39 modelli realizzati.
L'illuminazione della scena è prodotta con una luce d'ambiente e una diffusa ed è stato abbastanza semplice da realizzare. La luce che mi ha creato più problemi è stata quella del lampione visto che in XCModel la luce non passa attraverso gli oggetti trasparenti. Infatti, invece di avere una luce sola interno alla lampada, ho dovuto ricreare il gioco di luci ed ombre del quadro utilizzando cinque spot light variando tonalità, direzioni e intensità.
Realizzazione oggetti e superfici della scena
La la realizzazione degli oggetti che compongono la scena è avvenuta principalmente lavorando direttamente sui control point o creando le superfici per rivoluzione.
- Casa: La casa è stato l'elemento di base di tutta la scena nonchè quello che ha fatto da punto di riferimento a tutti gli altri oggetti presenti. Essa è composta da tre parti il tetto della casa (tettoCasa.db), il tetto della torretta (tettoCamp.db) e la base della casa (baseCasa.db).
La loro realizzazione è avvenuta aumentando e modificando i control point di figure geometriche "usuali", rispettivamente un prisma, una piramide e un parallelepipedo.

Fig. 1: Modello casa
- Finestra: Le tredici finestre non sono altro che una replicata e traslata nella posizione giusta. Una finestra è stata relizzata creando due ante (antaSXf1.obj, antaDXf1.obj), un davanzale (davanzaleF1.db) e quattro cardini (cardineFinSXaF1.db, cardineFinSXbF1.db, cardineFinDXaF1.db, cardineFinDXbF1.db).
I cardini della finestra non sono presenti in tutte le 13 finestre ma solo nelle 6 in basso in quanto si è considerato quelle in basso come scuri, quindi con cardini esterni, e le altre finestre come finestre senza scuri (cardini interni).
L'anta della finestra è stata fatta attraverso 4 parallelepipedi e una superficie piana per rappresentare il vetro. Il cardine invece è stato realizzato con la tecnica della revolution (New Surf->Revolution del tool XCsurf) partendo da una curva realizzata con XCCurv.
a)
b)
c)
d)
Fig. 2: Modello Finestra: a) profilo cardine, b) cardine, c) anta, d) finestra
- Lampione: Il lampione oggetto centrale all'interno della scena è stato realizzato principalmente con lo strumento revolution che ha reso la realizzazione di questo modello relativamente semplice. Questo modello è composto da una base (baseLamp.db), una gabbia dove sono contentuti i vetri, i quattro vetri (vetroLamp1.db, vetroLamp2.db, vetroLamp3.db, vetroLamp4.db) e infine il cappuccio (capLamp.db).
a)
b) 
c)
d)
e)
Fig. 3: Modello Lampione: a) profilo base , b) profilo cappuccio, c) base, d) cappuccio, e) lampione
- Cancello: la modellazione del cancello è stata suddivisa in due fasi: prima si è fatta la struttura portante (le due colonne colonneCanc.obj, la base pieCanc1.db, pieCanc2.db, la barra centrale e quella orizzontale barravc1Canc.db, barravc2Canc.db, barraOrizCanc.db) attraverso la modifica di parallelepipedi, poi dopo aver realizzato il palo di altezza minima tramite rivoluzione è riprodotto 12 volte e scalato per dare la forma ondulata del cancello.
Le colonne si sarebbero potute realizzare utilizzando lo swinging ma si è preferito operare con i control point vista la semplicità della loro forma.
a)
b)
c)
d) 
Fig. 4: Modello Cancello: a) profilo palo , b) palo, c) porte, d) cancello
- Pietra & lago: sono stati relizzati entrambi con la tecnica di estrusione.
La tecnica di extruding consiste nel realizzare una superficie a partire da una serie di
curve che ne delineano la forma e che vengono, in un certo senso, "spinte" (estruse) l'una verso l'altra al fine di definire
l'oggetto che si vuole creare.
Per poter realizzare una superficie estrusa basta caricare in XCcurv le curve/sezioni che formano la superficie, quindi,
una volta posizionate correttamente nello spazio 3D, eseguire il comando New Surf->Extruding selezionando le curve
nell'ordine opportuno.
a)
b)
c) 
Fig. 5: Modello Lago e Pietra: a) profilo pietra , b) pietra, c) porofilo lago
Immagini di Resa
Download
Problemi e bug
Nell'utilizzo dei tool forniti per la realizzazione del progetto facenti parte della suite XCModel 4.0 ho riscontrato i seguenti bug/problemi:
- XCCurv: non sono stati riscontrati particolari problemi nell'utilizzo del tool.
- XCSuf:
- il comando Copy non funziona e fa crashare il programma;
- quando si preme sul pulsante Cancel relativo alla finestra di selezione del file relativo alla curva o superficie da
aprire (quindi è stato eseguito il comando Open->(scelta di cosa si vuole aprire)->Ok(apertura finestra di selezione file)->Cancel),
viene generato l'errore "Loading Error: FILE NOT FOUND". Tale errore non dovrebbe apparire in quanto l'utente ha deciso di non
aprire nulla. Nel caso poi che l'utente abbia parto precedentemente curver e/o superfici, alla generazione dell'errore viene caricato
nuovamente l'ultimo file caricato;
- il limite di oggetti caricabili è alquanto fastidioso;
- ogni tanto ha subito una crash per motivi ingnoti.
- XCrayt: quando si tenta di fare Reload della scena senza averla salvata dopo le ultime modifiche, il programma crasha.
Suggerimenti
Utilizzato XCModel 4.0 mi è capitato più volte di pensare che certe cose possono essere migliorate, a partire sicuramente dal fornire una
documentazione più approffondita (tutorial compresi) e quindi più utile all'utente. Ecco qui alcuni consigli:
-
XCmodel in generale:
-
sarebbe utile avere un "righello" o comunque qualcosa che mi indichi le dimensioni di una curva o superficie in un'unità
di misura come quella metrica;
-
i vari controlli di tipo TextBox adibiti all'imput da parte dell'utente, perdono il focus appena il mouse esce dal controllo
stesso- Sarebbe necessario che questo non accada mai per migliorare l'usabilità dell'interfaccia.
- XCCurv: sarebbe utile che una volta impostata una funzione come Move, Delete, Weight ecc. (by Mouse) questa rimanga attiva fino
a che l'utente non prema un pulsante (es: Done come nella modalità By Kyb)
-
XCSuf: potrebbe tornare comodo avere come riferimento una sorta di piano zero (il piano sul quale vengono caricati gli oggetti e
che corrisponde al piano Z=0) un po come avviene nei tool commerciali.
-
XCrayt:
-
sarebbe utilissimo che il tool salvasse automaticamente in file temporanei ogni qualvolta l'utente voglia vedere il rendering
della scena una volta effettuate le modifiche senza dover per forza sovrascrivere il file originale (con la conseguenza poi di non
poter tornare indietro) o di dover salvare con un altro nome (Save As);
-
la navigazione all'interno dell'Object List potrebbe essere migliorata notevolmente se permettesse l'imput da tastiera
(navigazione mediante i tasti freccia).
- Description library: manca una funzione per settare la camera. Ora l'unico modo per poterlo fare è modificare a mano il file .vw.