Visual Computing Group

Il Visual Computing Group dell’Istituto di Elaborazione di Informazione del Consiglio Nazionale delle Ricerche svolge da molti anni attività di ricerca del settore della grafica tridimensionale conseguendo numerosi importanti traguardi scientifici e riconoscimenti sul piano internazionale.

Attività del gruppo

Visualizzazione dati scientifici

Tra le prime attività di cui si è occupato del VCG vi è lo studio di tecniche e algoritmi per la visualizzazione di dati scientifici, in special modo dati volumetrici come quelli provenienti da TAC, radiografie, simulazioni di fluidodinamica, modelli ad elementi finiti etc..

Riguardo a questa tematica sono stati sviluppati vari algoritmi efficienti per l’estrazione ed il rendering di isosuperfici da dataset volumetrici ed il rendering volumetrico diretto di tali dati. Tali algoritmi sono stati poi utilizzati in varie applicazioni prototipali e valutati in vari ambiti industriali e medicali.

Trattamento mesh di grandi dimensioni

La scansione di modelli tridimensionali da oggetti reali ha portato la necessità di sviluppare algoritmi in grado di trattare la grande mole di dati prodotti. Il gruppo Visual Computing ha realizzato applicazioni per il trattamento di questo tipo di mesh, in grado di fondere, raffinare e decimare modelli estremamente complessi.

Il più importante impiego di queste tecnologie è stato il trattamento dei dati del progetto Digital Michelangelo condotto dalla Stanford University: la scansione del David di Michelangelo aveva prodotto 60 gigabyte di dati, difficilmente utilizzabili vista la loro mole. Il modello del David è ad esempio costituito da più di 50 milioni di facce. Utilizzando un algoritmo innovativo che opera in memoria secondaria è stata effettuata per conto della Stanford University la semplificazione accurata ufficiale di questi modelli. I modelli semplificati cosi prodotti saranno poi mostrati al pubblico nell’inverno 2002 in una installazione interattiva permanente alla Galleria dell’Accademia a Firenze accanto al modello vero del David di Michelangelo.

Acquisizione automatica di  modelli tridimensionali

Dopo aver trattato mesh provenienti da scansioni di altri gruppi di ricerca ed università, l’attività del gruppo si è orientata alla produzione di una suite di programmi in grado di gestire facilmente ed efficientemente tutto il processo di scansione di oggetti tridimensionali. Sono stati sviluppati quindi strumenti che si occupino del riallineamento e della successiva fusione delle varie parti della scansioni.

E’ stato inoltre realizzato all’interno del gruppo uno scanner 3D a luce strutturata di basso costo basato su di un comune proiettore da PC ed una fotocamera digitale; con questo strumento è stata effettuata la scansione della Minerva di Arezzo presso l’Istituto Archeologico di Firenze. Attualmente è stato acquistato uno scanner Minolta a luce laser, ed è in corso la reingegnerizzazione dei driver per aumentarne flessibilità e prestazioni.

Particolarmente interessante è lo studio di algoritmi per l’acquisizione automatica e ad alta qualità della texture di colore della superficie di oggetti reali. Il vaso mostrato in figura non è stato modellato a mano ma è il risultato delle più avanzate tecniche di acquisizione automatica di geometria e colore, si noti la qualità della texture, l’assenza di discontinuità e variazioni di colore.

Altre attività

Parallelamente a queste attività, sono in corso collaborazioni con le Belle Arti per la realizzazione di alcuni strumenti di visualizzazione per mesh di oggetti d’arte. Questo comprende uno strumento in grado di visualizzare ed esplorare mesh di grandi dimensioni (come il David citato in precedenza) da utilizzarsi all’interno di musei, ed un sistema di rendering non fotorealistico con stile di disegno manuale da utilizzare in campo divulgativo e documentale.

PlugIn per Maya

Le svariate attività del gruppo di ricerca ha portato allo sviluppo di un gran numero di algoritmi generici per l’elaborazione di mesh poligonali; algoritmi che sono poi stati implementati in una libreria ad uso esclusivamente interno.

Di recente questa tendenza si è invertita ed è in corso l’importazione di alcuni di questi algoritmi all'interno di Maya ed il rilascio con licenza di alcuni strumenti software utilizzati per la visualizzazione e l’editing di mesh poligonali

I plugin realizzati (e quelli in studio) si basano fortemente sulle librerie grafiche OpenGL, sia per la visualizzazione che per il calcolo vero e proprio. E’ proprio il punto più innovativo di questa suite di prodotti; sfruttare in modo intensivo le capacità dei nuovi hardware grafici attualmente in commercio, delegando a questi calcoli che altrimenti graverebbero sulla CPU .

