You are on page 1of 13

Grafica Computerizzata 2010 - Appunti

CG 2010 prof. Di Domenico

Giacomo Monari -indice- 1


Grafica Computerizzata 2010 - Appunti

INDICE
Trasformazioni geometriche 4
Traslazione 4
Scalatura 4
Rotazione 4
Window-to-viewport 4
Concatenazione (composizione) di trasformazioni 5
Rotazione attorno a un punto qualsiasi P 5
Scalatura attorno a un punto qualsiasi P 5
Matrice Identità 5
Current Transformation Matrix (CTM) 5
Push e Pop Matrix 5
Back-face Culling 5
Trasformazioni di Vista 6
Come avviene la proiezione di un oggetto 3D 6
Proiezioni geometriche piane 6
P. Parallela: proiezione ortografica 6

Parallela: proiezione assonometrica 7

Proiezione Prospetica 7

Definire una trasformazione di Vista 7


Matrice ModelView 7
Posizione della camera in OpenGL 7
Posizionare la camera 7

Matrice View 7

Orientare la camera 8

Proiezione prospettica in coordinate omogenee 8


Illuminazione e interazione luce-materia 8
Interazione luce-materia 8
Simulare una luce 8
lighting 9

shading 9

Equazione della Radianza (rendering equation) 9


Illuminazione Locale 9
Percezione dei colori 9
Tipi di Sorgenti di Luce 10
Sorgente puntiforme 10
Attenuazione Radiale 10
Attenuazione Quadratica 10
Tipi di Superfici 10
Modello di illuminazione di Phong 11
Proprietà della Luce 11
Proprietà del Materiale 11
Calcolo della Componente Ambientale 12
Superfici Lambertiane 12
Calcolo per la componente diffusa 12

Modello di Lambert 12

Giacomo Monari -indice- 2


Grafica Computerizzata 2010 - Appunti

Calcolo della componete diffusa 12


Riflessione Speculare 13
Specularità 13
Coefficiente Speculare 13
Calcolo della componente speculare 13

Giacomo Monari -indice- 3


Grafica Computerizzata 2010 - Appunti

Trasformazioni geometriche
Dal punto di vista teorico, applicare una trasformazione ad un entità geometrica significa
trasformare tutti i punti che la compongono.

Principali trasformazioni della CG:

Traslazione
Significa muovere ogni punto della primitiva geometrica P(x, y) di dx unità lungo lʼasse x e di dy
unità lungo lʼasse y, fino a raggiungere la nuova posizione Pʼ(xʼ, yʼ).
Pʼ= P + T
dove T rappresenta il vettore traslazione.

Scalatura
Scelto un punto C (punto fisso), scalare un generico punto P significa riposizionare P sul piano
cartesiano ricalcolando le sue distanze (nella direzione di ciascun asse coordinato) da C in base
ad una nuova unità di misura.
Pʼ=P * S
dove S rappresenta la matrice di scalatura.

Rotazione
Fissato un punto C (punto fisso) di riferimento e un verso di rotazione (orario o antiorario), significa
ruotare solidamente tutti i punti della primitiva intorno a C nel verso assegnato.
Pʼ=P * R
dove R rappresenta la matrice di rotazione.

(la rotazione sopra riportata, esegue solo una rotazione attorno allʼorigine, cioè attorno allʼasse z)

Tutte queste tre trasformazioni sono affini e lineari:


affini: mantengono il parallelismo tra le linee
lineari: tutti i punti che giacievano su una retta prima della trasformazione, saranno ancora sulla
stessa retta dopo la trasformazione.
Oltre a queste trasformazioni di base, vi è anche la trasformazione di deformazione (shear), che
non viene considerata una trasformazione base perchè può essere ricavata dalla composizione
algebrica di trasformazioni di scala e rotazione.

Window-to-viewport
Eʼ un esempio di concatenazione di trasformazioni geometriche. Consiste nel mappare i punti che
si trovano nel rettangolo definito dalle coordinate dei suoi vertici in basso a sx ed in alto a dx (la
window) nei punti corrispondenti del rettangolo della viewport.

Giacomo Monari -indice- 4


Grafica Computerizzata 2010 - Appunti

La trasformazione si effettua definendo una porzione rettangolare del mondo (window) e


mappandola su un rettangolo dello schermo (viewport).

Concatenazione (composizione) di trasformazioni


