Shading - Normali -...

35
Realt Realt à à Virtuale: il presente, il passato, il futuro Virtuale: il presente, il passato, il futuro Shading Shading e e Texture Texture Mapping Mapping Shading Shading - - Normali Normali Dalla Dalla mesh mesh al colore di ogni pixel dell al colore di ogni pixel dell oggetto oggetto sullo schermo. sullo schermo. Ci servono le normali: Ci servono le normali: Normale Normale ad ad una una faccia faccia Ma Ma sappiamo sappiamo che che spesso spesso la mesh la mesh è è solo solo un un approsimazione approsimazione quindi quindi .. ..

Transcript of Shading - Normali -...

Page 1: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ShadingShading -- NormaliNormali

�� Dalla Dalla meshmesh al colore di ogni pixel dellal colore di ogni pixel dell’’oggetto oggetto sullo schermo.sullo schermo.

�� Ci servono le normali:Ci servono le normali:��NormaleNormale ad ad unauna facciafaccia

�� Ma Ma sappiamosappiamo cheche spessospesso la mesh la mesh èè solo solo unun’’approsimazioneapprosimazione quindiquindi……....

Page 2: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ShadingShading -- NormaliNormali

�� In questo caso possiamo usare le In questo caso possiamo usare le ““verevere”” normali, per verticenormali, per vertice

�� DiDi solitosolito associate associate aiai verticivertici e e passatepassate allaalla schedascheda graficagraficainsiemeinsieme ad ad essiessi

�� CalcolabiliCalcolabili come media come media delledellenormalinormali allealle faccefacce adiacentiadiacenti ad ad un un verticevertice

�� Per Per oggettioggetti poligonalipoligonali, , èènecessarionecessario ““sdoppiaresdoppiare”” i i verticivertici e e passarepassare due due diverse diverse normalinormali

Page 3: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ShadingShading -- InterpolazioneInterpolazione

��Date le normali ai vertici, come Date le normali ai vertici, come colorare lcolorare l’’interno del poligono ?interno del poligono ?

��Flat shadingFlat shading

��GouraudGouraud interpolationinterpolation

��PhongPhong interpolationinterpolation

Page 4: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ShadingShading -- FlatFlat

��Considera il colore costante sul poligonoConsidera il colore costante sul poligono

��Usa la normale alla facciaUsa la normale alla faccia

��Equivalente al campionamento di un solo Equivalente al campionamento di un solo puntopunto

Page 5: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ShadingShading -- GouraudGouraud

�� Calcola il colore in ogni verticeCalcola il colore in ogni vertice

�� Interpola linearmente i coloriInterpola linearmente i colori

Page 6: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

DiDi default Open GL:default Open GL:1)1) PrendePrende in input in input varivari attributiattributi perper--

verticevertice ((posizioneposizione, , colorecolore, light , light source, texture coordinates, etc.)source, texture coordinates, etc.)

2)2) CalcolaCalcola un un colorecolore finale per finale per ogniogniverticevertice utilizzandoutilizzando un un certocerto modellomodellodidi illuminazioneilluminazione (OpenGL (OpenGL usausaPhongPhong))

3)3) Per Per ogniogni pixel, pixel, interpolainterpolalinearmentelinearmente i i valorivalori associatiassociati aiai tretreverticivertici per per ottenereottenere ilil colorecolore del del pixel (ad pixel (ad esempioesempio GouraudGouraud shading)shading)

4)4) ScriveScrive ilil colorecolore del pixel del pixel nelnel frame frame bufferbuffer

ShadingShading –– GouraudGouraud (esempio)(esempio)

Page 7: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ShadingShading -- GouraudGouraud

��Problema:Problema:

�� Interpola linearmente i colori ma il Interpola linearmente i colori ma il modello di illuminazione non modello di illuminazione non èè linearelineare

Page 8: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ShadingShading -- PhongPhong

�� Interpola le normali, poi calcola il Interpola le normali, poi calcola il colorecolore

��OK, ma quante normali ?OK, ma quante normali ?

Page 9: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ShadingShading -- RiepilogoRiepilogo

��FLAT : FLAT : ccff = f (= f (NNff))

��GOURAUD:GOURAUD: ccvivi = f (= f (NNvivi) )

ccv1 v1 ccv2 v2 ccv3v3 vengono interpolati vengono interpolati trilinearmentetrilinearmente sul sul

triangolotriangolo

��PHONG:PHONG: ccpp = f (= f (NNpp) )

NNpp èè il risultato dellil risultato dell’’interpolazione delle interpolazione delle NNvivi . .

LL’’equazione di illuminazione viene valutata equazione di illuminazione viene valutata

per ogni pixelper ogni pixel ((perper--pixelpixel--lightinglighting). ).

Page 10: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

TextureTexture MappingMapping

�� TextureTexture coordinatescoordinates associate ai vertici del triangolo =>> associate ai vertici del triangolo =>> corrispondenza tra spazio dello corrispondenza tra spazio dello schemoschemo ((fragmentfragment) e ) e texturetexture--spacespace. .

Colore di ogni pixel determinato in base a tale Colore di ogni pixel determinato in base a tale corrispondenza. corrispondenza.

La La texturetexture equivale ad una funzione: T(s,t) = (r, g, b)equivale ad una funzione: T(s,t) = (r, g, b)

a volte si parla di coordinate (u,v) invece che di (s,t). Di sola volte si parla di coordinate (u,v) invece che di (s,t). Di solito le ito le coordinate (u,v) si intendono normalizzate nellcoordinate (u,v) si intendono normalizzate nell’’intervallo (0,1).intervallo (0,1).

Page 11: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ParametrizzazioneParametrizzazione

��Ad ogni vertice deve essere associata Ad ogni vertice deve essere associata una una ““texturetexture coordinatecoordinate”” in modo da in modo da associare ad ogni triangolo una associare ad ogni triangolo una porzione dellporzione dell’’immagineimmagine

��Esistono vari modi per eseguire questo Esistono vari modi per eseguire questo compito...compito...

Page 12: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ParametrizzazioneParametrizzazione -- ProiezioneProiezione

�� Possiamo proiettare lo spazio di Possiamo proiettare lo spazio di texturetexturesullsull’’oggetto, dopo averlo oggetto, dopo averlo mappatomappato su una superficie su una superficie (cubo, cilindro, sfera) che circonda l(cubo, cilindro, sfera) che circonda l’’oggetto stesso oggetto stesso ((openglopengl permette di farlo in modo automatico)permette di farlo in modo automatico)

Page 13: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ParametrizzazioneParametrizzazione -- UnfoldingUnfolding

�� Possiamo tagliare la superficie dellPossiamo tagliare la superficie dell’’oggetto e oggetto e ““stenderlastenderla”” sullo spazio di sullo spazio di texturetexture (opportunamente (opportunamente scalata)scalata)

Page 14: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

Texture coordinates Texture coordinates -- InterpInterp..

�� A quali punti in A quali punti in texturetexturespace corrispondono i space corrispondono i vertici in world space?vertici in world space?

�� UtilizziamoUtilizziamo unaunainterpolazioneinterpolazione linearelineare::

�� UnaUna rettaretta in world space in world space corrispondecorrisponde ad ad unauna rettarettain texture spacein texture space

Texture map

s

t

Triangolo in world space

Page 15: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

(x1, y1), (s1, t1)(x2, y2), (s2, t2)

(x3, y3), (s3, t3)

3

13

11

13

11 syy

yys

yy

yysR

−+

−−=

3

23

22

23

21 syy

yys

yy

yysL

−+

−−=

R

LR

LL

LR

L sxx

xxs

xx

xxs

−+

−−= 1

Texture coordinates Texture coordinates -- InterpInterp..

v1 v2

v3

PLPRP

Page 16: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

Pipeline e Texture MappingPipeline e Texture Mapping

�� QuestoQuesto tipotipo didi interpolazioneinterpolazione in in realtrealtàà avvieneavviene in screen in screen space space durantedurante la la rasterizzazionerasterizzazione del del poligonopoligono

�� La La proiezioneproiezione prospetticaprospettica peròperò fafa sisi cheche distanzedistanze ugualiugualilungolungo unauna linealinea in world space non in world space non corrispondanocorrispondano a a distanzedistanze ugualiuguali lungolungo unauna linealinea in screen spacein screen space

Page 17: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

Pipeline e Texture MappingPipeline e Texture Mapping

�� EE’’ possibilepossibile applicareapplicare un texture mapping un texture mapping correttocorretto prospetticamenteprospetticamente ((ovviamenteovviamente ad un ad un costocosto))

