2012.11.27. Maga a tématerület így nagyon nagy. A fények pontos fizikai szimulációja kimondottan számításigényes



Hasonló dokumentumok
A bemutatott példa a Phong modell egy egyszerűsített változatát alkalmazza a Blinn-Phong-féle megközelítést

Hajder Levente 2017/2018. II. félév

Tartalom. Tartalom. Anyagok Fényforrás modellek. Hajder Levente Fényvisszaverési modellek. Színmodellek. 2017/2018. II.

Máté: Számítógépes grafika alapjai

Árnyalás, env mapping. Szécsi László 3D Grafikus Rendszerek 3. labor

Számítógépes Grafika mintafeladatok

1. Bevezetés 1. Köszönetnyilvánítás A számítógépes játékfejlesztésről 3

Számítógépes Graka - 4. Gyak

SZE, Doktori Iskola. Számítógépes grafikai algoritmusok. Összeállította: Dr. Gáspár Csaba. Felületmegjelenítés

Hajder Levente 2017/2018. II. félév

Renderelés megjelenésmódok, fények, anyagjellemzők

OTKA Nyilvántartási szám: T ZÁRÓJELENTÉS

Transzformációk. Szécsi László

Transzformációk. Grafikus játékok fejlesztése Szécsi László t05-transform

Számítógépes grafika

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

Sugárkövetési algoritmusok (2. rész)

Tartalom. Tartalom. Raycasting. Hajder Levente 2017/2018. II. félév. Raycasting. Raycasting. Sugár és háromszög metszéspontja

Összeállította: dr. Leitold Adrien egyetemi docens

Vektorok összeadása, kivonása, szorzás számmal, koordináták

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

Számítógépes Grafika mintafeladatok

Máté: Számítógépes grafika alapjai

Modellezési transzformáció: [r lokális,1] T M = [r világ,1] Nézeti transzformáció: [r világ,1] T v = [r képernyo,1]

Láthatósági kérdések

A számítógépes grafika alapjai kurzus, vizsgatételek és tankönyvi referenciák 2014

Textúrák. Szécsi László

Számítógépes grafika

I. Vektorok. Adott A (2; 5) és B ( - 3; 4) pontok. (ld. ábra) A két pont által meghatározott vektor:

x = cos αx sin αy y = sin αx + cos αy 2. Mi a X/Y/Z tengely körüli forgatás transzformációs mátrixa 3D-ben?

Hajder Levente 2016/2017.

Tartalom. Tartalom. Hajder Levente 2018/2019. I. félév

Tartalom. Megjegyzések. Valasek Gábor Befoglaló keretek. Felosztások. Informatikai Kar

Vektorok és koordinátageometria

SDL_Universe SDL, C++, 3D szoftver renderelő

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

1. Fénysugár követő és festő algoritmus (3p) fénysugárkövető módszer Festő algoritmus: 2. Fények, fény, fény az opengl-ben, anyagtulajdonság (12pt)

O ( 0, 0, 0 ) A ( 4, 0, 0 ) B ( 4, 3, 0 ) C ( 0, 3, 0 ) D ( 4, 0, 5 ) E ( 4, 3, 5 ) F ( 0, 3, 5 ) G ( 0, 0, 5 )

Megoldások. Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma)

Vektoralgebra. 1.) Mekkora a pillanatnyi sebesség 3 s elteltével, ha a kezdősebesség (15;9;7) m/s, a gravitációs gyorsulás pedig (0;0;-10) m/s 2?

CodeCamp Döntő feladat

Tartalom. Hajder Levente 2016/2017. I. félév

Koordináta-geometria feladatgyűjtemény

Hajder Levente 2018/2019. II. félév

HLSL programozás. Szécsi László

Hajder Levente 2014/2015. tavaszi félév

Vektorgeometria (2) First Prev Next Last Go Back Full Screen Close Quit

Koordináta-geometria II.

Skaláris szorzat: a b cos, ahol α a két vektor által bezárt szög.

2. Generáció ( ) 3. Generáció (2001) NVIDIA TNT2, ATI Rage, 3dfx Voodoo3. Klár Gergely

2D képszintézis. Szirmay-Kalos László

Nem fotorealisztikus megjelenítés OpenGL segítségével

Tartalomjegyzék. Köszönetnyilvánítás... xv. Előszó... xvii. 1. Bevezető D-történelem Matematikai alapok... 7

8. Pontmegfeleltetések

Féléves feladat. Miről lesz szó? Bemutatkozás és követelmények

