Progetto2: Modellazione e resa realistica con XCMODEL
Cornell-Box Juggling
di Carlo Mangani

juggling



Index


1. Scopo del progetto (su)

Lo scopo del progetto era la realizzazione di una scena composta da curve e superfici SPLINE e/o NURBS di forma non banale, utilizzando i pacchetti della suite XCMODEL versione 3.0. Nelle varie fasi di progettazione sono stati utilizzati i seguenti pacchetti:
  • XCCURV: per la realizzazione delle curve SPLINE 2D
  • XCSURF: per la generazione delle superfici utilizzando le curve generate con XCCURV e di curve SPLINE 3D
  • XCRAYT: modellazione della scena complessa e resa utilizzando il motore ray-tracing HRAYT
  • HRCONVERT: per l'esportazione delle immagini rese con HRAYT dal formato proprietario HR nei formati standard piu' comuni

2. Gli oggetti (su)

Gli attrezzi da giocoleria hanno sempre suscitato in me un fascino particolare, sopratutto quando usati da bravi giocolieri, inoltre, da parecchi anni ormai, ho iniziato ad esercitarmi con uno di essi in particolare, il diablo. Alla base delle evoluzioni (trick) compiute con il diablo c'e' la rotazione lungo l'asse centrale dell'oggetto impressa utilizzando un filo legato a due bacchette. La tradizione fa risalire l'origine del diablo come attrezzo circense di provenienza cinese. I primi modelli erano realizzati in legno, oggi invece i materiali usati sono la gomma (o la plastica dura) con parti in alluminio e ferro o addirittura interamente in ferro per i modelli infiammabili (mestiere pericoloso quello del giocoliere). Le bacchette invece sono generalmente in legno ma esistono modelli in fibra di carbonio e gommapiuma (quelli che troveremo nella scena realizzata). Il filo e' composto da una fibbra sintetica e colorata.
Tra gli altri oggetti che compongono la scena troviamo delle clave, delle palline colorate ed una sfera di cristallo (contact-ball). In tutto nella scena sono stati inseriti 13 oggetti, 2 diablo, 3 clave, 2 bacchette, 1 filo, 3 palline, 1 sfera ed 1 box che racchiude l'intera scena.

3. La scena (su)

La Cornell-Box e' una scena "tipo" utilizzata per testare le potenzialita' di un motore di ray-tracing, all'interno di una stanza con delle pareti colorate. Gli oggetti piazzati al suo interno sono illuminati da un'unica luce puntiforme, bianca, di intensita 2.5 e range 6.7. La luce riflette sulle pareti, creando zone dombra agli angoli interni del parallelepipedo. In piu', alcuni materiali utilizzati hanno alti indici di rifrazione, in primis la sfera di cristallo, creando cosi' un gioco di riflessi fra i vari oggetti.

4. La modellazione (su)

La maggior parte degli oggetti realizzati sono, come si puo intuire dalla forma, superfici di rivoluzione. In particolare, il diablo e' composto da 3 curve, la clava da 5 curve, mentre per la bacchetta ho utilizzato dei semplici cilindri, per il corpo e per l'impugnatura, ed un'ulteriore superfice di rivoluzione per le estremita'. Il filo, infine, e' una superfice tubolare che utilizza come curva di profilo una circonferenza. Analizziamo i componenti principali in dettaglio:
diablo-curve.png Le curve del Diablo
Ecco le tre curve che compongono il diablo: la rossa costituisce la piastra metallica interna al diablo, dove viene avvitato il perno centrale, la verde e' la coppa di gomma del diablo, la bianca e' il centro del diablo, anch'esso metallico. Le curve sono NURBS interpolate (grado 3) con il metodo di Lagrange.


In XCCURV caricare centro.db, copertura_coppa.db e coppa_diablo.db.
diablo-superfice.png Le superfici del Diablo
Sono delle superfici di rivoluzione utilizzando come profili le curve diablo precedenti. Vista la simmetria delle due meta' del diablo, sono state create 2 parti perfettamente uguali e poi assemblate utilizzando le funzionalita' di XCSURF.


