Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

4.6. A Fénysugár-követés módszere (ray-tracing) Mi látható a képernyőn, egy-egy képpontban ? (4.4.LÁTHATÓSÁG) A képponton át a szembe jutó fénysugár melyik.

Hasonló előadás


Az előadások a következő témára: "4.6. A Fénysugár-követés módszere (ray-tracing) Mi látható a képernyőn, egy-egy képpontban ? (4.4.LÁTHATÓSÁG) A képponton át a szembe jutó fénysugár melyik."— Előadás másolata:

1 4.6. A Fénysugár-követés módszere (ray-tracing) Mi látható a képernyőn, egy-egy képpontban ? (4.4.LÁTHATÓSÁG) A képponton át a szembe jutó fénysugár melyik tárgyról jön ? És az ott milyen színű ? (4.7. ÁRNYALÁS)

2 2

3 Tárgytér-módszerek: Tárgytér: valódi távolságok és szögek (N 0 ) SzKR: szem-(kamera-)KR Nézetmező: csonkagúla Közelsík (és távolsík) Mélységvágás (k,t) Oldalvágás (2D)

4

5 A fénysugár-követés módszere Fénysugár-követés (ray-tracing) A tárgytérben (SZKR) minden K i j képpontban: ott mi látszik? (melyik felület-elem?) és ott milyen színárnyalat látszik? kiszámítása „megvilágítási módszerrel” „Valószerű képek” (realistic images) egyik módszere fényforrások, árnyékok, fény-visszaverődés, átlátszó testek

6 Az FSK eljárás váza Előtte: VKR  SzKR (tárgytér), vágás (jelöléssel) Keret kijelölése; raszter: K i j képpontok „fénysugarak:” C  K i j X = O + t · (K i j - O) = t · K i j ; O = (0,0,0) a legközelebbi felület? (ciklus a laplistán végig) C i j = {r, g, b}, megvilágítás C 0 ; C i : visszaverődés, árnyékok, átlátszó felületek

7 A kép kerete A szemtől (O) d (~ 50 cm) távolságra a  b (~30  40 cm) oldalú K i j képpontok: i = 0,1,…,umax, j = 0,1,…,vmax x i = - a / 2 + du y j = - b / 2 + dv for j := 0 to vmax do for i := 0 to umax do begin … end; A fénysugár: X = t · K i j ; t > 1

8 A ciklus magja: // minden i és j-re (azaz: minden képpontra): sugár : „ X = t · K i j ” ; zxy := zmax; lapxy := háttérlap; // a háttér följegyzése foreach felületelem do begin „P(x,y,z, u,v,t) := döféspont”; // -ot keresünk if (van döféspont) then if z < zxy then begin // közelebb van? zxy : = z; lapxy := lap; // a f.elem följegyzése end; // if-if end; // foreach lap putPixel(i,j, „a lapxy színe a zxy pontban”); // árnyalás

9 A metszéspontok kisszámítása Időben kritikus: minden képpontnál - minden lapra Felület-elem: háromszög, gömb, másodrendű paraméteres felület, stb. Sugár és háromszög metszéspontja: a sugár: X = t · K i j a háromszög: X = Q + u · (P - Q) + v · (R - Q) metszéspont a PQR síkkal: { u, v, t } if ( 0  u, v, u + v  1 ) then // a háromszögön belül Időben kritikus  gyorsítás kell

10 Gyorsítások foreach y foreach x foreach lap … „vágás”: a kereten kívüliek megjelölése Testek-lapok dobozolása lapok rendezése legkisebb z szerint Szabályos (reguláris) térháló Nyolcasfa BSP-fa

11 Megjegyzések Láthatóság: (i,j)  a K i j -ben látható háromszög, (x, y, z) putPixel(i,j, „a lapxy színe a zxy pontban”); // árnyalás az árnyalási modell szerint: F i j (lap, x, y, z): a képpont színe első közelítés „Láthatóság”: egy FF látható-e az (x.y.z)-ből !

12

13 Rekurzív FSK „Első ütközés”: a látott pont, színe: a közvetlen megvilágításból A testek között fény-visszaverődés (és átlátszó testeken fény áthaladás) Milyen fény esik a látott pontba másokról visszaverten? (A testen áteresztve?)

14 Rekurzív FSK és fénytörés Az ideális visszaverődés törvénye: (LN) szög = (SN) szög; egy síkban A fénytörés törvénye: sin  / sin  = n k / n b ; egy síkban s 1 : elsődleges sugár: a néző iránya s 2v : másodlagos, visszavert sugár s 2a másodlagos, áteresztett sugár; Jöhet-e fény s 2v és s 2a felől Jöhet-e fény ezek felől? Csak véges számú visszaverést számolunk Csak az ideális visszaverési irányt számoljuk

15 Olvasmány, a rekurzív fsk egy eljárásának vázlata:

16 for j := 0 to ymax do for i := 0 to xmax do begin s1 := „P= t · K ij ”; szin := FSK ( s1 ); putPixel(i,j, szin); end; {for i,j} Color function FSK( s1:Vector3D ); var mpt: Point3D; ksz: Color; begin (mpt,felület) := aLegközelebbi(s1,felületlista); if (nincs mpt) then FSK := háttérSzín; else begin ksz := megvilágításiModell(felület,mpt); FSK := ksz; end; {if-else: van mpt} end; {FSK function}

17 Color function rFSK(kpt:Point3D; s1:Vector3D; mélység:Integer); var mpt: Point3D; s2v,s2á:Vector3D; ksz,vsz,ász: Color; begin if mélység > korlát then rFSK := Fekete; else begin (mpt,felület) := aLegközelebbi(s1,felületlista); if (nincs mpt) then szín:=háttérSzín; else begin ksz := megvilágításiModell(felület,mpt); s2v := tükrözés(s1,felület,mpt); vsz := rFSK(metszéspt,s2v,mélység+1); s2t := megtörés(s1,felület, mpt); ász := rFSK(mpt,s2t,mélység+1) rFSK{szín} := kever(ksz,ksúly, vsz,vsúly, ász,ásúly); end; {if-else: van mpt} end; {if-else: mélység<korlát} end; {rFSK function}


Letölteni ppt "4.6. A Fénysugár-követés módszere (ray-tracing) Mi látható a képernyőn, egy-egy képpontban ? (4.4.LÁTHATÓSÁG) A képponton át a szembe jutó fénysugár melyik."

Hasonló előadás


Google Hirdetések