KOVÁCS BÉLA, MATEMATIKA I.

Számítógépes Grafika SZIE YMÉK

KOVÁCS BÉLA, MATEMATIKA II.

KOORDINÁTA-GEOMETRIA

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉP SZINT. Koordináta-geometria

1. Olvassuk be két pont koordinátáit: (x1, y1) és (x2, y2). Határozzuk meg a két pont távolságát és nyomtassuk ki.

MATEMATIKA EMELT SZINTŰ SZÓBELI VIZSGA TÉMAKÖREI (TÉTELEK) 2005

(Solid modeling, Geometric modeling) Testmodell: egy létező vagy elképzelt objektum digitális reprezentációja.

Klár Gergely 2010/2011. tavaszi félév

Plakátok, részecskerendszerek. Szécsi László

Klár Gergely Informatikai Kar. 2010/2011. tavaszi félév

Grafikus csővezeték és az OpenGL függvénykönyvtár

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉP SZINT Koordináta-geometria

Koordináta-geometria feladatgyűjtemény (A feladatok megoldásai a dokumentum végén találhatók)

Világítástechnika I. VEMIVIB544V A fény és tulajdonságai, fotometriai alapfogalmak és színmérés

Geometriai modellezés. Szécsi László

A geometriai optika. Fizika május 25. Rezgések és hullámok. Fizika 11. (Rezgések és hullámok) A geometriai optika május 25.

OPTIKA. Fotometria. Dr. Seres István

Matematika III előadás

Diszkréten mintavételezett függvények

10. Koordinátageometria

Klár Gergely 2010/2011. tavaszi félév

A KLT (Kanade Lucas Tomasi) Feature Tracker Működése (jellegzetes pontok választása és követése)

Q 1 D Q 2 (D x) 2 (1.1)

= Y y 0. = Z z 0. u 1. = Z z 1 z 2 z 1. = Y y 1 y 2 y 1

Trigonometria Megoldások. 1) Igazolja, hogy ha egy háromszög szögeire érvényes az alábbi összefüggés: sin : sin = cos + : cos +, ( ) ( )

1. ábra. 24B-19 feladat

Grafikus csővezeték (Általános áttekintés) Grafikus csővezeték (Általános áttekintés)

OPTIKA. Geometriai optika. Snellius Descartes-törvény szeptember 19. FIZIKA TÁVOKTATÁS

14. Fotórealisztikus megjelenítés

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉPSZINT Koordináta-geometria

2014/2015. tavaszi félév

Orvosi Biofizika I. 12. vizsgatétel. IsmétlésI. -Fény

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon) b) Minden belső pont kirajzolásával (kitöltött)

3D számítógépes geometria és alakzatrekonstrukció

Geometriai és hullámoptika. Utolsó módosítás: május 10..

Exponenciális és logaritmusos kifejezések, egyenletek

A +Q töltés egy L hosszúságú egyenes szakasz mentén oszlik el egyenletesen (ld ábra ábra

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI EMELT SZINT Trigonometria

OPTIKA. Fotometria. Dr. Seres István

Az Ampère-Maxwell-féle gerjesztési törvény

Matematika (mesterképzés)

Sergyán Szabolcs szeptember 21.

Megoldás: Mindkét állítás hamis! Indoklás: a) Azonos alapú hatványokat úgy szorzunk, hogy a kitevőket összeadjuk. Tehát: a 3 * a 4 = a 3+4 = a 7

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Vektorok II.

Átírás:

Fények a számítógépes grafikában Dr. Mileff Péter A fények és árnyékok területe különösen frekventált terület a számítógépes vizualizációban. Az utóbbi években ez tovább fokozódott Oka a hardver folyamatos fejlődése A miért egyszerű: A valóságban is a tárgyak a megvilágításoktól és árnyékoktól nyerik el igazi jellegüket. Rendkívüli vizuális élmény: egy megfelelően elkészített megvilágítási rendszerrel segítségével Ebben ma a számítógépes játékok járnak élen úttörőként. Pl: Cryengine, Unreal Engine, Source engine, stb. 2 Fények a számítógépes grafikában 3 4 1

