Introduzione alla Grafica al Calcolatore

Introduzione alla Grafica al
Calcolatore
s
• La grafica al calcolatore
• Modellazione
• Rendering di mesh poligonali
• Trasformazioni geometriche
• Rimozione delle facce nascoste
• Riflessione della luce (modello
locale)
• Shading
• Scan conversion
• Tecniche di mappatura
• Ray casting
• Modelli di riflessione globali
• Visualizzazione scientifica
• Image based rendering (cenni)
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 1
La grafica al calcolatore
• Cominciamo con una possibile definizione:
Con il termine grafica al calcolatore intendiamo
l’uso di un calcolatore per produrre un immagine (o
una sequenza di immagini).
• Come tutte le definizioni, è incompleta (e vaga) ...
• Gli argomenti che rientrano in questa definizione sono tantissimi, troppi per un corso
solo
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 2
Storia
• Nel 1960 William Fetter introdusse il termine Computer Graphics per descrivere la
ricerca che stava conducendo alla Boeing. Egli pensò di sfruttare un modello 3D del
corpo umano per progettare la carlinga degli aerei.
Perhaps the best way to define computer graphics is to find out what it is not. It is not a
machine. It is not a computer, nor a group of computer programs. It is not the know-how of a
graphic designer, a programmer, a writer, a motion picture specialist, or a reproduction
specialist. Computer graphics is all these – a consciously managed and documented
technology directed toward communicating information accurately and descriptively.
Computer Graphics, by William A. Fetter, 1966
• La nascita della Computer Graphics interattiva si fa risalire al 1963, con la tesi di
dottorato di Ivan Sutherland.
The Sketchpad system uses drawing as a novel communication medium for a computer. The
system contains input, output, and computation programs which enable it to interpret
information drawn directly on a computer display. Sketchpad has shown the most usefulness
as an aid to the understanding of processes, such as the motion of linkages, which can be
described with pictures. Sketchpad also makes it easy to draw highly repetitive or highly
accurate drawings and to change drawings previously drawn with it ...
Sketchpad, A Man-Machine Graphical Communication System, by I. Sutherland, 1963
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
(1) Modello usato da Fetter
A. Fusiello
Introduzione alla Grafica al Calcolatore - 3
(2) Sketchpad
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 4
2D vs 3D
• La prima grande divisione è di tipo dimensionale
Grafica 2D: in questa categria rientra tutta la grafica che fa uso di sole due
dimensioni, tipicamente lo spazio bidimensionale dello schermo. È la più semplice
in quanto esiste una corrispondenza biunivoca tra lo spazio da rappresentare e lo
spazio fisico dello schermo.
Grafica 3D: in questo caso si costruisce un’immagine tridimensionale e la si proietta
sullo spazio bidimensionale dello schermo. Le operazioni (concettuali e concrete)
sono complicate da questa proiezione, ma i risultati sono decisamente più
interessanti e spesso più ricchi di applicazioni.
• Difficilmente si può andare oltre come dimensioni; lo si può fare utilizzando, ad
esempio, il colore come rappresentetativo di una 4 dimensione. In genere le immagini
generate in questo modo sono di difficile interpretazione e sono poco utilizzate. Se il
problema richiede più di 3 dimensioni in genere lo si suddivide in problemi a 3 o meno
dimensioni.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
(3) Immagine 2D
A. Fusiello
Introduzione alla Grafica al Calcolatore - 5
(4) Immagine 3D
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 6
Fotorealismo vs Non Fotorealismo
• Un’immagine al calcolatore, a seconda dell’uso, deve sembrare reale (come se fosse
una immagina scattata con una macchina fotografica), oppure può risultare
semplificata ed artificiale; alle volte deve risultare palesemente artificiale.
• Gli algoritmi per ottenere immagini fotorealistiche (ray-tracing, radiosity, misti, etc)
sono computazionalmente onerosi.
• Per le immagini non-fotorealistiche dipende: si possono ottenere buoni risultati con
algoritmi semplici e veloci. Esistono però applicazioni che richiedono immagini non
fotorealistiche, ma comunque onerose in termini di algoritmi e di tempo: un esempio è
dato dai cartoni animati.
• Non esiste comunque un confine netto tra fotorealismo ed artificiale; quello che può
sembrare sufficientemente fotorealistico in una applicazione può risultare troppo
artificiale in un’altra.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
(5) Fotorealismo
A. Fusiello
Introduzione alla Grafica al Calcolatore - 7
(6) Non fotorealismo
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 8
Interattiva vs Non Interattiva
• La grafica generata con un calcolatore può o meno essere interattiva, ovvero può o
meno permettere ad un operatore esterno di interagire in tempo reale con uno
qualsiasi (o tutti) dei parametri della rappresentazione grafica
• Nel caso di grafica interattiva si richiede una risposta in tempo reale ai comandi
dell’operatore; questo implica
– necessità di hardware particolari (schede grafiche accelleratrici, processori
potenti, molta memoria)
– un modello semplificato di resa grafica (in genere le applicazioni interattive
non sono fotorealistiche)
• Con la grafica non interattiva si possono raggiungere qualità dell’immagine elevate a
piacere, è solo questione di quanto tempo si è disposti ad aspettare per generarle
• Entrambi i tipi di grafica sono interessanti ed hanno diverse applicazioni, a volte
complementari;
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
c Gathering of Developers,
(7) Interattiva (Fly 2K ∞
Inc.)
A. Fusiello
Introduzione alla Grafica al Calcolatore - 9
c Columbia
(8) Non interattiva (Stuart Little ∞
Pictures)
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 10
Schema di una applicazione grafica
In genere le applicazioni grafiche di cui discuteremo (e che implementeremo) si possono
inquadrare, piò o meno, nel seguente schema:
• Vi è una descrizione di qualche tipo (procedurale o meno) del mondo che deve essere
rappresentato.
• La produzione di tale descrizione (modello) prende il nome di modellazione.
• Da tale descrizione si ottiene una immagine bidimensionale; tale processo è chiamato
globalmente rendering
• La sequenza di procedure ed algoritmi che implementano il rendering prende il nome
di pipeline grafica;
• L’immagine ottenuta viene quindi visualizzata sullo schermo (in applicazioni
interattive, per esempio) o salvata su file
Rappresentazione
del mondo
A. Fusiello
Pipeline
Grafica
Rendering
Immagine
Finale
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 11
La descrizione del mondo che viene utilizzata dalla pipeline grafica comprende in genere
tre elementi:
1. Gli oggetti che popolano il mondo; possono essere oggetti veri e propri (cubi, robot,
mele ..) oppure dati (punti nello spazio 3D, iso-superfici ..). Gli oggetti hanno
proprietà posizionali (dove sono, come sono orientati etc) e di apparenza (di che
colore, com’e‘ fatta la superficie, se sono riflettenti etc)
2. Le luci che determinano le proprietà di illuminazione del mondo; hanno anch’esse
proprietà posizionali, ma non di apparenza (tipicamente le luci non si vedono, al più si
vedono degli oggetti che rappresentano l’emettitore di luce).
3. L’osservatore che descrive gli algoritmi che servono a generare una
immagine 2D (lo schermo) dalla
descrizione 3D del mondo, ovvero
implementa una telecamera virtuale; anch’esso possiede proprietà
posizionali, ma non di apparenza
c
∞D.
Muount
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 12
Processo di Modellazione
• Il modello di un oggetto da rappresentare può essere ottenuto essenzialmente in tre
modi:
– Manuale, ovvero viene “disegnato” tramite un opportuno strumento grafico. In
genere si ottengono oggetti complessi assemblando assieme oggetti semplici; nel
caso precedente della sfera, questa spesso viene disegnata tramite il mouse,
selezionando il centro e trascinando il puntatore fino ad ottenere il raggio
desiderato.
– Automatica da strumenti che consentono l’acquisizione di un modello digitale di
un oggetto reale. Per esempio le tecniche basate sulle immagini dell’oggetto sono
molto studiate in Visione Computazionale, ed ultimamante anche in grafica. Spesso
vengono indicare come Image based modeling
– Procedurale, ovvero viene generato tramite una procedura opportuna. Un
esempio tipico sono gli oggetti frattali, che hanno varie applicazioni nella grafica
al calcolatore, o gli oggetti geometrici, come sfere, cubi, poliedri regolari o altro.
Ad esempio una sfera è ottenuta specificando il raggio e la posizione del centro, poi
ci penso una procedura basata sull’equazione analitica della sfera a disegnarla.
• Le tecniche si possono mescolare tra di loro.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
(9) Manuale
A. Fusiello
Introduzione alla Grafica al Calcolatore - 13
(10) Automatico
(11) Procedurale
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 14
Processo di rendering
In base a tutte queste informazioni, dobbiamo efettuare un certo numero di passi per
ottenere l’immagine desiderata:
• Proiezione: proiettare (geometricamente) la scena dallo spazio 3D allo spazio 2D
dello schermo della telecamera virtuale.
• Shading: per ogni punto dell’immagine dobbiamo determinare il suo colore, che è
funzione del colore della superficie dell’oggetto e della sua orientazione, della posizione
delle luci e (nei modelli cosiddetti “globali”) della riflessione indiretta della luce da
parte di altre superfici.
• Rimozione delle superfici nascoste: gli elementi più vicini alla telecamera
coprono quelli più lontani: dobbiamo determinare quali superfici sono visibili e quali
no.
• Rasterizzazione: quando sappiamo che colore assegnare a ciascun punto della
immagine, il passo finale è mappare questa informazione sul display (ovvero:
accendere i pixel “giusti”).
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 15
(12) Modello
A. Fusiello
(13) Modello più shading
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 16
Elementi hardware
Sebbene non approfondiremo ulteriormente l’argomento in questo corso, è giusto elencare
quali sono gli elementi hardware principali in una applicazione grafica moderna
• Raster display che consiste di una matrice di elementi denominati pixel i quali
possono illuminarsi se colpiti da un fascio di elettroni (molto simile al funzionamento
di un televisore). Le caratteristiche principali (non le uniche) sono la risoluzione,
ovvero le dimensioni della matrice di pixel, e la profondità di colore, ovvero quanti
bit di memoria sono associati ad ogni pixel per contenere l’informazione di colore.
8-bit significano 256 colori, mentre 24-bit (o truecolor) rappresentano all’incirca 32
milioni di colori
• frame buffer che è una parte di memoria contenente l’immagine, ovvero un array di
valori per i pixel, che viene modificata direttamente dal programma di grafica
• video controller il quale legge il frame buffer e costruisce l’immagine sul display
tramite un processo denominato scan conversion o rasterization
• display processor è un elemento opzionale, in genere contenuto in schede grafiche
dedicate, il quale fornisce sia la memoria per contenere il frame buffer (liberando cosı̀
la memoria principale del calcolatore) sia effettuando una serie dei operazioni grafiche
e liberando cosı̀ la CPU principale da tali incombenze.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 17
Gli strumenti software della grafica al calcolatore
• Librerie grafiche: le più diffuse sono le OpenGL (Silicon Graphics, Inc,) e le
Direct3D (Microsoft). Ad un livello più elevao di OpenGL si colloca Performer
(SGI), un toolkit per sviluppare simulazioni video in tempo reale, realtà virtuale,
intrattenimento interattivo ed altre applicazioni di grafica 3D ad altre prestazioni.
• Programmi di rendering: in genere producono immagini fotorealistiche da una
descrizione procedurale del mondo (tipicamente un file ASCII). I più diffusi
programmi freeware sono PovRay, Rayshade e BMRT. Quest’ultimo implementa
uno standard largamente usato, l’interfaccia RenderMan
• Strumenti di modellazione: sono strumenti professionali, in genere molto costosi, i
quali permettono di costruire in modo interattivo modelli 3D da usarsi in applicazioni
di grafica al calcolatore.
• Suite di strumenti integrati: questi pacchetti includono in genere un programma
di modellazione ed uno o più programmi integrati di rendering. Tra i più diffusi vi
sono 3D Studio MAX, LightWave, TrueSpace, Maya e Blender, una suite
gratuita, multipiattaforma e piuttosto potente
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 18
Applicazioni
Negli ultimi anni stiamo assistendo ad un balzo in avanti per quanto riguarda la velocità
dei processori, la disponibilità di memoria e l’immissione sul mercato di schede
grafiche accelerate a basso prezzo.
Questi fattori hanno determinato un vero e proprio boom della grafica al calcolatore ed in
10 anni si è passati da risoluzioni dell’ordine dei 320x240 pixel con 16 colori a risoluzioni di
più di 1024x1024 pixel a 32 milioni di colori.
Mentre una volta le applicazioni di grafica avanzata erano esclusivo appannaggio di enti di
ricerca (purtroppo spesso per uso militare), oggi la grafica computerizzata è presente in
tutte le applicazioni (o quasi) disponibili per computer anche di bassa fascia.
Vediamo ora una carrellata di alcune possibili applicazioni della grafica al calcolatore;
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 19
Interazione Uomo-Macchina
• La grafica è diventata sempre più un ausilio importantissimo per l’interazione tra
l’utente ed il calcolatore
– È di più semplice interpretazione
– Fornisce un maggior numero di informazioni in modo più veloce
– Cattura l’attenzione
• In genere le interfacce grafiche devono soddisfare i seguenti criteri:
– Livelli di abilità multipli: diversi modi per ottenere la stessa cosa
– Consistenza: stesse funzionalità accessibili sempre nello stesso modo
– Backup e salvataggio da errori: provvedere un modo per riparare ad errori di
input
– Feedback: notificare l’utente dell’avvenuta interazione
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 20
Un esempio di interfacce grafiche avanzate è dato dai sistemi operativi, passati da una
interfaccia testuale ad una grafica (finestre, icone); sono tipicamente bidimensionali (anche
se alle volte danno l’apparenza di essere 3D)
(14) Microsoft Windows95
A. Fusiello
(15) X-Windows
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 21
Altri possibili impieghi di interfacce uomo-macchina grafiche:
• CAD (Computer Aided Design), per la costruzione di disegni tecnici (2D e 3D);
l’interfaccia grafica deve supperire all’uso più intuitivo delle mani e fornire funzionalità
migliori
• Internet, sia per catturare l’attenzione di chi naviga un sito web, sia per permettere
una miglior interazione con le informazioni ed i dati contenuti nella rete (menu a
scomparsa, bottoni, rollover etc.)
• Realtà Virtuale e Realtà Aumentata, permette ad un operatore di immergersi
completamente, o in parte, nell’applicazione, interagendo con i dati e le informazioni
in modo più naturale. È una tecnica ancora costosa e non ancora disponibile su larga
scala.
• Controlli di apparecchiature o veicoli, dove un operatore utilizza un interfaccia
grafica per accedere alle funzionalità di un apparecchiatura sofisticata o di un veicolo,
sia in lettura dati che in immissione comandi; un esempio è dato dalle glass cockpit,
che sono delle rappresentazioni grafiche della strumentazione di bordo di un aereo e
che stanno sostituendo i più tradizionali strumenti di volo.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 22
Esempi di realtà virtuale:
(16) Quali sono gli oggetti sintetici? Lampada e sedie.
ECRC)
A. Fusiello
c
(∞
(17)
Modello wireframe della stiva del-
c U.
lo shuttle sovrapposto all’immagine (∞
Toronto )
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 23
Visualizzazione Scientifica
• È l’incontro tra la grafica al calcolatore e l’analisi di dati scientifici
• L’uso della grafica permette una comprensione maggiore dei dati
• Tra i possibili usi della visualizzazione scientifica: rendering di terreni, immagini
mediche, plot matematici, dati spaziali
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 24
(18) Immagine medica
(21)
NCAR)
A. Fusiello
Metereologia
c
(∞
(19) Immagine medica
(22)
NCAR)
Metereologia
c
(∞
(20) Rendering del polo
nord marziano
(23) Collisione di due stelle
c NCSA)
di neutroni (∞
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 25
Uso Artistico
Le immagini sono da sempre utilizzate per catturare l’attenzione e per esprimere
sentimenti, senzazioni, emozioni. La grafica al calcolatore non fa eccezione ed è di
particolare effetto per
• Computer Art, utilizzata per esprimere stati d’animo
• Pubblicità, per catturare l’attenzione con immagini di effetto difficilmente ottenibili
in altro modo
• Film, sia che venga usata semplicemente per gli effetti speciali (la maggior parte dei
casi), sia che venga utilizzata per la realizzazione in toto del film (alcuni casi notevoli,
sempre più frequenti)
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 26
(24) Stuart Litc Columbia
tle (∞
Pictures)
c Pixar
(26) ∞
A. Fusiello
c Uni(25) Jurassic Park(∞
versal Pictures)
c Pixar)
(27) A Bug’s Life (∞
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 27
Videogiochi
• Nonostante possa sembrare il contrario, si tratta di un campo di ricerca
estremamente serio (e complesso); molti algoritmi della grafica moderna sono nati
dalle esigenze dei programmatori di videogiochi. Il fiorire di computer sempre più
potenti e di schede grafiche accelerate disponibili a basso prezzo sono largamente legati
all’industria videoludica.
• Alcuni elementi di punta dei videogiochi moderni
– 3D
– grafica in tempo reale
– implementano una interfaccia utente complessa
– implementano algoritmi di grafica di punta (ombre, strutture dati gerarchice, effetti
di luce, sistemi di particelle, raytracing, radiosity etc)
– necessitano di schede grafiche accelerate
– spesso presentano filmati (o scene singole) estremamente fotorealistici
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 28
c
(28) Star Trek: Elite Force (∞
c Activi(29) Dark Reign II (∞
c ID Software)
(30) Quake III (∞
c Inter(31) Icewind Dale (∞
Activision)
A. Fusiello
sion)
play))
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 29
Modellazione
• Gli oggetti che si vogliono rappresentare in una applicazione grafica hanno di solito
caratteristiche particolari
1. Sono finiti
2. Sono chiusi (non sempre)
3. Sono continui
• Le rappresentazioni di oggetti (regioni dello spazio, in generale) si suddividono in
– basate sul contorno (boundary): descrivono una regione in termini della superficie
che la delimita (boundary representation, o b-rep).
– basate sullo spazio occupato (o volumetriche).
• Inizieremo dalle rappresentazioni basate sul contorno, ed in particolare da quella
poligonale.
• L’ipotesi fondamentale è che il contorno degli oggetti sia una varietà
bidimensionale
• Una varietà è, a grosse linee, una superficie tale che ogni suo punto ha un intorno
omeomorfo ad un disco piano (topologicamente equivalente)
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 30
Rappresentazione poligonale
• Per semplificare la descrizione ai fini della grafica 3D al calcolatore si usa spesso una
approssimazione poligonale degli oggetti (del loro contorno).
• Si tratta di approssimare una superficie bidimensionale con un insieme di poligoni
convessi opportunamente connessi gli uni agli altri
• Se la superficie da approssimare è una varietà si hanno delle limitazioni
sull’approssimazione; ad esempio ogni lato appartiene al più a due poligoni
• A seconda delle necessità i modelli poligonali possono risultare non utilizzabili; se per
esempio si vuole un alto grado di approssimazione di una superficie curva, il numero di
poligoni può diventare troppo grande per essere manipolato in tempi ragionevoli
• Nelle applicazioni interattive esiste quindi il problema di mantenere il numero di
poligoni di ciascun oggetto il più basso possibile.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 31
Alcuni esempi di mesh poligonali
• I solidi platonici sono tutti e soli i poliedri regolari in tre dimensioni;
(32) Tetraedro (v=4, f=4)
A. Fusiello
(33) Ottaedro (v=6, f=8)
(34) Icosaedro (v=12, f=20)
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 32
• Vediamo alcune approssimazioni di una sfera; si vede come più il numero di vertici è
alto più l’approssimazione risulta smooth
(35) (v=36, f=50)
(36) (v=121, f=200)
(37) (v=441, f=800)
(38)
(v=2601,
f=5000)
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 33
• Il coniglio di Stanford è ottenuto dalla fusione di varie immagini di profondità
ottenute con apparecchiature laser avanzate. L’originale è fatto di terracotta. Sul
caccia dell’Alleanza Ribelle non c’è bisogno di alcun commento ...
(39) Bunny (v=35947, f=69451)
A. Fusiello
(40) X-Wing (v=3104, f=6084)
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 34
Elementi fondamentali
• Gli elementi fondamentali di una rappresentazione poligonale (mesh) di una superficie
bidimensionale sono
1. Vertici: sono gli elementi 0 dimensionali e sono identificabili con punti nello
spazio 3D (essenzialmente tre coordinate); alle volte può essere utile associare ai
vertici altre caratteristiche oltre alla posizione (tipo il colore)
2. Lati: sono elementi 1 dimensionali e rappresentano un segmento che unisce due
vertici. Di solito non contengono altre informazioni.
3. Facce: sono i poligoni bidimensionali, formati da un certo numero di lati e di
vertici (dimostrare che sono in numero uguale). I vertici o i lati si usano per
identificare la faccia; possono contenere altre informazioni (tipo il colore)
4. Normali: è fondamentale sapere quale è l’esterno della superficie e quale l’interno;
a tal scopo si associa spesso ad una mesh poligonale anche l’informazione sulla
normale uscente. Come vedremo questa informazione può essere associata ai vertici
o alle facce, a seconda del tipo di shading voluto.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 35
• Da tali definizioni si vede che esistono due elementi importanti; i vertici danno
informazioni di tipo posizionale, i lati informazioni di tipo connettivo
• Ovvero, i vertici sono gli unici elementi a cui è associata una posizione; la disposizione
dei vertici determina la forma dell’oggetto
• I lati connettono i vertici, permettendo di introdurre un concetto di “vicinanza” tra
vertici e dando le informazioni di tipo topologico
• Le facce sono determinate una volta dati i vertici e i lati, quindi non introducono nulla
di nuovo dal punto di vista posizionale e topologico;
• Le normali sono calcolabili, in casi semplici, semplicemente dal prodotto vettore tra
due vettori opportuni; per esempio la normale ad una faccia è data dal prodotto
vettore di due qualsiasi dei suoi lati (bisogna stare attenti al segno)
• Da notare che per determinare l’effetto di una qualsiasi trasformazione affine su un
oggetto (traslazione, rotazione, scalatura, composizioni varie di queste), basta
applicare la trasformazione ai vertici (che sono punti); le informazioni
connettive date dai lati non cambiano in questo tipo di trasformazioni
• Questo rende piuttosto semplice il rendering di oggetti descritti in termini di mesh
poligonali: qualsiasi trasformazione viene eseguita sui vertici, cioè si tratta di applicare
trasformazioni affini su punti.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 36
Riassumendo
• Le mesh poligonali sono semplici dal punto di vista della creazione
• Sono semplici da manipolare
• Esiste però un trade-off tra precisione della rappresentazione e spazio occupato (in
memoria)
• Un altro trade-off è tra la semplicità di effettuare ricerche algoritmiche sulla mesh e lo
spazio occupato
• Inoltre non sempre il rendering risulta perfetto; a volte diventa percebile la
tessellazione sottostante
• In ogni caso è tuttora la tecnica più usata nelle applicazioni grafiche interattive
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 37
Curve e superfici
• Abbiamo visto diversi aspetti della descrizione di oggetti 3D tramite rappresentazioni
poligonali
• Studiamo adesso alcune curve fondamentali utili per la modellizzazione di oggetti
complessi
• Il vantaggio principale nell’uso di superfici per modellare un oggetto è l’assenza del
problema della tessellazione visibile
• Fino a pochi anni fa l’uso di curve, o superfici liscie, era impensabile per applicazioni
in tempo reale; per lo più venivano utilizzate in fase di modellazione o per rendering
non interattivo
• Negli utltimi tempi le cose sono cambiate ed oggi cominciano ad apparire applicazioni
di grafica avanzata che usano superfici curve anche in tempo reale
• Iniziamo interessandoci di curve unidimensionali; il passaggio a superfici sarà quindi
banale
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 38
Forma implicita e parametrica
• Una curva o una superficie può essere rappresentata sia in forma implicita, sia in
forma parametrica
• La forma implicita è più compatta; ad esempio un cerchio di raggio unitario può essere
scritto come
x2 + y 2 = 1
• La forma parametrica richiede di trovare due funzioni f (t) e g(t) di un parametro t
tali che la curva possa essere descritta dalle equazioni
x = f (t)
y = g(t)
al variare di t in un certo intervallo (di solito [0, 1])
• Le curve parametriche sono le più usate in grafica al calcolatore; la forma implicita è
usata solo in casi particolari (ad esempio nei ray-tracer)
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 39
• Forma parametrica di una curva
P (t) = (px (t), py (t), pz (t), 1)
• In genere si usano polinomi di grado fissato per le funzioni di t che descrivono la curva
• Un esempio banale di curva parametrica lo abbiamo già visto: le rette
P (t) = Q + tu = (qx + tux , qz + tuz , qz + tuz , 1)
• Non tutte le curve nel piano ammettono una rappresentazione parametrica
polinomiale; si introducono quindi le curve razionali
• Si consideri una curva parametrica in cui anche la quarta componente è descritta da
un polinomio in t
P (t) = (px (t), py (t), pz (t), pw (t))
Sappiamo che non è un punto nello spazio (ultima coordinata diversa da 1
• Se normalizziamo otteniamo
P (t) = (
px (t) py (t) pz (t)
,
,
, 1)
pw (t) pw (t) pw (t)
• Questa è una curva razionale
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 40
• Per esempo, il cerchio in due dimensioni non è descrivibile con una curva parametrica
polinomiale, ma lo è con una curva razionale.
• In computer graphics si descrivono in genere le curve con l’ausilio di punti
• Bisogna distinguere tra curve interpolanti e curve approssimanti
• Le prime interpolano i punti, ovvero passano per questi; le seconde invece adattano la
propria forma ai punti, ma non è detto che vi passino
• Le curve interpolanti si usano in genere per specificare le traiettorie nelle animazioni
(in questo caso io voglio che la traiettoria passi per certi punti);
• Le curve approssimanti sono invece utilizzate più per la modellazione e si possono
descrivere come combinazioni lineari di n punti P1 · · · Pn i cui coefficenti sono
opportune funzioni polinomiali o razionali di un parametro t
P (t) =
X
Bi (t)Pi
i
• Le funzioni di blending Bi (t) determinano il tipo di curva
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 41
Curve di Bezier
• Inventate (o scoperte) contemporaneamente da Bezier e da De Casteljau
• Siano dati n + 1 punti P0 . . . Pn detti punti di controllo
• La poligonale data dai punti di controllo si chiama poligonale di controllo
• La curva di Bezier è data dalla seguente forma parametrica:
P (t) =
n
X
Bn,i (t)Pi
i=0
dove le funzioni
Bn,i =
n!
ti (1 ° t)n°i
i!(n ° i)!
sono le funzioni di base ed il parametro t appartiene all’intervallo [0, 1]
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
• È facile dimostrare che
Introduzione alla Grafica al Calcolatore - 42
n
X
i=0
Bn,i (t) = 1 8t 2 [0, 1]
• Dunque il punto P (t) è una opportuna combinazione affine dei punti di controllo; al
variare di t tale punto percorre la curva
(41) 4 punti di controllo
A. Fusiello
(42) 5 punti di controllo
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 43
Proprietà
1. Ciascun coefficiente della combinazione affine è un polinomio di grado n in t (se i
punti di controllo sono n + 1)
2. La curva P (t) passa da P0 e da Pn (per i valori di t pari a 0 ed 1 rispettivamente)
3. Bn,i (t) ∏ 0 8i
4. Le funzioni di base definiscono una partizione dell’unità, ovvero si sommano a 1
5. La curva è interamente contenuta nell’inviluppo convesso dei punti di controllo
6. La curva è invariante per trasformazioni affini, ovvero basta trasformare i punti di
controllo per avere la curva trasformata
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 44
• Come cambia la curva se si sposta un punto di controllo?
Pk °! Pk + v
• È facile dimostrare che
P (t) °! C(t) = P (t) + Bn,k (t)v
• Da questo si vede che spostando un punto di controllo si spostano tutti i punti della
curva
• I punti di controllo sono quindi non locali, una loro perturbazione si ripercuote su
tutta la curva
• Questo deriva dal fatto che le funzioni di blending per le curve di Bezier hanno
supporto su tutto l’intervallo [0, 1]
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
(43) Prima dello spostamento
A. Fusiello
Introduzione alla Grafica al Calcolatore - 45
(44) Dopo lo spostamento
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 46
Superfici
• Una volta capite le curve parametriche viste fino ad ora, il passaggio a superfici
parametriche è immediato
• Una superficie parametrica dipenderà da due parametri (u, v), anziché da un
parametro solo t come nel caso delle curve. Sarà quindi descritta da un punto P (u, v)
tale che
px = fx (u, v)
py = fy (u, v)
pz = fz (u, v)
• In ogni punto della superficie sono definiti due vettori tangenti, dati dalle derivate
rispetto a u e rispetto a v rispettivamente
Pu (u, v) =
A. Fusiello
@P (u, v)
@u
e Pv (u, v) =
@P (u, v)
@v
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 47
• Fissato uno dei due parametri, ad esempio u = u0 , il punto P (u0 , v) percorrerà una
curva parametrica con parametro v. Stessa cosa per u.
• Tali curve sono chiamate isoparametriche
• Le curve isoparametriche risulteranno importanti quando discuteremo come fare il
rendering di una superficie curva nella pipe-line grafica
• La normale alla superficie può allora essere calcolata semplicemente come il prodotto
vettore di questi due vettori tangenti
n(u, v) = Pu (u, v) £ Pv (u, v)
eventualmente normalizzata
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 48
• Date le funzioni di blending Xn,i (t), che possono essere quelle di Bezier, delle
B-Spline o delle NURBS, e dati n £ m punti di controllo Pij , la superficie è
definibile nel seguente modo
P (u, v) =
n X
m
X
Xn,i (u)Xm,j (v)Pij
i=0 j=0
• Un oggetto 3D può quindi essere modellato da un insieme di queste superfici, che
usualmente vengono denominate patch, opportunamente connesse
• Bisogna in ogni caso verificare che le superfici siano C 1 nei raccordi Per farlo si segue
lo stesso principio delle curve, usando le derivate Pu e Pv viste sopra
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
A. Fusiello
Introduzione alla Grafica al Calcolatore - 49
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 50
Geometria Costruttiva Solida
• Passimo ora a rappresentazioni volumetriche degli oggetti.
• Una rappresentazione volumetrica esatta di oggetti è data dalla cosidetta CSG o
Costructive Solid Geometry
• È una rappresentazione particolarmente adatta per il modeling (è diffusa nel settore
CAD), ma meno efficiente per il rendering.
• Si tratta, essenzialmente, di costruire degli oggetti geometrici complessi a partire da
oggetti elementari (cubi, sfere, cilindri etc) e da operazioni booleane tra questi
• Quali sono le operazioni booleane? Consideriamo due oggetti semplici A e B
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 51
1. Unione: l’unione A [ B è l’insieme dei punti che appartengono ad almeno uno dei
due solidi (or non esclusivo)
2. Differenza: la differenza A ° B è l’insieme dei punti che appartengono ad A, ma non
aB
3. Intersezione: l’intersezione A \ B è l’insieme dei punti che appartengono ad A ed a
B (and)
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 52
Suddivisione spaziale
• Le tecniche a suddivisione spaziale sono rappresentazioni volumetriche discretizzate
che dividono lo spazio in cubi elementari o voxel.
• A ciascun voxel viene assegnato un valore pari a “pieno” se il voxel interseca l’oggetto,
vuoto altrimenti.
• La maniera più comune di organizzare i voxel è l’octree.
• Queste strutture sono anche usate per organizzare lo spazio della scena quando gli
oggetti abbiano altre rappresentazioni (p.es. poligonale), in modo da rappresentare
l’arrangiamento spaziale degli oggetti (poligoni). In questo caso si usano spesso i BSP
tree
• Inoltre, essendo l’arrangiamento spaziale utilizzato per determinare le facce nascoste o
l’intersezione o meno con il campo di vista, queste strutture sono fondamentali nella
fase di rendering e per la sua ottimizzazione.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 53
Rendering di mesh poligonali
• L’ingresso è una lista di poligoni, e l’uscita è una immagine, ovvero una matrice di
pixels a ciascuno dei quali è associato un colore.
Rendering
Modeling
front−end
Geometric
processing
Transformations
Clipping
Projection
back−end
Display
Rasterization
Hidden surface removal
Shading
Scan conversion
• La primitiva geometrica che viene processata sono i poligoni
• Tuttavia il processo può essere object driven oppure image driven, a seconda che
“il ciclo più esterno” sia sui poligoni o sui pixel (Angel pg. 284).
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 54
Trasformazioni geometriche
• Vedremo come vengono gestite dal punto di vista geometrico le trasformazioni 3D e la
proiezione prospettica.
• In molti sistemi grafici il processo coinvolge diversi sistemi di riferimento e
trasformazioni tra di essi.
Spazio oggetto (locale)
Object definition
Spazio mondo (world)
Compose scene
Define lighting
Tras. di modellazione
A. Fusiello
Spazio vista o camera
Spazio 3D screen
Normalized device coord.
Back face culling
Local reflecion model
Clipping
Shading
Hidden surface removal
Scan conversion
Trasformazione di vista
Proiezione
Spazio immagine
Viewport (or window) coord.
Tras. di viewport
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 55
Sistemi di coordinate
• Spazio Locale (local space): è lo spazio dove ciascun singolo oggetto viene definito. Si
chiama anche spazio oggetto (object space) o spazio di modellazione (modeling space)
• Spazio Mondo (world coordinate system): è lo spazio dove la scena o l’oggetto
completo è rappresentato.
• Spazio Vista (view space): è un sistema di riferimento centrato sulla telecamera
virtuale, che definisce il volume (o frustum) di vista. Si chiama anche camera
coordinate system o empheye coordinate system.
• Spazio 3D-Screen: è lo spazio di vista canonico, che si ottiene trasformando (con
deformazione) il volume di vista (frustum) in un parallelepedo. Molte operazioni del
processo di rendering avvengono qui (in 3D normalized device coordinates).
• Spazio Immagine è il sistema di coordinate della immagine finale (pixel). Si ottiene
proiettando ortogonalmente il volume di vista canonico e trasformando le coordinate
2D.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 56
Modello della telecamera
Y
X
image
plane
image
P
Z
C
pinhole
object
P’
d
• Il modello geometrico più semplice della formazione dell’immagine è la pinhole camera
(letteralmente: macchina fotografica a foro di spillo.) Sia P un punto della scena, di
coordinate (x, y, z) e sia P 0 la sua proiezione sul piano vista (o immagine), di
coordinate (x0 , y 0 , z 0 ).
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 57
• Se d è la distanza del foro (o centro di proiezione) C dal piano immagine (distanza
focale), allora dalla similarità dei triangoli si ottiene:
°x0
x
°y 0
y
=
e
=
d
z
d
z
(1)
°dx
z
(2)
e quindi
x0 =
y0 =
°dy
z
z 0 = °d
• Si noti che l’immagine è invertita rispetto alla scena, sia destra-sinistra che
sopra-sotto, come indicato dal segno meno. Queste equazioni definiscono il processo di
formazione dell’immagine che prende il nome di proiezione prospettica.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 58
Spazio vista
Lo spazio vista (o view space) è un sistema di coordinate centrato sulla telecamera con
l’aggiunta della specifica di un volume di vista:
• un view point C, che stabilisce la posizione dell’osservatore nel world space e
definisce il centro della proiezione.
• un sistema di riferimento desctrorso UVN centrato sull’osservatore, che definisce la
direzione di vista - N e la direzione verticale V (U non ha scelta e punta alla destra
dell’osservatore).
• un piano vista (view plane), ortogonale a N e distante d da C, sul quale viene
proiettata la scena
• un volume di vista (o frustum), definito da due piani di taglio (clipping) paralleli al
view plane, il near plane ed il far plane. L’intersezione del frustum con il piano
vista definisce la finestra di vista
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 59
far
plane
near
plane
y
view
plane
V
z
w
N
C
h
θ
U
x
d
n
f
• Il frustum è definito dall’angolo di vista (verticale) µ e dal fattore di aspetto a = w/h
della finestra di vista.
• si noti che abbiamo messo il piano vista davanti al centro di proiezione, ma l’asse Z
punta “indietro”, quindi le equazioni della proiezione prospettica rimangono inalterate.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 60
Spazio 3D-Screen
Trasformazione prospettica
• In linea di principo, nello spazio vista si potrebbe effettuare la proiezione prospettica,
applicando ai punti P le formule viste prima
• La proiezione viene effettuata in modo più contorto (apparentemente) di quello
appena visto introducendo la trasformazione prospettica (che porta nello spazio
3D-Screen) per poter aggiungere informazione di profondità ai punti proiettati.
• Invece di proiettare i punti, applichiamo loro la trasformazione 3D che produca le
stesse coordinate x ed y della proiezione prospettica, ma che metta nella coordinata z
un valore (pseudo profondità) dal quale si possa risalire all’ordine di profondità dei
punti.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 61
• La trasformazione (o normalizzazione) prospettica mappa il frustum di vista in un
parallelepipedo chiamato volume di vista canonico. Gli oggetti vengono distorti di
conseguenza.
• Proiettando questo parallelepipedo ortogonalmente (ovvero si elimina la terza
coordinata cartesiana) si ottiene la proiezione prospettica desiderata.
y
ys
z
zs
x
xs
• sintetizzando, la proiezione prospettica viene realizzata in due fasi:
proiezione prospettica = trasformazione prospettica + proiezione ortografica
• Se invece si voleva effettuare una proiezione ortogonale (ortografica), basta sostituire
la trasformazione prospettica con una trasformazione (affine) che mappa il volume di
vista (un parallelepipedo in questo caso) nel volume di vista canonico.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 62
Clipping
• Il clipping consiste nella rimozione dei poligoni che cadono fuori dal volume di vista.
• avviene nello spazio 3D screen: infatti lavorando con il volume di vista canonico,
l’operazione risulta semplificata, poiché le facce del volume di vista sono ortogonali.
• I due principali algoritmi di clipping sono (non li vedremo, ma sono spiegati
nell’Angel, a pg. 288 e seguenti):
– Cohen-Sutherland
– Liang-Barsky
Esempio di uso del near plane per vedere
all’interno degli ogetti.
c
∞Alan
Watt
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 63
Spazio Immagine
• La trasformazione nello spazio immagine si applica dopo la proiezione ortografica.
• Dipende dalle caratteristiche del display (in senso ampio)
• Ai punti proiettati del 3D screen viene applicata una matrice di trasformazione affine
che :
– ripristina il fattore di aspetto corretto per l’immagine (distorto dalla
trasformazione prospettica)
– scala e trasla l’immagine per aggiustarla alla finestra di vista corrente (es. 640 £
480)
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 64
Rimozione delle facce nascoste
• Dopo che i poligoni hanno attraversato tutte le trasformazioni geometriche e sono stati
tagliati (clipping), prima di poterli disegnare dobbiamo risolvere il problema dela
rimozione di quelli che non sono visibili dall’osservatore.
• Problema: dati un insieme di poligoni in 3D ed un punto di vista, si vogliono
disegnare solo i poligoni visibili (o porzioni di essi). Ogni poligono si assume essere
piatto ed opaco.
• Vi sono essenzialmente due approcci:
– object-space: l’algoritmo lavora sui poligoni stabilendo relazioni di occlusione
reciproca. Il costo è quadratico nel numero dei poligoni. Però la precisione è
elevata (precisione macchina).
– image-space: l’algoritmo stabilisce occlusioni a livello del pixel. è più veloce ma la
precisione è limitata.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 65
Back-face culling
• Non è un algoritmo generale di rimozione di facce nascoste, ma solo una euristica utile
per eliminare subito poligoni ovviamente invisibili.
• viene effettuato nello spazio vista (o telecamera)
• l’eliminazione delle facce posteriori (o back-face culling), elimina i poligoni che, a
causa della loro orientazione, non possono essere visti.
• Se V è la direzione di vista (punta verso l’osservatore) ed Np è la normale al poligono,
è facile rendersi conto che il poligono è visibile solo se:
Np · V > 0
• Nota: se la scena è composta da un solo solido convesso, il culling risolve anche il
problema della eliminazione delle facce nasoste.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 66
Depth-Buffer
• È un algoritmo image-space, ma processa un poligono alla volta
• Opera nel 3D screen space
• Fa parte del processo di rasterizzazione
• Il depth-buffer o z-buffer è una matrice (grande come l’immagine) che contiene, per
ciascun pixel, il più piccolo valore di profondità (z) incontrato finora.
• Durante il rendering, per ciascun poligono che viene processato:
– si calcola la profondità (z) dei punti interni con interpolazione della z dei vertici
(come l’intensità in Gouraud shading).
– se la z del pixel è inferiore a quella contenuta nello z-buffer, allora la sua intensità
viene scritta nell’immagine e la z viene viene aggiornata.
• Vantaggio: semplicità di implementazione
• Svantaggio: occupazione di memoria: servono almeno 20-32 bits per pixel per avere
una discretizzazione accettabile delle profondità.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 67
Depth-sort
• Algoritmo Object-space
• Idea: si disegnano i poligoni dal più lontano al più vicino, cosı̀ quelli lontani vengono
sovrascritti da quelli più vicini (back-to-front rendering).
• Due problemi: come ordinare i poligoni e cosa fare se si sovrappongono.
• Non sempre è possibile ordinare i poligoni per profondità. Allora bisogna spezzarli.
• Algoritmo del pittore:
– i poligoni vengono ordinati in una lista in base al vertice di massima distanza
dall’osservatore (o pseudo-profondità).
– si effettua il rendering dei poligoni della lista, dal più lontano al più vicino.
– La sovrapposizione non è considerata (si possono di disegnare immagini sbagliate).
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 68
• Depth sort: nell’algoritmo di depth sort, dopo avere ordinato i poligoni in base al
vertice di massima distanza, vengono risolte le ambiguità, eventualmente spezzando
alcune faccie e riordinando la lista.
• Dati due poligoni P e Q le cui z-estensioni si sovrappongono, è corretto disegnare P
prima di Q solo se almeno uno di questi test è vero:
1. le x-estensioni di P e Q sono disgiunte (veloce);
2. le y-estensioni di P e Q sono disgiunte (veloce);
3. Si consideri il piano contenente Q. P è contenuto
completamente nel semipiano opposto a quello dove
è l’osservatore (abbastanza veloce)?
4. Si consideri il piano contenente P. Q è contenuto completamente nello stesso semipiano dove è
l’osservatore (abbastanza veloce)?
5. Le proiezioni di P e Q sullo schemo sono disgiunte
(pesante)?
c
∞E.
Angel
• Se tutti i test falliscono, controllo se è corretto disegnare Q prima di P. Se anche
questo fallisce Q viene taliato usando il piano contenente P, ed i pezzi vengono
collocati nella lista al posto giusto.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 69
Esempio di visualizzazione wireframe di una scena, con e senza rimozione della faccie
nascoste.
c
∞Alan
Watt
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 70
Riflessione della luce (modello locale)
• Iniziamo lo studio del calcolo, realistico o meno, dell’intensità di colore di un punto di
un oggetto in funzione di
1. proprietà materiali dell’oggetto
2. posizione della camera virtuale
3. posizione della fonte luminosa
• Un modello di riflessione è un modello matematico che descrive l’interazione tra luce
ed oggetti.
• In questo capitolo ci occuperemo di un modello di riflessione locale, ovvero che
non tiene conto delle riflessioni multiple della luce sulle superfici
• Nei modelli locali l’intensità di colore di un punto non dipende quindi dall’intensità di
colore dei punti vicini
• Questo non è realistico, ma è molto veloce
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 71
Modello di riflessione di Phong
• Modello di riflessione di Phong, a non confondersi con il metodo di shading di
Phong.
• Sebbene abbia circa 25 anni ed esistano oramai vari modelli alternativi più o meno
realistici, continua ad essere il più diffuso
• È semplice e sufficientemente realistico in molte applicazioni
• Per ora consideriamo che la scena sia illuminata da un’unica fonte luminosa posta in
Pl ed osservata da una telecamera posta in Pc
• La luce viene considerata puntuale, ovvero è generata da un punto ed emette un
raggio luminoso in ogni direzione
• Il modello di Phong fornisce una equazione per determinare l’intensità I in un dato
punto P in funzione di Pl , Ps , P , la normale in P e delle proprietà intrinseche del
materiale che compone l’oggetto
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 72
Luce ambiente
• Come già detto nell’introduzione i modelli locali non simulano la riflessione multipla
della luce
• Questo significa che se un punto di un oggetto non è colpito direttamente dalla fonte
luminosa (è in ombra), allora risulterà per forza di cose completamente nero
• Questo è palesemente poco realistico
• I modelli locali introducono allora “a mano” un termine di luce riflessa che prende il
nome di luce ambiente
• Si caratterizza con una intensità Ia ; se è uno scalare allora stiamo considerando una
luce ambiente monocromatica, altrimenti bisogna specificare le tre componenti (r,g,b),
ciascuna con una sua intensità
• L’ultima osservazione è vera ogni qual volta introdurremo varie intensità nel seguito;
d’ora in poi la do per scontata
• Ad ogni oggetto viene quindi assegnato un coefficente di riflessione ambientale
ka compreso tra 0 ed 1.
• Il contributo all’intensità finale del punto da parte della luce ambiente sarà dato da
Ia ka
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 73
Componente diffusa
• Il secondo contributo a I è la cosiddetta componente diffusa o riflessione
lambertiana
• Tale componente non dipende da Pc , ma solo da Pl e P
• Simula il comportamento di alcuni materiali (per esempio il gesso, o il coccio) i quali
riflettono la luce che ricevono in maniera uniforme in tutte le direzioni
• L’intensità di questa luce riflessa
dipende solo dall’angolo tra la direzione della luce vista da P , ovvero
L = (Pl ° P )/k(Pl ° P )k, e la normale in P , che indichiamo con M e
supponiamo normalizzata
M
L
V
θ
• Non dipende dalla direzione di vista V: una superficie lambertiana appare egualmente
luminosa da qualunque direzione la si guardi.
• Il modello lambertiano prevede un contributo all’intensità del punto pari a
Il kd cos µ = Il kd M · L
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 74
dove Il è l’intensità della luce puntuale, kd è il coefficente di riflessione diffusa
del materiale che compone l’oggetto e µ è l’angolo tra L e M
• Tale angolo si presuppone compreso nell’intervallo [0, º], altrimenti si pone l’intensità
della componente diffusa pari a zero
• Dunque il punto, per avere una componente diffusa, deve essere illuminato dalla
sorgente luminosa
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 75
Attenuazione della luce
• Per ottenere risultati più realistici, in genere si introduce nel termine visto prima un
coefficente di attenuazione della luce per tener conto che l’intensità della luce
emessa da un punto decresce con la distanza
fatt Il kd M · L
• Un termine realistico è dato dalla scelta
fatt =
1
kPl ° P k2
• Spesso, per rendere il modello più flessibile alle scelte del grafico, si modifica la
precedente espressione con la seguente:
fatt = min
A. Fusiello
µ
∂
1
,1
c1 + c2 kPl ° P k + c3 kPl ° P k2
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 76
Componente speculare
• La componente diffuse dipende dalla riflessione isotropica della luce in tutte le
direzioni da parte del corpo
• La luce però può anche essere riflessa da un corpo specularmente, ovvero seguendo
le leggi della riflessione dell’ottica geometrica
• In tal caso la luce viene riflessa
in una direzione R che è ottenuta
“specchiando” L rispetto a M
M
L
• L’osservatore vede la luce riflessa solo se V · R = 1 con V = (Pc °
P )/kPc ° P k
V
R
• In realtà nessun corpo riflette in maniera esattamente speculare
• Phong introduce il seguente modello (non ha un significato fisico) per la componente
speculare
fatt Il ks (R · V)n
dove ks è il coefficente di riflessione speculare ed n l’esponente di riflessione
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 77
speculare del materiale
• Per n che tende ad infinito si ha una riflessione speculare perfetta.
• Si può dimostrare che R = 2M(M · L) ° L
• Esiste una formulazione cha fa uso del halfway vector H, il vettore che biseca l’angolo
formato da L e V. Il termine di riflessione speculare diventa:
fatt Il ks (M · H)n
• questo offre vantaggi quando la luce e l’osservatore sono distanti, poiché H è costante
per tutti i punti dell’oggetto (mentre R non lo è ).
• si osservi che l’angolo tra M ed H non è lo stesso che c’è tra R e V; lo stesso
esponente non produce gli stessi effetti.
• comunque anche questo è un buon modello empirico che produce superfici speculari
visivamente credibili.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 78
Sommiamo il tutto
• Sommando quanto visto fino ad ora, il modello di Phong fornisce la seguente
espressione per l’intensità di colore di un un punto P
I = Ia ka + fatt Ip [kd M · L + ks (R · V)n ]
• Se si stanno considerando i colori, allora sia le intensità della luce che i coefficenti del
materiale vanno definiti per ogni componente (r,g,b)
r
I r = Iar kar + fatt
Ipr [kdr M · L + ksr (R · V)n ]
g g g
I g = Iag kag + fatt
Ip [kd M · L + ksg (R · V)n ]
b
I b = Iab kab + fatt
Ipb [kdb M · L + ksb (R · V)n ]
• Il colore della superficie si determina aggiustando i coefficienti di luce ambientale e di
diffusione (di solito sono uguali).
• La superficie apparirà del colore specificato quando illuminata da luce bianca.
• Può succedere che una o più componenti eccedano il loro limite massimo (256 o 1 a
seconda della rappresentazione). In tal caso vanno tagliate o rinormalizzate.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
A. Fusiello
Introduzione alla Grafica al Calcolatore - 79
(45) Ambiente
(46) Speculare
(47) Diffusione
(48) Speculare
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 80
Ia = 0
(49) kd = 0.3
(50) kd = 0.6
(51) kd = 0.9
Ia = 0.1
(52) kd = 0.3
(53) kd = 0.6
(54) kd = 0.9
(55) kd = 0.3
(56) kd = 0.6
(57) kd = 0.9
Ia = 0.3
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 81
n=1
(58) ks = 0.1
(59) ks = 0.25
(60) ks = 0.5
n = 20
(61) ks = 0.1
(62) ks = 0.25
(63) ks = 0.5
n = 200
(64) ks = 0.1
A. Fusiello
(65) ks = 0.25
(66) ks = 0.5
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 82
Shading
• Gli algoritmi di shading consentono di colorare i poligoni, ovvero di assegnare un
colore ai pixels sui quali il poligono viene proiettato.
• A monte serve un modello di riflessione locale consente di asseganre un colore a
ciscun punto di una superficie (3D).
• Il modello di riflessione locale è trattato in un’altro capitolo. Qui diciamo solo che per
calcolare il colore di un punto servono: la normale M della superficie nel punto, il
vettore V che punta verso l’osservatore (direzione di vista) ed il vettore L che punta
verso la sorgente luminosa.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 83
• In una mesh poligonale a cisascun vertice di un poligono è associata una normale M .
• Ogni faccia ha una lista di vertici e di normali di vertice (quindi lo stesso vertice può
essere associato a normali diverse)
Tipicamente:
– Se la superficie da rappresentare è poliedrica allora ciascun vertice di una faccia ha
la medesima normale (la normale della faccia).
– Se invece la mesh è una approssimazione di una superficie interpolante, in ciascun
vertice mettiamo la normale alla superficie.
• dunque l’applicazione del modello di riflessione avviene sui vertici dei poligoni (nello
spazio vista)
• quelli che vediamo sono essenzialmente schemi di interpolazione di valori calcolati
sui vertici dei poligoni, che si applicano durante il processo di scan-conversion del
poligono.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 84
Flat shading
• Il flat shading è il più semplice di tutti: si colora una faccia con un colore.
• Se la normale fosse definita per la faccia, si colorerebbe il poligono con il colore
ottenuto usando la sua normale M ed il modello di riflessione locale.
• Poiché la normale è definita sul vertice, si calcola il colore su un solo vertice del
poligono (il primo che si incontra) usando il modello di riflessione locale, e si applica
quel colore a tutto il poligono.
• Nota: Per una suprficie poliedrica, se il punto di vista e la sorgente luminosa sono
lontani, i vettori V ed L sono costanti su una faccia, quin di è corretto, secondo il
modello di riflessione locale, assegnare un solo colore a tuta la faccia.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 85
• Vantaggi: semplicità e velocità
• Svantaggi: Si percepiscono distintamente i poligoni.
Questo effetto è indesiderato quando la mesh rappresenta una superficie continua. La normale, infatti, varia
e quindi anche il colore associato a triangoli vicini.
c
∞Alan
Watt
• Anche nel caso di superfici piatte, se osservatore e luce sono vicini, mentre M è
costante su tutta la superficie, V ed L cambiano da triangolo a triangolo, quindi i
triangoli hanno colori diversi, e si può percepire la transizione.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 86
c
∞Alan
Watt
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 87
Gouraud shading
• È la tecnica di shading interpolative più antica, e la più semplice (veloce) che produce
una variazione dell’intensità atraverso il poligono.
– si considerano le normali di vertice;
– si calcola il colore in ogni vertice usando il modello di riflessione locale;
– si calcola l’intensità luminosa dei punti interni al poligono con interpolazione
bilineare (vedi esempio di rasterizzazione in fondo)
• Se la normale alla superficie soggiacente non è disponibile, si può calcolare una
normale di vertice fittizia prendendo la media delle normali dei poligoni che
condividono il vertice (idea di Gouraud);
• Nota: nel caso di una superficie poliedrica, in cui le normali ai vertici di ciascuna
faccia sono le stesse, si ha lo stesso effetto del flat shading, visto che ai vertici del
poligono viene associato il medesimo colore.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 88
• Vantaggi: attenua il salto di colre tra facce adiacenti,
è semplice e veloce (è solo poco più oneroso di flat).
• Svantaggi: Non elinina completamente la percezione
dei poligoni e non rende bene le riflessioni speculari
(highlights).
c
∞Alan
Watt
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 89
c
∞Alan
Watt
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 90
Phong shading
• Maggiore realismo si ottiene con il metodo di interpolazione di Phong (da non
conforndersi con il modello di riflessione locale di Phong).
• Le normali dei vertici vengono interplate all’interno del poligono.
• La normale interpolata viene usata nel modello di riflessione locale per calcolare il
colore dei punti interni al poligono.
• Il metodo “cattura” le riflessioni speculari poiché usa il modello di riflessione locale
anche sui punti interni del poligono.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 91
• Vantaggio: buon realismo.
• Svantaggi:
– è circa 5 volte più lento di Gouraud. Per questo
spesso confinato all’uso off-line.
– bisogna “tirarsi dietro” le normali fino alla fase di
scan-conversion (quando vengono dipinti i poligoni). Infatti OpenGL non lo supporta per questo
motivo: le normali vengono abbandonate dopo la
proiezione prospettica
A. Fusiello
c
∞Alan
Watt
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 92
c
∞Alan
Watt
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 93
Scan conversion
• La scan conversiona consiste nel disegnare i poligoni sulla immagine, riempendoli
con il colore determinato dallo shading. Questo equivale a risolvere i seguenti due
problemi.
– Determinare i pixel interessati da un segmento
– Determinare i punti interni del poligono
• Algoritmo di Bresenham. Il classico algoritmo per disegnare un segmento è quello
di Bresenham. Esso genera una sequenza connessa di pixel. Dopo avere disegnato un
pixel l’algoritmo sceglie tra i suoi 8-vicini quale accendere in base all’equazione della
retta, usando solo aritmetica intera.
• Algoritmo scan-line. è l’algoritmo standard per riempire i poligoni si chiama
algoritmo scan-line. Il poligono viene riempito considerando una linea che lo scandisce
riga dopo riga dal basso verso l’alto. Per ciascuna riga si effettua una scansione da
sinistra a destra, e quando si incontra un edge del poligono si inizia a riempire, quando
si incontra un’altro edge si smette. Ci sono casi speciali da gestire con accortezza.
Alcuni usano scan conversion e rasterization come sinonimi.
conversion è parte della rasterizzazione
a
A. Fusiello
Noi manterremo la differenza: scan
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 94
La pipeline di OpenGL
• In OpenGL i sistemi di riferimento non si mappano esattamente su quelli che abbiamo
visto precedentemente:
Spazio oggetto (locale)
Spazio mondo
Spazio vista
...
World (or standard) coord.
Eye (or camera) coord.
Modelview Matrix
Spazio 3D screen
Normalized device coord.
Projection Matrix
Spazio immagine
Viewport (or window) coord.
Viewport tranformation
• Nel nostro sistema le coordinate immagine sono 2D, mentre in OpenGL sono 3D.
• in OpenGL, nelle window coordinates la pseudo-profondità viene conservata, quindi a
rigore si tratta di uno spazio 3D.
• Per confondere ulteriormente le cose, OpenGL chiama invece screen coordinates le
coordinate immagine 2D.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 95
Storia di un poligono
• Vediamo ora sommariamente cosa accade ad un poligono quando attracersa la pipeline
grafica di OpenGL
standard coordinates
camera coordinates clip coordinates
modelview
matrix
projection
matrix
clipping
normalized device coordinates
perspective
division
window coordinates
viewport
matrix
• Una mesh viene inserita nella pipeline grafica, assieme alle normali associate ai suoi
vertici.
• I vertici vengono quindi trasformati dalla modelview matrix, che li trasforma dal
sistema di riferimento mondo al sistema di riferimento telecamera (eye).
• Qui il modello di riflessione locale viene applicato ai vertici, usando le normali, in
modo da assegnare un colore a ciascun vertice.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 96
• Andando avanti nella pipeline viene applicata la projection matrix. Le coordinate
risultanti prendono il nome di “clip coordinates”.
• Si effettua il clipping dei poligoni.
• I vertici attraversano quindi la divisione prospettica, passando da una
rappresentazione 3D ad una rappresentazione 2D + pseudo-profondità. Le normali si
perdono, ma si mantiene il colore associato ai vertici.
• Siamo in normalized device coordinates , che variano tra -1 ed 1.
• Per mappare queste nella imagine finale si applica la viewport matrix (la
pesudodepth si mappa tra 0 ed 1).
• Il poligono viene finalmente rasterizzato, impiegando
– scan-line (per scan conversion)
– depth-buffer (per rimozione faccie nascoste)
– Gouraud shading
• I valori di pseudo-profondità e colore sui vertici vengono interpolati all’interno del
poligono nel corso della sua scansione per righe, per determinare 1) la visibilità dei
pixel interni e 2) il loro colore (con Gouraud).
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 97
• Vediamo come funziona:
– L’interpolazione bilineare si presta bene ad essere incorporata nello scan-line
(si parla anche di scan-line interpolation).
– Dato un triangolo sui cui vertici P0 , P1 , P2 , sono definite tre quantità c0 ,c1 ,c2 .
– Se la scan line interseca due lati del triangolo in
Pa e Pb (come in figura), calcoliamo il valore ca
per interpolazione lineare tra i valori c0 e c1 , ed il
valore cb per interpolazione lineare tra i valori c1 e
c2 .
P1
Pa
Ps
Pb
scan line
P0
– calcoliamo quindi il valore cs per tutti i punti del
segmento di scan line (Pa ,Pb ) per interpolazione
lineare tra i valori agli estremi, ca e cb .
P2
• è più effieciente calcolare il valore interpolato in modo incrementale.
• Nota. L’interpolazione effettuata nello screen space è una approssimazione di un
processo che andrebbe svolto nell world space.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 98
Tecniche di mappatura
• Il modello di riflessione di Phong è abbastanza versatile
• Con una scelta opportuna dei vari parametri si possono imitare diversi materiali in
modo abbastanza realistico (per esempio la plastica)
• È comunque limitato: non si possono simulare i dettagli di un materiale, a meno di
non introdurli nella geometria
• Questo è spesso praticamente impossibile
• Invece di incrementare la complesssità del modello, si aggiungono particolari come
parte del processo di rendering.
• In particolare i metodi che vedremo vanno ad influire sul processo di shading e
vengono pertanto implementati come parte di esso.
• Essi alterano l’algoritmo di shading usando una mappa bidimensionale texture
(tessitura), in modo da aggiungere dettagli alla superficie.
• Si deve stabilire una corrispondenza univoca tra superficie dell’oggetto e texture.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 99
• Quello che occore per effettuare il texture mapping è la funzione di
parametrizzazione W () che associa un punto della texture (u, v) ad un punto P
della superficie dell’oggetto 3D (è una funzione che “spalma ” la texture sulla
superficie).
• Il punto viene mappato dalla proiezione in un punto (xs , ys ) dello schermo.
y
v
ys
Parametrizzazione
Proiezione
x
u
xs
z
Texture
Superficie
Schermo
• il rendering della texture si occupa poi di stabilitre il valore di texture da associare a
ciascun pixel.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 100
Texture mapping
• Una texture di colore è una immagine digitale, ovvero un array di colori (in genere
triplette rgb).
• Nel determinare l’intensità di colore di un punto della superficie si usa in qualche
modo il colore dell’elemento della texture corrispondente.
• Questa tecnica si chiama anche più propriamente color mapping.
• Si possono ottenere risultati ottimi dal punto di vista del fotorealismo con un carico
limitato dal punto di vista dell’interattività.
• Tre svantaggi
1. Questo approccio rimane locale; certi effetti puramente globali sono indispensabili
per una resa veramente fotorealistica
2. Le texture occupano memoria e vanno fatte (foto, artisti etc); un alternativa (ne
parleremo) è la loro generazione procedurale
3. L’uso delle texture crea svariati problemi di aliasing che richiedono varie tecniche
per risolverli (non ne parleremo)
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 101
• Esempio di color mapping
(67) Phong shading
A. Fusiello
(68) Immagine
(69) Risultato
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 102
• Vediamo ora un esempio (vicino a OpenGL) di come avviene il rendering della texture
nel caso di maglia poligonale.
• La mappatura associa, tramite W °1 , un pixel (u, v) della texture ad ogni vertice della
maglia;
• Quindi a ciascun vertice di un triangolo proiettato è associato un pixel (u, v) della
texture.
• Per trovare le coordinate tetxure a cui far corrispondere agli altri punti del triangolo si
usa l’interpolazione bilineare come abbiamo già usato per la profondità e per lo
shading (Gouraud)
• Il texture mapping è incorporato nella rasterizzazione scan-line con z-buffer del
poligono.
• L’interpolazione bilineare di (u, v) crea delle distorsioni prospettiche nell’immagine
risultante (in effetti viene a mancare la corretta distorsione prospettica, o
foreshortening)
• Conviene quindi interpolare non (u, v), ma le coordinate omogenee (u/z, v/z, 1/z) e
poi determinare il pixel della texture dividendo per l’ultima componente; si effettua
una interpolazione bilineare con correzione prospettica.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 103
Blending
• Vediamo come si applica il color mapping su una superficie, specificando come il colore
della texture interagisca con quello assegnato alla superficie in fase di modeling.
• Ricordiamo che il colore di un punto di una superficie è assegnato tramite i termini di
diffusione (e di luce ambientale) di Phong.
• Il color mapping più semplice consiste semplicemente nell’assegnare ad un pixel il
colore specifisato dala texture.
• In generale, dato un punto, se C è il colore corrispondente nella texture e I il colore
assegnato, allora si può assegnare al punto un colore pari a
(1 ° Æ)I + ÆC
• Se Æ = 0 non si tiene conto della texture, se Æ = 1 non si tiene conto della colorazione
della superficie. Per valori intermedi si ha una interpolazione (blending) dei due
colori.
• Un altra tecnica (OpenGL) è quella di modulare il colore della texture con il colore
della mesh, moltiplicandoli.
• Il blending può essere fatto anche tra più texture.
• Il valore di Æ o può dipendere dal pixel, con una texture RGBA.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 104
Esempio di blending tra colore assegnato alla supericie e texture.
A. Fusiello
(70) Senza texture
(71) Æ = 0.3
(72) Æ = 0.5
(73) Æ = 0.8
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 105
Scena con texture sul pavimento, porta e tavolo.
c
∞Alan
Watt
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 106
• Le texture vengono solitamente usate per il color mapping.
• Vi sono però altre tecniche che si possono ricondurre all’uso di textures.
– Mappa di riflessione: detta anche environment mapping usa una texture
per dare l’impressione che l’oggetto rifletta l’ambiente circostante.
– Bump mapping: questa tecnica perturba la normale in un punto con il valore
corrispondente nella texture; siccome il modello di shading usa la normale per
calcolare le intensità di colore, il risultato di un bump mapping e di alterare lo
shading della superficie (senza modificare ovviamente la geometria)
– Mappa di trasparenza: si usa per modulare l’opacità dell’oggetto; in tal modo
alcune parti possono essere rese trasparenti, altre opache. Spesso (OpenGL) tale
informazione viene accorpata ad una texture di colore; la texture conterrà quindi il
colore RGB ed un valore di opacità A
– Mappa di emissione: si usa per modulare l’emissività di una superficie tramite
una texture
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 107
(74) Texture
(75) Mappa di trasparenza
A. Fusiello
(76) Mappa di emissione
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 108
Bump mapping
• L’aggiunta di particolari tramite una texture di colore non ne modifica l’aspetto
geometrico; la superficie appare comunque piatta.
• Cambiare la geometria per aggiungere i particolari di piccola scala non è in genere
fattibile (ci sono eccezioni)
• Si usa allora la tecnica di bump-mapping
• Sia data una superficie ed una texture B(u, v)
• La mappa B(u, v) rappresenta un height-field da applicare sulla superficie (di
conseguenza B(u, v) è un numero, non una tripletta).
• Abbiamo detto però che non vogliamo modificare la geometria
• Si può quindi trovare come l’applicazione teorica di questo height-field modificherebbe
le normali nei vari punti, e applicare quindi tale modifica alle normali senza toccare la
geometria
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 109
• Sia P (u, v) il generico punto della superficie (parametrizzata) da perturbare, che
corrisponde a B(u, v)
• Siano Pu e Pv le derivate parziali rispetto ai due parametri
• La normale in P sarà dunque
M = Pu £ Pv
(si suppone normalizzata)
• Se spostassimo P lungo N di un valore B(u, v) si otterrebbe
P 0 (u, v) = P (u, v) + B(u, v)M
• Derivando questa quantità rispetto a u e v e supponendo che B(u, v) sia
sufficentemente piccola da trascurare alcuni termini, si ottiene la nuova normale nel
punto dopo la perturbazione
M0 = M + Bu M £ Pv ° Bv M £ Pu
dove Bu e Bv sono le derivate parziali di B(u, v) rispetto ai due parametri.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 110
• Se nello shading di P si usa M0 al posto di M si ottiene l’impressione che il punto sia
stato spostato
• Alcuni programmi (BMRT) possono perturbare geometricamente il punto P , non solo
la sua normale; in tal caso si parla di displacement map. È molto più oneroso
computazionalmente, anche se i risultati sono realistici se visti da vicino, cosa non vera
per il bump-mapping
• Difatti quest’ultimo, modificando solo le normali della superficie, non cambia le
proprietà geometriche di questa; se è liscia prima del bump-mapping, lo rimane anche
dopo
• La differenza tra bump-mapping e displacement-mapping è comunque piccola per la
maggior parte delle situazioni (telecamera lontana dall’oggetto, superficie non vista di
taglio)
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 111
• Esempio di bump mapping
(77) Senza bump
A. Fusiello
(78) Immagine
(79) Risultato
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 112
(80) Bump map
(81) Bump mapped object
c
∞Alan
Watt
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 113
Environment map
• Gli algoritmi locali non possono creare effetti di riflessione su superfici
• Si elimina cosı̀ la possibilità di simulare specchi, acqua, superfici metalliche etc.
• Il problema viene risolto da alcuni algoritmi globali (ad esempio il ray-tracing)
• Se si vuole utilizzare solo algoritmi locali di shading, allora è necessario usare un
“trucco”: le cosiddette mappe di riflessione o environment map
• La tecnica funziona bene per oggetti compatti e, con una leggera modifica, per piani
• Dato l’oggetto che si vuole rendere riflettente, lo si racchiude in un cubo ideale e si
ottengono sei immagini corrispondenti a sei telecamere poste nel centro dell’oggetto e
con piano immagine le facce dei cubi
• Le immagini cosı̀ ottenute si compongono (in genere) in un’unica texture che prende il
nome di environment map
• Quindi lo shading dell’oggetto viene ottenuto con una mappatura O della environment
map cubica usando il vettore di riflessione R già incontrato
• Tale texture può ad esempio modulare la componente speculare dell’oggetto, oppure
può essere usata come texture di colore
• L’oggetto sembrerà riflettere l’ambiente circostante
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 114
(82) Envmap
(83) Immagine
c
∞Alan
Watt
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 115
• Alcuni commenti
• La tecnica qui delineata è una delle possibili; un’altra fa uso di una mappatura sferica,
ad esempio
• La environment map può essere salvata; se l’oggetto non si muove e non vi sono
variazioni nei suoi intorni (per esempio si muove solo la telecamera), allora si può
usare la stessa environment map per tutti i frame della sequenza
• Si può creare un effetto interessante facendo un blurring della environment map (viene
simulata una deviazione dalla specularità perfetta).
• Da notare che comunque questo tipo di tecnica è un trucco; per alcune tipologie di
oggetti o situazioni particolari ci si può facilmente accorgere che la riflessione
dell’oggetto non è realistica.
• Ma bisogna sapere dove guardare; spesso si può addirittura mettera una environment
map che non c’entra nulla con la scena, ed ingannare l’osservatore.
• Infatti la tecnica del chrome mapping prevede di usare una environment map fatta
di chiazze di luce molto smussate per creare l’effetto di una superficie cromata.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 116
(84) Blurred Envmap
(85) Immagine
c
∞Alan
Watt
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 117
Calcolo delle Ombre
• Una particolare che si nota immediatemente nelle immagini ottenute con modelli di
riflessione locali, è l’assenza di ombre.
• Questi modelli infatti non possono calcolare le ombre, che risultano dalla interazione
di tutti gli oggetti della scena con le luci (globale)
• Non si deve confondere lo shading (che può essere ottenuto con algoritmi locali) con
l’ombra (che non è locale di natura)
(86) Solo shading
(87) Shading più ombra
• L’ombra è fondamentale per dare profondità all’immagine e per dare un senso di
realismo
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 118
• Vi sono svariate tecniche per introdurre le ombre in algoritmi locali; ne vediamo
brevemente due (le più semplici, non le più usate)
• Queste due tecniche calcolano le ombre geometriche, perché calcolano la forma
dell’ombra ma non l’illuminazione al suo interno.
• Gli algoritmi globali, a differenza di quelli locali, contengono intrinsecamente il calcolo
delle ombre.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 119
Shadow buffer
• Il metodo visto sopra per calcolare le ombre, nonostante i difetti, viene utilizzato in
applicazioni real-time in quanto veloce da implementare; oggi comunque esistono altre
tecniche real-time più complesse (non le vediamo)
• La tecnica dello shadow buffer è invece utilizzata ampiamente.
• È molto semplice; si calcola uno z-buffer (come lo abbiamo visto nel capitolo
precedente) dal punto di vista della luce (detto anche shadow buffer o shadow
map)
• Se la luce è spot-light allora basta calcolare uno z-buffer singolo
• Se la luce è una point-light, la si immagina racchiusa in un cubo e si calcolano sei
z-buffer, uno per ogni faccia del cubo.
• In fase di rendering, se un punto di un poligono deve essere disegnato, lo si trasforma
nel sistema di riferimento della luce e si trova il valore Zl nello shadow buffer.
• Se lo z del punto (ricordo, nel riferimento della luce, non della camera) è più grande di
Zl , significa che vi è un oggetto che blocca la luce per quel punto, quindi è in ombra e
lo si può colorare di conseguenza. Altrimenti è colpito dalla luce e si opera lo shading
normalmente
• Se si hanno più luci bisognerà avere uno shadow buffer per ognuna
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 120
(88) Shadow buffers
(89) Image
c
∞Alan
Watt
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 121
• Bisogna scegliere opportunamente la dimensione della shadow buffer
• Dimensioni troppo piccole possono creare artifatti nell’immagine (simili ai problemi di
aliasing cui abbiamo accennato)
• Si può aumentare la dimensione e/o effettuare un blurring (sfocamento tramite medie
di intorni di pixel) della shadow buffer
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 122
Un esempio con environment map e shadow buffer
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 123
(90) Envmap
A. Fusiello
(91) Shadow buffer
Verona, a.a 2002-03
Interazione Uomo-Macchina
A. Fusiello
Introduzione alla Grafica al Calcolatore - 124
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 125
Ray casting
• Esistono fondamentalmente due paradigmi di rendering
– Rendering di poligoni (schema “classico”)
– Ray casting.
• Mentre il primo (quello visto fin qui) è specifico per una certa descrizione del modello,
il ray casting è trasversale rispetto alla rappresentazione (anche se si applica meglio a
certe piuttosto che ad altre).
• Vediamo ora brevemente come funziona il ray-casting un modo di effettuare il
rendering alternativo al rendering per poligoni che abbiamo visto.
• Inteso come metodo per il calcolo delle superfici nascoste, è l’algoritmo image-space (o
image precision) per eccellenza
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 126
• Nel modello proiettivo della telecamera, un raggio ottico è una semiretta uscente dal
view point C che interseca il piano vista.
view
plane
V
camera
ray
N
C
U
• Dovendo assegnare un colore ad ogni pixel, consideriamo il raggio ottico uscente da
ciascun pixel.
• Se il raggio non interseca alcun oggetto della scena allora gli assegno il colore di
background.
• Se il raggio interseca un oggetto, allora devo calcolare l’illuminazione (il colore) ed
assegnarlo al pixel.
• Per calcolare il colore uso un modello locale (p.es. Phong)
• Questo è il paradigma del ray-casting: si “gettano” (cast) i raggi uscenti da ciscun
pixel per calcolarne il colore.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 127
• In generale, c’è un pesante onere computazionale nel calcolo delle intersezioni
raggio-oggetti.
• Si possono facilmente aggiungere le ombre tracciando il raggio che connette il punto
sull’oggetto con la sorgente luminosa: se esso interseca qualche oggetto allora il punto
è in ombra.
• Questo sconfina nei modelli globali ...
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 128
Modelli di riflessione globali
• Vediamo infine, rapidamente, quali sono le idee che stanno dietro ai modelli di
riflessione globali.
• in questi modelli l’illuminazione in un punto dipende anche dgli altri oggetti che
compongono la scena, non solo dalla sorgente luminosa.
• ray tracing
• radiosity
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 129
Ray-tracing
• Il ray-tracing (introdotto da Whitted, 1980), applica una tecnica ricorsiva e globale
per calcolare l’illuminazione in un punto della superficie.
• Si inizia come nel ray casting, tracciando il raggio ottico uscente da un pixel.
• Nel punto di intersezione del raggio con la superficie si applica il modello di riflessione
preferito (es. Phong) per le sorgenti luminose visibili da quel punto (raggi ombra).
• A partire dal punto di intersezione del raggio con la superficie, si tracciano due raggi:
uno riflesso ed uno trasmesso (tenendo conto dell’assorbimento).
• Si applica il processo ricorsivamente, finché un raggio incontra una sorgente luminosa
oppure si perde all’infinito.
• La diffusione è modellata dal (eventuale) termine di diffusione del modello di
riflessione.
• Non si tiene conto però dell’illuminazione diffusa che gli altri oggetti ricevono: in un
modello corretto ogni diffusore (anche parziale) agisce come una sorgente luminosa.
• Ray-tracing funziona bene per superfici trasparenti e riflettenti.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 130
c
∞Alan
Watt
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 131
Radiosity
• Radiosity è un algoritmo globale che è un pò il complementare di ray-tracing.
• è ideale per scene con supefici lambertiane (diffusori perfetti)
• Tutte le superfici della scena sono sudivise in frammenti chiamati “patch”
• Ogni patch è trattato come una sorgente luminosa.
• La illuminazione (radiosity) in un patch è data dalla luce emessa (se è una sorgente) e
dalla luce che arriva da tutti gli altri patch della scena
• Anche questo è pesante computazionalmente: ciascun patch dipende da tutti gli altri
che sono da esso visibili, e per questo bisogna risolvere il problema della rimozione
delle superfici nascoste dal punto di vista di ciascun patch della scena.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 132
c
∞Alan
Watt
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
A. Fusiello
Introduzione alla Grafica al Calcolatore - 133
(92) scan line with Phong
(93) ray-traced
(94) radiosity + ray-traced
(95) RADIANCE
c
∞Alan
Watt
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 134
Visualizzazione scientifica
• Un campo estremamente interessante, attualmente al centro dell’attenzione della
ricerca avanzata, va sotto il nome di visualizzazione (scientifica)
• È l’incontro tra la grafica al calcolatore e l’analisi di dati scientifici
• L’uso della grafica permette una comprensione maggiore dei dati
• Tra i possibili usi della visualizzazione scientifica: rendering di terreni, immagini
mediche, plot matematici, dati spaziali
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 135
• In genere i dati scientifici sono multidimensionali e quindi intrinsecamente difficili
da visualizzare
• Ai fini della visualizzazione scientifica si tende a dividere tali dati in
1. Scalari: ad ogni punto dello spazio del problema viene associato un valore scalare
2. Vettoriali: ad ogni punto dello spazio viene associato un vettore
3. Tensoriali: ad ogni punto dello spazio viene associato un tensore
• Inoltre difficilmente si cerca di rappresentare dati distribuiti su più di tre dimensioni
(dati volumetrici); se necessario in genere si proiettano spazi di dimensioni maggiori in
sottospazi tridimensionali (o bidimensionali)
• Affronteremo brevemente i dati di tipo scalare.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 136
Dati volumetrici
y
• Di solito si ha a che fare con una distribuzione discreta di
valori su una griglia discreta. Gli elementi di tale griglia si
chiamano voxel.
x
∆y
z
∆x
(x 0 , y0 , z 0 )
∆z
c
∞E.
Angel
• Vi sono vari esempi di campi scalari rappresentati con una struttura a voxel
– Tomografie assiali, che permettono di rappresentare un corpo umano (o parte di
esso) con valori scalari (in genere legati all’assorbimento della radiazione da parte
del tessuto) distribuiti in modo regolare su una griglia volumetrica
– Misure di temperatura all’interno di un corpo o di un fluido.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 137
• Ricordiamo che si possono avere anche rappresentazioni volumetriche di oggetti
opachi, in cui i voxel assumono valori binari (pieno, vuoto). In questo caso si vuole
effettuare il rendering della superficie dell’oggetto.
• Vi sono due tecniche base per la visualizzazione di dati volumetrici:
– Rendering Volumetrico diretto, in cui i dati vengono visualizzati nell’insieme.
L’immagine è la proiezione (di solito ortografica) dei voxels.
– Isosuperfici: L’immagine è il rendering di una isosuperficie, tipicamente in forma
di maglia poligonale.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 138
Rendering Volumetrico diretto
• Lo scopo del rendering volumetrico è quello di mostrare in una immagine le
caratteristiche dell’interno di una regione solida.
• Ci sono due tecniche per effettuare il rendering volumetrico: il ray casting ed il voxel
splatting.
Ray casting
• Lo schema concettuale del ray casting è il
seguente:
– un fascio di raggi (di solito paralleli), uno
per pixel, attraversano il volume.
– Ad ogni raggio viene assegnato un valore di colore, calcolato (grossomodo)
integrando la densità lungo il raggio.
c
∞E.
Angel
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 139
• Nel ray casting bisogna risolvere due problemi:
1. Trovare i voxels attraverso cui il raggio passa.
2. Assegnare un colore al raggio (ovvero al pixel).
• Il problema della intersezione raggio-oggetto è di solito complicato (con altre
rappresentazioni), ma nel caso di rappresentazione a voxels diventa banale: basta
tracciare il raggio nello spazio voxelizzato con le stessa tecnica usata per disegnare una
linea nell’immagine pixelizzata (v. rasterizzazione di segmenti).
• Non tutti i voxel però contribuiscono nella stesso modo: infatti ciscuno deve
contribuire in ragione della lunghezza del percorso compiuto dal raggio al suo interno.
Due soluzioni:
– Si prendono punti equispaziati sul raggio, e per ciascun punto si calcola il
contributo con una media pesata dei voxel vicini (estensione 3D dell’interpolazione
bilineare).
– Si pre-trasforma il volume in modo che i raggi coincidano con colonne (o righe) di
voxels. In questo modo l’operazione di integrazione lungo il raggio diventa banale
(non richiede interpolazione). L’interpolazione viene effettuata prima, quando il
volume viene trasformato.
• Per quanto riguarda il secondo problema, abbiamo due opzioni che vedremo tra breve.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 140
Voxel splatting
• Una variante del rendering, che prende il nome di splatting, consiste nel proiettare
invece i voxel sul piano immagine.
– I dati volumetrici vengono attraversati in un certo modo ed ogni voxel incontrato
viene proiettato.
– Se l’attraversamento è dal fondo verso avanti per ogni
pixel bisogna accumulare solo il colore, altrimenti anche
la trasparenza (come uno z-buffer).
– L’impronta del voxel sull’immagine è una “macchia”
circolare (gaussiana) di diametro opportuno (da cui il
nome).
c
∞E.
Angel
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 141
• Alcuni commenti
• La scelta di C ed O per ciascun voxel dipende dall’applicazione e rientra in una fase
classificazione
• Ad esempio, nelle tomografie con raggi X si possono avere varie regioni classificate a
seconda del valore di assorbimento dei raggi X che è contenuto dai voxel.
• Ad esempio certi valori corrisponono alle ossa, altri a tessuti molli e cosı̀ via
• Una volta effettuata la classificazione, la scelta dei valori di opacità determina cosa si
vede e cosa non si vede
• Per esempio si può decidere di associare un valore di opacità pari a 0 a tutti i voxel
tranne a quelli classificati come ossa a cui si assegna O = 1
• L’immagine finale conterrà quindi solo le ossa
• Se, viceversa, tutti i voxel hanno valori di opacità minori di 1 e diversi da 0, alla fine si
vedrà una sorta di gel stratificato
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 142
Immagini ottenute con splatting e diversi assegnamenti di opacità.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 143
Modalità gel semitraparente e superficie
• Assumendo che ci siano superfici opache nei dati volumetrici (es. ossa), si può
migliorare lo schema precedente effettuando uno shading sui voxel che appartengono
alla superficie.
• Lo shading sostituisce C nella operazione di composizione
• I voxel appartenenti alla superficie sono identificabili dal gradiente del campo scalare
nelle tre direzioni ortogonali
– Voxel in una regione omogenea non appartengono ad una superficie
– Voxel in cui vi è un cambiamento brusco del valore del campo scalare
rappresentano una superficie
• Da tale gradiente è estraibile una normale approssimata con cui calcolare uno shading,
per esempio con Phong.
• Questo calcolo della superficie non ha valore fisico, serve solo allo shading. Se
volessimo estrarre una isosuperficie valida, dovremmo usare l’algoritmo descritto nelle
prossime pagine.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 144
Estrazione di isosuperfici
• Del tutto in generale, per rappresentare in uno spazio n ° 1 dimensionale dei dati
scalari n dimensionali si possono usare delle isosuperfici
• Ovvero, si scelgono determinati valori nel range di variazione del campo scalare da
rappresentare e si disegnano le superfici del campo scalare che posseggono tali valori
• Per esempio, in 2 dimensioni, se f (x, y) è il campo scalare (un valore per ogni punto
del piano), allora l’isocurva corrispondente al valore z è ottenuta dall’equazione
f (x, y) = z
• Normalmente il campo scalare è rappresentato, come detto prima, da una matrice
regolare di valori (voxel); in tal caso esiste una tecnica molto semplice ed efficente per
estrarre isosuperfici dai dati
• Vediamo prima il caso bidimensionale nel dettaglio, discuteremo dopo il caso
volumetrico.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 145
Caso 2D: marching squares
• Sia dato dunque un campo scalare in 2 dimensioni determinato dalla funzione f (x, y) e
sia z il valore per cui si vuol costruire l’isocurva
• Si divida il piano in due regioni, quella per cui f (x, y) ∏ z e quella per cui f (x, y) < z
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 146
• Si discretizza il problema disegnando una griglia sovrapposta al piano
• Se i dati sono già discretizzati in realtà questo passo non è necessario
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 147
• Si marcano tutti i punti del reticolo che appartengono alla regione f (x, y) > z.
• Se si partiva già da dati discretizzati (voxel), la cosa equivale semplicemente a
guardare il valore del campo in ciascun voxel e marcarlo o meno a seconda che tale
valore sia maggiore o minore di z
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 148
• Assumendo che la funzione f (x, y) soggiacente sia ragionevolmente regolare, essa
assume una volta il valore z su ogni lato che collega un vertice marcato con uno non
marcato.
• Dato un quadrato qualsiasi del reticolo, è possibile quindi determinare la forma che
deve assumere l’isocurva relativamente a quel singolo quadrato
• Si vede che in tal modo i quadrati sono elaborabili separatamente (da qui il nome
dell’algoritmo)
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
A. Fusiello
Introduzione alla Grafica al Calcolatore - 149
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 150
• In prima approssimazione, posso decidere di collocare il punto in cui f (x, y) = z
esattamente a metà del lato.
• Il contorno che si trova in tal modo in realtà può non essere molto buono.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 151
• È possibile migliorarlo decidendo il punto di intersezione dell’isocurva con il quadrato
usando una interpolazione lineare tra i valori dei vertici del lato
• Il risultato è decisamente migliore.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 152
• Riassumendo, dato un campo scalare bidimensionale discreto, si determinano i voxel
che hanno valore del campo associato maggiore di z
• Nel reticolo formato con i voxel nei vertici (il duale), si esamina ciascun quadrato e si
cerca il corrispondente nella tabella vista sopra (si può usare in modo efficente una
look-up table)
• In base a tale configurazione si disegna un singolo segmento (oppure nulla)
• Si “marcia” con l’algoritmo su tutti i quadrati
• Chiaramente si possono costruire più isocurve e disegnarle contemporaneamente per
dare un’idea della struttura del campo scalare
• Da notare che per simmetria del problema, la tabella di look-up può essere ridotta da
16 elementi a soli 4
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 153
Caso 3D: marching cubes
• L’algoritmo di marching cube è identico, ma il risultato finale è una mesh triangolare
che rappresenta la isosuperficie
• La tabella di look-up è più complessa: sono 256 casi, riconducibili a 14 per simmetria.
c
∞E.
Angel
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 154
Un esempio di estrazione di isosuperfici con marching cubes:
(99) isovalue=4
A. Fusiello
(100) isovalue=8
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 155
• In realtà l’algoritmo, sia in versione bidimensionale che in quella tridimensionale,
presenta delle ambiguità, in generale risolvibili con una suddivisione della griglia
• Se si ha la funzione f allora la cosa è semplice, altrimenti il valore sui nodi della griglia
suddivisa sono ottenuti per interpolazione. In ogni caso, per la natura locale
dell’algoritmo, la suddivisione può avvenire in maniera locale.
• Come al solito abbiamo appena toccato l’argomento che è, ovviamente, ben più vasto
• Notare che l’algoritmo marching cubes permette di trasformare una rappresentazione
volumetrica (a voxels) di un oggetto solido in una rappresentazione a maglia
poligonale della sua superficie.
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 156
Image based rendering
• Definizioni:
– Uso di immagini reali (foto) per aumentare il realismo in grafica
– Tecniche per produrre immagini (rendering) applicando una oppurtuna
trasformazione ad altre immagini.
– Uso di immagini precalcolate per velocizzare il rendering
• Scopo: disaccoppiare complessita della scena da tempo di rendering e aumentare il
realismo
A. Fusiello
Verona, a.a 2002-03
Interazione Uomo-Macchina
Introduzione alla Grafica al Calcolatore - 157
Letture consigliate e fonti bibliografiche
1. P. Cignoni, C. Montani, R. Scopigno. Computer graphics, Le Scienze quaderni n. 84,
Giugno 1995.
2. E. Angel. Interactive Computer Graphics with OpenGL, 2nd edition, Addison Wesley
2000
3. A. Watt. 3D Computer Graphics, 3rd edition, Addison-Wesley 2000
4. Foley et.al. Computer Graphics, second edition, Addison Wesley
A. Fusiello
Verona, a.a 2002-03