Top Banner
Inkrementális 3D Inkrementális 3D képszintézis képszintézis Szirmay-Kalos László
38

Inkrementális 3D képszintézis

Feb 03, 2016

Download

Documents

eshe

Inkrementális 3D képszintézis. Szirmay-Kalos László. Inkrementális képszintézis. Sugárkövetés számítási idő  Pixelszám × Objektumszám × (Fényforrás szám+1) koherencia: oldjuk meg nagyobb egységekre feleslegesen ne számoljunk: vágás - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Inkrementális 3D képszintézis

Inkrementális 3D Inkrementális 3D képszintézisképszintézis

Szirmay-Kalos László

Page 2: Inkrementális 3D képszintézis

Inkrementális képszintézisInkrementális képszintézis Sugárkövetés számítási idő

Pixelszám × Objektumszám × (Fényforrás szám+1)

koherencia: oldjuk meg nagyobb egységekre feleslegesen ne számoljunk: vágás transzformációk: minden feladathoz megfelelő

koordinátarendszert– vágni, transzformálni nem lehet akármit: tesszelláció

Page 3: Inkrementális 3D képszintézis

3D inkrementális képszintézis3D inkrementális képszintézis

Modellreferencia helyzetben

Tesszelláció Világkoordináta r. Kamerakoordináta r.

Normalizált eszközkoordináta r.

Vágás

Képernyőkoordináta r.Láthatóság + vetítés

Takarás és vetítés triviális!

Árnyalt kép

Tmodell Tview

Tpersp Tviewport

z

Page 4: Inkrementális 3D képszintézis

TesszellációTesszelláció Felületi pontok kijelölése: rn,m = r(un,vm)

Normálvektor:

„Paramétertérben szomszédos” pontokból háromszögek

u,v r(u,v)N1

N2

N3

N(un,vm)= r(u,v)u

r(u,v)v

r3

r1

r2

N(u,v)

Page 5: Inkrementális 3D képszintézis

Parametrikus felületek normálvektoraParametrikus felületek normálvektora

r(u,v)

r(u*,v)

r(u,v*)

r(u*,v*)r(u*,v)

v v=v*

r(u,v*)u u=u*

n(u,v)= r(u,v)u

r(u,v)v u=u*

v=v*

Page 6: Inkrementális 3D képszintézis

1

ModelleModellezési transzformációzési transzformáció

1. skálázás: sx, sy, sz2. orientáció: wx, wy, wz, 3. pozíció: px, py, pz

TM=

sx sy sz

1

1 1 1px py pz 1

zy

x

R

r’= r cos()+w0(rw0)(1-cos())+w0r sin()

Page 7: Inkrementális 3D képszintézis

cos sin-sin cos 1

1

OrientációOrientáció

TM =

0 0 00 0 0 1

cos -sin 1sin cos 1

1 cos sin -sin cos

1Csavaró:

RollBillentő:

PitchForduló:

Yaw

R =

zy

x(R11,R12,R13)

(R21,R22,R23)

(R31,R32,R33)

Page 8: Inkrementális 3D képszintézis

TranszformációkTranszformációk Modellezési transzformáció:

[r,1] Tmodell = [rvilág,1]

[N,0] (Tmodell)T = [Nvilág,0]

Kamera transzformáció: [rvilág,1] Tview = [rkamera, 1]

[Nvilág,0] (Tview)T = [Nkamera,0]

Perspektív transzformáció: [rkamera,1] Tpersp = [rképernyőh, h]

Összetett transzformáció: TmodellTviewTpersp = TC

-1

-1

Page 9: Inkrementális 3D képszintézis

Kamera modellKamera modell

x

y

z vrp(lookat)

vup

eye

fp

bpfov

asp

Nézetitéglalapszem

Mi: Camera obscura

Page 10: Inkrementális 3D képszintézis

Világból a képernyőreVilágból a képernyőre

z

y

1

1

1. Világ

2. Kamera

3. Normalizált képernyő

4. Képernyő

x

y

z

eye

Bal!!!

Page 11: Inkrementális 3D képszintézis

