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


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

Inkrementális 3D képszintézis

Szirmay-Kalos László


Inkrement lis k pszint zis

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:modelltér


Koordin tarendszerek vil gt r

Koordinátarendszerek:világtér


Koordin tarendszerek kamerat r

Koordinátarendszerek:kameratér

up

right

ahead

z

eye

y

x


Koordin tarendszerek normaliz lt eszk zkoordin t k

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

1

1

x

-1

-1


Koordin tarendszerek viewport

Koordinátarendszerek:viewport

pixelx

resolutionx

pixely

p

resolutiony


Transzform ci k

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

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

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

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

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


Inkrement lis 3d k pszint zis

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

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


Trans zform ci s cs vezet k

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


Model l s vil gkoordin t k stati kus interpret ci

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

model

world


Model l s vil gkoordin t k dinamikus interpret ci

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


Modelle z si transzform 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

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

=


Inkrement lis 3d k pszint zis

(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


Inkrement lis 3d k pszint zis

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φ


Inkrement lis 3d k pszint zis

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]


Inkrement lis 3d k pszint zis

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);


Kvaterni versus m trix

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


Inkrement lis 3d k pszint zis

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

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]


Inkrement lis 3d k pszint zis

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

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

camera

world


Inkrement lis 3d k pszint zis

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

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

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ő


Inkrement lis 3d k pszint zis

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


Normali z l s ut ni perspekt v transzform ci

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]


Inkrement lis 3d k pszint zis

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)


Inkrement lis 3d k pszint zis

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

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


Inkrement lis 3d k pszint zis

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

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


Inkrement lis 3d k pszint zis

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

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

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!


H ts lab eldob s back face culling

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

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

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

Z-interpolációs hardver

X

Z(X,Y)

X számláló

Z regiszter

CLK

S

a


Inkrement lis 3d k pszint zis

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

Á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

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ő


Inkrement lis 3d k pszint zis

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

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


Inkrement lis 3d k pszint zis

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

Phong árnyalás


Gouraud versus phong

Gouraud

Phong

Phong

Gouraud versus Phong

Gouraud


Text ra lek pz s anyagjellemz k v ltoznak a fel leten

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


Inkrement lis 3d k pszint zis

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


Line ris interpol ci

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


Perspekt va helyes text r z s

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


Inkrement lis 3d k pszint zis

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