4.6. A Fénysugár-követés módszere (ray-tracing)

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

description

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. Tárgytér-módszerek:. Tárgytér: valódi távolságok és szögek ( N 0 ) - PowerPoint PPT Presentation

Transcript of 4.6. A Fénysugár-követés módszere (ray-tracing)

Page 1: 4.6. A Fénysugár-követés módszere (ray-tracing)

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)

Page 2: 4.6. A Fénysugár-követés módszere (ray-tracing)

2

Page 3: 4.6. A Fénysugár-követés módszere (ray-tracing)

Tárgytér-módszerek:

• Tárgytér: valódi távolságok és szögek (N0)

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

Page 4: 4.6. A Fénysugár-követés módszere (ray-tracing)
Page 5: 4.6. A Fénysugár-követés módszere (ray-tracing)

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

Page 6: 4.6. A Fénysugár-követés módszere (ray-tracing)

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)

• Ci j = {r, g, b}, megvilágítás

• C0; C i : visszaverődés, árnyékok, átlátszó felületek

Page 7: 4.6. A Fénysugár-követés módszere (ray-tracing)

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

Page 8: 4.6. A Fénysugár-követés módszere (ray-tracing)

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

Page 9: 4.6. A Fénysugár-követés módszere (ray-tracing)

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

Page 10: 4.6. A Fénysugár-követés módszere (ray-tracing)

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

Page 11: 4.6. A Fénysugár-követés módszere (ray-tracing)

Megjegyzések

• Láthatóság: (i,j) a Ki 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:

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

Page 12: 4.6. A Fénysugár-követés módszere (ray-tracing)
Page 13: 4.6. A Fénysugár-követés módszere (ray-tracing)

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

Page 14: 4.6. A Fénysugár-követés módszere (ray-tracing)

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 = nk / nb; egy síkban

• s1: elsődleges sugár: a néző iránya

• s2v: másodlagos, visszavert sugár

s2a másodlagos, áteresztett sugár;

• Jöhet-e fény s2v és s2a 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

Page 15: 4.6. A Fénysugár-követés módszere (ray-tracing)

Olvasmány,

a rekurzív fskegy eljárásának vázlata:

Page 16: 4.6. A Fénysugár-követés módszere (ray-tracing)

for j := 0 to ymax do for i := 0 to xmax do begin s1 := „P= t·Kij”;

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}

Page 17: 4.6. A Fénysugár-követés módszere (ray-tracing)

Color function rFSK(kpt:Point3D; s1:Vector3D; mélység:Integer);var mpt: Point3D; s2v,s2á:Vector3D; ksz,vsz,ász: Color;

beginif 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}