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
Due strutture che ne costituiscono il telaio realizzate come tubular
tra una curva profilo simile a un ellissoide (NURBS cerchio a nove CP,
schiacciato e con pesi modificati) e una curva traiettoria (NURBS di grado
3, con CP doppi a schiacciare la curva sui bracci e sulla base).
Due travi, entrambe realizzate per extruding dell'ellissoide. Una
delle due e' stata ruotata opportunamente a seguire l'andamento del telaio
tramite il menu interattivo di xcsurf.
Quattro "tappi" relativi alla struttura telaio realizzati per swinging
dell'ellissoide
e del suo raggio. Due di questi sono stati ruotati in modo simile alla
trave sopra.
Il cuscino realizzato come tubular tra una curva traiettoria chiusa
(NURBS di grado 3) e lo stesso ellisoide ulteriormente schiacciato e allungato.
PoggiaPiedi
Due strutture di base realizzate in modo simile a quelle del telaio della
sedia.
Due travi, vedi sedia.
Un cuscino quadrato, realizzato come tubular tra due curve identiche
a quelle dell'ellissoide schiacciato utilizzato per il cuscino della sedia
perpendicolari tra loro.
Tavolo
Due strutture di base realizzate in modo simile a quelle del telaio della
sedia.
Due piani, caricati come usual (cilindri) e scalati.
Quattro cilindretti, realizzati in modo simile ai piani.
Cocktail
Il bicchiere, classica revolution di una NURBS di grado 3.
Un tronco di cono che rappresenta il liquido, creato per revolution
di una curva 2D modellata su quella del bicchiere.
La cannuccia, ottenuta per extruding di due cerchi NURBS a nove
CP scalati, ruotata in modalita' interattiva.
Ombrellone
La tela, realizzata per swinging di una NURBS di grado 3 su un ottagono
ottenuto da un cerchio NURBS a nove CP: dopo aver fatto un refinement e
ottenuto cosi' l'ottagono circoscritto sono stati salvati i CP, utilizzati
poi in fase di loading come shape della mia nuova NURBS di grado 1.
La mazza, cilindro scalato.
Le aste, tubular a profilo circolare, con traiettoria NURBS di grado
1 modellata sulla curva profilo della tela.
I cappucci delle aste, caricati come usual (tronchi di cono) scalati
e ruotati in modalita' interattiva.
La punta, i vari snodi, la base tutti creati per revolution.
Ambiente
Il cielo: una sfera, usual.
Due muri: parallepipedi caricati come usual e scalati.
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:
Caricare gli oggetti come liste delle loro parti
Posizionarli opportunamente nello spazio (scalarli, ruotarli, traslarli)
Posizionare le luci e renderizzare la scena per avere un idea del modello
Se necessario, creare classi di superfici in base a caratteristiche di
materiale comuni (senza visualizzarle)
Attribuire ad ogni superficie e ad ogni classe di superfici un attributo
o una texture
Renderizzare la scena
Modificare i parametri errati, ritornare al punto precedente e se ok modificare
lo script con i nuovi valori
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: