Relazione per il secondo progetto del corso di Grafica (C.d.S. Informatica)


Utilizzando i pacchetti xccurv, xcsurf e xcrayt di xcmodel 3.0, realizzare un'esperienza significativa di modellazione e resa realistica.


Di Flavio Tuosto



Specifiche del progetto

Si progetti prima su carta e poi con i pacchetti messi a disposizione un'intera scena composta da oggetti i cui boundary siano definiti da una o piu` superfici NURBS. Si richiede la modellazione di almeno un oggetto (una o piu` superfici) di forma complessa e stilisticamente apprezzabile. Si generino alcune immagini realistiche della scena realizzata con particolare attenzione ai dettagli dell'oggetto piu` complesso che si e` modellato.


Indice


Breve descrizione della scena realizzata

La scena realizzata descrive una camera con due oggetti: un tavolino ed un telecomando. Gli elementi scelti non sono frutto di immaginazione, ma oggetti reali, realizzati tenendo in considerazione le dimensioni reali, realizzate e cercando di rispettare le giuste proporzioni.

La scelta degli oggetti non è casuale, il mio intento è stato di sviluppare gl'oggetti utilizzando il maggior numero di funzioni messe a disposizione da XCMODEL.

Indice

Dettagli sulla realizzazione dei singoli oggetti della scena

stanza

Pareti e pavimento

Per realizzare la struttura della stanza ho caricato 2 piani per costruire le pareti ed un altro per il pavimento scalandoli e disponendoli in modo tale da creare un angolo che faccia da sfondo alla scena, le superfici sono state disposte sfruttando la funzionalità traslate cp-to-cp, una delle “numerical modify“messe a disposizione da xcsurf.

Alle superfici sono state applicate delle texture reperite da internet, e convertite in formato *.hr per essere utilizzate dal programma xcrayt.



Indice

Tavolino

Gamba

Utilizzando xccurv ho creato una curva per interpolazione di grado 3 e modellata a secondo la forma dell’oggetto. Ho cercato di essere più preciso possibile, inserendo ed addizionando control point; in seguito con l’utilizzo di xcsurf, tramite la funzione revolution, è bastato semplicemente ruotare l’oggetto per ottenere il file gamba.db

 

Base e parte superiore del tavolo

Poiché la pianta del tavolo è a base ottagonale, ancora una volta, ho fatto uso di xccurv per realizzare un ottagono, in seguito ho smussato gli spigoli, in modo tale da rispecchiare fedelmente l’oggetto reale.

 

 

Dopodiché, per costruire la pianta ho realizzato by mouse una curva di grando 3 che consiste in un unico punto (4 control point coincidenti), collocandolo in una zona qualunque del piano. Sfruttando la funzione extruding tra punto ed ottagono, ho ottenuto come risultato il file pian8.db.

Come per la gamba, ho utilizzato xccurv costruire il profilo della base ed il profilo della parte superiore del tavolo e grazie alla funzione di swinning, tra piano ottagonale e per ciascun profilo, ho ottenuto rispettivamente i due i due solidi (base.db, piano.db!?!?!?), ottenute queste parti ho assemblato i vari pezzi insieme tramite una funzione sdi xcsurf cp-to cp. Alle superfici è stata applicata una texture reperita da internet.

Indice

Telecomando

Parete inferiore

Utilizzando xccurv, ho disegnato la curva che rappresenta la parte frontale inferiore del telecomando (V.fig.telecomando_sotto.bd), ed inseguito, il profilo della parte frontale superiore (telecomando_sopra.db). Queste curve sono state utilizzate per creare la faccia sia anteriore che posteriore del telecomando, ed estruse con un punto creato con 4 cp.


Indice

Corpo

Il corpo dell’oggetto è stato creato tramite la funzione tubular tra le curve create (tele_sotto, tele_sopra) e una linea retta che rappresenta la lunghezza dell’oggetto. Successivamente, ho realizzato i tasti per la selezione dei canali, caricando dei solidi cilindrici messi a disposizione da xcsurf, sono stati scalati e disposti sull’oggetto; lo stesso procedimento è stato adottato per gl’altri tasti aventi la stessa forma.

Indice


Tasti e calotta

Per quanto riguarda i tasti a base triangolare, è stata definito un triangolo con una curva di grado 1.

In seguito, è stato duplicato e traslato sull’asse x e successivamente sono stati creati 2 punti sui rispettivi piani, ho estruso questi 4 elementi ottenendo il tasto desiderato, in seguito ho duplicato il solide disponendoli entrambi sulla parte rialzata del telecomando (calotta.dbe).

Questa è stata realizzata caricando una sfera tra le superfici usual disponibili, ed utilizzando la funzione trim ho selezionato la parte superiore ed l’ho disposta sul telecomando. Infine, per costruire il trasmettitore ho combinato due solidi: un cubo ed una sfera.

Indice

Textures

Tutte le texture della scena sono state applicate utilizzando la routine Set_projection_texture ( ) della libreria descriptor. Prima della chiamata a questa funzione ho opportunamente scalato, ruotato e traslato le varie superfici in modo che la texture fosse applicata nel modo corretto; dopo Set_projection_texture ( ) ho applicato le trasformazioni inverse in modo da riposizionare le varie superfici al loro posto.

Considerazioni su XCmodel

Malfunzionamenti

In xccurv, le funzioni Traslate, Rotation, Scalate non funzionano correttamente, infatti se si vuole modificare un a curva, per esempio traslandola, la curva viene spostata in punti definiti, perdendo così la precisione desiderata

In xcsurf, con la funzione Swinning non riesce ad ottenere un solido se la curva di partenza ha control point coincidenti, infatti e’ stato necessario spostarli. Nel caso si chiude qualsiasi finestra dell’applicazione si chiede tutto il programma. Come si puo’ vedere dalle figure renderizzate, anche evidenziando la casella aliasing, si può notare che alcuni contorni non sono ben definiti, ciò non accade se le immagini vengono create in un formato + piccolo.

Possibili Miglioramenti

Avendo già avuto delle esperienze con programmi CAD (es. autoCAD 2004), mi è stato + facile fare dei paragoni, ritengo che XCmodel dia molta libertà di movimento, automatizzando l’esecuzione di vari compiti e lavorando in maniera dinamica Questa vuol essere una critica costruttiva, per ottenere un programma competitivo a quelli esistenti già in commercio bisognerebbe “mettersi nei panni” di un disegnatore, oltre ad osservareil programma dal punto di vista matematico-informatico. Infatti è necessaria un’interfaccia grafica che aiuta a costruire NURBS in maniera + intuitiva, in autoCAD, una volta creato un solido vengono evidenziati, dal programma stesso, dei punti di maggiore interesse (es. baricentro, ortocentro, punto medio etc), questi sono molto utili nel caso bisogni posizionare, combinare od unire dei solidi. L’operazione oltre ad essere più veloce risulterebbe più precisa, evitando eventuali input da tastiera. Utilizzando la libreria Descriptor, in fase di compilazione non si fa riferimento a che riga si sia verificato l’errore.

Download

E'possibile scaricare i sorgenti cliccando qui

Riga di comando per decomprimere i files da shell : tar zxvf vale.tar.gz


Immagini della scena renderizzata

Clicca sulle immagini per ingrandire.

 

Indice