Kamera transzformációKamera transzformáció

x

y

z lookat

vup

w = (eye-lookat)/|eye-lookat|u = (vup w)/|w vup|v = w u

[x’,y’,z’,1] = [x,y,z,1]

ux uy uz 0vx vy vz 0wx wy wz 00 0 0 1

-1

eye

w

u

v

1 0 0 00 1 0 00 0 1 0-eyex -eyey -eyez 1

w

u

v

ux vx wx 0uy vy wy 0uz vz wz 00 0 0 1

gluLookAt(eye,lookat,vup)gluLookAt(eye,lookat,vup)

Page 12: Inkrementális 3D képszintézis

fp bp

90 látószög

1/(tg(fov/2)·asp) 0 0 0 0 1/tg(fov/2) 0 0 0 0 1 0 0 0 0 1

Tnorm

NormalizálásNormalizálás

bp·tg(fov/2)

Page 13: Inkrementális 3D képszintézis

-fp -bp 1

NormaliNormalizálás utáni zálás utáni perspektív transzformációperspektív transzformáció

(-mx·z, -my·z, z) (mx, my, 1)(mx, my, -1)

(-mx·z, -my·z, z) (mx, my, z*)[-mx·z, -my·z, z, 1] [mx, my, z*, 1] [-mx·z, -my·z, -z·z*, -z]

(mx, my, z*)-zz*

Page 14: Inkrementális 3D képszintézis

Tpersp

1 0

0 10 00 0

0 00 0 -1 0

-fp

PPerspektív transzformációerspektív transzformáció kital kitalálásálás

-z·z*=·z + z*= - -/z

fp·(-1)=(-fp) + = -(fp+bp)/(bp-fp)bp·(1)=(-bp) + = -2fp·bp/(bp-fp)

-bp

[-mx·z, -my·z, z, 1] [-mx·z, -my·z, -z·z*, -z]

Page 15: Inkrementális 3D képszintézis

1 [Xh,Yh,Zh,h] = [xc,yc,zc,1] Tpersp

[X,Y,Z,1] = [Xh/h, Yh/h, Zh/h,1]

Teljes perspektív Teljes perspektív transzformációtranszformáció

z

y

1/(tg(fov/2)·asp) 0 0 00 1/tg(fov/2) 0 00 0 -(fp+bp)/(bp-fp) -10 0 -2fp·bp/(bp-fp) 0

gluPerspective(fov,gluPerspective(fov,aspasp,f,fpp,b,bpp))

h = -zc

-fp-bp

Page 16: Inkrementális 3D képszintézis

Képszintézis csővezetékKépszintézis csővezeték

Modell:x,y,z

Tmodell Tview Tpersp

HomogénosztásTakarásVetítésRasztertár:

X, Y

Vágás

Huzalváz képszintézisesetén kimaradhat

Tviewport

csúcspontok primitívek

1

Page 17: Inkrementális 3D képszintézis

Vágni a homogén osztás előtt kellVágni a homogén osztás előtt kell[X(t) ,Y(t) ,Z(t),h(t)]=[X1 ,Y1 ,Z1 ,h1]·t + [X2 ,Y2 ,Z2 ,h2]·(1-t)Homogén lineáris transzformáció konvex kombinációkat konvex kombinációkba visz át.

Ideális pont

Szakaszzc<0

zc<0

zc<0zc>0

h = -zc

Page 18: Inkrementális 3D képszintézis

Vágás homogén koordinátákbanVágás homogén koordinátákbanCél: -1 < X = Xh/h < 1

-1 < Y = Yh/h < 1-1 < Z = Zh/h < 1

Vegyük hozzá: h > 0 (mert h = -zc)

-h < Xh < h -h < Yh < h -h < Zh < h

h = Xh

[3, 0, 0, 2 ]h = 2 < Xh = 3

Kívül

[2, 0, 0, 3 ]h = 3 > Xh = 2

Belül

Page 19: Inkrementális 3D képszintézis

Szakasz/poligon vágásSzakasz/poligon vágás

h = Xh [Xh1,Yh

1,Zh1,h1]