Per fortuna le matrici di trasformazione possono essere composte (o concatenate).
Trasformare milioni di vertici con una singola matrice è molto più efficiente che applicare tantissime
matrici consecutivamente.
Lʼefficienza nella moltiplicazione (o concatenazione) tra matrici risulta essere quindi uno dei
parametri fondamentali per la valutazione delle performance dei dispositivi grafici di output.

Salvo casi particolari: il prodotto di trasformazioni geometriche non gode generalmente della
proprietà commutativa.

Rotazione attorno a un punto qualsiasi P


1. Traslazione che muove P nellʼorigine degli assi.
2. Rotazione attorno allʼorigine.
3. Traslazione opposta alla precedente che riporta P nella sua posizione originale.

Scalatura attorno a un punto qualsiasi P


1. Traslazione che muove P nellʼorigine degli assi.
2. Trasformazione attorno allʼorigine.
3. Traslazione opposta alla precedente che riporta P nella sua posizione originale.

Matrice Identità
Eʼ la matrice utilizzata per azzerare qualsiasi trasformazione applicata.

Current Transformation Matrix (CTM)


Qualunque sia la trasformazione corrente (modelview, projection, texture) OpenGL mantiene
sempre una Current Transformation Matrix (CTM).
Ogni matrice in input moltiplica la CTM con quella appena definita e la CTM viene applicata ad
ogni singolo vertice in ingresso.
Caricando la matrice identità, cancelliamo tutte le trasformazioni applicate ai nostri vertici e
torniamo allo stato originale.

Push e Pop Matrix


Nel caso specifico di OpenGL, abbiamo uno stack dove poter memorizzare temporaneamente la
CTM.
Il comando PushMatrix() salva la CTM in cima allo stack.
Il comando PopMatrix() usa come CTM la matrice in cima allo stack.

Back-face Culling
In ogni sistema grafico, ogni poligono possiede due facce.
Una faccia è definita rivolta allʼesterno (outward facing) se la sequenza dei vertici è attraversata
in senso anti-orario.
Una faccia è definita rivolta allʼinterno (inward facing) se la sequenza è attraversata in senso
orario.

Con il back-face culling (ovvero “eliminazione delle faccie nascoste”) determiniamo se la faccia di
un poligono che compone un oggetto solido è visibile oppure no.
La tecnica ovviamente viene applicata sulla faccia che il poligono mostra alla camera.

Giacomo Monari -indice- 5


Grafica Computerizzata 2010 - Appunti

Trasformazioni di Vista
Nello spazio 3D il processo rendering di una scena è decisamente più complicato di quello di una
scena 2D. Non solo perchè abbiamo una dimensione in più ma perchè dobbiamo visualizzare
scene 3D su un dispositivo di output 2D.
Cosa avviene quindi? Tutto sta nel fatto che la visualizzazione va ricondotta alla creazione di una
vista della scena.

Come avviene la proiezione di un oggetto 3D


La proiezione di un oggetto 3D è definita da un insieme di rette di proiezione, chiamate proiettori,
aventi origine comune in un punto detto centro di proiezione. I proiettori passano attraverso tutti i
punto dellʼoggetto 3D e quindi intersecano un piano di proiezione formando la proiezione vera e
propria.

Dobbiamo definire lʼosservatore, quindi: fissare il punto di vista, la direzione di osservazione e la


porzione di scena inquadrata.

Inoltre, i raggi di proiezione convergono verso il centro di proiezione (COP) che corrisponde alla
posizione della lente della camera o allʼocchio dellʼosservatore.

Il COP può essere posizionato ovunque, ed in particolare:


1. COP in posizione finita: vista prospettiva
2. COP in posizione infinita: vista parallela. In questʼultimo caso, invece che i raggi di
proiezione abbiamo la direzione di proiezione (DOP).

Proiezioni geometriche piane


Possono essere proiezioni prospettiche oppure parallele, lʼunica differenza è quella scritta
precedentemente, ovvero la differenza sta nella relazione tra il centro e il piano di proiezione.

Se la distanza tra i due è finita, allora si ha la proiezione prospettica.


Questa proiezione è la più simile ai sistemi fotografici e allʼocchio umano. La dimensione
dellʼoggetto varia in modo inversamente proporzionale alla sua distanza dal COP.

La proiezione parallela invece può avere due modi diversi di implementazione:

P. Parallela: proiezione ortografica


I raggi di proiezione sono perpendicolare al piano di proiezione e il piano di
proiezione è parallelo ad una delle facce dellʼoggetto.

Vantaggi:
-preserva sia le distanze che gli angoli.
-può essere usata per misurazioni (es. cartine di edifici)

Giacomo Monari -indice- 6


Grafica Computerizzata 2010 - Appunti

P. Parallela: proiezione assonometrica


Permette di vedere più facce dellʼoggetto.
Il piano di proiezione ha un orientamento arbitrario.
I raggi di proiezione sono ancora ortogonali al piano di
proiezione.

Proiezione Prospetica
In questi tipo di p. la dimensione dellʼoggetto è proporzionale alla posizione dellʼoggetto.
Rappresenta molto più fedelmente la vista umana.
Eʼ una proiezione utile perchè gli oggetti appaiono molto più realistici ma non è utile se deve
essere usata per rilevare informazioni quantitative dalla vista.
Le distanze non sono mantenute, solo gli angoli delle facce parallele al piano di proiezione
risultano inalterati.

Nel caso della proiezione prospettica, tutte le linee convergono in un punto di fuga. (possono
esserci più punti di fuga)
Si usa catalogare le p. prospettiche a seconda del numero di punti di fuga principali, che non i
punti relativi alle linee parallele ad uno degli assi.

Definire una trasformazione di Vista


1. Posizionare la camera - Va posizionata e orientata. In OpenGL queste informazioni
sono accumulate allʼinterno della matrice GL_MODELVIEW. (le trasformazioni View riferite
alla camera devono essere eseguite dopo le trasformazioni Model).
2. Proiezione della camera - Definiamo il volume della vista della camera ed il tipo di
proiezione. In OpenGL utilizziamo le funzioni glOrtho e glFrustum per impostare la
matrice di trasformazione GL_PROJECTION.

Matrice ModelView
Ha lo scopo di accumulare in unʼunica trasformazione due matrici:
1. View: responsabile della posizione e dellʼorientamento della camera.
2. Model: responsabile della disposizione degli oggetti della scena.

Posizione della camera in OpenGL


-Stato standard allʼavvio di OpenGL-
La matrice ModelView è lʼidentità. La camera è posizionata nellʼorigine e punta in direzione
dellʼasse z negativo. La proiezione è parallela ed il volume della vista ha dimensione 2x2x2 ed è
centrato nellʼorigine. (la matrice di proiezione di default è lʼidentità). Il piano di proiezione è z=0.

Posizionare la camera
Sia (e,u,v,w) il frame che definisce la posizione e lʼorientamento della camera.
Spostare la camera significa traslare e ruotare il frame della camera fino a farlo “coincidere” con il
frame del mondo (o,x,y,z).

Matrice View
La trasformazione che allinea lʼorigine e con lʼorigine o ed il sistema di riferimento uvw con il
sistema di riferimento xyz è la seguente.

Giacomo Monari -indice- 7


Grafica Computerizzata 2010 - Appunti

Orientare la camera
Più nello specifico, per riuscire a posizionare ed orientare la camera in maniera esatta e definire il
frame (e,u,v,w) sono necessari tre parametri:
1. La posizione della camera (o dellʼocchio): e
2. Il vettore della direzione dello sguardo g
3. Il vettore up t

Proiezione prospettica in coordinate omogenee

Lezione 09x41
..du maron...
Cambio.

Illuminazione e interazione luce-materia


Se gli oggetti che ci circondano non fossero direttamente o indirettamente illuminati non sarebbero
percepibili dal nostro senso di vista.
Nel momento in cui una qualunque luce viene accesa, lʼosservatore può rendersi conto della
forma, del colore e di altre caratteristiche come la rugosità, il tipo di materiale, la lucentezza degli
oggetti che lo circondano.

Nella CG 3D è quindi necessario definire modelli di illuminazione che riproducano al meglio le


condizioni che si verificano nel mondo reale per raggiungere una visualizzazione realistica della
scena.

In base al tipo di materiale da simulare, esistono diversi modelli di illuminazione.


La fase di shading è il processo che determina il colore di un determinato pixel dellʼimmagine
utilizzando un preciso modello di illuminazione.