Fények a számítógépes grafikában A terület sok éves fejlődésen ment keresztül. Új, további egyszerűsített megvilágítási módszerek is kialakultak Oka: a mobil eszközök megjelenése pl. Real-Time Area Lighting Maga a tématerület így nagyon nagy 5 6 A megvilágítási rendszerek alapjai A megvilágítási modellek: A valóságot modellező, különböző megközelítésű leképzések Céljuk: a valós világéval megegyező hatású képi inger előállítása Ki kell számítani: modellezni kell a fénysugarak felületekről történő visszaverődését. Meg kell határozni a képernyő pixelben látható felületi pontokat és azok szem irányú sugársűrűségét (radiancia). A sugársűrűség meghatározása: az árnyalási egyenlet (rendering equation) megoldásával a számítógépes grafika ezen egyenlet megoldásával foglalkozik Közelítő megoldások A megvilágítási rendszerek alapjai A fények pontos fizikai szimulációja kimondottan számításigényes Oka: a fényforrásból érkező fotonok útját kellene végigkövetni a felületekről való visszaverődésekkel együtt. Ezt a megvilágítási forma a globális illumináció Jellemzője: a felületeken az indirekt megvilágítás hatása is érvényesül. közvetett, más felületekről visszaverődött 7 8 2

A megvilágítási rendszerek alapjai A megvilágítási rendszerek alapjai A valós idejű vizualizációban jelenleg nem tudjuk ezt szimulálni a jelenlegi hardver eszközök teljesítménye nem teszi még lehetővé. Egy mai játék sok objektummal és számos fényforrással dolgozik. A megjelenítésben jelenleg alkalmazott technikák így csak a lokális illuminációt alkalmazzák. Lokális illumináció: a pont színe a fényforrásokon kívül csak a lokális anyagjellemzőktől és geometriától függ, nem vesszük figyelembe a szomszédos tárgyakról érkező szórt fényt. Ezáltal csökken a realisztikusság, de az algoritmus hatékonysága és ezáltal a sebessége nő. 9 10 Lokális vs Globális illumináció A megvilágítási rendszerek alapjai A fejlődés iránya: A globális illumináció közelítése. Hamis globális illumináció. Fake Global Illumination Kiegészítik a lokális illuminációs modellt új algoritmusokkal Ezek képesek: a globális illuminációhoz hasonló eredményt elérni, a lokális illuminációtól lényegesen jobban közelítő megvilágítás Ilyen technikák pl. az Ambient Occlusion, Lightmapping, Radiosity. A lokális illumináció mellett a vezető grafikus motorok kezdik bevezetni Cél a látvány minőségi növelése 11 12 3

