Che materia stai cercando?

Anteprima

ESTRATTO DOCUMENTO

approcci di creazione di una curva parametrica: tramite segmento o interpolazione lineare.

• Segmento: all'aumentare del parametro t si definiscono tutti i punti della curva

• Interpolazione lineare: Se volessi ottenere una

curva passante per i

punti, l'interpolazione

non sarebbe adeguata:

quindi utilizzo le Spline.

Spline

Una Spline è una funzione costituita da un

insieme di polinomi di ordine maggiore di

1, "attaccati" assieme: essi permettono

una maggiore approssimazione.

Possiamo distinguere tra funzioni per Interpolazione ed approssimazione.

Caratteristiche matematiche di una curva P(s)

• Tangente: faccio la derivata prima

• Curvatura: k(s) = | definisce di quanto la curva si "scosta" dalla tangente

• Raggio di curvatura: -> si può interpretare come il raggio della circonferenza che

approssima meglio localmente la curva in un punto.

• Normale: (faccio la derivata seconda)

Rappresentazioni generica di una cubic spline Curve più complesse possono essere costruite

unendo diversi tratti di polinomiali.

Abbiamo diversi gradi di continuità nei punti di

connessione:

Grafica e Immagini digitali Pagina 10

Continui in posizione Continui in posizione e Continui in posizione, tangente,

tangente e curvatura

La C rappresenta la continuità parametrica, ossia la continuità nel punto di intersezione tra le funzioni