Contatti

Visual Computing Group

I.E.I. - C.N.R

Via V. Alfieri,1

56010 S. Giuliano (Pisa)

ITALY

Pagina web http://vcg.iei.pi.cnr.it/

Roberto Scopigno

email: roberto.scopigno@cnuce.cnr.it

phone: +39 050 315 2929

fax: +39 050 313 8091

mobile: +39 348 396 6819

Claudio Montani

email: montani@iei.pi.cnr.it

tel. +39 050 315 2923

fax +39 050 315 2810

mobile +39 348 39 72 154

Paolo Cignoni

email cignoni@iei.pi.cnr.it

Phone: +39 050 3152927

Fax: +39 050 3152810


      

Decimator

 

Il decimatore è uno strumento per la semplificazione accurata e controllata di mesh poligonali. In tutte le produzioni tridimensionali interattive, in special modo nei videogiochi, la realizzazione di mesh è sempre vincolata all’utilizzo di un numero limitato di facce poligonali. Il plugin in questione permette di ottenere un modello costituito da un numero prefissato di facce a partire da un modello molto accurato.

Il prodotto si distingue dal decimatore già presente all’interno di Maya per l’efficienza e la qualità delle mesh prodotte. Esistono due tipi di decimazione: globale, che agisce indistintamente su tutto l’oggetto e per selezione, in cui si può specificare manualmente in quale parte degli oggetti deve essere effettuata la decimazione.

In tutti e due i casi è possibile specificare, attraverso i parametri del plugin, se come obbiettivo vogliamo ottenere un numero prefissato di facce oppure decimare fino ad una soglia di errore massimo. Possiamo poi specificare che il processo avvenga conservando le caratteristiche geometriche della mesh di partenza.

Caratteristiche

·    L’obbiettivo della decimazione è specificabile come percentuale di facce iniziali oppure come massimo errore da introdurre

·    Parametri di decimazione:

o conservazione topologia

o conservazione boundary

o mantenimento normali

o piazzamento ottimale dei vertici

·    Decimazione sull’intero oggetto oppure su area, tramite Paint Selection

Utilizzo

Selezionato l’oggetto da decimare si possono impostare i parametri di decimazione attraverso un pannello MEL.

Nel caso del decimatore con selezione, dopo aver scelto la mesh da decimare, dovranno essere selezionate le zone dove effettuare la decimazione: l’algoritmo considererà tutta la mesh per la valutazione dell’errore (garantendo così un risultato ottimale), ma andrà a modificare solo le zone prescelte.

Esempi

Alcuni oggetti elaborati con il decimatore: nel primo caso, una decimazione globale, si passa da 25.000 a 12.000 e a 6000 facce, pur conservando in maniera eccellente la resa visuale dell’oggetto. Nel secondo esempio, invece, si è provveduto ad indicare al decimatore le parti dove effettuare la riduzione di geometria (la pancia dell’uccellino) sicuri di non intaccare dettagli significativi.

Casella di testo: Decimazione globale: Il numero di facce si dimezza di modello in modello.

Casella di testo: Decimazione per selezione: la pancia è stata ridotta al 20% delle facce originali


Redetailer

 

Questo è sicuramente il tool più innovativo tra quelli proposti, ed è visto come complemento, ma non solo, del decimatore. Date due rappresentazioni di uno stesso oggetto, una ad alto ed una a basso livello di dettaglio, permette di costruire una normal map da applicare all’oggetto semplificato in maniera da ricostruire il dettaglio perso durante la decimazione. Allo stesso modo, può essere anche estratta una depth map da usare come displacement.

Questa mappa risulta particolarmente utile per un successivo impiego dei modelli decimati all’interno di motori interattivi come quelli dei videogiochi e di ambienti virtuali. I risultati che si possono ottenere in questo tipo di applicazioni sono eccezionali, vista la disponibilità di schede grafiche (come, ad esempio, la famiglia GeForce) in grado di utilizzare bump mapping a livello hardware.

Caratteristiche

·    Generazione mappa di normali

·    Generazione mappa di offset

·    Tempo di calcolo ridotto (< 1 minuto per coppia di oggetti 25000facce / 500facce )

Utilizzo

Selezionati i due oggetti da trattare, viene attivata una finestra di interfaccia OpenGL. In questa finestra possiamo osservare i rapporti spaziali fra i due oggetti e valutare subito l’efficacia del redetailing. Effettuato il calcolo della mappa, infatti, è disponibile una preview sia della mappa generata che del vero e proprio effetto