Fényforrás típusok Absztrakt fényforrás csoportok: a valóság egy speciális foton sugárzási esetét modellező típusok Pontszerű fényforrás (point a háromdimenziós világ egy pontjában található kiterjedése nincs A háromdimenziós tér egy tetszőleges p pontjában a sugárzási iránya p pontot és a fényforrás helyét összekötő vektor Az intenzitás a távolság négyzetének arányában csökken Pl. Az elektromos izzó - jó közelítéssel 13 14 Fényforrás típusok Irányfényforrás (directional végtelen távollevő sík sugárzónak felel meg. Az irány-fényforrás iránya és intenzitás a tér minden pontjában azonos. Pl. a Nap a Földről nézve jó közelítéssel irány-fényforrásnak tekinthető. Ambiens fényforrás (Ambient minden pontban és minden irányban azonos intenzitású. Spotlámpa (spot a virtuális világ egy pontjában található iránnyal és hatóterülettel rendelkezik. Pl. a zseblámpa spotlámpának tekinthető. 15 Megvilágítási modellek Feladatuk: a tárgyak árnyalásának kiszámítása A felületekre eső fények intenzitásának és jellemzőinek meghatározása Szórt háttérvilágítás (ambient az objektumok egyenletesen, minden irányból kapnak fényt Hatása a nappali fényviszonyoknak felel meg erősen felhős égbolt esetén. A számítógépes grafikában miért szükséges? a felhasználó az ábrázolt jelenet összes objektumának a megvilágítását szabályozhassa. A modellben nincs fényforrás: az objektumok saját fényüket bocsájtják ki Ez megfelel annak, hogy a jelenetet egy irányfüggetlen, szórt fény világítja meg. 16 4

Megvilágítási modellek Diffúz fényvisszaverődés (diffuse a matt felületek jellemzője a megvilágított felület minden irányban ugyanannyi fényt ver vissza Fényvisszaverődés fényes és csillogó felületekről (specular a sima felületekre általában az a jellemző, hogy rajtuk fényes foltokat is látunk melyek helye nézőpontunkkal együtt változik Ezek a felületek bizonyos irányokban visszatükrözik a fényforrásokat. Átmeneti eset: a matt felületekre jellemző diffúz és a tökéletesen (ideálisan) tükröző felületekre jellemző visszaverődés között Megvilágítási modellek Shininess komponens: speciális anyagtulajdonság a megvilágított anyagokon megjelenő spekuláris fényfoltok méretét és fényességét befolyásolja. Phong árnyalás ambiens, diffúz és specular összetevőkből 17 18 Megvilágítási modellek Árnyalási modellek Ezek alapján az árnyalási egyenletet általános alakban a következőképpen írhatjuk fel: I a az ambiens, I d a diffúz, I = I a + I d + I s I s pedig a specular intenzitások. Ezek összege megadja a végleges színintenzitást. Árnyalási algoritmusok, amelyek az árnyalási egyenletet közelítik valamilyen szempontból. A sebesség és a minőség mérlegelendő alternatívák így többféle algoritmus alakult ki különböző optimalizálási megoldásokkal Az ideális megközelítés a pixelenkénti árnyalás ahol minden pixelre külön ki kell számolni: a fény intenzitását a normálvektorokat egyéb jellemzőket 19 20 5

Árnyalási modellek Árnyalási optimalizálásának alapelvei: érdemes az árnyalási feladatot pixeleknél nagyobb egységekben megoldani kihasználni, hogy ha a szomszédos pixelekben ugyanazon felület látszik. Ezen pixelekben látható felületi pontok optikai paraméterei igen hasonlók normálvektora, megvilágítása, akár a látható színe is. Optimalizáció: vagy változtatás nélkül használjuk a szomszédos pixelekben végzett számítások eredményeit, vagy pedig az inkrementális elv alkalmazásával egyszerű formulákkal tesszük azokat aktuálissá az új pixelben. 21 22 Árnyalási modellek Konstans árnyalás: Síklapok árnyalására a leggyorsabb módszer. a sokszögekre csak egyszer számítja ki az absztrakt fényforrások hatását. Színintenzitás: a legegyszerűbb esetben a beeső fénysugár és a felületi normális szögének függvényében határozzuk meg Ha valamelyik pixelben a sokszög látszik, akkor mindig ezzel a konstans színnel jelenítjük meg. Erőssége: rendkívül gyors Hátránya: Az eredmény általában nem kielégítő, A mai napig számos valósidejű alkalmazás használja gyorsasága és egyszerűsége miatt. Árnyalási modellek Gouraud árnyalás: a háromszögek csúcspontjaiban értékeli ki a fényforrásokból odajutó fény visszaverődését a csúcspontot érintő háromszögek normálvektorának átlagát felhasználva Ezen modell segítségével kiszámoljuk a csúcspontoknál a szín intenzitást: Gradiens átmeneteket számítunk a vertex pontoknál. Ezután a háromszög belső pontjainak színét a csúcspontok színéből lineárisan interpolálja Erőssége: az interpoláció, emiatt gyors raszterizáció Hátránya: a gyengébb képminőség Erősen lokalizált fény esetén az alacsony poligonszámú modellek esetén a fényvisszaverődés nem szabályos, látszanak a vertex-ek menti interpolált értékek. 23 24 6

Árnyalási modellek Konstans vs Gouraud vs Phong árnyalás Phong árnyalás: A Goruaud árnyalástól abban különbözik: magát a normálvektorokat határozza meg lineáris interpolációval a csúcspont normál vektorok segítségével. A színek kiszámítása a színmodellnek megfelelően pixelenként történik. Éppen ezért a legszebb, de leglassabb árnyalási mód. A minősége nem függ a poligonok számától, a csillanás akár a poligon közepén is megjelenik. 25 26 Konstans vs Gouraud vs Phong árnyalás 27 28 7

Felületek normálisa A megvilágítási modellek szerves részét képezi a felületek normálisa. Célszerű tisztázni a felületi normális fogalmát Felületi normális: egy felület normálisa egy a felületre merőleges, egységnyi hosszúságú vektor. Gyakorlatban: A normálisokat vertex-ekhez és felületekhez szokás társítani. Ha egy modellen megvilágítást szeretnénk alkalmazni rendelkeznie kell kiszámított normálisokkal Mind vertex, mind pedig háromszög (face) szinten Felületek normálisa A normálisok kiszámítása egyszerű: A háromszög vertex-eiből képezni kell két darab oldalt és azok vektorait. A háromszög normálisa ilyenkor a két vektor vektoriális szorzata. 29 30 Normálist számító kód CVector3 Cross(CVector3 vvector1, CVector3 vvector2){ CVector3 vnormal; // The vector to hold the cross product } // The X value for the vector is: (V1.y * V2.z) - (V1.z * V2.y) vnormal.x = ((vvector1.y * vvector2.z) - (vvector1.z * vvector2.y)); // The Y value for the vector is: (V1.z * V2.x) - (V1.x * V2.z) vnormal.y = ((vvector1.z * vvector2.x) - (vvector1.x * vvector2.z)); // The Z value for the vector is: (V1.x * V2.y) - (V1.y * V2.x) vnormal.z = ((vvector1.x * vvector2.y) - (vvector1.y * vvector2.x)); return vnormal; Felületek normálisa Mikor számítsunk normálist? 1. A normálisok kiszámítását a modellek betöltésekor végezzük el 2. Már a modellező programban letárolva azt a vertex információk mellett a fájlban. Nagy modellek esetén célszerű fájlban tárolni egy-egy komplexebb modelleket alkalmazó számítógépes játék esetében a betöltési idő nagyon megnőhet. 31 32 8

Mai trendek Mai trendek A fejlődés iránya jól látszik: napjainkban a fix funkciós csővezeték leváltása folyik a modern API-k már nem támogatják a fix funkciós megoldásokat. A korábban alkalmazott gllight(), glmaterial(), stb függvények már csak legacy módban használhatók. Az OpenGL 3.0 verziótól mindent árnyalók segítségével kell megoldani Előnye: az árnyalók bevezetése újabb lehetőség kínálkozik a grafikai minőség javításában, a fények és árnyékok árnyalókkal való megvalósításával. A programozók testre szabhatják a vizuális megoldásaikat. Hátránya: a programozóra több, főleg matematikai feladat megvalósítása hárul. Két fő csoport az árnyalókkal készített algoritmusoknak: vertex és pixel alapú árnyalások Attól függően, hogy egy egyszerűbb, vagy egy pontosabb számítási modellt szeretnénk alkalmazni. Az árnyalási egyenletet az árnyalókban implementált algoritmusokkal közelítjük. 33 34 Alapelve: Vertex árnyaló alkalmazása a számításokhoz (Minden vertex-re egyszer hajtódik végre) A fény intenzitásértékeket a vertex-ekben számítjuk ki a kiszámított intenzitásértékeket interpoláljuk a vertex-ek között elhelyezkedő pontokban Lineáris interpoláció: gyors minőségileg nem a legjobb 35 36 9

Példa (egyszerű): egy irányított fényforrás alkalmazása Csak diffúz árnyalás megvalósítása Lambert-féle fény visszaverődési modell: a visszaverődött fény intenzitása a megvilágítási szög koszinuszával arányos A modellt leíró matematikai összefüggés (OpenGL Red Book): I o jelenti a visszaverődött intenzitást, L d a fény diffúz színe, M d a material diffúz összetevője cos() pedig a két vektor által bezárt szög. Jelen példában eltekintünk az anyagjellemzőktől A két vektor által bezárt szög meghatározása: a szög éppen megegyezik a felületi normális (N) és a vizsgált felületi pontból a fényforrásba mutató vektor skaláris szorzatával. 37 38 Vertex árnyaló: varying float Diffuse; void main(void){ // transform the normal into eye space and normalize it vec3 Normal = normalize(gl_normalmatrix * gl_normal); // OpenGL specification, the light is stored in eye space vec3 Light = normalize(gl_lightsource[0].position.xyz); Az árnyalóban megtörténik a Lambert-féle visszaverődés kiszámítása minden vertex-re. Árnyalás megvalósítása: Elsőként a modell normál vektorait a kamera (nézeti) térbe transzformáljuk. Majd a fény irányvektorát normalizálni kell: a skaláris szorzatban azonos mértékek kerüljenek alkalmazásra. A skaláris szorzat eredménye maga a diffúz összetevő. } Diffuse = max(dot(normal, Light),0.0); gl_position = gl_modelviewprojectionmatrix * gl_vertex; 39 40 10

Fragment árnyaló: Eredmény varying float Diffuse; void main(void){ // Multiply the light Diffuse intensity by a white color gl_fragcolor = Diffuse * vec4(1,1,1,1); } A vertex árnyalóból a diffúz összetevő átadásra kerül a pixel árnyalónak. A pixel végső színét a gl_fragcolor-ban kapjuk meg, az egyszerűség kedvéért egy fehér színt alkalmazunk az árnyalás alap színeként. 41 42 43 11