inkrementális képszintézis - budapest university of ...szirmay/grafika/bmeincr.pdf ·...
TRANSCRIPT
Inkrementális 3D Inkrementális 3D képszintézisképszintézis
Szirmay-Kalos László
Inkrementális képszintézisInkrementális képszintézis
l Árnyalás, láthatóság nehéz, különösen általános helyzetu objektumokra
l koherencia: oldjuk meg nagyobb egységekrel feleslegesen ne számoljunk: vágásl transzformációk: minden feladathoz megfelelo
koordinátarendszert– vágni, transzformálni nem lehet akármit: tesszelláció
3D inkrementális képszintézis3D inkrementális képszintézis
tesszeláció TM TV
vágás takarás vetítés
Lokális k.r. Világ k.r. Képernyo k.r.
TesszellációTesszellációl felületi pontok kijelölése: rn,m = r(un,vm)l felületi pontok összekötése: háromszögháló,
huzalváz
TranszformációkTranszformációklModellezési transzformáció:
[rlokális,1] TM = [rvilág,1]
lNézeti transzformáció:[rvilág,1] Tv = [rképernyo,1]
lÖsszetett transzformáció:[rlokális,1] TMTv = [rlokális,1] TC = [rképernyo,1]
Nézeti transzformáció:Nézeti transzformáció:Kamera modellKamera modell
x
y
z vrp(lookat)
vup
eye
fp
bpfov
aspect
Nézeti transzformáció lépéseiNézeti transzformáció lépései
x
y
z
eye
z
y
1
1
90 látószög
1. Világ
2. Kamera
3. Normalizáltkamera
4. Normalizált képernyo
5. Képernyo
Kamera transzformáció Kamera transzformáció gluLookAt(eye,vrp,vupgluLookAt(eye,vrp,vup) )
x
y
zvrp
vupeye
w = (eye-vrp)/|vrp-eye |u = vup x w/ |w x vup|v = w x u
[x,y,z,1] = [U,V,W,1]
ux uy uz 0vx vy vz 0wx wy wz 0
eye 1
[U,V,W,1] = [x,y,z,1] Tuvw-1
Tuvw
w
u
v
z
y
fp bp
90 látószög
1/(tg(fov/2)·aspect) 0 0 00 1/tg(fov/2) 0 00 0 1 00 0 0 1
Tnorm
NormalizálásNormalizálás
bp*tg(fov/2)
fp bp 1
PerspektívPerspektív transzformáció:transzformáció:gluPerspective(fovgluPerspective(fov, , aspectaspect, f, fpp, b, bpp))
[-mx*z, -my*z, z] [mx, my, 1][mx, my, -1]
[mx*fp, my*fp, -fp] ð [mx, my, -1 ][mx*bp, my*bp, -bp] ð [mx, my, 1 ]
[mx*fp, my*fp, -fp, 1] ð [mx, my, -1, 1][mx*bp, my*bp, -bp, 1] ð [mx, my, 1, 1]
[mx*fp, my*fp, -fp, 1] ð [mx*fp, my*fp, -fp, fp][mx*bp, my*bp, -bp, 1] ð [mx*bp, my*bp, bp, bp]
PerspektívPerspektív transzformációtranszformáció
fp
bp
90 látószög
1, 1
t11 t12 t13 t14t21 t22 t23 t24t31 t32 t33 t34t41 t42 t43 t44
Tpersp
[mx*fp,my*fp,-fp,1] * [mx*fp, my*fp, -fp, fp][mx*bp my*bp,-bp,1]*[mx*bp, my*bp, bp, bp]
1 0 0 00 1 0 00 0 -(fp+bp)/(bp-fp) -10 0 -2fp*bp/(bp-fp) 0
-fp*t33+t43 = -fp-fp*t34+t44 = fp
-bp*t33+t43 = bp-bp*t34+t44 = bp
1[Xh,Yh,Zh,h] = [xc,yc,zc,1] Tpersp
[X,Y,Z,1] = [Xh/h, Yh/h, Zh/h,1]
PerspektívPerspektív transzformáció:transzformáció:gluPerspective(fovgluPerspective(fov,,aspasp,f,fpp,b,bpp))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
Nézeti csovezetékNézeti csovezeték
Modell:x,y,z
TM Tuvw-1 Tpersp
HomogénosztásTakarásVetítésRasztertár:
X, Y
Vágás
Huzalváz képszintézisesetén kimaradhat
Nézettranszf
Mélységi vágás a homogén Mélységi vágás a homogén osztás elott kellosztás elott kell
1
Homogén osztás:[X,Y,Z,1] = [Xh/h, Yh/h, Zh/h,1]
1 0 0 00 1 0 00 0 -2 -10 0 -3 0
[1, 1,-2, 1] * [ 1 1 1 2] [1/2 1/2 1/2 1] [1, 1, 2, 1] * [ 1 1 -7 -2] [-1/2 -1/2 7/2 1]
-(fp+bp)/(bp-fp)
-2fp*bp/(bp-fp)
fp=1 bp=3
[1,1,2] [1,1,-2]
Vágás homogén koordinátákbanVágás homogén koordinátákban
Cél: Xmin = -1 < X = Xh/h< 1 = XmaxYmin = -1 < Y = Yh/h< 1 = YmaxZmin = -1 < Z = Zh/h < 1 = Zmax
Vegyük hozzá: h > 0 (h = -z a kamera koordinátarendszerben)
Xmin · h < Xh < Xmax · h Ymin · h < Yh < Ymax · h Zmin · h < Zh < Zmax · h
Xmin · h = XhXmin = 1
[3, 0, 0, 2]Xmin · h = 2< Xh= 3
Belül
[2, 0, 0, 3]Xmin · h = 3> Xh= 2
Kívül
Szakasz/poligonSzakasz/poligon vágásvágás
Xmin · h = Xh [Xh1,Yh
1,Zh1,h1]
[Xh2,Yh
2,Zh2,h2]
Xmin · h < Xh < Xmax · h Ymin · h < Yh < Ymax · h Zmin · h < Zh < Zmax · h
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
Xmin · h = Xmin · (h1·(1-t)+h2 ·t) == Xh= Xh
1·(1-t) + Xh2·t
t = …
Huzalváz képszintézisHuzalváz képszintézis
Modell:x,y,z
TM TV Vágás
Homogénosztás
Nézet transzfVetítés
Rasztertár:X, Y
2D szakaszrajzolás
(Bresenham )
(X,Y,Z)
(Xh,Yh,Zh,h)
(X,Y)
TC
Szín
Mélységi vágásMélységi vágás
Modell:x,y,z
TM TV Vágás
Homogénosztás
Nézet transzfVetítés
Rasztertár:X, Y
2D szakaszrajzolás
(Bresenham )
(X,Y,Z)
(Xh,Yh,Zh,h)
(X,Y)
TC
Hátsó vágósík
Mélységi Mélységi intenzitásmodulációintenzitásmoduláció
Modell:x,y,z
TM TV Vágás
Homogénosztás
Nézet transzfRasztertár:
X, Y
2D szakaszrajzolás
színinterpolációval
(X,Y,Z)
(Xh,Yh,Zh,h)
(X,Y)
TC
VetítésZ in [0,1]
Il =SzínModuláltszín
R, (G, B)
Intenzitás
(I2-I1)/pixelszám
Σ
I = Il/(1+aZ)
Tömör Tömör képszintézésképszintézés
l Képernyo koordinátarendszerben, a szem a z irányba néz
l Objektumtér algoritmusok: láthatóság számítás nem függ a felbontástól
l Képtér algoritmusok: mi látszik egy pixelben
HátsólabHátsólab eldobás: eldobás: backback--faceface cullingculling
nz > 0nz < 0
Takart élTakart él
Láthatósági gráf
Festo algoritmusFesto algoritmus1.2.3.
Baj: takarás nem rendezési reláció
A nem takarja B-t:1. Zmin(A) > Zmax(B ) VAGY2. A és B vetületének nincs közös része VAGY3. A a B szemen túli félterében VAGY4. B az A szemmel megegyezo félterében VAGY
AB
WarnockWarnock algoritmusalgoritmus
Triviális esetek:nincs él az ablakbanláthatóság homogén
Warnock(X1,Y1,X2,Y2) {if van él az ablakban && ablak pixelnél nagyobb {
Xm =(X1+X2)/2; Ym=(Y1+Y2)/2Warnock(X1,Y1,Xm,Ym); Warnock(Xm,Y1,X2,Ym); Warnock(X1,Ym,Xm,Y2); Warnock(Xm,Ym,X2,Y2);
} else {P = ablak közepén látható poligonAblak kitöltése P színével
}}
ZZ--bufferbuffer algoritmusalgoritmus
∞
13256281325628
3325
1.2. 3.
ZZ--koordináta: koordináta: lineáris interpoláció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)
ZZ--interpolációs hardverinterpolációs hardverZ(X,Y)
X számláló Z regiszter
a
X
ΣCLK
ÁrnyalásÁrnyalásl Koherencia: ne pixelenként kelljen
az árnyalási egyenletet megoldanil Háromszögenként:
– 1-szer sem: saját színnel árnyalás– 1-szer: konstans árnyalás– csúcspontonként 1-szer,
belül lineáris interpoláció: Gouraud árnyalás– pixelenként,
de legalább a normál (view, light, reflection) vektort interpoláljuk: Phong árnyalás
Árnyalás saját színnelÁrnyalás saját színnelKonstans árnyalásKonstans árnyalás
GouraudGouraud árnyalásárnyalás
X
Y
R,G,BR(X,Y) = aX + bY + c
R(X,Y)
R(X+1,Y) = R(X,Y) + a
(X1,Y1,R1)
(X2,Y2,R2)
(X3,Y3,R3)
GouraudGouraud árnyalásárnyalás
ambiensdiffúz
spekuláris
PhongPhong árnyalásárnyalás
X
Y
N(X,Y) = A X + BY + CL(X,Y) = ...V(X,Y) = ...
N(X,Y)
NVL
Illumináció: Illumináció: világkoordinátarendszerbenvilágkoordinátarendszerben
Nézeti transzformáció
Pixelenként:• vektorok lin. interpolációja• vektorok normalizálása• illuminációs képlet
PhongPhong árnyalásárnyalás GouraudGouraud, , PhongPhongGouraud Phong
Phong
Gouraud
ÁrnyékokÁrnyékok
l Egyszeru síklapra vetített árnyék
l Árnyék térképl Árnyéktestl Lágy árnyékok
SíSíklapraklapra vetített árnyékvetített árnyék
l
p
q
[q,1] · ST = 0, q = l + (p-l)tt = ([l,1]·ST)/([l-p,0]·ST) = d/hh = d – [p, 1] ·ST
q(p) NEM LINEÁRIS
[q,1] = [l + (p-l) ·d/h, 1][q ·h, h] =[l ·h + (p-l) ·d, h]== [-l·([p,1]·ST)+p·d, d–[p,1]·ST]
q ·h és h a p-ben LINEÁRIS
[q ·h, h] = [p, 1]
d-lx·A -ly·A -lz·A -A-lx·B d-ly·B -lz·B -B-lx·C -ly·C d-lz·C -C-lx·D -ly·D -lz·D d-D
S = [A,B,C,D]
Árnyék térképekÁrnyék térképek
TlTv
[x,y,z,1] Tv-1 Tl = [Xh,Yh,Zh,h]
[X,Y,Z,1] = [Xh/h,Yh/h,Zh/h, 1]if (Z ≈ zdepth[X,Y])
Fényforrás hatása
ÁrnyéktestekÁrnyéktestek
l Fényforrásból megkeressük a tárgy körvonal éleit
l Kihúzzuk a körvonal éleketl Árnyéktest alapján árnyékolás
Körvonal él vizsgálat