[Xh2,Yh

2,Zh2,h2]

Xh = Xh1 · (1-t) + Xh

2 · t Yh = Yh

1 · (1-t) + Yh2 · t

Zh = Zh1 · (1-t) + Zh

2 · t h = h1 · (1-t) + h2 · t

h = h1·(1-t)+h2 ·t == Xh = Xh

1·(1-t) + Xh2·t

t = …

-h < Xh < h -h < Yh < h -h < Zh < h

Page 20: Inkrementális 3D képszintézis

Huzalváz képszintézisHuzalváz képszintézis

Modell:x,y,z

TC Vágás

Homogénosztás

Nézet transzfVetítés

Rasztertár:X, Y

2D szakaszrajzolás

(X,Y,Z)

(Xh,Yh,Zh,h)

(X,Y)

Szín

Tesszel-láció

poligonélek

Page 21: Inkrementális 3D képszintézis

Tömör képszintézisTömör képszintézis

Képernyő koordinátarendszerben– vetítősugarak a z tengellyel párhuzamosak!

Objektumtér algoritmusok (folytonos): – láthatóság számítás nem függ a felbontástól

Képtér algoritmusok (diszkrét): – mi látszik egy pixelben– Sugárkövetés ilyen volt!

1

Page 22: Inkrementális 3D képszintézis

Hátsólab eldobás: Hátsólab eldobás:

back-face cullingback-face culling

nz > 0nz < 0

Lapok a nézeti irányban:• Kívülről: lap, objektum: elülső oldal• Belülről: objektum, lap: hátsó oldalFeltételezés: Ha kívülről, akkor csúcsok óramutatóval megegyező körüljárásúak

r1

r3

r2

n = (r3 - r1)(r2 - r1)

z

Page 23: Inkrementális 3D képszintézis

Z-buffer algoritmusZ-buffer algoritmus

= 1

0.60.30.60.3

0.8

1.2. 3.

z

Szín buffer Mélység bufferZ-buffer

Page 24: Inkrementális 3D képszintézis

Z: lineáris interpolációZ: lineáris interpoláció

X

Y

Z Z(X,Y) = aX + bY + c

Z(X,Y)

Z(X+1,Y) = Z(X,Y) + a

(X1,Y1,Z1)

(X2,Y2,Z2)

(X3,Y3,Z3)

Page 25: Inkrementális 3D képszintézis

Z-interpolációs hardverZ-interpolációs hardverZ(X,Y)

X számláló Z regiszter

a

X

CLK

Page 26: Inkrementális 3D képszintézis

X

Y

Z

Z(X,Y) = aX + bY + cnxX+nyY+nzZ+d = 0

(X1,Y1,Z1)

(X2,Y2,Z2)

(X3,Y3,Z3)

Inkremens (triangle setup)Inkremens (triangle setup)

Z3-Z1= a(X3-X1) + b(Y3-Y1) Z2-Z1= a(X2-X1) + b(Y2-Y1)

(Z3-Z1)(Y2-Y1) - (Y3-Y1)(Z2-Z1) (X3-X1)(Y2-Y1) - (Y3-Y1)(X2-X1)

a=

Z1= aX1 + bY1 + cZ2= aX2 + bY2 + cZ3= aX3 + bY3 + c

i j kX3-X1 Y3-Y1 Z3-Z1

X2-X1 Y2-Y1 Z2-Z1

n = (r3 - r1)(r2 - r1) =

n

nz

-nx

Page 27: Inkrementális 3D képszintézis

ÁrnyalásÁrnyalásL (V) lLl (Ll)* fr (Ll ,N,V)cos ’ Koherencia: ne mindent pixelenként Háromszögenként:

– csúcspontonként 1-szer, belül az L „szín” lineáris interpolációja: Gouraud árnyalás, (per-vertex shading)

– pixelenként, a Normál (View, Light) vektort interpoláljuk: Phong árnyalás, (per-pixel shading)

Page 28: Inkrementális 3D képszintézis

Gouraud (per-vertex) árnyalásGouraud (per-vertex) árnyalás

R(X,Y) = aX + bY + cG(X,Y) =…B(X,Y) =…