Page 18: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ComportamentoComportamento aiai bordibordi: Repeat: Repeat

(0,0)(0,0)

(1,1)(1,1)

Page 19: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

(0,0)(0,0)

(1,1)(1,1)

ComportamentoComportamento aiai bordibordi: Clamp: Clamp

Page 20: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

TextureTexture ModesModes

� REPLACE: Il colore della texture SOSTITUISCE quello del materialeDECAL: Il colore della texture si mescola a mò di adesivo su quellodel materiale (se la texture è trasparente, si vede anche il materiale)

� MODULATE: Il colore della texture modula quello del materiale� BLEND Il colore della texture agisce da fattore di “blending” fra un

colore esterno e quello del materiale

Sa*TaSrgb*(1-Trgb)+Brgb*TrgbBLEND

Sa*TaSrgb*TrgbMODULATE

SaSrgb*(1-Ta)+Trgb*TaDECAL

TaTrgbREPLACE

Result transparencyResult colorMode

Page 21: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

TextureTexture MappingMapping -- FilteringFiltering

�� Gli elementi della Gli elementi della texturetexture, ovvero i suoi pixel, , ovvero i suoi pixel, vengono indicati con il termine di vengono indicati con il termine di texelstexels

�� In generale non cIn generale non c’è’è una corrispondenza 1 a 1 fra una corrispondenza 1 a 1 fra pixelspixels sullo schermo e sullo schermo e texelstexels::

Page 22: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

TextureTexture MappingMapping -- MagnificationMagnification

��Nel primo caso (Nel primo caso (MagnificationMagnification) ) èèpossibile applicare un filtraggio di due possibile applicare un filtraggio di due tipitipi

Nearest Linear

Media lineare del quadrato 2x2 dei texel con le coordinate piùvicine al centro del pixel

Colore del texel con le coordinate più vicine al centrodel pixel

Page 23: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

TextureTexture MappingMapping –– NearestNearest FilteringFiltering

Texture map Poligono lontano dall’osservatore in screenspace

Poligono rasterizzato in screen space

Page 24: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

TextureTexture MappingMapping -- MinificationMinification

�� Nel secondo caso (Nel secondo caso (MinificationMinification) tali modalit) tali modalitààdi filtraggio non sempre danno risultati di filtraggio non sempre danno risultati soddisfacentisoddisfacenti

�� Se lSe l’’oggetto oggetto èè lontano molti lontano molti texeltexelcorrispondono ad un solo pixel sullo schermocorrispondono ad un solo pixel sullo schermo

�� Usando un filtraggio Usando un filtraggio nearestnearest o o linearlinear vengono vengono utilizzati fra uno e 4 utilizzati fra uno e 4 texelstexels

�� Muovendo lMuovendo l’’oggetto i oggetto i texeltexel interessati interessati cambiano rapidamente e si ha uno cambiano rapidamente e si ha uno sgradevole sfarfallio (sgradevole sfarfallio (flashingflashing))

Page 25: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

MipmappingMipmapping

��Si utilizzano versioni a varie risoluzioni Si utilizzano versioni a varie risoluzioni della della texturetexture ((prefilteringprefiltering))

��La media dei La media dei texelstexels èè coscosììprecomputataprecomputata correttamentecorrettamente

Spaziorichiesto: al massimo 1.3333 volte lo spaziodella texture originale:

1+0.25+.25*.25+0.25*0.25*0.25+…

Page 26: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

MipmapMipmap MathMath

�� DefiniamoDefiniamo un un fattorefattore didi scalascala, , ρρ==texelstexels/pixel/pixel

�� ρρ èè ilil massimomassimo frafra ρρxx e e ρρyy

�� PuòPuò essereessere derivatoderivato dalledalle matricimatrici diditrasformazionetrasformazione

�� DefiniamoDefiniamo λλ=log=log2 2 ρρ

�� λλ indicaindica qualequale livellolivello didi mipmapmipmap utilizzareutilizzare

�� LivelloLivello 0 = texture a 0 = texture a massimamassima risoluzionerisoluzione

�� Se Se λλ<0 <0 cosacosa significasignifica??

Page 27: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

MipmappingMipmapping

��Le modalitLe modalitàà di di filteringfiltering possibili possibili utilizzando livelli di utilizzando livelli di mipmapmipmap sono:sono:

