• Non ci sono risultati.

Università dell’Insubria Corso di Laurea in Informatica Anno Accademico 2014/15

N/A
N/A
Protected

Academic year: 2021

Condividi "Università dell’Insubria Corso di Laurea in Informatica Anno Accademico 2014/15"

Copied!
7
0
0

Testo completo

(1)

Computer Graphics

Marco Tarini

Università dell’Insubria Corso di Laurea in Informatica Anno Accademico 2014/15

Lighting: tecniche di Shading

Lighting in breve

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Proprietà del materiale

(dati che modellano i materiali)

Ambiente di illunimazione

(dati che modellano le luci)

Dati geometrici

(es. normale, pos osservatore…)

(lo ca l) LIG H TIN G

R, G, B finale

(un modello di lighting,

“una delle tante formule possibili”)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Es: una equazione di Lighting

=

 

 

 

 

=

1

0

) (

N

i

i B i G i R i

B x G x

R x

r n

L L L

D D D

L r r

ω

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Es: un’altra equazione di Lighting

n spacular

materiale spacular

luce k H N

I ⋅ ⋅ ( ˆ ⋅ ˆ ) +

k ( L ˆ N ˆ ) I luce diffuse materiale diffuse

+

materiale ambient ambient

luce k

I

emission materiale

k +

tot = I

caratteristiche della luce

caratteristiche del materiale

dati della geometria

(2)

Baked Lighting VS Dynamic lighting

• “Baked” lighting

– Precomputare ligthing a priori

(una volta x tutte)

– Memorizzare RGB finali

(es come attributi x vertice)

• Dynamic lighting

– computato a tempo di rendering

• (vedremo ora come e quando) – Gli input (normali, materiali, luci) sono

attributi x vertice o uniforms (es. materiali se uniformi)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

esistono anche schemi misti:

alcune componenti del lighting baked, altre dinamiche PRO: efficienza, e possibilità di usare lighting + complessi (es effetti di lighting globale) CONTRO:

* scena statica,

* luci fissate, e niente effetti

* view-dependent!

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

^

Ripasso: normale di un triangolo

• Cioè il suo orientamento nello spazio

N v 0

v 2 v 1

) ( )