Interazione luce-materia
Per determinare il colore di un punto su una superficie dobbiamo considerare lʼinterazione luce-
materia.
I parametri da considerare sono:
1. Le sorgenti di luce - tipo, colore, orientamento
2. Le proprietà del materiale - tipo, colore, orientamento
3. La posizione dellʼosservatore

Simulare una luce


Simulare il comportamento della luce è un processo particolarmente
complesso (possono esserci molte interazione luce-materia).

Un modello di illuminazione è unʼequazione che descrive come un


punto di una superficie della scena sintetica è illuminato in funzione
della sua posizione nello spazio, della posizione delle sorgenti
luminose (dirette o indirette) presenti nella scena, della posizione
dellʼosservatore e delle caratteristiche del materiale di cui sono
formati gli oggetti che costituiscono la scena.
Giacomo Monari -indice- 8
Grafica Computerizzata 2010 - Appunti

Lʼequazione che risolve questo problema si chiama equazione di illuminazione. Questo processo
può essere calcolato in due modi diversi:

lighting
se si fa riferimento al calcolo del bilancio luminoso, ossia la quantità di radiazione luminosa che
incide su ogni determinata posizione dello spazio (ad esempio su ogni porzione di superficie degli
oggetti della scena).

shading
se si fa riferimento al calcolo del colore apparente risultante dallʼesposizione di ognuna di queste
porzioni di superficie alla radiazione luminosa incidente.

Equazione della Radianza (rendering equation)


Le infinite interazioni luce-materia in termini di riflessione ed
assorbimento della luce sono descritte dalla equazione di
rendering (rendering equation). Lʼequazione di rendering
descrive lʼilluminazione globale in che modo la luce
interagisce con tutti gli oggetti di una scena.
Eʼ in grado di determinare le ombre e le interriflessioni
multiple tra oggetti.

Questa equazione non può essere risolta analiticamente. Eʼ


un equazione difficile e troppo complicata per la CG.

Illuminazione Locale
Con questo metodo, consideriamo solo la prima riflessione del raggio
luminoso.
Ray-casting

Percezione dei colori


Una superficie colorata assorbe parte della luce visibile e restituisce il resto
nellʼambiente sotto forma di luce riflessa

Simuliamo questo comportamento considerando:


1. Una sorgente di luce di colore L= (Lr, Lg,Lb)
2. Una superficie di colore k= (kr, kg,kb)
3. Il colore percepito dallʼosservatore I= (Ir, Ig,Ib) sarà:
I=L*k

Giacomo Monari -indice- 9


Grafica Computerizzata 2010 - Appunti

Tipi di Sorgenti di Luce


Nella CG, i tipi di sorgenti di luce sono 3:
1. Sorgente puntiforme (point light)
2. Spotlight
3. Luce dʼambiente (ambient light)

Sorgente puntiforme
Eʼ caratterizzata da una posizione e da un colore. La luce è diffuso allo stesso modo in tutte le
direzioni.
Se definiamo la distanza come infinita, allora i raggi luminosi saranno tutti dritti e paralleli,
otteniamo quindi la luce direzionale.

Attenuazione Radiale
Nella realtà, la luce si disperde con la distanza.
La luce emessa da una sorgente a distanza p0 da un punto p viene attenuata secondo la
relazione:

Più una superficie è vicina e più riceve luce.

Questa attenuazione però non va molto bene, perchè cʼè troppa luce per gli oggetti vicini e troppo
poca per quelli lontani. Inoltre le sorgenti di luce reali non sono puntiformi.
Viene introdotta quindi la:

Attenuazione Quadratica
Tipicamente si utilizza una funzione con un numero maggiori di parametri:

In questa funzione, i parametri possono essere aggiustati per produrre lʼeffetto di attenuazione
desiderato. Ad esempio, porre a ad un valore grande impedisce alla attenuazione di essere troppo
grande per distanze piccole.

Tipi di Superfici
1. Superfici speculari: si comportano come degli specchi riflettendo gran parte della luce
in prossimità dellʼangolo di riflessione(uno specchio è una superficie speculare perfetta)
2. Superfici diffuse: riflettono la luce in tutte le possibili direzioni con uguale intensità
3. Superfici translucenti: trasmettono parte della luce allʼinterno del materiale attraverso
il fenomeno della rifrazione.

Giacomo Monari -indice- 10


Grafica Computerizzata 2010 - Appunti

Modello di illuminazione di Phong


