Inkrement lis 3d k pszint zis
This presentation is the property of its rightful owner.
Sponsored Links
1 / 58

Inkrementális 3D képszintézis PowerPoint PPT Presentation


  • 42 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

Inkrementális 3D képszintézis

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


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

  • transzformációk: minden feladathoz megfelelő koordinátarendszert

    • vágni, transzformálni nem lehet akármit: tesszelláció


Koordinátarendszerek:modelltér


Koordinátarendszerek:világtér


Koordinátarendszerek:kameratér

up

right

ahead

z

eye

y

x


Koordinátarendszerek:normalizált eszközkoordináták

1

1

x

-1

-1


Koordinátarendszerek:viewport

pixelx

resolutionx

pixely

p

resolutiony


Transzformációk

  • Ha egy pont koordinátái adottak egy térben, mik a koordinátái egy másik térben?

    • statikus felfogás

  • Milyen műveletet végezzünk az eredeti koordinátákon, hogy a másik térbe vigyük őket?

    • dinamikus felfogás


Az inkrementális képalkotási feladat

  • Adott egy háromszögesített 3D modell

    • háromszögek csúcsaival [modelltérben]

  • 2D háromszögrajzoló algoritmus

    • színezendő képpontok [viewport koordináták]

  • A feladat:

    • a csúcspont modellezési koordinátáibólszámítsuk ki, mely pixelre esik


Mi befolyásolja ezt?

  • Hol helyezzük el a modellt a virtuális világban

    • model-transzformáció, a.k.a. (world transformation)

  • Hol a kamera, merre néz

    • kamera-transzformáció

  • Mekkora a látószög (és képméretarány)

    • perspektív projekció

  • Mekkora a felbontás (hány pixelre rajzolunk)

    • viewport transzformáció


Plusz feladat: láthatóság

  • takarási probléma

    • a 2D pixel koordináták mellett kell egy mélységértéket is számolni

  • fix pontos z-buffer

    • [0, 1]-beli értékeket tud összehasonlítani

    • a távolság, amihez a 0-t rendeljük: első vágósík

    • amihez az 1-et: hátsó vágósík


Plusz feladat: árnyalás

  • Felületi pont, fények koordinátái, szempozíció, felületi normálisok...

    • ugyanabban a 3D koordináta rendszerben legyenek

    • logikusan a modellezési transzformáció után

    • de a kamera trafó szög és távolságtartó

      • kameratérben


3D inkrementális képszintézis

Tmodell

Tview

Modell

referencia helyzetben

Kamerakoordináta r.

Tesszelláció

Világkoordináta r.

Tpersp

Tviewport

z

Képernyőkoordináta r.

Láthatóság + vetítés

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

Normalizált

eszközkoordináta r.

Vágás

Árnyalt kép


Tesszelláció

r(u,v)

u

r(u,v)

v

  • Felületi pontok kijelölése: rn,m = r(un,vm)

  • Normálvektor:

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

N(un,vm)=

N1

u,v

r(u,v)

N2

r2

N(u,v)

N3

r1

r3


Transzformációs csővezeték

model

transform

view

transform

proj

transform

model space

world space

camera space

clip space

norm. device space

pixel

coordinates

viewport

space

modelling

viewport

transform


Modellés világkoordináták(statikus interpretáció)

model

world


Modellés világkoordináták(dinamikus interpretáció)


Modellezési transzformáció

z

1. skálázás:sx, sy, sz

2. orientáció:, , 

3. pozíció: px, py, pz

y

x

1

1

1

px py pz 1

sx

sy

sz

1

1

R

TM=


Eltolás homogén koordinátákkal

1

1

1

px py pz 1

x y z 1

y+py

x+px

z+pz

1

=


(R21,R22,R23)

z

Orientáció

(R31,R32,R33)

y

(R11,R12,R13)

x

cos -sin

1

sin cos

1

cos sin

-sincos

1

1

1

cossin

-sincos

