inkrementális képszintézis - budapest university of ...szirmay/grafika/bmeincr.pdf ·...

7
Inkrementális 3D Inkrementális 3D képszintézis képszintézis Szirmay-Kalos László Inkrementális képszintézis Inkrementá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égekre l feleslegesen ne számoljunk: vágás l transzformációk: minden feladathoz megfelelo koordinátarendszert – vágni, transzformálni nem lehet akármit: tesszelláció 3D inkrementális képszintézis 3D inkrementális képszintézis tesszeláció T M T V 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: r n,m = r(u n ,v m ) l felületi pontok összekötése: háromszögháló, huzalváz Transzformációk Transzformációk l Modellezési transzformáció: [r lokális ,1] T M = [r világ ,1] l Nézeti transzformáció: [r világ ,1] T v =[r képernyo ,1] l Összetett transzformáció: [r lokális ,1] T M T v =[r lokális ,1] T C = [r képernyo ,1] Nézeti transzformáció: Nézeti transzformáció: Kamera modell Kamera modell x y z vrp (lookat ) vup eye fp bp fov aspect

Upload: others

Post on 14-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Inkrementális képszintézis - Budapest University of ...szirmay/grafika/bmeincr.pdf · Inkrementális 3D képszintézis Szirmay-Kalos László Inkrementális képszintézis lÁrnyalás,

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

Page 2: Inkrementális képszintézis - Budapest University of ...szirmay/grafika/bmeincr.pdf · Inkrementális 3D képszintézis Szirmay-Kalos László Inkrementális képszintézis lÁrnyalás,

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

Page 3: Inkrementális képszintézis - Budapest University of ...szirmay/grafika/bmeincr.pdf · Inkrementális 3D képszintézis Szirmay-Kalos László Inkrementális képszintézis lÁrnyalás,

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

Page 4: Inkrementális képszintézis - Budapest University of ...szirmay/grafika/bmeincr.pdf · Inkrementális 3D képszintézis Szirmay-Kalos László Inkrementális képszintézis lÁrnyalás,

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

}}

Page 5: Inkrementális képszintézis - Budapest University of ...szirmay/grafika/bmeincr.pdf · Inkrementális 3D képszintézis Szirmay-Kalos László Inkrementális képszintézis lÁrnyalás,

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

Page 6: Inkrementális képszintézis - Budapest University of ...szirmay/grafika/bmeincr.pdf · Inkrementális 3D képszintézis Szirmay-Kalos László Inkrementális képszintézis lÁ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

Page 7: Inkrementális képszintézis - Budapest University of ...szirmay/grafika/bmeincr.pdf · Inkrementális 3D képszintézis Szirmay-Kalos László Inkrementális képszintézis lÁrnyalás,

Á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