Esempi

Di seguito possiamo osservare un esempio di ridettagliamento di una mesh poligonale decimata in precedenza: Possiamo vedere la finestra di calcolo in azione, le mappe (normali e displacement) generate e la preview dell’ effetto finale.

Casella di testo: L’interfaccia del redetailer: il modello ridotto è visto in wireframe, quello completo solido. E’ possibile effettuare zoom per osservare il risultato del calcolo

Casella di testo: Depth Map

Casella di testo: Normal Map

 

Casella di testo: Utilizzo realtime della Normal Map

Questo è invece un esempio di come la mappa di normali possa essere utilizzata in un ambiente interattivo: il coniglio a sinistra è composto da 70.000 facce, quello centrale da soli 500. Il dettaglio, a differenza di una semplice applicazione di texture, reagisce in modo convincente al cambio di illuminazione. L’ultima mesh (sempre di 500 poligoni) mostra la reale geometria dell’oggetto decimato.


Accessibility Mapper

 

Il plugin, dato un oggetto, ne costruisce una mappa di visibilità della superficie. Con il termine visibilità si intende quanto ogni punto della superficie è visibile dall’esterno dell’oggetto, oppure quanto ogni punto risulta illuminabile da una fonte di luce uniforme in tutta la scena.

Questo tipo di informazione si trova alla base della maggior parte delle tecniche di dirting utilizzate dai plugin presenti in commercio ma, a differenza di questi, esso utilizza un algoritmo innovativo per il calcolo della visibilità che sfrutta l’hardware grafico come sistema di calcolo, permettendo di costruire la mappa di oggetti anche molto complessi in tempi relativamente brevi.

Una delle caratteristiche più interessanti di questo plugin è la possibilità di valutare l’interazione fra l’oggetto da esaminare ed altri oggetti selezionati presenti nella scena. Altre possibilità sono poi l’impostazione di una direzione preferenziale di provenienza dei raggi.

E’ interessante notare come questo prodotto possa essere utilizzato anche come motore per la generazione di mappe di prelight per rendering complessi: l’accessibilità risulta infatti strettamente correlata in ogni punto alla quantità di luce che può colpire la superficie.

Le mappe generate hanno l’importanza di non dover essere costruite frame per frame ma solamente una volta. Basta poi lavorare su rampe di color remap per ottenere effetti animati sulla diffusione di sporco, ossidazioni e, nel caso si utilizzi paint effects, di crescita degli strokes (effetti interessanti come crescita dell’erba)

Caratteristiche

·    Tre tipi di calcolo: per facce, per vertici e per texel

·    Calcolo di interazione fra l’oggetto e i suoi vicini occlusori

·    Possibile impostare una direzione preferenziale di

·    Tempo di elaborazione (da zero a mappa ultimata) inferiore ai 5 minuti anche per modelli molto complessi (> 50000 facce)

Utilizzo

Esaminiamo un utilizzo standard del plugin: per prima cosa andiamo a selezionare l’oggetto per cui verrà generata la mappa ed i suoi occlusori.

Scegliamo quindi di effettuare il calcolo per facce. Non esiste una modalità di calcolo migliore fra le tre disponibili; a seconda del dettaglio, della dimensione e della tessellazione degli oggetti si ottengono risultati analoghi ma dalla qualità differente, spesso risulta conveniente effettuare qualche tentativo per individuare il metodo più adatto.

A questo punto effettuiamo un paio di iterazioni senza occlusori e con probing omnidirezionali (opzioni di default) per ottenere una prima mappa di accessibilità. Successivamente possiamo introdurre gli occlusori nel calcolo ed effettuare alcune iterazioni: a questo punto la mappa di accessibilità risulta abbastanza dettagliata. Per ottenere un risultato più preciso, possiamo iterare ancora utilizzando una direzione preferenziale. Questa direzione indica il lato più esposto dell’oggetto, quello dove vi sarà meno accumulo di sporco.

   

Casella di testo: Avvio e inizio iterazioni semplici

Casella di testo: Iterazioni con oggetti occlusori

Casella di testo: Iterazioni con oggetti occlusori
e direzione preferenziale

Casella di testo: Mappa completata

Esempi

Casella di testo: Per il modello Nurbs della coppa si sta generando la mappa di accessibilità utilizzando 400 test globali (quindi equidistribuiti sulla sfera che lo contiene casualmente) e 400 su cui il 50% dei probing ricade all’interno del cono tracciato in blu.
Nell’ HyperShader si vedono sia la texture di accessibilità che quella di curvatura utilizzate per la mappatura dell’ossidazione, tutta la generazione ha preso un tempo di calcolo di circa 45 secondi.