��linearlinear e e nearestnearest tra i vari livelli di tra i vari livelli di mipmapmipmap

��linearlinear e e nearestnearest per il livello di per il livello di mipmapmipmapselezionatoselezionato

��totale di 4 combinazionitotale di 4 combinazioni

Page 28: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

Filtering ExampleFiltering Example

Level 0

Level 2

Level 1

s=0.12, t=0.1ρ=1.4λ=0.49

NEAREST_MIPMAPNEAREST_MIPMAP_NEAREST:level 0, pixel (0,0)

NEAREST_MIPMAPNEAREST_MIPMAP_LINEAR:level 0CL [combination of pixels

(0,0), (1,0), (1,1), (0,1)]

LINEAR_MIPMAPLINEAR_MIPMAP_NEAREST

{level 0, pixel (0,0)} * 0.51

+ {level 1, pixel (0,0)} * 0.49

LINEAR_MIPMAPLINEAR_MIPMAP_LINEAR:

{level 0, CL} * 0.51

+ {level 1, CL} * 0.49

Page 29: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

MipmappingMipmapping

��Esempio:Esempio:

Page 30: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

RIEPILOGORIEPILOGO

Page 31: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

RiepilogoRiepilogo

�� MODELLAZIONE MODELLAZIONE –– FASE OFFLINE:FASE OFFLINE:

ProcessoProcesso didi definizionedefinizione delldell’’AmbienteAmbiente VirtualeVirtuale e e deidei suoisuoi componenticomponenti::

-- proprietproprietàà geometrichegeometriche-- proprietproprietàà otticheottiche-- proprietproprietàà fisichefisiche-- proprietproprietàà acusticheacustiche, etc., etc.

DalDal puntopunto didi vista vista visivovisivo, , ilil risultatorisultato del del processoprocesso èè unauna ““shapeshape””, , ovveroovvero unauna forma forma geometricageometrica, , solitamentesolitamente unauna meshmesh poligonalepoligonale definitadefinita dada::

-- unauna listalista didi N N verticivertici {{VV11, V, V22, , ……, V, VNN}} dove:dove:

VVii = [X= [Xii, Y, Yii, , ZZii]]

-- unauna listalista didi M M faccefacce {{FF11, F, F22, , ……, F, FMM}} cheche specificanospecificano la la connettivitconnettivitàà deidei verticivertici::

FFii = [V= [Vi1i1, V, Vi2i2, V, Vi3i3] ] supponendosupponendo faccefacce triangolaritriangolari

-- unauna listalista didi K K materialimateriali {M{M11,M,M22,,……,M,MKK}, }, associatiassociati a a unauna facciafaccia, o a , o a gruppigruppi didifaccefacce ((subsetssubsets):):

MMii = [= [MMi_ambi_amb, , MMi_difi_dif, , MMi_speci_spec]]MMi_xxxi_xxx = [= [RRi_xxxi_xxx,, GGi_xxxi_xxx,, BBi_xxxi_xxx]]

Page 32: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

RiepilogoRiepilogo

�� MODELLAZIONE MODELLAZIONE -- TEXTURING:TEXTURING:

�� Ad Ad ogniogni materialemateriale puòpuò essereessere associataassociata ancheanche unauna texturetexture

�� In In questoquesto casocaso èè necessarionecessario specificarespecificare ancheanche::

�� unauna listalista didi NNTT texture verticestexture vertices {{TVTV11, TV, TV22, , ……, TV, TVNTNT}} dove:dove:

TVTVii = [= [SSii, T, Tii]] --> > texture coordinatestexture coordinates

�� ll’’associazioneassociazione tratra la la listalista didi verticivertici {V} {V} e la e la listalista didi texture vertices texture vertices {TV}{TV}

�� unauna listalista didi MMTT texture facestexture faces {{TFTF11, TF, TF22, , ……, TF, TFMTMT}} dove:dove:

TFTFii = [= [TVTVmm, , TVTVnn, , TVTVll] ] supponendosupponendo faccefacce triangolaritriangolari

�� ll’’associazioneassociazione tratra la la listalista didi verticivertici {V} {V} e la e la listalista didi texture vertices texture vertices {TV}{TV}

�� ll’’associazioneassociazione tratra la la listalista didi faccefacce {F} {F} e la e la listalista didi texture faces texture faces {TF} {TF}