rappresentanti i due segmenti (continuità matematica "dura e pura"

La G rappresenta la continuità geometrica, relativa all'affettiva curvatura geometrica; è meno astratta

rispetto a C.

Semplificando molto, abbiamo che C0 e C1 sono equivalenti a G0 e G1

G2 non impone eguaglianza della derivata seconda, ma che le tangenti dei due segmenti abbiano la stessa

direzione

Abbiamo vari tipi di spline, ad esempio:

• Hermite Splines

• Bezier splines

• B-splines

• NURBS

Esse differescono principalmente per la base (matrice) e grado di continuità.

Hermite spline

Si ha una matrice di controllo, che rappresenta 2 punti e due

vettori:

Tramite questo tipo di spline è più facile unire più spline con

continuità C1; tuttavia come svantaggio abbiamo il fatto che

bisogna specificare esplicitamente le tangenti.

Bezier curves La differenza con l'hermite spline sta che in

questo tipo di curva cambiano le funzioni:

si hanno i polinomi di bernstein. Inoltre

invece di avere la matrice di controllo con 2

punti e 2 vettori, avremo una matrice di

controllo con 4 punti.

Moltiplicando le funzioni di base con i 4 punti della matrice ottengo la curva.

Questo tipo di curve sono molto utilizzate nella grafica vettoriale, soprattutto nei font.

Però dobbiamo considerare dei svantaggi: la modifica di un punto di controllo si ripercuote su tutta la curva,

quindi è un po' più difficile gestire la curva.

Grafica e Immagini digitali Pagina 11

B-splines Abbiamo diverse tipologie:

Le B-spline • Uniformi: i nodi sono disposti in maniera

raggiungono continuità uniforme

C2. hanno diversi

segmenti congiunti in • Non uniforme: la distanta tra i nodi non è

punti particolari, uniforme.

chiamati nodi (knot).

Le B-spline uniformi sono aperte, ossia gli estremi della curva non passano per i punti di controllo. Al

contrario le B-spline non uniformi possono passare per i punti di controllo.

La base della B-spline è data da una formula ricorsiva (formula di De Boor)

Dati ti nodi, con t

Definizione di B-spline:

Uniform cubic B-splines

NURBS

Non Uniform Rational B-Splines

Sono delle B-spline non uniformi, in cui alla configurazione delle

B-splines aggiungo dei pesi, garantendomi maggior controllo

sulla curva. Questi sono molto utilizzati in CAD e Computer

graphics in generale.

N = base di B-splines

W = pesi

I easi spostano la curva più vicino o più lontano al punto di controllo P.

Superfici parametriche

Come utilizzo queste curve nella grafica tridimensionale?

Per creare una superfice parametrica, uso le stesse regole delle

curve parametriche, applicando una coordinata in più. Una

superficie è composta da una serie di patch, composta da spline

Grafica e Immagini digitali Pagina 12

Come utilizzo queste curve nella grafica tridimensionale?

Per creare una superfice parametrica, uso le stesse regole delle

curve parametriche, applicando una coordinata in più. Una

superficie è composta da una serie di patch, composta da spline

definite prima in una e poi nell'altra direzione.

Tra patch è ovviamente più difficile gestire la continuità.

Per definire la curvatura in un punto della superfice considero il piano dato dalla normale e della tangente.

Valutazione delle superfici parametriche

Per arrivare a costruire un modello, a partire da una rappresentazione matematica devo arrivare ad una

mesh poligonale. Quindi deve esserci un processo di conversione, dalla superfice parametrica alla mesh

poligonale.

Questa procedura di conversione deve essere efficiente, controllabile e deve garantirmi una buona

accuratezza nell'app…qualcosa

Come al solito abbiamo 2 approcci differenti:

• Campionamento uniforme: valuto la funzione ad intervalli regolari lungo le due coordinate

• Suddivisione ricorsiva:

Ad esempio: Algoritmo di DeCasteljau

Sweep surfaces Utilizzo una spline nello spazio 3d

come una curva generatrice di una

CONTINUA superficie, ruotando la curva lungo un

asse.

Un problema che può verificarsi è

come determinare l'orientamento

della nuova superficie: la soluzione è

il frame di frenet. Che può essere

un sistema di riferimento locale, che

tiene in considerazione la normale,

la tangente, e la binormale

(prodotto vettoriale tra normale e

tangente)

Grafica e Immagini digitali Pagina 13

->

Grafica e Immagini digitali Pagina 14

Funzione implicite, CSG, range scanning

lunedì 7 marzo 2016 12:58

La costruzione di una mesh poligonale può avvenire tramite altre rappresentazioni:

Funzioni implicite

Una funzione implicità è una funzione scalare che rappresenta una curva o una superficie, ma tuttavia non è possibile

calcolare esplicitamente calcolare i punti.

Una funzione implicita può affermare se un valore appartiene o meno alla curva

Se la (o il punto appartiene alla curva o superficie

La funzione descrive un bordo tra una zona interna o una zona esterna. La curva o superficie rappresenta l'insieme delle

soluzioni della funzione. (isolinea/isosuperficie)

Ad esempio , l'equazione che descrive un cerchio ( o una sfera) è una funzione esplicita, ossia, tutti i punti che fanno si

che f(x,y) = 0 fanno parte del cerchio, e no altrimenti.

Di conseguenza non posso rappresentare direttamente una funzione implicita con una mesh o una curva. Devo trovare il

modo di costruire la mesh a partire da un insieme di punti.

In 2D utilizziamo il metodo dei marching squares.

Marching squares

Considero una curva ed una griglia uniforme di punti (xi,yi), e calcolo il valore di f in ogni punto.

In questo caso ho trovato i punti all'interno della curva (rossi) e all'esterno della curva. (blu)

Allora considero i quadrati, e avrò una tabella di casi, per cui

io potrò identificare un'approssimazione del passaggio nella

cella della mesh che si sta ricostruendo. Avrò 2^4

combinazioni possibili.

Tuttavia possono preesentarsi dei casi ambigui, dove non si

può sapere se il centro della cella è dentro o fuori dal

contorno. Per risolvere questo problema suddivido il

quadrato in 4 quadrati.

Questo sarà il risultato: Grafica e Immagini digitali Pagina 15

Il risultato tuttavia non è accettabile, in quanto la funzione è troppo

approssimata: quindi come ultimo passo effettuerò l'interpolazione

lineare. Assegnerò ad ogni punto un peso, a seconda di cui ogni

vario segmento viene "aggiustato".

Per aumentare la precisione, aumento il numero di quadratini.

Funzioni implicite nel caso 3D

Generalizzo il caso 2D alle 3 dimensioni. Da marching squares avremo marching cubes.

Avremo anziche 16, 256 casi: molti di essi sono simmetrici, quindi possiamo riassumerli in 14 casi condamentali.

Voxel: unità volumetrica (cubo)

Al posto di tracciare linee traccerò piani.

Un esempio di applicazione delle funzione implicite è fornito dalla diagnostica per immagini e le metaballs.

Le metaballs vengono utilizzati per creare dei modelli organici "molli".

L'approccio generale è il seguente:

Ho due o più isolinee o isosuperfici nella scena, chiamate funzioni generatrici. Posso interpretare queste isolinee come

dei campi di forza. La metaball è creata dall'unione dell'effetto di queste forze di attrazione, procedendo sempre con i

marching squares/cubes.

Con più funzioni, creo una nuova curva come somma delle densità

CSG (Constructive Solid Geometry)

In questo approccio parto da un oggetto

semplice (sfera, cuba, cono, ecc) e creo

oggetti più complessi tramite operazioni

booleane, come unione, differenza ed

intersezione. Esse sono facilemnte

Grafica e Immagini digitali Pagina 16

semplice (sfera, cuba, cono, ecc) e creo

oggetti più complessi tramite operazioni

booleane, come unione, differenza ed

intersezione. Esse sono facilemnte

applicabili a funzioni implicite. Gli oggetti CSG sono facilmente rappresentabili con un albero binario.

Tuttavia è possibile incorrere in problemi di topologia, poiché dopo

l'operazione CSg la topologia può non essere corretta. In questo modo

si effettua una ri-triangolazione.

Range scanning

Tramite il range scanning effettuo una scannerizzazione 3D per costruire un modello a partire da un oggetto reale.

Esso può essere effettuato tramite diverse tecnologie, come a contatto, time of flight, luce strutturata, ed image

based.

Esso viene utilizzato nell'ambito industriale, e anche per i beni culturali (ad es. scansione david di michelangelo)

Analizziamo le tecniche più utilizzate:

• Time of flight: per questo approccio abbiamo un apparecchio che "spara" il raggio laser, che

successivamente rimbalzerà e ritornerà addosso alla macchina. Quindi con un gran numero di raggi, viene

calcolata la distanza dalla camera tramite calcolo del tempo.

• Luce strutturata: Questo approccio è utilizzato da kineckt. Viene proiettato un pattern luminoso ad

infrarossi. Se proietto il pattern su una persona, esso ovviamente risulterà distorto. La camera IR analizza la

distorsione del pattern e calcola la distanza dei vari punti.

• Image-based: Vengono utilizzate una serie di immagini da più punti di vista.

A prescindere dalla tecnologia, uno scanner 3D procede nel seguente modo:

Esso acquisisce una point cloud, ossia un insieme di vertici scollegati tra loro. La point cloud deve venire convertita

in una mesh. Per effettuare questa operazione ho due strade che posso seguire.

Dalla point cloud posso creare un campo volumetrico (voxel). Sulla base di questo creo una funzione implicita, da

cui poi creerò i marching cubes.

La seconda strada è la seguente: posso dalla point cloud posso procedere a creare una mesh tramite la

triangolazione. Eventualmente posso raffinare la mesh, ad esempio tramite decimazione.

Triangolazione

Con la triangolazione, dato un insieme di punti creo una mesh di triangoli. Questo approccio è molto complesso e

computazionalmente costoso. Abbiamo più approcci e algoritmi proposti: l'approccio più comune è "cerco di

ottenere triangoli il più possibile regolari"

Per spiegare la triangolazione si ha bisogno del diagramma di voronoi.

Grafica e Immagini digitali Pagina 17

Consideriamo una partizione del piano: dato un insieme di punti pi, detti punti generatori: ad ogni punto p è

associata una regione dello spazio Vi (celle).

Vi è il luogo dei punti qi per cui vale

I punti sul lato appartenente a due celle sono equidistanti dai punti generatori pi e pj.

Un particolare tipo di

triangolazione, chiamata

triangolazione di

delaunay, si basa sul

diagramma di voronoi, e si

ottiene connettendo i

punti generatori contigui

di un diagramma di

Voronoi.

La proprietà su cui si basa la triangolazione di delaunay è che Il cerchio circoscritto ad un triangolo passante per 3

punti generatori non contiene nessun altro punto generatore.

Flipping Il flipping è uno degli approcci per creare una triangolazione di

delaunay.

Data una triangolazione iniziale, considero una coppia di triangoli. Se

il cerchio circoscritto ad un triangolo contiene più di 3 punti

generatori, allora capovolgo il lato in comune.

La triangolazione tuttavia non è applicata solo per il point cloud: viene effettuata anche in casi in cui sia

necessario raffinare e ricostruire la topologia di una mesh, dopo una certa operazione

Grafica e Immagini digitali Pagina 18

Trasformazioni

giovedì 10 marzo 2016 10:37

Prima di studiare, RIPASSA mate del discreto: vettori, prodotti scalari e vettoriali, matrici (trasposta, inversa), calcoli tra

matrici e vett

Quando utilizzo le trasformazioni? Le trasformazioni le utilizzo in vari casi:

• Modellazione: nel caso della modellazione, una trasformazione può essere il posizionamento dei modelli nella

scena, posizionamento di componenti di modelli più complessi, ecc

• Camera: posizionamento e rotazione della camera virtuale nella scena.

• Animazione: applicate e modificate nel tempo per creare l'effetto del movimento

Sistema di riferimento (mat discreto)

Dati v1,v2 …, vn vettori, essi sono linearmente indipendenti quando a1v1 + a2v2 +… + anvn = 0 se e solo se a1=a2=…=0

Il numero massimo di vettori linearmente indipendenti determina la dimensione dello spazio vettoriale

• Base: in uno spazio n-dimensionale ciascun insieme di n vettori linearmente indipendenti definisce una base per lo

spazio. Una base di uno spazio euclideo è

ortonormale se formata da versori tra loro

ortogonali. Quindi avremo gli scalari

a1,a2,a3 sono le componenti del vettore

rispetto alla base v1,v2,v3

Se una base non è sufficiente, è necessario definire l'oriigine. l'insieme della base e dell'origine definisce un sistema di

riferimento o frame. ( se base ortonormale -> cartesiano)

Avremo occasione di cambiare più volte il sistema di riferimento: consideriamo ora il sistma di riferimetno locale.

• Sistema di riferimento locale:

ogni singolo modello ha un suo

sistema di riferimento con delle

coordinate locali. I vertici sono

espressi rispetto ad un sistema

legato al singolo modello.

• Sistema di riferimento

mondo: i vertici sono

espressi rispetto all'origine

del sistema di riferimento.

Trasformazioni lineari

Una trasformazione lineare è una funzione lineare f:V V tale che

f(v+w) = f(v) + f(w) per tutti i v e w in f

Grafica e Immagini digitali Pagina 19

f(v+w) = f(v) + f(w) per tutti i v e w in f

f(cv) = cf(v) per tutti gli scalari c

Le trasformazioni lineari vengono utilizzate per trasformare i vertici intorno all'origine, ossia posso effettuare una

rotazione o scala del modello. (scala -> ingrandimento)

Le trasformazioni lineari non includono le traslazioni.

Scala

Esempio di trasformazione di scala in 2D:

Effettuo un'operazione di scala di 0.5 su x e 0.25 su y; quindi avremo la matrice che corrisponde ad S che sarà

Le proprietà del fattore di scala sono le seguenti:

• Se il fattore scala è < 1 l'oggetto si avvicina all'origine

• Se > 1 l'oggetto si allontana

• Se sx != sy, la scalatura è non uniforme, ossia non preserva gli angoli

Rotazione

Esprimo P in coordinate polari:

Quindi la trasformazione sarà definita nel seguente modo:

Grafica e Immagini digitali Pagina 20

Esempio: ruoto di attorno all'origine:

Traslazione

La traslazione non è una trasformazione lineare: essa è definita nel seguente modo:

Coordinate Omogenee

Per effettuare queste trasformazioni non uso le coordinate cartesiane, ma le coordinate omogenee

Le coordinate omogenee sono un insieme di coordinate utilizzate nella geometria proiettiva; utilizzo uno spazzio

tridimensionale per rappresentare una trasformazioni 2D.

Quindi, se io ho delle coordinate cartesiane seguenti:

Avrò le seguenti coordinate omogenee: La terza coordinata indica uno degli spazi di classi di

equivalenza, diversi tra loro come dimensione. Ogni

punto cartesiano in 2D corrisponde a infiniti punti

nello spazio omogeneo 3D, poiché vi sono infiniti

spazi di classe di equivalenza. Gli spazi differiscono

tra loro solo per un fattore moltiplicativo w; ogni w

definisce un piano nello spazio omogeneo.

Perché non utilizzare solamente un piano di equivalenza? Essa mi serve per determinare un punto, o un vettore.

Ad esempio, con W=1 abbiamo la

forma canonica: le coordinate

cartesiane ed omogenee coincidono.

W = 0 lo userò per definire un

vettore.

T Grafica e Immagini digitali Pagina 21

vettore.

T

ramite le coordinate omogenee è possibile definire tutte le trasformazioni (anche la traslazione) tramite matrici. (avrò

una matrice 3x3 per le trasformazioni 2D e una 4x4 per le trasformazioni 3D)

Le trasformazioni in coordinate omogenee si chiamano trasformazioni affini. Esse preservano sia le linee che i piani, sia

il loro parallelismo. È necessario trasformare soltanto i vertici per trasformare il poliedro.

Ri definiamo le trasformazioni di scala, rotazione e traslazione come rasformazioni affini:

• Scala:

• Rotazione:

• Traslazione:

Ed invece ecco qui le trasformazioni inverse:

Riflessione

Vi sono altri tipi di trasformazioni, come la riflessione: come la scala, ma inverto i valori di una coordinata, senza

modificare le dimensioni:

Shear

Lo shear è una deformazione, ossia "inclina" il modello rispetto ad un asse

Grafica e Immagini digitali Pagina 22

Composizione di trasformazioni

In termini di coordinate omogenee, diventa un prodotto tra matrici: l'ordine è importante (non commutativo).

Convenzionalmente, l'ordine di applicazione delle trasformazione avviene da destra a sinistra (l'ultima "lettera" definita

è la prima applicata):

Convenzionalmente diciamo che si effettua TRSp:

1. Prima scalo

2. Poi ruoto

3. Poi traslo

Posso anche creare un'unica matrice M = TRS, da applicare a p

Osserviamo come avviene una rotazione all'interno di un software (blender, maya, ecc)

1. Traslo P nell'origine

• Ruoto intorno all'origine

Ri-traslo in P.

Piccolo appunto: abbiamo trattato le trasformazioni come applicate ai vertici: traslando "il mondo" il risultato sarebbe

uguale Grafica e Immagini digitali Pagina 23

Trasformazioni affini nello spazio

Analizziamo ora le trasformazioni affini in uno spazio 3D. Semplicemente nelle matrici di trasformazione aggiungo una

terza coordinata: bisogna fare attenzione se si tratta di un sistema destrorso o sinistrorso.

Analizziamo le trasformazioni affini in uno spazio 3D:

E la rotazione? Per la rotazione possiamo avere la rotazione su un asse piuttosto che su un altro, o su più assi insieme:

quindi dovremmo definire 3 matrici per la rotazione. Ogni rotazione viene rappresentata come la composizione delle

rotazioni separate sui 3 assi. (combino matrici)

• Rotazioni

Ed ecco qui le trasformazioni inverse:

Rotazioni in 3D tramite trasformazioni affini

Come detto in precedenza, per le rotazioni 3d utilizzo eulero. Queste rappresentazioni sono facili da implementare, ma

andiamo in contro a diversi problemi, soprattutto in interpolazioni (per animazioni) ad esempio, se in blender imposto 2

keyframes, come farò a sapere che blender arriverà al risultato del keyframe secondo una strada ben precisa piuttosto

che in un'altra?

Oltre a ciò avrò problemi ad invertire. Ed infine, soprattuto nei videogiochi, avrò il gimbal lock,

ossia, se provo ad applicare una rotazione in modo che il

modello coincida con l'asse x, perderò un grado di

rotazione (guarda esempio video su slide)

Rappresentazione asse/angolo (migliora)

Come faccio ad evitare il gimbal lock? Posso farlo tramite il teorema della rotazione di eulero:

Grafica e Immagini digitali Pagina 24

Come faccio ad evitare il gimbal lock? Posso farlo tramite il teorema della rotazione di eulero:

• Definisco la rotazione tramite un asse (un vettore nello spazio)

• E definisco un angolo di ritazione intorno all'asse.

• È più intuitiva dell'uso di 3 matrici separate

Nonostante permette di evitare il gimbal lock, questa rappresentazione presenta comunque problemi di interpolazione.

Posso convertire matematicamente alle matrici di rotazione.

Quaternioni (allucinante)

Per risolvere tutti i problemi delle rotazioni nello spazio utilizziamo i quaternioni.

I quaternioni sono un estensione dei numeri complessi, più in particolare una notazione robusta di rotazioni 3D.

Comprendono il teorema di Eulero asse/angolo

I quaternioni superano i seguenti problemi:

• Facili da applicare, tramite coniugazione

• Facili da comporre, tramite moltiplicazione

• Facili da interpolare

• Senza il gimbal lock!

Un quaternione definito in uno spazio vettoriale 4D è il seguente:

a + bi + cj + dk

Dove a,b,c,d sono numeri reali (in genere a è uno scalare e bcd sono i componenti di un vettore p)

E i,j,k che sono un estensione all'unità immaginaria dei numeri complessi.

Algebra dei quaternioni

L'operazione di addizione tra quaternioni è la seguente:

l'operazione di moltiplicazione (associativa ma non commutativa) è la seguente:

un quadernione coniugato (pensa a n complessi coniugati) si definisce in questo modo:

Rotazione tramite quaternioni

Quindi, definisco una rotazione 3D con un quaternione nel seguente modo:

Dato un asse v e un angolo :

Spiegazione della formula qui sopra:

Quindi, per applicare la rotazione ad un vettore l effettuo la coniugazione -> qlq*

(moltiplicare per q* serve a conservare la lunghezza del vettore l)

Tuttavia l'angolo è doppio, quindi prima dell'applicazione viene dimezzato l'angolo (nota il sin di theta/2)

Viene risolto il problema di interpolazione in quanto tramite i quaternioni esiste una sola "strada" da percorrere.

Grafica e Immagini digitali Pagina 25

Scene Graph e Proiezioni

lunedì 14 marzo 2016 10:39

Fai parte iniziale

Trasformazioni come nodi

In uno Scene Graph, anche le trasformazioni sono rappresentate come nodi:

È possibile riutilizzare gruppi di oggetti con la loro gerarchia e con le

rispettive transformazioni, ed è possibile "spostare" i vari gruppi,

gestendo meglio l'incapsulazione e la composizione delle

trasformazioni.

Ad esempio, è possibile utilizzare più volte un gruppo, sempre

all'interno dello scene graph

L'approccio dello scene graph è molto utilizzato nell'ambito di grafica in tempo reale.

Stack Matrici

Vi è un altro approccio a riguardo è tramite lo stack matrici: il tutto è gestito come se fosse una vera macchina a

stati finito, ove applico trasformazioni aggiungendo una matrice allo stack. La lista viene utilizzata come una vera

pila, effettuando operazioni di push and pop.

Osserviamo un esempio di utilizzo dello stack matrici:

Grafica e Immagini digitali Pagina 26

Proiezioni

Cos'è una proiezione? Una Proiezione è una rappresentazione del mondo (della tridimensionalità)

attraverso un'immagine bidimensionale (che può essere un dipinto, un disegno, o una fotografia)

Lo studio delle proiezioni inizia centinaia di anni fa, con gli studi di Brunelleschi, Piero della francesca,

Mantegna, ecc. ecc.

Dal punto di vista geometrico, la proiezione è definita da un insieme di rette di proiezione (proiettori),

con l'origine comune nel centro di proiezione. Intersecanti per un piano di proiezione.

Abbiamo diversi tipi i proiezioni:

• Proiezioni geometriche piane: In questo tipo di proiezioni, i proiettori sono rettilinei e la

proiezione giace su un piano.

• Proiezioni prospettiche: in questo tipo di proiezioni, vi è una distanza finita fra il centro e il piano

di proiezione.

• Proiezioni parallele: Vi è una distanza infinita fra il centro ed il piano di proiezione: i proiettori

sono paralleli tra loro

Parlando di Computer grafica, possiamo iniziare a interpretare il processo di creazione dell'immagine

come una fotografia virtuale.

Più in particolare, in CG si ha la camera pinhole. In questo tipo di camera non considero l'obiettivo, ho

un foro di dimensioni infinitesimali.

A livello teorico, se il foro è davvero di dimensioni infinitesimali, non vi sarebbe depth of field, quindi

teoricamente le immagini dovrebbero essere completamente nitide.

Per convenzione, considero il piano immagine tra la scena ed il centro di proiezione, per avere

l'immagine proiettata orientata correttamente.

In CG vengono utilizzati due tipi di proiezione: la proiezione ortografica e la proiezione prospettica.

Tuttavia dobbiamo "trasformare" queste proiezioni in un qualcosa di elaborabile da un computer.

Descriviamo la configurazione base (canonica)

Configurazione canonica (ortografica)

Grafica e Immagini digitali Pagina 27

Configurazione canonica (ortografica)

Considero come piano immagine il piano xy, i proiettori paralleli all'asse z, e la proiezione di un punto la

ottengo mettendo a 0 la coordinata z.

Configurazione canonica (prospettica)

Il centro di proiezione è nell'origine, l'asse di proiezione principale coincide con l'asse z, ed il piano di

proiezione è parallelo ad xy.

In forma matriciale è la seguente:

Tuttavia le configurazioni canoniche non si verificano quasi mai in computer graphics: quindi a cosa

servono? l'approccio tipico è l'applicare una sequenza di trasformazioni per trasformare il tutto in una

configurazione canonica. Una volta fatto cioò eseguo delle trasformazioni di vista ( sulla camera) ed

infine applico le trasformazioni di proiezione che abbiamo studiato poco fa.

Ecco i passi da seguire:

1. Definisco la camera virtuale

2. Definisco la trasformazione di proiezione

3. Applico trasformazioni di vista (configurazione canonica)

4. Applico il clipping 3D (elimino tutto ciò che non si vede nella camera), le trasformazioni di

proiezione, ed eseguo una visualizzazione finale nella finestra di rendering.

Definizione LookAt di una camera virtuale:

In questo approccio definisco una posizione p come il centro di proiezione, la direzione di osservazione

Look, il vettore up che determina l'orientamento della camera.

Grafica e Immagini digitali Pagina 28

In questo approccio viene definito un range in cui viene effettuato o meno il clipping: nell'immagine

sono definiti due piani, il near plane ed il far plane, che definiscono questo range. Tutto al di fuori del

far plane e del near plane non viene renderizzato. Gli oggetti troppo lontani non vengono renderizzati

perché, per quanto siano piccoli, occupano tempo di rendering. Gli oggetti troppo vicini invece

bloccherebbero la vista del resto della scena.

In questo tipo di approccio spesso il piano di proiezione è il piano near.

Il field of view è definito come rapporto tra la distanza focale d ed il piano immagine.

Trasformata di vista

Tramite la trasformata di vista voglio arrivare alla configurazione canonica. Esso consiste in una serie di

traslazioni e rotazioni per portare il sistema di riferimento della camera al sistema di riferimento del

mondo.

In forma matriciale:

Frustum culling

Come frustum culling intendiamo l'operazione di scartare gli oggetti al di fuori dal frustum (la zona

delimitata dal far plane e dal near plane. Se uno di questi oggetti interseca il piano, esso viene "tagliato".

Se voglio effettuare il frustum culling ad un frustum

di visione prospettica devo aggiungere un altro

passaggio. Devo trasformare il tutto in un volume di

vista canonico normalizzato, tramite un operazione

di shear, in questo modo le operazioni di clipping

saranno molto facili.

Grafica e Immagini digitali Pagina 29

In termini matriciali la matrice da applicare è la seguente:

Unendo il tutto si ottiene la matrice riguardante la proiezione prospettica:

Trasformazione window to viewport

Per portare la proiezione ottenuta sul viewport, mappo le coordinate 2D del piano di proiezione nelle

coordinate 2D di una finestra sullo schermo.

A livello di matrici la rappresentazione si ottiene in questo modo:

Grafica e Immagini digitali Pagina 30

Luci, illuminazione, BRDF

lunedì 21 marzo 2016 10:39

Per ora abbiamo solo parlato della modellazione dei solidi: nella pipeline di rendering però sappiamo che oltre alla

modellazione serve anche definire l'illuminazione, in modo da creare la perfetta scena. Quindi si parlerà di

modellazione. Più in preciso, dovremmo definire:

• Le caratteristiche delle luci virtuali

• Le caratteristiche dei materiali dei modelli

• Un modello matematico per il calcolo interazione-luce

Spieghiamo brevemente il modello di luce secondo la fisica:

A livello microscopico:

La luce è composta da piccoli pacchetti di energia (quanti), chiamati fotoni.

Essi sono emessi quando un elettrone passa ad un orbita inferiore, rilasciando energia.

A livello macroscopico:

A livello macroscopico, la luce è considerata un'onda elettromagnetica. Variando la lunghezza d'onda avremo diversi

colori emessi. (luce visibile: 380 - 780 nm) i restanti valori costituiscono tutti i restanti tipi di onde elettromagnetiche.

La descrizione tramite fotoni permette di descrivere meglio lo scambio energetico, ossia quando un fotone colpisce un

materiale. La descrizione tramite onda permette di descrivere meglio la propagazione della luce nella scena, ed i vari

fenomeni collegati.

Quando varie frequenze di luce colpisce un materiale, esso può assorbire o riflettere certe frequenze. Noi vedremo la

porzione di luce che viene riflessa dal materiale.

Angolo solido

L'angolo solido ci servirà molto nel campo dell'illuminazione. Esso è il rapporto tra l'area della superficie racchiusa sulla

sfera ed il quadrato del raggio. L'unità di misura dell'angolo solido è lo steradiante.

Grandezze radiometriche Grafica e Immagini digitali Pagina 31

Radianza

La radianza si definisce come il flusso radiante per unità di angolo solido e per unità di area proiettata. (l'area è

proiettata in maniera ortogonale alla direzione)

Irradianza

Supponiamo che L sia la radianza che arriva al punto x da una direzione data dall'angolo theta.

l'irradianza in x si ottiene integrando la radianza sull'angolo solido, per tutta l'emisfera.

Altre grandezze

Luminanza: è equivalente a radianza

Illuminanza: è equivalente ad uscita radiante.

(misurate in candela/m^2)

Corpo nero

Un corpo nero è un oggetto ideale che assorbe tutta la radiazione elettromagnetica senza rifletterne una minima parte.

Per la legge di conservazione dell'energia, una volta riscaldato irradia tutta l'energia assorbita.

Legge dell'inverso del quadrato

Il valore dell'irradianza è inversamente proporzionale al quadrato della distanza dalla sorgente di luce

Equazione di Fresnel

Le equazioni di fresnel descrivono l'interazione della luce con una superficie, intesa come un "separatore" tra due

diverse sostanze. (Ogni volta che ho un materiale trasparente-semitrasparente uso fresnel)

Semplificando, queste equazioni descrivono la quantità di luce riflessa, sulla base dell'angolo di incidenza della luce. Per

la conservazione dell'energia, la luce non riflessa viene trasmessa.

Grafica e Immagini digitali Pagina 32

Nelle equazioni di fresnel devo indicare degli indici che definiscono l'indice di rifrazione per ogni materiale

A tal proposito utilizzo la legge di Snell:

La componente trasmessa diventa:

(MIGLIORA perché non si capisceun cazzo)

Oltre alle equazioni di fresnel, si pul utilizzare l'approssimazione di schlick:

Sorgenti di luce nella CG

Nella computer graphics abbiamo due approcci diversi per l'emissione di luce: Directional e Point Light

• Directional: è un tipo di luce, con la sorgente talmente lontana (all'infinito) in cui posso approssimare dei raggi

paralleli. Spesso la utilizzo per rappresentare il sole.. In questo modo ottengo un'ottima illuminazione uniforme.

• Point Light: in questo tipo di luce abbiamo una sorgente in posizione finita, puntiforme (ossia adimensionale).

Essa illuima in tutte le direzioni (non possibile nella realtà, o almeno precisamente). A questo tipo di approccio

viene applicata la legge di decadimento.

• Spot Light: (come se fosse un "faretto"): determino la posizione, un angolo di emissione, una direzione di

emissione ed un'intensità variabile all'interno del cono di emissione.

• Area Light: per Area light, data una sorgente estesa, come può essere una superficie, inseristo tante point light

per illuminare completamente una superficie. (metti immagini)

Parlando di coordinate omogenee, avremo nella point, spot, come coordinata omogenea w = 1, mentre nella directional

avremo w= 0 (vettore)

Caratteristiche dei materiali

Vi sono 3 tipi di possibile interazione luce-materiale:

Grafica e Immagini digitali Pagina 33

• Riflessione

• Assorbimento

• Trasmissione

Per la legge della conservazione delll'energia, la luce incidente = luce riflessa + luce assorbita + luce trasmessa

Negli oggetti opachi, avremo la trasmissione (circa) uguale a 0.

Negli oggetti translucenti, avremo la trasmissione != da 0.

Bidirectional Reflectance Distribuition Function

La BRDF descrive come l luce venga riflessa da un certo materiale. Abbiamo la stessa cosa per la trasmissione (BTDF,

ossia Bidirectional Trasmittance Distribuition Function)

Per un dato tipo di materiale avremmo una verta BRDF, dal quale ne conseguirà una diversa interazione luce-materia.

A tal proposito introduciamo il concetto di microfacce, ossia a livello microscopico, anche l'oggetto più liscio sarà

costituito da tante facce orientate. (integra)

La BRDF è una funzione di:

• Lunghezza d'onda (lambda)

• Posizione considerata sulla superficie (p)

• Direzioni di incidenza e riflessione (è nulla per pigreco mezzi)

CHIEDE LA FORMULA

BRDF Isotropa

Esprimo la funzione rispetto all'angolo relativo, in quanto una rotazione intorno alla normale non altera la funzione.

Grafica e Immagini digitali Pagina 34

BRDF Anisotropica

Nella BRDF anisotropica non vi è simmetria rispetto alla normale: in questi casi abbiamo la superficie che presenta una

geometria fortemente orientata. (es. velluto, che cambia la luce in base all'orientamento)

Come ottengo la BRDF?

In generale non è definibile in modo analitico, quindi mi tocca ricorrere ad approssimazioni basate sulla fisica, o meglio

ancora su modelli empirici. Essa si può misurare sperimentalmente attracerso il gonioreflettometro

BSSRDF

La BSSRDF (Bidirectional Surface Scattering Reflectance Distribuition Function) combina le descrizioni di BRDF e BTDF per

gestire dia la riflessione che la trasmissione: la bssrdf considera il cammino della luce anche negli strati sottosuperficiali

dei materiali.

MIGLIORA, INTEGRA CON SLIDE E WIKIPEDIA

Grafica e Immagini digitali Pagina 35

Rendering 2: modelli di illuminazione locali, shading

lunedì 4 aprile 2016 10:40

Equazione del rendering (Kaijya)

Con questa equazione riesco a calcolare la radianza riflessa. Questa formula si basa sulla legge della conservazione

dell'energia.

Per ogni posizione e direzione, viene calcolato il seguente:

Luce uscente = luce emessa + luce riflessa. (luce riflessa: somma della luce entrante da tutte le direzioni, moltiplicata

per angolo di incidenza e BRDF.

È un tipo di equazione ricorsiva, se consideriamo anche riflessioni e rifrazioni multiple.

Tuttavia, questa relazione non è possibile risolvere correttamente se non in casi particolari e semplici: quindi, invece

che utilizzare l'equazione, utilizzeremo dei modelli di illuminazione, ossia dei modelli matematici che cercano di

approssimare il risultato dell'equazione di rendering.

Ci sono più tipi di modelli di illuminazione:

Modelli di illuminazione globali

I modelli di illuminazione globali tengono conto di tutto l'ambiente per definire l'illuminazione in ogni punto della scena.

Viene considerata la luce diretta (emissione di luce) sia la luce indiretta (luce riflessa).

È molto pesante computazionalmente, e viene spesso utilizzata nella CG per l'animazione.

Modelli di illuminazione locali

Nei modelli di illuminazione locali calcolo solamente la luce diretta. (calcolo separatamente l'interazione luce-materiale,

separatamente in ogni punto)

Questi modelli vengono utilizzati spesso nella grafica in tempo reale.

Tutti i modelli d'animazione hanno una geometria di questo tipo:

Oltre all'approssimazione applicata dai modelli per risolvere l'equazione

Di rendering, posso anche utilizzare delle BRDF semplificate, (ad esempio

Posso approssimare lo spettro della BRDF utilizzando solo 3 colori (RGB)

Grafica e Immagini digitali Pagina 36

Posso approssimare lo spettro della BRDF utilizzando solo 3 colori (RGB)

Più in particolare, posso non considerare la lunghezza d'onda,

assumere che il materiale sia uniforme, ed assumere che il materiale

sia isotropo. In questo modo posso semplificare di molto

l'equazione, togliendo ben 3 variabili:

In questo modo la BRDF dipenderà solamente da angolo di incidenza

E angolo di riflessione.

Studio della riflessione

Ripassiamo un attimo i vari tipi di riflessione della luce:

Diffusiva: la luce viene riflessa uniformemente in tutte le direzioni. Dipende solo dalla direzione incidente della luce (ed

è indipendente dal punto di osservazione)

Speculare: la luce viene riflessa in una sola direzione ( o in un angolo molto stretto)

Glossy: riflessione "mista", ossia un oggetto opaco manifesta anche proprietà di riflessione speculare.

Speculare

Diffusiva Glossy

Riflessione Diffusiva

La riflessione diffusiva è uniforme in tutte le direzioni. Quindi essa dipende solo dalla direzione incidente della luce, ed è

indipendente dal punto di osservazione.

Modello di Lambert

Il modello di illuminazione che descrive in maniera matematica la riflessione diffusiva, è il modello di lambert (1760)

Il modello di lambert descrive che l'intensità radiante riflessa in qualsiasi direzione, da un punto ad una superfice

diffusiva (perfetta), è proporzionale al coseno dell'angolo tra la normale e la direzione di incidenza.

Questo è il caso dell'equazione con una sola luce:

Computazionalmente parlando, la formula per calcolare ciò è molto semplice.

con più luci dovrò eseguire una sommatoria.

Avremo Li che è la luce incidenza dalla direzione l e

Kd che è il coefficiente di riflessione diffusa.

A livello macroscopico, le superfici "lambertiane" che rispettano la riflessione diffusiva, avrà una BRDF costante, e la

superficie sarà molto rugosa, a livello microscopico.

Riflessione Speculare

Abbiamo due tipi di riflessione speculare: Speculare perfetta, in cui i raggi sono riflessi in un'unica direzione, e Speculare

imperfetta, dove i raggi vengono riflessi in un cono orientato rispetto alla direzione della riflessione.

Grafica e Immagini digitali Pagina 37

Questo tipo di riflessione dipende dalla posizione dell'osservazione.

A livello microscopico per avere una riflessione speculare, la superficie deve essere molto liscia. Le "microfacce" devono

essere orientate "più o meno" nella stessa direzione.

IL modello di illuminazione più diffuso in CG per il tempo reale è il modello di phong.

Questo modello afferma che per ottenere l'illuminazione su una superficie bisogna effettuare la somma di 3

componenti:

1. Diffusiva: Componente diffusiva, che viene calcolata secondo il modello di lambert

2. Speculare: viene calcolata come "highlight" luminosi, su superfici lucide (migliora)

3. Ambientale: una componente costante globale

Soffermiamoci un secondo sulla costante ambientale: essa è una componente costante applicata a tutta la scena. Essa è

una simulazione (molto approssimata) della componente di luce indiretta.

Questo concetto è stato introdotto per "schiarire" il risultato finale, che risultava troppo scuro. (bisogna stare molto

attenti a non esagerare con il valore, perché potrebbe "appiattire" la scena

Il calcolo della componente speculare si effettua con la sequente equazione:

Alfa: esponente di riflessione speculare (coefficiente di shininess). Esso determina la dimensione degli highlight.

Ks: Coefficiente di riflessione speculare.

Angolo di scostamento tra la direzione speculare e quella dell'osservatore.

Aumentando il valore di alpha mi avvicino sempre più alla riflessione speculare perfetta: quindi per superfici opace

utilizzerò valori molto bassi (<100), mentre per ad esempio superfici metalliche utilizzerò valori da 100 a 500.

L'equazione del modello di phong nel caso di una sola luce è la seguente:

Grafica e Immagini digitali Pagina 38


ACQUISTATO

1 volte

PAGINE

66

PESO

3.26 MB

AUTORE

sk8erb0y

PUBBLICATO

+1 anno fa


DETTAGLI
Corso di laurea: Corso di laurea magistrale in informatica per la comunicazione
SSD:
Università: Milano - Unimi
A.A.: 2017-2018

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher sk8erb0y di informazioni apprese con la frequenza delle lezioni di Grafica e immagini digitali e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Milano - Unimi o del prof Gadia Davide.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Corso di laurea magistrale in informatica per la comunicazione

Algoritmi e strutture dati
Appunto
Applicazioni Web e Cloud - Reti, Cloud, SOAP
Appunto
Basi Di Dati
Appunto