Curvature Mapper

 

Questo plugin genera una mappa di curvatura della superficie degli oggetti Questo tipo di valore indica quanto ciascun punto della superficie è piano oppure incurvato.

Possono essere calcolati sia il valore di curvatura gaussiana che quello di curvatura media. Inoltre, risulta possibile ottenere anche mappe di direzione: ossia può essere calcolato in ogni punto quale direzione sia orientata la curvatura massima (principale) oppure la curvatura media. Tutti questi dati vengono calcolati in maniera analitica.

Una mappa di curvatura così generata può essere impiegata per mappare screpolature della vernice, graffi e microfratture nelle zone di alta curvatura degli oggetti (più soggette di altre a questo tipo di difetti).Le mappe di direzione, invece, possono risultare utili per la realizzazione di shader che posizionino features sulle superfici seguendone l’andamento.

Caratteristiche

·    Esportazione mappa di curvatura gaussiano

·    Esportazione mappa di curvatura media

·    Esportazione mappa di direzione media

·    Esportazione mappa di direzione principale

·    Tempo di calcolo estremamente ridotto (< 10 secondi)

Utilizzo

Selezionato l’oggetto da elaborare il plugin calcola in automatico la curvatura gaussiano; nella finestra OpenGL possiamo osservare il risultato del calcolo, sia applicato all’oggetto sia come mappa.

Le altre modalità di calcolo sono selezionabili attraverso i menu. E’ poi possibile applicare filtri di smoothing sulle mappe prodotte per ottenere risultati più continui.

Esempi

Possiamo osservare come nei seguenti oggetti la mappa di curvatura possa evidenziare zone appuntite e bordi degli oggetti. Nel busto, ad esempio, vengono individuate la maggior parte delle geometrie più “interessanti” del modello. Nel secondo esempio, osserviamo come la direzione di curvatura segua le geometrie del volto

Casella di testo: Le linee rosse seguono le direzioni di curvatura media: si noti come seguano i profili del viso e possano essere utilizzate da guida, ad esempio, per riprodurre screpolature della pelle, tagli o rughe



Skinner

 

Il problema di generare una mappatura UV a partire da geometrie arbitrariamente complesse è un problema ben noto e sono numerosi sono i metodi studiati per effettuare questa operazione.

L’algoritmo implementato all’interno del plugin ha come principale caratteristica la produzione di mappature UV ad alta uniformità. Una mappatura viene detta uniforme se è minima la distorsione che viene applicata ai vari poligoni al momento di essere distesi sul piano.

Dopo aver generato la mappatura, il plugin si preoccupa di cercare un packing ottimale per le varie patch dell'oggetto, questo al fine di ridurre lo spazio sprecato.

Caratteristiche

·                    Distorsione da srotolamento minima

·                    Packing efficiente per ridurre lo spazio sprecato

·                     Funzionante su mesh arbitrarie

Esempi

Nelle immagini possiamo osservare alcune mappature UV di due oggetti di prova: un busto femminile ed un toroide. Accanto alle mappature possiamo trovare una valutazione di quanto esse siano uniformi: questa valutazione è stata effettuata misurando il rapporto fra le aree dei poligoni e le aree della loro proiezione sulla texture (i salti cromatici delle mappe di uniformità indicano le distorsioni maggiori).

 

Automatic mapping di Maya (4 piani): molto spazio sprecato e grande distorsione

VCG Skinner: il rapporto fra area poligoni e area texel è pressoché costante


   

Casella di testo: Mapping iniziale alla creazione: semplice da disegnare ma con gravi irregolarità

Casella di testo: Automatic mapping di Maya (4 piani): salti nella continuità del mappaggio

Casella di testo: VCG Skinner: pochissimi poligoni distorti

Immagini

Casella di testo: Caldaia: sono stati mappati lo sporco e le ossidazioni utilizzando l’ accessibility mapper. Notare le accumulazioni in prossimità dei tubi e di bulloni (occlusori)

Casella di testo: Per realizzare questa bitta di attracco, oltre all’accessibility mapper utilizzato per le ossidazioni, sono state mappate seguendo le zone ad alta curvatura le screpolature osservabili lungo i bordi

Casella di testo: Oltre alla caldaia, già vista in precedenza, possiamo osservare la roccia dove il muschio è stato mappato con l’accessibility mapper e le fratture con il curvature mapper. Inoltre le piante sono distribuite basandosi su una mappa di accessibilità e curvatura estratta dalla geometria del terreno.