1

0

0

0

0 0 0 1

R

TM =

=

Csavaró:

Roll

Billentő:

Pitch

Forduló:

Yaw

Orientáció = ortonormált mátrix

Orientácó: 3 szabadságfok

Orientáció = három szög+fix tengelyek vagy tengely+szög


Emlékeztető: Más algebrai alap?

Forgatás =

egység abszolút értékű komplex számmal szorzás

  • Idáig (2D-ben)

    • Pont = számpár

    • Eltolás = számpár (vektor)

    • Elforgatás, skálázás, nyírás, stb. = 22-s mátrix

  • Más lehetőség?

    • Pont = komplex szám (z)

    • Eltolás = komplex szám (összeadás): z’ = z + v

    • Forgatás, skálázás (forgatva nyújtás) = komplex szám (szorzás):

    • z’ = z * f , ahol f = r eiφ


Kvaterniók

  • Komplex számok általánosítása

  • q= [s,x,y,z] = [s,w] = s+xi+yj+zk

  • q1+q2 = [s1+s2, x1+x2, y1+y2, z1+z2]

  • aq = [as,ax,ay,az]

  • |q| =  s2+x2+y2+z2

  • Szorzás:

    • i2 = j2 = k2 = ijk = -1, ij=k, ji=-k, jk=i, kj=-i, ki=j, ik=-j

    • Szorzás asszociatív, de nem kommutatív,

    • Összeadásra disztributív

    • Van egységelem: [1,0,0,0]

    • Van inverz, konjugált/absnégyzet mint a komplexnél: q-1 = [s,-w]/|q|2, q-1q= qq-1=[1,0,0,0]


Egység kvaternió = forgatás az origón átmenő w tengely körül

  • q= [cos(/2), w sin(/2)], |w| = 1

  • q[0,u]q-1 = [0,v]

    • v az u elforgatottja a w körül  szöggel

  • wegységvektor körül  szöggel forgató mátrix:

    • (0, R11,R12,R13) = q[0,1,0,0]q-1

    • (0, R21,R22,R23) = q[0,0,1,0]q-1

    • (0, R31,R32,R33) = q[0,0,0,1]q-1

  • Rodriquez formula

  • glRotate(alpha, wx, wy, wz);


Specifikációhoz és főleg interpolációhoz kvaternió

Kvaternió versus mátrix

  • Orientáció specifikációja:

    • Kvaternió: tengely + szög

    • Mátrix: három Euler szög (elemi forgatások a koordinátatengelyek körül)

  • Orientáció interpolációja:

    • Kvaternió: „közbülső” egységkvaterniók, természetes

    • Mátrix: Euler szögek, természetellenes

  • Orientációváltás végrehajtása:

    • Kvaternió: 2 kvaternió szorzás, forgatásokkal konkatenálható!

    • Mátrix: vektor-mátrix szorzás, bármilyen homogén-lináris transzformációval konkatenálható!

Az orientáció váltás végrehajtásához mátrix


Transzformá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


Hova kell a pontot rajzolni a képernyőn?

  • Az összes többi transzformáció ennek a kiszámolására megy

    • kamera transzformáció

      • hol van a pont a kamerához képest

    • vetítési transzformáció

      • hova vetül ez az ablak téglalapjára

    • viewport transzformáció

      • melyik pixel

[11]

[-1-1]

[0 0]

[345 234]


Nézeti

téglalap

Kamera modell

szem

fp

vup

fov

eye

asp

bp

z

vrp

(lookat)

y

x

Mi: Camera obscura


Kamera-transzformáció(statikus interpretáció)

camera

world


eye

v

w

u

w

v

u

Kamera transzformáció

vup

w = (eye-lookat)/|eye-lookat|

u = (vupw)/|wvup|

v = wu

lookat

z

-1

ux uy uz0

vx vy vz0

wx wy wz0

0 0 0 1

y

1 0 00

01 00

0 0 10

