Corso Di Grafica
Anno Accademico 2002/03
Prof. Giulio Casciola
Secondo Progetto: Render realistico con Xcmodel 3.0
Purple sitting set- studente Alessandro Pegoraro
Obiettivi: Lo scopo del secondo progetto del corso di grafica dell'A.A. 2002/03 è la realizzazione di un'intera scena composta da oggetti definiti mediante superfici NURBS con l'utilizzo dei pacchetti xccurv, xcsurf, xcrayt di xcmodel 3.0.

Scelta dello scenario: Sono partito con l'idea di raffigurare alcuni oggetti inanimati senza eccedere in creatività, scegliendo cioè un soggetto piuttosto 'classico' e concentrandomi sul realismo del risultato finale, sulla scelta dei colori e dei materiali. Dall'idea iniziale di natura morta sono passato ad uno scenario più 'sintetico', in quanto le imperferzioni e le irregolarità degli oggetti presenti in natura sarebbero state difficili da rendere; inoltre una scelta di componenti industriali mi avrebbe stimolato nella modellazione dei singoli componenti, ricreando effetti di riflessione e colore che solo l'interazione coerente di materiali mi avrebbero potuto offrire.

 

640 x 512  - 44 KbLa fase di modellazione è partita dalla sedia, e precisamente dalle gambe posteriori. Allungato un cilindro, tramite interactive modify ho successivamente piegato lo stesso ed aumentato il grado dei knot, per ottenere una flessione più morbida. Dopo una rotazione su x e un'opportuna traslazione avevo i due 'paletti' da collegare con aste per ricreare lo schienale dell'oggetto; in questa fase la duplicazione di curve mi ha facilitato, in quanto dopo aver ottenuto per skinning la prima delle tavole dello schienale mi è bastato traslarla e ritoccarla per ottenere le altre. Il momento più difficoltoso è consistito nel rispettare gli incastri (considerando un materiale metallico) e la simmetria generale; dopo lo schienale, ho ottenuto le gambe anteriori con la stessa tecnica delle precedenti, 'flettendo' in modo più leggero i 9 control point della faccia superiore del cilindro. La seduta è stata aggiunta per ultima, modellata partendo da un tronco di cono e schiacciandolo, anche qui modificando il grado per arrotondare le forme. Ho aggiunto un effetto ergonomico abbassando e torcendo la parte anteriore della stessa.

Lo sgabello ha presentato minori difficoltà, probabilmente anche grazie alla sua maggiore simmetricità. E' stato sufficiente modellare una gamba in modo simile alla sedia, duplicare e ruotare di multipli di 90° sull'asse z, poi traslare.
Qui la seduta è ottenuta da un semplice cilindro, appoggiato sulle barre a x simili a quelle dell'oggetto precedente; ho potuto facilmente rispettare le simmetrie grazie alle trasformazioni del numeric modify, rivelatosi utilissimo in questa fase, in quanto mi garantiva di agire sulle diverse curve dei componenti in modo identico. Per rispettare le proporzioni ho rimpicciolito leggermente l'intero sgabello, pensando anche in questo caso ad una seduta in tessuto ed al corpo metallico.

640 x 512  - 44 KbPer illuminare la scena realisticamente ho pensato ad una fonte di luce classica, di tipo spotlight, posizionata all'interno di una campana di vetro. La lampada è composta di 5 superfici distinte, tutte modellate a partire da cilindri tranne la cupola, ottenuta da una sfera grazie al trimming. Al momento del posizionamento delle luci ho annotato le coordinate del punto più alto della campana luminosa, usandole come riferimento per inserire la 'lampadina'; in questo modo ho ottenuto:

  • proiezione di ombre sul basamento
  • cono di luce realistico

Il tavolino è stato collocato per completare il quadro, e fungere da sostegno per un soprammobile. Esso è modellato partendo dalle superfici precedenti, scalate e riposizionate.


Il vaso è stato ottenuto facendo scorrere un cerchio lungo una retta con tubular, e quindi arrotolato su sè stesso di 180° sull'asse z. Per rendere un effetto vetro artigianale ho applicato una texture.
 

 

 

Fase di Render: una volta modellati gli oggetti ho studiato brevemente una disposizione armoniosa, che da diversi punti di vista non sovrapponesse totalmente i soggetti. Ho quindi importato nel descriptor i 4 file object spostando come opportuno, escludendo dalla lista delle superfici le parti che intendevo renderizzare con materiali diversi tramite l'uso di textures. Ecco la lista delle curve:

Sedia Sgabello Tavolo Lampada
1.db
2.db
3.db
4.db
5.db
6.db
7.db
8.db
9.db
10.db
11.db
12.db
sedutasg.db
schienale.db
1sg.db
2sg.db
3sg.db
4sg.db
5sg.db
6sg.db
7sg.db
8sg.db
sedutasg.db
1tav.db
2tav.db
3tav.db
4tav.db
5tav.db
6tav.db
7tav.db
8tav.db
10tav.db
tav.db
1lamp.db
2lamp.db
3lamp.db
4lamp.db
5lamp.db
6lamp.db
cono.lamp.db

Ho scelto una luce ambiente bianca, con luminosità 1500, ed un background scuro riflettente. Dietro lo schienale della sedia è presente una seconda fonte luminosa a bassa intensità e portata, usata per smorzare alcune ombre. Il materiale della lampada, usato per base e stelo, simula un verniciato lucido mentre lo schienale della sedia è trasparente.
Ho trovato molto utili alcuni comandi del file descriptor per spostare interi oggetti, questo mi ha lasciato maggiori libertà in fase di composizione.

Per le sedute ho adoperato un'immagine che potesse ricordare del tessuto, portando a zero i parametri che regolano la riflettività. Si sono rese necessarie due trasformazioni di scala per immergere l'oggetto nello spazio textures: esso viene prima rimpicciolito di molte volte, poi 'tinto' e infine ridimensionato all'originale.
Intendevo copiare le cromature tipiche dei metalli spazzolati, come acciaio o alluminio; ho applicato una texture grigia e striata a questo fine sulla struttura dei tre oggetti.

Purtroppo il risultato in prossimità dei bordi non è eccellente, la texture si ripete infatti solo sul piano xy ed appare schiacciata sulle superfici verticali, tuttavia l'effetto mi è sembrato sufficientemente realistico. Al fine di ottenere ulteriori riflessi sul pavimento ho assegnato al materiale che funge da basamento valori più alti di riflettività.

Alcuni render da differenti angolazioni
   

Problemi e Difficoltà: La parte del lavoro più lunga e difficoltosa è stata la sedia, che ho cercato di curare durante la modellazione in modo che risultasse proporzionata e realistica. Dopo diversi tentativi con cilindri e superfici tubolari ho incontrato alcuni ostacoli nel posizionamento dei singoli pezzi, poichè l'interactive modify non produceva intuitivamente gli spostamenti desiderati, ma dopo alcune ore ho scoperto che lo spostamento numerico applicato a singoli CP produceva effetti migliori; la prima modalità si è resa comunque indispensabili per operazioni di scala e rotazione, davvero veloci ed intuitive in questa fase.
Il momento di render non ha presentato limiti invalicabili, solo un pò di impegno per posizionare nello spazio gli oggetti e immergerli nelle textures. Con relativà facilità ho trasformato in hr delle immagini provenienti dalla rete, passando per il formato ppm.

 

E' possibile effettuare il download del seguente file contenente il modello realizzato:

pegoraro_sedia.tgz   (scompattare con il comando: tar zxvf pegoraro_sedia.tgz)