In XCSURF caricare le superfici centro_down.db, centro_up.db, prova_coppa.db, coppa_down.db, plate.db e plate_down.db. Oppure caricare le curve centro.db, copertura_coppa.db e coppa_diablo.db e creare delle superfici di rivoluzione utilizzandole come curve di profilo.
clava-curve.png Le curve della Clava
La clava si compone di 5 parti: la rossa e' l'estremita' superiore, l'arancione e' il corpo, la verde e' l'attaccatura fra il corpo ed il manico, la blu e' il manico ed infine la bianca e' l'estremita' inferiore. Anche in questo caso si tratta di NURBS interpolate (grado 3) con il metodo di Lagrange.


In XCCURV caricare le curve: clava_body.db, clava_head.db, clava_fondo.db, clava_intermezzo.db e clava_manico.db.
clava-superfice.png Le superfici della Clava
Come per il diablo, si tratta di superfici di rivoluzione utilizzando le curve della clava come profili.


In XCSURF caricare le superfici: clava_body.db, clava_fondo.db, clava_head.db, clava_intermezzo.db e clava_manico.db. Oppure caricare le omonime curve della clava e creare delle superfici di rivoluzione utilizzandole come curve di profilo.
filo-curva.png La curva di traiettoria del filo
Questa curva viene utilizzata come curva di traiettoria per il filo del diablo, che nella scena e' collegato alle due bacchette. Si tratta di una semplice NURBS, disegnata "alla meglio", pensata per essere la curva di traiettoria per una superfice tubolare.


In XCCURV caricare la curva: filo.db.
filo-superfice.png La superfice tubolare del filo
E' una superfice prodotta facendo percorrere ad una curva di profilo, in questo caso una circonferenza, una curva di traiettoria, la curva del filo. Il risultato e' un oggetto tubolare della forma della curva di traiettoria. In seguito la superfice e' stata modificata nel punto di intersezione centrale, in modo da far passare un filo sotto l'altro, e le due estremita', in modo da farle coincidere con le imboccature delle bacchette.


In XCSURF caricare la superfice filo.db, oppure caricare la curva omonima, caricare una curva circonferenza che dovra' essere opportunamente scalata, ed infine caricare una curva tubolare utilizzando come profilo la circonferenza e come traiettoria la curva del filo.
superfici.png Tutte le curve e le superfici
Tutte le curve e le superfici utilizzate nella scena. Partendo dal basso: le superfici della clava, le curve della clava, le superfici del diablo, le curve del diablo, le curve della bacchetta e del filo, le superfici della bacchetta e del filo ed infine la contact-ball e la pallina.


In XCSURF importare il file curve_superfici.igs.
scena.png La scena finale
Il prodotto finale.


In XCRAYT caricare il file juggling.md.

5. Conclusioni (su)

Il sistema XCMODEL a prima vista risulta molto difficile da utilizzare e a volte anche incomprensibile. Tuttavia man mano che si prende dimestichezza con gli strumenti offerti, risulta essere un ottimo programma di modellazione, potente e preciso nella fase di creazione, soddisfacente nella fase di resa. In ogni caso sono ancora molti i problemi legati al programma, dall'interfaccia ai bug del codice, che spesso rendono il suo utilizzo frustrante. In maniera particolare il pacchetto XCRAYT spesso si blocca non appena viene premuto il tasto Render riportando un messaggio di errore nel file .md che a quel punto non viene piu' caricato dal programma. Risultato: alcune ore di lavoro perse. A parte questi problemi, utilizzare XCMODEL mi ha fatto apprezzare i vantaggi della modellazione con superfici NURBS e in definitiva imparare molto piu' agilmente i concetti legati ad esse.

6. Galleria (su)

jugHigh.jpg jugSfera.jpg jugSfera1.jpg jugClave.jpg
jugDiablo.jpg jugDiablo1.jpg jugRed.jpg jugGreen.jpg
(Alcune rese realistiche della scena)

7. Download (su)

juggling.tgz(385kb): pacchetto contenente le curve (SPLINE 2D), le superfici (SPLINE 3D), ed il modello dell scena.

Scompattare nella directory base di XCMODEL