• Non ci sono risultati.

Computer Graphics

N/A
N/A
Protected

Academic year: 2021

Condividi "Computer Graphics"

Copied!
6
0
0

Testo completo

(1)

Computer Graphics

Marco Tarini Università dell’Insubria

Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2012/13

Lezione Lezione Lezione

Lezione 11: 11: 11: 11: 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 2 / 1 3 ‧ 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…)

(loc al ) LI G H T IN 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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Es: equazione di Lighting

“standard” di OpenGL

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 attenuazio ne luce

⋅ f

 

 

+

= + 1 , 1

min

2

L 3 L 2

1

c d c d

f

attentuazioneluce

c

spotlight effetto

⋅ f

( direction cutoff Angle beam width )

spotlight

effetto L spot spot spot

f = f , , ,

caratteristiche della luce caratteristiche del materiale

dati della geometria 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) saranno 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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

OPPURE 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 2 / 1 3 ‧ 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

• Cioe' 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 2 / 1 3 ‧ 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"

1.

geometria di partenza

2.

per ogni faccia, calcolo normale

3.

applico lighting ad

ogni normale, e coloro

faccia dell’RGB risultante

(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 2 / 1 3 ‧ 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

– (la 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

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 2 / 1 3 ‧ 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

un brutto 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 2 / 1 3 ‧ 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 2 / 1 3 ‧ 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?

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

• A peggiorare le cose:

l'effetto ottico bande di Mach

Il contrasto fra zone di colore uniforme difficilmente sfugge mai 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

Idea

• Utilizzare l'interpolazione del colore

dentro alla faccia

(3)

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 2 / 1 3 ‧ 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, Henri Gouraud, Henri Gouraud, Henri Gouraud, 1971 1971 1971 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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Normali per vertice

• In molti contesti, la normale (x vertice)

“nasce insieme” al resto del modello 3D – esempi:

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

• quando si estrae l’iso-superficie da una griglia volumetrica…

(...normale da derivate discrete!)

• per una sup. implicita…

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

• nella modellazione manuale/artisitca (es. Low poly)…

• 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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Costruire le normali per vertice in una mesh

(quando non sono già date)

Normale di un Triangolo:

v 1

v 2

v 1 ×v 2

N ˆ

ˆ

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 = Meglio se pesati per :

area del triangolo, angolo (wedge)

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 2 / 1 3 ‧ 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?

F ram m enti & a ttr ib u ti & a ttr ib u ti & a ttr ib u ti & a ttr ib u ti in te rp o la ti in te rp o la ti in te rp o la ti in te rp o la ti Ver ti c i & l o ro a ttr ib u ti & l o ro a ttr ib u ti & l o ro a ttr ib u ti & l o ro a ttr ib u ti

Screen buffer Ver ti c i por iettati & a ttr ib u ti & a ttr ib u ti & a ttr ib u ti & a ttr ib u ti co m p u ta ti co m p u ta ti co m p u ta ti co m p u ta ti

rasterizer triangoli

c om put az ioni per f ram m ent o set-

up rasterizer segmenti set-

up rasterizer

punti set-

up

c om put az ioni per 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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Scelta Fondamentale

• Nel nostro paradigma di rendering, la normale (dei vertici):

• NON viene calcolata nel pipeline (e dove mai potrebbe?)

• viene mandata come ATTRIBUTO per VERTICE

• la normale "fa parte del modello"

• proprio come le posizioni dei suoi vertici, i colori, etc

• la computazione delle normali (a partire dalla geometria) è solo un pre-processing

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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Per-vertex lighting (“Gouraud shading”)

F ram m enti & va ryi n g & va ryi n g & va ryi n g & va ryi n g in te rp o la ti in te rp o la ti in te rp o la ti in te rp o la ti Ver ti c i & l o ro a ttr ib u ti & l o ro a ttr ib u ti & l o ro a ttr ib u ti & l o ro a ttr ib u ti

Screen buffer Ver ti c i por iettati & & & & va ry in g va ry in g va ry in g va ry in g

rasterizer triangoli

c om put az ioni per f ram m ent o set-

up rasterizer segmenti set-

up rasterizer

punti set-

up

c om put az ioni per v er tic e

compreso:

proprietà del materiale e normale

proietto e

applico lighting

interpolo colore

Compreso:

col. finale compreso:

colore per vertice

(risultato del lighting)

(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 2 / 1 3 ‧ 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 2 / 1 3 ‧ 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!

• occhio:

interpolando due vettori normali, non ottengo un vettore normale:

• (devo rinormalizzare dopo l'interpolazione)

n 1

r n 0

r interpolaz fra e n

0

r n

1

r

interpolaz fra e rinormalizzata

n 0

r n 1

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 2 / 1 3 ‧ 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!

"Phong" Shading

(o più semplicemente “per fragment lighting”) Bui Bui Bui

Bui----Tuong Tuong Tuong Tuong Phong Phong Phong ,,,, 1973 Phong 1973 1973 1973

1- Interpolo la normale nella faccia 2- Rinormalizzo

3- Applico lighting

* 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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Phong shading

F ram m enti & va ryi n g & va ryi n g & va ryi n g & va ryi n g in te rp o la ti in te rp o la ti in te rp o la ti in te rp o la ti Ver ti c i & l o ro a ttr ib u ti & l o ro a ttr ib u ti & l o ro a ttr ib u ti & l o ro a ttr ib u ti

Screen buffer Ver ti c i por iettati & & & & va ry in g va ry in g va ry in g va ry in g

rasterizer triangoli

c om put az ioni per f ram m ent o set-

up rasterizer segmenti set-

up rasterizer

punti set-

up

c om put az ioni per v er tic e

compreso:

proprietà del materiale e normale

trasformo sia

normale

che

posizione

interpolo

normale

compreso:

normale interpolata

compreso:

normale trasformata

rinormalizzo e applico

lighting

per ottenere

il colore del frammento

Gouraud contro Phong shading 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

quando si usano normali per vertice

flat shading Goraud shading

(Phong shading è simile)

(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 2 / 1 3 ‧ 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 curve curve curve

– eliminano gli spigoli “artefatti”

– ma eliminano anche gli spigoli “corretti”!

• Possibile soluzione: duplicare i vertici

Componenti gemotriche in input al lighting

• Nell’equazione di lighting compaiono componenti geometriche:

– direzioni normale

– direzione di luce (x ogni luce) – direzioni di vista…

• Il computo di, per es, dot( n, l ) può essere eseguito in vari spazi

– spazio oggetto – spazio mondo – spazio vista…

basta che: i vettori coinvolti siano tutti espressi in uno stesso

stesso stesso stesso spazio!

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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

quale converrà usare:

dipende da caso a caso.

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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Anche le normali possono essere trasformate

x y

z

v

0

v

1

v

2

world Coordinates

y

-z v

0

v

1

v

2

view Coordinates (a.k.a. eye Coordinates)

y x

-z v

0

v

1

v

2

v

0

v

2

v

1

v

0

v

1

v

2

screen Space

Normalized Device Coordinates 1

1 -1 -1

x

x

y

z

v

0

v

1

v

2

object Coordinates

modellazione

v is ta pr oi ez ione

viewport Modellazione + Vista:

spesso rototraslazioni (trasformazioni rigide) e scalature uniformi

(che almeno mantengono gli angoli)

Proiezione:

non mantiene gli angoli

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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Le normali rimangono "normali" (a lunghezza 1) nella Transform?

• Solo se la modellazione-vista è rigida (rotazioni + traslazioni)

modellazione-vista = V ‧ M

(usually) rotazioni, traslazioni (quindi rigida)

(usually) rotazioni, traslazioni e forse scalature (quindi non sempre rigida)

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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Le normali rimangono "normali" (a lunghezza 1) nella Transformazione?

• Se cosi’ non fosse, vanno rinormalizzate prima dell’uso

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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Trasformazione di normali

• La normale a una superficie rimane

ortogonale anche dopo una trasformazione affine generica?

• NO

(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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Trasformazione delle normali

• Sia M la trasformazione applicata

= 0 t n T

Mt t

Kn n

=

= '

' n ' T t ' = ( Kn ) T ( Mt ) = n T K T Mt = 0 ⇒

T T

T M I K M K M

K = ⇒ = 1 ⇒ = 1

Sappiamo che:

Vogliamo che: n ' T t ' = 0 ) ( ' Mp Mq M p q t

q p t

=

=

=

Nota: conta solo la parte 3x3 superiore perché n e t sono vettori

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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Trasformazione delle normali

• La normale viene moltiplicata per la trasposta dell’inversa della parte 3x3 superiore della matrice di vista/modello

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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Trasformazione delle normali

• Casi particolari

– Se la matr. di modelview M è...

1. una traslazione...

2. una rotazione...

3. una scalatura uniforme...

4. una combinazione di queste (è il caso tipico!)...

Sol uz.:

1.

Le nor mal i, come tut ti i vet tor i, sono unaf fect ed

2.

Traspost a di M = inver sa di M . N orm ale va m olti pl.

per M .

3.

Traspost a di M = M.

Nor mal e andr ebbe scal ata (m olti pl.

per uno scalar e), ma

atti vando la rinor mal izzazi one ci ònon ha al cun ef fet to.

4.

Dat o 1 2 e 3, bast a usar e M .

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 2 / 1 3 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

In OpenGL

• Scorciatoia:

– se invoco:

glShadeModel(GL_FLAT);

glShadeModel(GL_SMOOTH);

gli attributi non vongono interpolati

ma rimangono costanti nella faccia

(utile per le triangle strip e i triangle fan),

finché non rimetto

Riferimenti

Documenti correlati

• an effort is required for the rationalization of the use of the water resource, fostering the optimisation of irrigation management delegating the monitoring of soil water

We observed that both the level of plastic contamination in the mangrove and the feeding habit of the crab ’s species play critical roles in the abundance and type of

In this section, an analysis of the non-ideal effects on nozzle expanding flows of MDM vapor was carried out referring to the local pressure ratio P/P T and Mach number M along

Our objectives were to (1) examine an approach for estimation of K d in shallow rivers using above-water reflectances over a range of in-situ/known depths, which enables

Most volumes of these series are also available in Papers of Thomas Jefferson: Digital Edition (Oberg and Looney 2009), a fully searchable text.. Accurately transcribed

A fine della sperimentazione sono stati effettuati i rilievi sulle ceppaie delle tre parcelle considerando il numero, l’altezza e il diametro dei polloni dominanti (polloni con

The measurement of gene expression using microarrays has substantial interest in the field of basic research and in medical diagnostics, especially for genetic diseases where

Bulk values for the vibrational contribution to dynamic (infinite optical frequency approximation) as well as static, processes were obtained for P-ice by extrapolation of