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