R(X,Y)

R(X+1,Y) = R(X,Y) + a

N1N2

N3r3

r1

r2

N1

N2

N3 r3

r1

r2

Modell[+kamera]

Perspektív+ nézeti

Képernyő(per-vertex shading)

V1

L1

L2L3

Page 29: Inkrementális 3D képszintézis

Z-buffer + Gouraud árnyaló hw.Z-buffer + Gouraud árnyaló hw.

Z

X számláló

z regiszter

az

X

R regiszter

aR

G regiszter

aG

R G

B regiszter

aB

B

Page 30: Inkrementális 3D képszintézis

Gouraud árnyalás hasfájásaiGouraud árnyalás hasfájásai

ambiensdiffúz

spekuláris További bajok:• anyagtulajdonság konstans• árnyék nincskülönben a színt nem lehet interpolálni

Page 31: Inkrementális 3D képszintézis

Phong (per-pixel) árnyalásPhong (per-pixel) árnyalásN(X,Y) = AX + BY + CL(X,Y) =…V(X,Y) =…

N1N2

N3r3

r1

r2

N1

N2

N3 r3

r1

r2

Modell[+kamera]

Pontokra:perspektív+ nézeti

Képernyő(per-pixel shading)

V1

L1

L2L3

Vektor másolás

N1

V1

L1

N

V

L

Normalizálás!

Page 32: Inkrementális 3D képszintézis

Phong árnyalásPhong árnyalás

Page 33: Inkrementális 3D képszintézis

Gouraud versus PhongGouraud versus PhongGouraud Phong

Phong

Gouraud

Page 34: Inkrementális 3D képszintézis

Textúra leképzés:Textúra leképzés:anyagjellemzők változnak a felületenanyagjellemzők változnak a felületen

Page 35: Inkrementális 3D képszintézis

u

v(u1, v1)

(u3, v3) (u2, v2)

Paraméterezés Model-camera-perspective-viewporttranszformáció

IInkrementális képszintézisnkrementális képszintézis

x

z

X

Y(x1,y1,z1)

y

(X1,Y1)

(x3,y3,z3)

[Xh, Yh, Zh, h] = [x,y,z,1]TC

(X,Y)= [Xh/h, Yh/h]

(x2,y2,z2)

(X2,Y2)(X3,Y3)

[Xh, Yh, h] = [u,v,1] T, ahol h = -zc[u/h, v/h, 1/h] = [X, Y, 1] T-1

x=ax u+bxv+cx

y=ayu+byv+cy

z=azu+bzv+cz

Page 36: Inkrementális 3D képszintézis

Lineáris interpolációLineáris interpoláció

u

v(u1, v1)

(u3, v3) (u2, v2)

u1=au X1+buY1+cu

u2=au X2+buY2+cu

u3=au X3+buY3+cu

v1=av X1+bvY1+cv

v2=av X2+bvY2+cv

v3=av X3+bvY3+cv

u=au X+buY+cu

v=av X+bvY+cv

X

Y (X1,Y1)

(X2,Y2)(X3,Y3)

Interpolációs kényszerek:

referencia lineáris

Page 37: Inkrementális 3D képszintézis

Perspektíva helyes textúrázásPerspektíva helyes textúrázás

u =

v =

Au X+VuY+Cu

Av X+BvY+Cv

Ah X+BhY+Ch

Ah X+BhY+Ch

u/h =Au X+BuY+Cu

v/h = Av X+BvY+Cv

1/h =Ah X+BhY+Ch

u

v(u1, v1)

(u3, v3) (u2, v2)

X

Y (X1,Y1)

(X2,Y2)(X3,Y3)

h = -zc

Page 38: Inkrementális 3D képszintézis

Perspektíva helyesPerspektíva helyes interpolációinterpolációs hw.s hw.

[u/h](X,Y)

X számláló [u/h] regiszter

au

X

CLK

[v/h](X,Y)

[v/h] regiszter

av

[1/h](X,Y)

[1/h] regiszter

ah

Div Div

u vTextúra memória

R G BY

Y X