Il modello di Phong, rispetto allʼequazione della radianza, effettua una serie di assunzioni che ne
semplificano decisamente il calcolo:
1. Le singole sorgenti luminose sono di tipo puntiforme. In questo modo, il numero di
sorgenti primarie da cui provengono i raggi luminosi è discreto e finito.
2. Non si tengono in considerazione gli effetti delle inter-riflessioni tra oggetti della scena.
3. Il calcolo dellʼequazione di illuminazione è svolto in memoria locale, ovvero senza
tenere conto delle possibili occlusioni che potrebbero causare ombre.
4. La funzione di riflessione è approssimata con due costanti, che permettono di
caratterizzare il materiale della superficie riflettente.

Lʼunico fenomeno fisico modellato dallʼequazione di Phong è la riflessione (speculare o diffusa);


lʼequazione non prevede la modellazione della trasparenza e della rifrazione.

A partire da un punto p utilizza 4 vettori:


1. Direzione della sorgente l
2. Direzione dello sguardo v
3. Normale n
4. Vettore riflesso r

Il modello di Phong combina linearmente tre tipi di interazione luce-materia: ambiente , diffusa e
speculare:
-Ogni luce ha tre componenti separate
-Ogni materiale avrà tre componenti separate

Per ogni luce e per ogni materiale le corrispondenti componenti interagiscono per produrre il
colore.

Proprietà della Luce


Per ogni luce abbiamo tre proprietà separate per la componente ambientale, diffusa e speculare.
I parametri che definiscono una sorgente luminosa sono:

Proprietà del Materiale


Le proprietà del materiale sono combinate con le corrispondi proprietà della luce.
I parametri che definiscono un materiale sono:

Giacomo Monari -indice- 11


Grafica Computerizzata 2010 - Appunti

Calcolo della Componente Ambientale


La componente ambientale Ia è ottenuta combinando:
-la componente ambientale della luce La
-la componente ambientale del materiale Ka

Ovvero: Ia = La Ka

Si giustifica considerando che la luce ambientale è la stessa su ogni superficie indipendentemente


dalla posizione della luce e dellʼosservatore.
Il termine Ka è chiamato anche coefficiente di riflessione ambientale.

Superfici Lambertiane
Le superfici lambertiane sono le superfici che diffondono la luce allo stesso modo in tutte le
direzioni. In natura queste superfici sono geometricamente irregolari e non esiste un angolo di
riflessione privilegiato.
Nel calcolo della componente diffusa vogliamo determinare la quantità di luce che colpisce la
superficie:

Calcolo per la componente diffusa


Intuitivamente la quantità di luce diffusa dipende dalla posizione
della luce rispetto al punto.

Le variabili da prendere in considerazione sono:


1. La normale della superficie n
2. La direzione della luce l

Modello di Lambert
La legge di Lambert descrive lʼirraggiamento di una superficie irradiata da una sorgente puntiforme
secondo la relazione:

Se n ed l sono vettori unitari allora cosθ = n * l

Calcolo della componete diffusa


La componente diffusa Id è ottenuta combinando:
-la componente diffusa della luce ld
-la componente diffusa del materiale kd
-la quantità di luce irraggiata (n * l )
ovvero:

E se includiamo anche lʼattenuazione quadratica:

Giacomo Monari -indice- 12


Grafica Computerizzata 2010 - Appunti

Quando una luce è posizionata dietro lʼoggetto, il suo contributo deve essere nullo:

E in breve possiamo utilizzare questa forma:

Riflessione Speculare
Molte superfici non sono ne perfettamente diffuse ne perfettamente speculari
(specchi).
In generale le superfici lisce hanno un punto di “lucentezza” a causa della
riflessione della luce in direzione del vettore riflesso.
Se lʼosservatore se è posizionato nella stessa direzione del raggio riflesso
percepisce il classico “bagliore”.

Specularità
La quantità di specularità è proporzionale allʼangolo tra il vettore riflesso r e la direzione dello
sguardo v, ovvero:

Se v ed r sono vettori unitari allora:

Coefficiente Speculare
Phong propose un coefficiente di specularità α (o shininess) che diminuisce allʼaumentare
dellʼangolo φ:

Calcolo della componente speculare


La componente speculare Is è ottenuta combinando:
-La componente speculare della luce Ls
-La componente speculare del materiale Ks
-La quantità di luce riflessa (v · r)α

Giacomo Monari -indice- 13

You might also like