�� SpessoSpesso {F} = {TF}{F} = {TF}

�� unauna listalista didi NNTEX TEX textures textures {{TexTex11, Tex, Tex22, , ……, , TexTexNTNT}} dove dove TexTexii = bitmap= bitmap

�� ll’’associazioneassociazione tratra la la listalista didi materialimateriali {M} {M} e la e la listalista didi textures textures {TEX}{TEX}

Page 33: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

RiepilogoRiepilogo

MeshMeshMesh

MaterialMaterialMaterial

TextureTextureTexture

SubsetSubsetSubsetSubsetSubsetSubset SubsetSubsetSubset

MaterialMaterialMaterial MaterialMaterialMaterial

TextureTextureTexture

{V, F, TV, TF, M, TEX} {V, F, TV, TF, M, TEX}

{S{S11}}⊆⊆{F}{F} {S{S22}}⊆⊆{F}{F} {S{S33}}⊆⊆{F}{F}

MM11 MM22MM33

TT11 TT22

SSii : : FFjj, F, Fj+1j+1, , ……, , FFj+kj+k

[V[Vj1j1, V, Vj2j2, V, Vj3j3] ]

[TV[TVi1i1, TV, TVi2i2, TV, TVi3i3] ]

Page 34: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

RiepilogoRiepilogo

�� RENDERING (FASE REALRENDERING (FASE REAL--TIME)TIME)

�� DiDi ogniogni oggettooggetto delladella scenascena, in , in relazionerelazione allaalla posizioneposizione e e allaalla direzionedirezione didi vista, vista, vengonovengonotrasformatitrasformati i i verticivertici dallodallo spaziospazio 3D (3D (objectobject--space coordinatesspace coordinates) a ) a unouno spaziospazio 2D (2D (window window

coordinatescoordinates).).

�� SuccessivamenteSuccessivamente, , vieneviene determinatodeterminato ((mediantemediante operazionioperazioni didi lightinglighting) o ) o indicatoindicato ((direttamentedirettamente) ) ililcolorecolore deidei pixel pixel corrispondenticorrispondenti aiai verticivertici trasformatitrasformati

�� QuindiQuindi, a , a partirepartire daidai coloricolori didi questiquesti pixel, pixel, vengonovengono ricavatiricavati i i coloricolori ((shadingshading) ) didi tuttitutti i pixel i pixel intermediintermedi

DatiDati necessarinecessari::

-- coordinate coordinate verticivertici oggettooggetto

-- coordinate coordinate puntopunto didi vistavista

DatiDati necessarinecessari::

-- coordinate coordinate verticivertici oggettooggetto

-- normalinormali

-- coordinate coordinate puntopunto didi vistavista

-- coordinate e coordinate e tipotipo didi luciluci

-- colorecolore o o materialimateriali

DatiDati necessarinecessari::

-- coordinate coordinate verticivertici--pixelpixel

-- ((normalinormali))

-- datidati faccefacce

Page 35: Shading - Normali - percro.sssup.itpercro.sssup.it/~marcello/didattica/AA2007/10_Shading_Texture... · normali alle facce adiacenti ad un vertice ... OK, ma quante normali ? RealtàVirtuale:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

RiepilogoRiepilogo

�� RENDERING (FASE REALRENDERING (FASE REAL--TIME)TIME)

�� Se Se ll’’oggettooggetto èè associatoassociato ad ad unauna o o pipiùù texturestextures, , esseesse vengonovengono compostecomposte con i con i colori/materialicolori/materialisottostantisottostanti

�� VengonoVengono infineinfine effettuateeffettuate le le operazionioperazioni didi zz--buffering buffering ((risoluzionerisoluzione visibilitvisibilitàà), ), blendingblending

((trasparenzatrasparenza) e opzionalmente ) e opzionalmente altrealtre operazionioperazioni nellonello spaziospazio didi finestrafinestra ((eses. . antialiasingantialiasing etc.)etc.)

DatiDati necessarinecessari::

-- coordinate coordinate verticivertici--pixelpixel

-- texture coordinatestexture coordinates

-- datidati faccefacce

-- coloricolori / / materialimateriali

DatiDati necessarinecessari::

-- coordinate pixelcoordinate pixel

-- alphaalpha

-- coloricolori / / materialimateriali