-eyex-eyey -eyez1

x

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

uxvxwx0

uyvywy0

uzvzwz0

0 0 0 1

gluLookAt(eye,lookat,vup)


Projekció(statikus interpretáció)

1

y

1

-1

z

képernyőkoordináta: (y/z, 1)

homogén koordinátákkal (y/z, 1, 1)

vagy(y, z, z)


Világból a képernyőre

Bal!!!

y

eye

1

z

z

3.2. Normalizált képernyő

2. Kamera

90 látószög

y

x

3.1. Normalizált

kamera

1

1. Világ

4. Képernyő


Normalizálás

bp·tg(fov/2)

Tnorm

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

0 1/tg(fov/2) 0 0

0 0 1 0

0 0 0 1

fp

bp

90 látószög


Normalizálás utáni perspektív transzformáció

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

(mx, my, 1)

(mx, my, -1)

-z

(mx, my, z*)

z*

1

-bp

-fp

(-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]


Perspektív transzformációkitalálás

Tpersp

  • 0

  • 01

  • 00

  • 00

0 0

0 0

 -1

0

-fp

-bp

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

-z·z*=·z +  z*= - -/z

fp·(-1)=(-fp) +  = -(fp+bp)/(bp-fp)

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


y

Teljes perspektív transzformáció

z

-fp

-bp

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

0 1/tg(fov/2) 0 0

00 -(fp+bp)/(bp-fp) -1

00 -2fp·bp/(bp-fp) 0

gluPerspective(fov,asp,fp,bp)

1

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

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

h = -zc


Képszintézis csővezeték

primitívek

csúcspontok

Vágás

Modell:

x,y,z

Tmodell

Tpersp

Tview

Tviewport

Vetítés

Takarás

Homogén

osztás

Rasztertár:

X, Y

Huzalváz képszintézis

esetén kimaradhat

1


Vá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

h = -zc

Szakasz

zc<0

zc<0

zc>0

zc<0


Vágás homogén koordinátákban

Cé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

Belül

Kívül

-h < Xh < h

-h < Yh < h

-h < Zh < h

[3, 0, 0, 2]

h = 2< Xh = 3

[2, 0, 0, 3]

h = 3> Xh = 2


Szakasz/poligon vágás

-h < Xh < h

-h < Yh < h

-h < Zh < h

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

= Xh = Xh1·(1-t) + Xh2·t

t = …

h = Xh

[Xh1,Yh1,Zh1,h1]

Xh = Xh1 · (1-t) + Xh2 · t

Yh = Yh1 · (1-t) + Yh2 · t

Zh = Zh1 · (1-t) + Zh2 · t

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

[Xh2,Yh2,Zh2,h2]


Huzalváz képszintézis

poligon

élek

(Xh,Yh,Zh,h)

Modell:

x,y,z

Tesszel-

láció

Vágás

TC

Homogén

osztás

Szín

(X,Y,Z)

2D szakasz

rajzolás

Nézet transzf

Vetítés

Rasztertár:

X, Y

(X,Y)


Tömör képszintézis

1

  • 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!


r3

Hátsólab eldobás: back-face culling

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

r2

r1

nz < 0

nz> 0

z

  • Lapok a nézeti irányban:

  • Kívülről: lap, objektum: elülső oldal

  • Belülről: objektum, lap: hátsó oldal

  • Feltételezés:

  • Ha kívülről, akkor csúcsok óramutatóval megegyező körüljárásúak


Z-buffer algoritmus

2.

1.

3.

 = 1

z

0.6

0.3

0.3

0.6

0.8

Mélység buffer

Z-buffer

Szín buffer


Z: lineáris interpoláció

(X2,Y2,Z2)

Z

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

(X1,Y1,Z1)

Y

(X3,Y3,Z3)

Z(X,Y)

X

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


Z-interpolációs hardver

X

Z(X,Y)

X számláló

Z regiszter

CLK

S

a


Inkremens (triangle setup)

