XCMODEL

-Un'esperienza di modellazione e resa realistica-

C.d.S. Informatica - Corso di Grafica (Prof. Casciola)

Massimiliano Giannuzzi

 

 

Introduzione

    XCMODEL e' un sistema grafico interattivo basato sulle NURBS, composto da piu' sottoambienti dedicati alla modellazione 2D (xccurv),  modellazione 3D (xcsurf), operazioni booleane su superfici (xcbool), rendering tramite un ray-tracing puro (xcrayt).
L'esperienza consiste nella progettazione su carta e poi con xccurv e xcsurf di una scena composta da oggetti i cui boundary siano definiti da una o piu' superfici NURBS. Inoltre e' richiesta la resa realistica della scena modellata, tramite xcrayt.
 

Scelta del modello

    La prima fase del progetto consiste nella scelta di un modello appropriato alla modellazione.  Osservare gli oggetti che ci circondano, soprattutto i piu' familiari, toccarli, capire quali sono le parti che li compongono e immaginarli come curve estruse, ruotate, trasformate a creare superfici, o come superfici stesse stirate, allungate, scalate e' sicuramente la parte piu' eccitante della progettazione. Il mio iniziale entusiasmo pero' e' stato costretto a confrontarsi con la coscienza che non tutto e' modellabile.
Almeno non in modo semplice. La mancanza in xcsurf di un solido supporto assistito, interarattivo alla modellazione sculturata, ha portato al fallimento i miei primi (forse velleitari) tentativi di modellazione.
    Quindi a questo punto il mio consiglio e' di cercare oggetti semplici, dove per semplici intendo oggetti in cui si possono riconoscere delle parti distinte. Di queste si deve avere gia' all'inizio l'idea presisa di come realizzarle tramite gli strumenti tipici di xcsurf. Volendo si puo' fare un tentativo modellando prima le parti piu' complesse dell'oggetto: se il risultato e' accettabile procedere, altrimenti il mio consiglio e' di cercare qualcos'altro poiche' si rischia di non rimanere soddisfatti a lavoro finito. Se proprio non si ha l'intenzione di lasciar perdere, allora schematizzare, scremare il piu' possibile dai dettagli inutili gli oggetti piu' complessi da rappresentare stando attenti pero' a non denaturalizzare l'oggetto in questione. Il modello non deve ricordare il soggetto in modo vago. Lo scopo finale e' di avere un immagine che deve essere quanto il piu' possibile vicina a una fotografia. Per questo prima di iniziare a modellare accertatevi di avere delle buone texture da mappare sui vostri oggetti. Il realismo di una scena, dato un buon modello, dipende soprattutto dalla bonta' delle texture.
 
 

Presentazione del modello

    La scena rappresenta un angolo di giardino dove e' presente una sedia a sdraio con un poggiapiedi affiancata da un tavolino sul quale e' appoggiato un cocktail. Il tutto all'ombra del classico ombrellone. Lo spunto per la realizzazione degli oggetti di arredamento deriva dalla visione di un catalogo di mobili, tranne per l'ombrellone che e' stato realizzato senza alcun riferimento diretto.
    La scena e' stata progettata logicamente seguendo una strategia "inside-out": si e' iniziato a modellare un soggetto (la sedia) che occupa il centro della scena. Da qui, proseguendo "a macchia d'olio", e' stato realizzato il poggiapiedi (sfruttando anche le curve modellate per la sedia), il tavolino, il cocktail e alla fine l'ombrellone. Gli oggetti ambientali (piano, muri e cielo) sono stati realizzati in un secondo momento al momento della composizione della scena.
 

Sedia

PoggiaPiedi

Tavolo

Cocktail

Ombrellone

Ambiente

Il mio consiglio e' di modellare tramite CP o modificando la partizione nodale. L'utilizzo indiscriminato dei pesi puo' portare a risultati bizzarri.

Composizione della scena

Arrivati a questo punto bisogna comporre la scena. L' uso della libreria descriptor, oltre a essere il modo piu' comodo di procedere, risulta fondamentale quando la scena diventa particolarmente complessa e si vogliono texturare classi di oggetti (il supporto interattivo di xcrayt al texturing e' in fase di sviluppo). Consiglio di seguire questo ordine:
  1. Caricare gli oggetti come liste delle loro parti
  2. Posizionarli opportunamente nello spazio (scalarli, ruotarli, traslarli)
  3. Posizionare le luci e renderizzare la scena per avere un idea del modello
  4. Se necessario, creare classi di superfici in base a caratteristiche di materiale comuni (senza visualizzarle)
  5. Attribuire ad ogni superficie e ad ogni classe di superfici un attributo o una texture
  6. Renderizzare la scena
  7. Modificare i parametri errati, ritornare al punto precedente e se ok modificare lo script con i nuovi valori
Questo e' il mio script.
 

Reported Bug


    Alcune superfici modellate con curve dai pesi troppo alti vengono renderizzate male.


Figura 2: l'effetto di trasparenza non voluto e' dato dalla modellazione con pesi troppo alti della curva traiettoria.
(a)
(b)
(c)
Figura 3: Errore di rendering facendo swinging su un ottagono NURBS di grado 2 con pesi molto alti (a) e CP doppi nei vertici (b). Risultato corretto utilizzando una NURBS di grado 1 (c).

Gallery

 


Download modello

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

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