2006.01.10.

A VIK Wikiből
Ugrás a navigációhoz Ugrás a kereséshez

Ez az oldal a korábbi SCH wiki-ről lett áthozva. Az eredeti változata itt érhető el.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor kérlek javíts rajta egy rövid szerkesztéssel.

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót


infosite alapján

Tartalomjegyzék

1.

Írja fel a projektív sík egy körének egyenletét (kör egyenlet homogén koordinátákban annak analógiájára, ahogyan az egyenes egyenletét a síkban, és a sík egyenletét a térben bevezettük). Mi lesz abból a körből, amelynek középpontja egy ideális ponton van?

Decartes koordinátákban egy x0, y0 középpontú, R sugarú kör egyenlete: [math] (x-x_{0})^2 + (y-y_{0})^2 = R^2 [/math]
A projektív síkra lépéshez áttérünk homogén koordinátákra: [math]x = \frac{X}{h}[/math] , [math]y = \frac{Y}{h}[/math] , [math]x_{0} = \frac{X_{0}}{h_{0}}[/math] , [math]y_{0} = \frac{Y_{0}}{h_{0}}[/math]
Behelyettesítve: (X/h - X0/h0)2 + (Y/h - Y0/h0) 2 = R2
Átszorozva (h h0)2 , és innentől megengedve, hogy ezek zérus értéket is felvehessenek, kapjuk a projektív síkon lévő kör egyenletét homogén koordinátákban: (X h0 - X0 h)2 + (Y h0 - Y0 h) 2 = (R h h0)2
Ha a középpont ideális pont, akkor h0=0, de X0 és Y0 nem lehet egyszerre 0 (a 0,0,0 nem érvényes).
Behelyettesítve: (X0 h)2 + (Y0 h) 2 = 0, azaz h=0.
Ez pedig az ideális egyenes egyenlete, hiszen aX+bY+ch=0 alakú (tehát egyenes), és csak ideális pontok elégítik ki a h=0-t. Tehát a körből az ideális egyenes lesz.


2.

Írja le, hogy mi történik a csúcspont árnyaló (vertex shader) kimenete és a pixel árnyaló (fragment shader) bemenete között egy GL_TRIANGLES primitív feldolgozása során! A leírásnak olyan részletesnek kell lennie, hogy egy koordinátageometriában jártas programozó implementálni tudja az egyes lépéseket. Összesen 5p.

  • 1. A kimeneti regiszterekben (POSITION, TEXCOORD0..) a hardver összevár három csúcspontot, amelyek egy háromszöget alkotnak (0.5p).
  • 2. A háromszöget homogén-koordinátákban a Sutherland-Hodgeman algoritmussal vágja az alábbi egyenletekkel definiált vágósíkokra: -w<x<w, -w<y<w, -w<z<w (azaz egy [x,y,z,w] pont akkor számít belső pontnak, ha mind a 6 egyenlőtlenség teljesül) (1p). A vágóalgoritmus egyenként dolgozza fel a vágósíkokat, és vágja a háromszöget. Ha egy két két végpontja közül pontosan az egyik sérti meg az adott egyenlőtlenséget, akkor azt kicseréli a metszéspontra. Példaul a –w<x esetén a [x1,y1,z1,w1] és [x2,y2,z2,w2] végpontú élre az -w1t -w2(1-t) = x1t +x2(1-t) egyenletet oldja meg t-re és a metszéspontot a [x1,y1,z1,w1] t + [x2,y2,z2,w2] (1-t) kifejezésbe helyettesíti be. Ugyanezt teszi az összes regiszterekben lévő csúcspont tulajdonsággal (pl. szín, textúrakoordináta) (1p).
  • 3. A kapott sokszöget újraháromszögesíti (0.5p).
  • 4. Alkalmazza a képernyő transzformációt, azaz a [-1,1]x[-1,1]x[-1,1] kockát a glViewport-tal beállított [viewport.left,viewport.right]x[viewport.bottom,viewport.top]x[0,1]-re képezi le (megjegyzés, a z tartomány lehet más is, de ezt nem tanultuk, aki mégis tudja, az plusz pontot kap) (0.5p).
  • 5. A háromszög xy vetületének kitöltéséhez kiszámítja az inkremenseket a z-re és az összes tulajdonságra (szín, textúra koordináták) (a képleteket illetően lásd a következő feladatot) (0.5p).
  • 6. A háromszöget pásztánként kitölti meglátogatva azokat a pixeleket, úgy, hogy inkrementális elven az összes csúcsponttulajdonságot a belső pixelre lineárisan interpolálja (1p).
  • 7. Meghívja a pixel árnyalót.

Olyan nyalánkságokat, mint például az „early z-cull” nem tanultunk, ezért nem kell tudni. Aki leírta, annak többletpont jár.


3.

Adott egy háromszög képernyő koordinátarendszerben a következő csúcsokkal: (0,0,0), (10, 0, 10), (8, 10, 4). Mekkora azon két pont z koordinátáinak különbsége, amelyek az (5,5) illetve a (6,5) pixelen keresztül látszanak? Pontozás, képlet: 2p, számítás 3p.

A háromszög síkjának egyenlete nx  x + ny  y + nz  z + d = 0, ahol a [nx , ny, nz] a háromszög síkjának normálvektora. Ebből: z(x,y) = -d/ nz - nx/nz  x - ny/nz  y. (1p) Azaz a kért különbség: z(x+1,y) - z(x,y) = - nx/nz (1p) Akkor most számokkal. A normál vektor a két élvektor vektoriális szorzatával kapható meg (1p):

 (2p).	Tehát a kért különbség: 100/100 = 1


4.

Egy diffúz felületet változó erősségű égboltfény világít meg egy adott hullámhosszon, amelyen a felület albedója 1. A megvilágítás erőssége az alábbi függvénnyel jellemezhető: 1/cosT [W/st/m^2], ha T > 45 fok, illetve sqrt(2) [W/st/m^2], ha T <= 45 fok, ahol T a felület normálisa és az égboltpont iránya közötti szög. Mekkora sugársűrűség éri a szemünket az adott hullámhosszon, ha a nézeti irány éppen 60 fokot zár be a felületi normálistól, és 3 méter távolságból szemléljük a diffúz felületet? Pontozás: adott szituációra felírt képlet 2p, számítás 3p.

Először is diffúz felületeknél a nézeti irány lényegtelen, a sugársűrűség pedig nem változik a távolsággal, tehát ezek az adatok nem kellenek, és a BRDF 1/? (1p).
Áttérve gömbi koordináták szerinti integrálásra, és az integrálási tartományt két részre bontva az eltérő bejövő sugársűrűség függvény tartománya szerint:


Ezen a helyen volt linkelve a grafika_4feladat.PNG nevű kép a régi wiki ezen oldaláról. (Kérlek hozd át ezt a képet ide, különben idővel el fog tűnni a régi wikivel együtt)


-- nam - 2007.01.06.