( v 1 v 0 v 2 v 0

N = − × −

|

| ˆ

N N = N

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Lighting faccia per faccia

"flat shading"

geometria di partenza 1. 2.

per ogni faccia, calcolo normale

applico lighting ad 3.

ogni normale, e coloro faccia dell’RGB risultante

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Definizione

• Shading:

– ricetta per applicare un lighting

– nb: scelta del lighting model indipendente da scelta dello shading

• Primo esempio:

flat shading

1. Applico lighting a normale di faccia - (ottengo un colore)

2. Copro tutta la faccia di quel colore

(3)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Flat shading: problema

• Approssimo superfici curve con triangoli

• Applico il flat shading

• Risultato:

–spigoli apparenti su superfici curve brutto un artefatto

non sembra nemmeno !

una sfera

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Flat shading: problema

• Altro esempio:

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Flat shading: problema

• Più faccie uso, meno evidente il problema

>10.000 facce, e ancora si vedono

gli spigoli artefatti perche?

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Il problema e’ legato alla nostra percezione (effetto percettivo)

• A peggiorare le cose:

l'effetto percettivo “bande di Mach”

Il contrasto fra zone di colore uniforme difficilmente sfugge al nostro occhio.

(neanche se le zone sono molte,

e la differenza fra loro è relativamente piccola).

Il cervello aumenta il contrasto fra le zone di colore uniformi

=> L'artefatto è duro a morire!

In realtà sono bande di colore

uniforme In realtà i quadratini

interni sono dello stesso

grigio

(4)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Idea

• Utilizzare l'interpolazione degli attributi dentro alla faccia

Per-vertex shading

(detto anche: "Gouraud" Shading)

• Utilizzare l'interpolazione del colore dentro alla faccia

1- Applico lighting ai 3 vertici di ogni triangolo

• (ottengo un colore)

2- Interpolo il colore nel triangolo

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Idea

Per applicare il lighting, devo avere la normale!

Normale definita naturalmente per un triangolo.

Ma per un vertice?

Henri Gouraud, 1971

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Normali per vertice

• Le normali sono parte del modello

– input del rendering, non computate nel rendering!

• La normale (dei vertici)

nasce insieme al resto del modello 3D – esempi:

• quando si modella una sfera, un cilindro, un cono...

• quando si estrae la superficie da una griglia volumetrica…

(normale da derivate discrete)

• quando si costruisce una superficie triangolata campionando una superficie parametrica…

• nella modellazione manuale…

• in quella procedurale…

• Altrimenti...

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Normali per vertice:

inferirle dalla geometria di una mesh

Normale di un triangolo:

v 1

v 2

v 1 ×v 2

v

ˆ

1

N

2

N ˆ

ˆ

3

N

ˆ

4

N ˆ

5

N ˆ

6

N Normale di un vertice

condiviso da n triangoli:

N n

N N

N ˆ ˆ ... ˆ

2

1 + + +

=

|

| ˆ

N

N = N

(5)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Dove avviene la computazione del lighting?

Fr am m en ti & at tri bu ti in te rp ol at i Ve rti ci & lo ro a ttr ib ut i

Screen buffer Ve rti ci p or ie tta ti & at tri bu ti co m pu ta ti

rasterizer triangoli

co m pu ta zi on i pe r f ra m m en to rasterizer

segmenti rasterizer punti

co m pu ta zi on i pe r v er tic e

x y

z

v

0

v

1

v

2

v

0

v

1

v

2

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Per-vertex lighting (aka “Gouraud shading”)

Fr am m en ti & va ry in g in te rp ol at i Ve rti ci & lo ro a ttr ib ut i

Screen buffer

Ve rti ci p or ie tta ti & va ry in g rasterizer

triangoli

co m pu ta zi on i pe r f ra m m en to rasterizer

segmenti rasterizer punti

co m pu ta zi on i pe r v er tic e

compreso:

proprietà materiale del e normale

trasformo geometria applico e lighting

interpolo

colore Compreso:

col. finale compreso:

colore per vertice

(risultato del lighting)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Gouraud shading

• Risultati:

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Si può fare meglio

• idea: invece di interpolare il colore dopo il lighting.

interpolo la normale prima del lighting!

• caveat: interpolando due vettori normali, non ottengo un vettore normale:

• (devo rinormalizzare dopo l'interpolazione)

n r 1

n r 0 interpolaz fra e n r

0

n r

1

interpolaz fra e rinormalizzata

n r

0

n r

1

(6)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Si può fare meglio

• Invece di interpolare il colore dopo il lighting.

interpolo la normale prima del lighting!

Per-fragment Shading

(detto anche “Phong shading” ) Bui-Tuong Phong , 1973

1- Interpolo la normale nella faccia 2- Rinormalizzo

3- Applico lighting

* Ma attenzione a non confondere il Phong Shading (uno shading) con il Phong Lighting Model (modello di illuminazione)

*

* *

*

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Phong shading

Fr am m en ti & va ry in g in te rp ol at i Ve rti ci & lo ro a ttr ib ut i

Screen buffer

Ve rti ci p or ie tta ti & va ry in g rasterizer

triangoli

co m pu ta zi on i pe r f ra m m en to rasterizer

segmenti rasterizer punti

co m pu ta zi on i pe r v er tic e

compreso:

proprietà materiale del e normale

trasformo normale sia posizione che

interpolo

normale compreso:

normale interpolata compreso:

normale trasformata

rinormalizzo e applico lighting per ottenere

il colore del frammento

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Shading a confronto

Per-vertex Lighting - (a.k.a. "Gouraud Shading") meno oneroso:

applico il lighting una volta per vertice – di solito #vertici << #frammenti

Per-fragment * Lighting – (a.k.a. " Phong Shading“) risultati migliori

specialmente con i riflessi luminosi e piccoli (alta “glossiness”)

Flat shading Goraund shading Phong Shading (*) talvolta (ma impropriamente) detto: per-pixel lighting

Si tratta di un problema generale

• Calcolare una funzione per vertice (e interpolare il risultato):

– maggiore efficienza – approssimazione peggiore

• Calcolare una funzione per frammento (interpolando i suoi parametri):

– più oneroso

– approssimazione migliore

• Il lighting non fa eccezione!

• Considerazione:

– se la funzione è lineare, il risultato è lo stesso! (dimostrare) – quindi, in questo caso, meglio anticipare la computazione a vertice – (vale anche per le sottoespressioni)

– in gergo: «to lift» the computation (da per-fragment a per-vertex)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

(7)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

quando si usano normali per vertice

flat shading Goraud shading

(Phong shading è simile)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

quando si usano normali per vertice

• Gouraud e Phong shading sono pensati per superfici curve

– eliminano gli spigoli “artefatti”

– ma eliminano anche gli spigoli “corretti”!

• Possibile soluzione: duplicare i vertici

Si tratta (nuovamente) di un problema generale

• Situaz: mesh indicizzata con attributi per vertice:

– il valore dell atturbuto è interpolato dentro le facce

• Conseguenza:

– il valore degli attributi è necessariamente continuo (C0) su tutta la sup

• Q: come posso ottenere una discontinuità?

• A: replicazione di vertici (vertex seams) (seam = «cucitura») – vertex seam: due vertici separati (indice diverso),

coincidenti in xyz con attributi diversi

• La normale non fa eccezione!

– discontinutà di normale = una «sharp feature» nella mesh – (es fra due facce di un cubo)

• vale per tutti gli attributi che richiedano discontinuità occasionali – es: di colore, di texture coordinates (vedremo)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Si tratta (nuovamente) di un problema generale

• Vertex seams (replicazione dei vertici)

• Vantaggi:

– la duplicazione riguarda solo i pochi punti dove la discontinutà appare

• (nella maggior parte della mesh, non ci sono duplicazioni)

– una sola struttura dati (mesh indicizzata) per gestire tutti i casi

• (es: sia superfici lisce = con normali continue, che con sharp features = con normali discontinue)

• (es: posso fare flat shading solo in alcune parti della mesh (come?)

• Svantaggi:

– la connettività viene modificata (es la mesh non è più watertight) – replicazione nelle strutture dati = male

(oneroso, necessità di tenere le copie uguali)

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 4 / 1 5 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Riferimenti

Documenti correlati

Corso di Laurea in Ingegneria Informatica Anno Accademico 2017/2018.. Analisi Matematica 1 - Studenti A/L Appello del 23

• Il foglio con il testo, compilato con nome e cognome ed eventualmente numero di matricola, va consegnato assieme alla bella copia.. Non si consegnano

Sul punto A agisce una forza di modulo costante F e parallela all’asse y, mentre sul punto B, diametralmente opposto ad A, agisce una molla di costante elastica k &gt; 0, che collega

(ii) Qual’`e la probabilit`a che siano necessari pi` u di 3 giorni affinch`e si manifesti l’efficacia della medicina, sapendo che ne sono necessari pi` u di

Viene testato un nuovo farmaco che ` e efficace sul 75% della popolazione, mentre sul restante 25% non ha effetto alcuno, e che modifica la media della distribuzione di

Usando l’approssimazione normale, calcolare la probabilit` a che il tempo di vita totale delle lampadine superi 5200

Se il numero di attacchi per settimana ` e distribuito secondo una legge normale di media 5 e deviazione standard 1, con quante pastiglie deve partire quel signore affinch` e

Inoltre, supponiamo che per la nascita di un terzo figlio, la probabilit` a che sia maschio sia 11/20 se i primi due sono maschi, 2/5 se sono femmine e 1/2 negli altri casi..