(X2,Y2,Z2)

Z

Z1= aX1 + bY1 + c

Z2= aX2 + bY2 + c

Z3= aX3 + bY3 + c

n

(X1,Y1,Z1)

Y

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

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

(X3,Y3,Z3)

-nx

X

(Z3-Z1)(Y2-Y1)-(Y3-Y1)(Z2-Z1)

(X3-X1)(Y2-Y1)- (Y3-Y1)(X2-X1)

a=

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

nxX+nyY+nzZ+d = 0

i jk

X3-X1Y3-Y1 Z3-Z1

X2-X1Y2-Y1 Z2-Z1

nz

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


Árnyalás

L(V) SlLl (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)


Gouraud (per-vertex) árnyalás

N1

r2

N2

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

G(X,Y) =…

B(X,Y) =…

N3

r1

r3

Modell

[+kamera]

Perspektív

+ nézeti

N1

r1

R(X,Y)

L1

V1

L2

N2

L3

r2

N3

r3

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

(per-vertex shading)

Képernyő


Z-buffer + Gouraud árnyaló hw.

X

Z

B

R

G

X számláló

R regiszter

G regiszter

B regiszter

z regiszter

S

S

S

S

aR

aG

aB

az


Gouraud árnyalás hasfájásai

  • További bajok:

  • anyagtulajdonság konstans

  • árnyék nincs

  • különben a színt nem lehet

  • interpolálni

spekuláris

ambiens

diffúz


Phong (per-pixel) árnyalás

N1

r2

N2

N(X,Y) = AX + BY + C

L(X,Y) =…

V(X,Y) =…

N3

r1

r3

Modell

[+kamera]

N

N1

L

L1

Vektor másolás

V1

Normalizálás!

N1

V

L1

r1

Pontokra:

perspektív

+ nézeti

V1

L2

N2

L3

r2

N3

r3

(per-pixel shading)

Képernyő


Phong árnyalás


Gouraud

Phong

Phong

Gouraud versus Phong

Gouraud


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


v

u

Inkrementális képszintézis

Model-camera-perspective-viewport

transzformáció

Paraméterezés

x=axu+bxv+cx

y=ayu+byv+cy

z=azu+bzv+cz

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

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

(x1,y1,z1)

(u1, v1)

Y

(X1,Y1)

z

(x2,y2,z2)

(X3,Y3)

(u3, v3)

(u2, v2)

(x3,y3,z3)

(X2,Y2)

y

X

x

[Xh, Yh, h] = [u,v,1] T, aholh = -zc

[u/h, v/h, 1/h] = [X,Y, 1] T-1


v

u

Lineáris interpoláció

Y

(u1, v1)

(X1,Y1)

(X3,Y3)

(u3, v3)

u=au X+buY+cu

v=av X+bvY+cv

(u2, v2)

(X2,Y2)

X

Interpolációs kényszerek:

u1=au X1+buY1+cu

u2=au X2+buY2+cu

u3=au X3+buY3+cu

referencia

lineáris

v1=av X1+bvY1+cv

v2=av X2+bvY2+cv

v3=av X3+bvY3+cv


v

u

Perspektíva helyes textúrázás

Y

(u1, v1)

(X1,Y1)

(X3,Y3)

(u3, v3)

(u2, v2)

(X2,Y2)

Au X+VuY+Cu

u =

v =

Ah X+BhY+Ch

X

Av X+BvY+Cv

u/h =Au X+BuY+Cu

v/h = Av X+BvY+Cv

1/h =Ah X+BhY+Ch

Ah X+BhY+Ch

h = -zc


Perspektíva helyesinterpolációs hw.

R G B

X

Y

X

Y

Textúra memória

v

u

Div

Div

[1/h](X,Y)

[v/h](X,Y)

[u/h](X,Y)

[1/h] regiszter

[v/h] regiszter

X számláló

[u/h] regiszter

S

S

S

CLK

ah

av

au


  • Login