Játékfejlesztés
Időpontok 9:00-12:00 ??
Követelmények Órák látogatása Házi feladat
Honlap http://cg.iit.bme.hu/portal/oktatott-targyak/jatekfejlesztes
Realtime 3D rendszerek Hol használjuk? Milyen komponensekből állnak? Milyen lehetőségeink vannak?
Realtime 3D rendszerek Hol használjuk? Számítógépes játékok Virtuális valóság alkalmazások, virtuális laborok 3D Vizualizáció (térkép program, orvosi vizualizáció, látványtervező alkalmazások, oktató alkalmazások)
Játékmotorok Nagyon összetett, bonyolult szoftvercsomag Jól átgondolt (?), általános, újrahasznosítható szoftverkomponensek Játékobjektumok 2D / 3D modellek Fényforrások stb. Egyéb segédeszközök (tool-ok) Pályaszerkesztő (level editor) Modellező szoftver pluginek
Miről lesz szó? Modellezés – Blender ? Textúrázás – GIMP ? Animáció – Blender ? Grafika - Ogre3D Fizika – PhysX ??? GUI ??? ??? Hálózat ??? ??? Hangok ??? Engine - Unity
Miről lesz szó? Árnyalás, textúrázás, light map, árnyékok, bump map, shaderek (Cg) Csontváz animáció (sw / hw??) Arc animáció (sw / hw)?? Merevtest fizika (ragdoll??) Részecskerendszerek Speciális effektek…
Történelem
Történelem 1973 1981
1991, Wolfenstein3D
1993, Doom
1996, Quake
1997, Quake 2 I(x,V)=ILightMap+Ie(x,V)+ S I(L) fr(L,x,V) cos’
1999 Quake 3, Unreal Tournament
2004 Doom3 I(x,V)=Ie(x,V)+ S I(L) h(x, L) fr(L,x,V) cos’
2004 Half-Life 2 I(x,w)=Ie(x,w)+I(h(x,-w’),w’) fr(’,x,) cos’dw’
Játékfejlesztés szereplői Design Programozói részleg Művészeti részleg Hang részleg Menedzsment Minőség biztosítás Üzleti részleg Utóélet...
Design Vezető designer (Lead Designer) Játékmenet tervező Pálya/küldetés tervező Történet és párbeszéd tervező A játékot legelőször is meg kell tervezni. Ha a kiadó felvet egy ötletet, a fejlesztő cégnek egy vezető designert kell felmutatnia. Ez gyakran a fejlesztő cég vezetője, alapítója. Koordinálja a tervezőket, olyan mint egy rendező, nem kell az egész játékot neki megtervezni. Ő feladata, hogy eldöntse mi tartozik bele a játékba és mi nem. Játékmenet designer: általában programozói tapasztalata van. Lead designer, programozók és a pálya tervezők között helyezkedik el, koordinál. Pályatervező: a játékok kis talányok, megoldandó feladatok sorozatai. Ezek a tervezők gyakran programozók, scriptelők. Néha művészek, térképdarabokkal babrálva. Valamikor csak szövegesen terveznek. Történet és dialógus: egészen más, mint novellát írni. A játékok interaktív alkalmazások. Vezető designerrel sokat kell egyeztetni, hogy merre fusson a történet fonala, és a küldetés tervezőkkel is rengeteget kell egyeztetni, hogy mit lehet és mit nem, mit enged meg a technológia (pálytervező szoftver, scriptek stb.). Ezek a feladatkörök természetesen nem feltétlenül egy emberhez tartoznak, egy designer több részterület munkáját is lefedheti.
Programozói részleg Vezető programozó Játék mechanika/játékmenet programozó 3D grafikai programozó AI programozó GUI programozó Fizika Audio Eszköz programozó Pályaszerkesztő programozás Hálózat programozás Sokak szerint az igazi tervezők mégiscsak a programozók és a művészek. A tervezők tervezgetnek, de a végső játék mégiscsak úgy néz ki ahogy azt a programozók és a művészek megcsinálják. A végső kép a designerek, programozók és művészek kollektív látomásaiból alakul ki. A programozók feladata a játék kódjának elkészítése: 3d motor, hálózat, ai stb. Általában a kódolási munkák miatt csúsznak a projektek. Ez jellemző a szoftverfejlesztésre általában. Nincs elég biztonságos kódolási struktúra. Ez persze folyamatosan fejlődik... Vezető programozó: általában a legtapasztaltabb programozó, a legnagyobb kihívást jelentő programozási feladatokkal birkóznak meg. Általában ők a projekt hősei (John Carmack). Általában sok programozó dolgozik egy projekten, akár 25 ember. Valakinek át kell látnia ezeknek az embereknek a munkáját és jelenteni tud a projekt vezetőség felé. Ezek az emberek a technical director-ok. Általában kevesebbet kódolnak, többet menedzselnek. A technikal director lehet a vezető programozó is, de előfordul, hogy külön embert igényel (a vezető programozó túl elfoglalt, nem érdekli a menedzsment v. alkalmatlan a menedzsmentre). Játék mechanika: a tervezők által megálmodott mechanikát önti kód formájába. Ez a játék nagy vonalú lényegét jelenti, mi történik a játékvilágban, milyen objektumok, fegyverek vannak, mit lehet csinálni a játékban. (Játékmenet programozás). Közép szintű programozást jelent. Általában a designerekkel gyakran érintkezik, ő rakja bele a „játékot” a játékba. Szórakoztató munka lehet. 3D: legmegbecsültebb poszt, erős programozói, matematikai tudást igényel. Erről sokat tudnánk még beszélni, de találkoztunk már és találkozni is fogunk vele a tanulmányaink során. Mesterséges intelligencia programozás: folyamatosan erősödik, fejlődik. Script szerű működéstől a tanuló algoritmusokig. Az igény nagyban függ a játék műfajától. GUI: panelek, HUD elemek, menuk. GUI könyvtárak ismerete szükséges (ez lehet saját fejlesztésű). Sok gyakorlatot igényel, nehéz jól csinálni. Audio. Viszonylag kis volumenű munka a jól használható könyvtáraknak köszönhetően. Eszköz: (akár 50%-a a programozási feladatoknak ez lehet).
Művészeti részleg Art director Concept artist 2D artist/interface designer 3D modellező Karakter modellező Textúrázó Animáció / MOCAP Forgatókönyvezés Kezdetben a programozó és a művész egy ember volt. Később ezek a szerepek elváltak. Manapság igen nagy mennyiségű digitális tartalomra van szükség egy játék elkészítéséhez. A különböző művészek képességei, tudása, szerepe alapján a következőképpen csoportosíthatók: Art director: a művészeti részleg vezetője. Függőségeket átlátja, felel a megfelelő időzítésért. Másik még fontosabb feladata az, hogy biztosítsa, hogy minden egyes elkészült alkotás egy egységes egész szerves része lehessen, minőségben, stílusban. A legtöbb tapasztalattal, megbecsüléssel rendelkező művész a csapatban, aki tud bánni az emberekkel. Concept artist: régen egy-két vázlat elég volt ahhoz hogy érzékeltessük a fő karaktereket, helyszíneket. Manapság, amikor egy-egy hibás művészeti alkotás (modell- háttér, textúra) súlyos pénzeket és erőforrásokat jelent, egyre nagyobb hangsúlyt fektetnek a látványtervekre. A fekete fehér rajzokat kiszínezik, és felküldik egyeztetésre az art direktorok, designerek, producerek felé jóváhagyásra. Ha ez megvan, kezdődhet a tényleges „gyártás”. 2D: klasszikus rajz és festészeti tudással bír. Hátterek, portrék, plakátok, website grafika, install grafika, marketing grafika stb... (Photoshop) Interface: tapasztalt 2D grafikus, néha programozó v. designer. Nagyon fontos szerep. Az egész játék arculatát meghatározza. 3D modellező: programozó-művész hibrid jelent meg, aki megbirkózott a technikai feladatokkal amit a modellezés jelent. Régebben nagyon nehéz volt jó ilyen munkaerőt szerezni (átcsábítani a filmiparból v. kiképezni), manapság a tanfolyamoknak és a modellező programok egyszerűsödésének köszönhetően már jobb a helyzet, de továbbra is fontos részét képezik a művészeti részlegnek. Karakter: speciális 3D modellező, akinek jó érzéke van ehhez. Textúrázó: 2x-3x lassabb folyamat a modellezésnél. Az elkészült modellt kell kifesteni. Animáció: karakter és egyéb animáció. Az egyéb egyszerű (pl. szélmalomkerék). Karakterek: kulcskeret animáció vagy/és MOCAP. Lassú folyamat, nagy gyakorlatot igényel. Storyboarder: kisfilmek (cinematik) készítésénél játszanak szerepet, sokszor concept artist-ok.
Hang részleg Szinkron Hang effektek Zene Kezdetben csak hang effektek voltak: sípolás, prüttyögés, brummolás.... Manapság már 5.1-es dolby surround hangzás, fimliparban is tevékenykedő zeneszerzők művei, és hivatásos szinkronszínészek szólalnak meg. A jó szinkron fontos része egy játéknak, életet lehel bele. Szinkronrendezővel érdemes dolgozni, tudni fogja honnan szerezze be a megfelelő színészeket, gondoskodik arról, hogy minden időben és a megfelelő formátumban, minőségben kerüljön a fejlesztőkhöz. A hengeffektekért felelős hangmérnökök igazi varázslói annak, hogy mely hangmintákat kell hogyan torzítani, nyújtani, csavarni, hogy pontosan olyan hangot kapjunk, mint amilyet szerettünk volna. Tipikus outsourcing lehetőség. Zene: fontos érzelmi hátteret ad. Akár egy ember is elvégezheti a synthy zenét... Outsourcing
Management Line producer Associate producer Studio Head A legkritikusabb komponens. Hatalmas fejlesztési feladat egy játék elkészítése. Általában a vezetés megoszlik több ember között, akiknek megvan a saját területük. Line producer: apró feladatok tömkelegét végzi, a dokumentumok összeállításától, elküldésétől akár az ételrendelésig... Associate producer: a studio vezető alatt helyezkedik el a hierarchiában. Egy csapatot koordinál, határidőkre figyel, jelentéseket ír ilyesmi.. Head: azért felel, hogy a projekt profit-orientáltan fusson, ennek megfelelően tervezi és irányítja. Szinte kivétel nélkül veteránok, alapítók, akik egyszerre játék tervezők, szoftver fejlesztők és üzletemberek.
Minőségbiztosítás Kiadó minőségbiztosítási részlege Béta tesztelés Vezető Fő csapat Multiplayer csapat Friss csapat Kompatibilitási csapat Lokalizáció (pl. magyarítás) Béta tesztelés Béta tesztelő Béta tesztelő program manager Kritikus komponens. A legtöbb cégnek saját módszere van. Csak nagy cégeknél van értelme teljes munkaidőben foglalkoztatni ilyen embereket. Kis cégeknél gyakran a line és associate producereknak juthat ez a szerep. Minden jelentősebb játék átesik a kiadó saját belső tesztelési fázisain. Megfelelően rendezett hiba listát továbbítanak a fejlesztők felé. QA vezető: egy korábbi tesztelő, aki megfelelő képességekkel és tapasztalattal rendelkezik, ahhoz, hogy a tesztelési folyamatot irányítsa. Begyűjti a hibalistákat, rendszerezi, szortírozza, visszaküldi pontosításra. Fő csapat: elejétől a végéig jelen van. Friss csapat: szükség van friss szemekre, főleg a játék kiadása előtt. Béta teszt: fizetetlen vállalkozók, rajongók tesztje. Masszív multiplayer esetén különösen indokolt. Program manager: általában egy line v. associate producer veszi fel ezt a szerepet. A tesztelőkkel kommunikálni kell, stresszes munka.
Üzleti részleg Üzletfejlesztés Licenszelés Eladás/Marketing Kézikönyv Üzletfejlesztési igazgató(business developement executive) Studió vezető Ügyvédek Licenszelés Eladás/Marketing Kézikönyv Gyártás A játékfejlesztés nagy üzlet. Több bevétel származik belőle, mint a filmiparból, annak ellenére, hogy a fejlesztések nagy része nem nyereséges. Biz. Dev.: figyeli mi történik az iparban, melyek fejlesztés alatt álló játékok (melyek esetleg kiadót keresnek). Gyártás: CD sokszorosítás, nyomtatás, dobozolás
Egyébb Hardver gyártók Utóélet Hardver gyártók: folyamatos kapcsolat kell a hardver gyártókkal pl. NVidia Utóélet: javítások, forumok, support. MMO: folyamatos felügyelet, új tartalom, frissítések, külön fejlesztő csapatot igényel.
Játékmotorok Nagyon összetett, bonyolult szoftvercsomag Jól átgondolt (?), általános, újrahasznosítható szoftverkomponensek Játékobjektumok 2D / 3D modellek Fényforrások stb. Egyéb segédeszközök (tool-ok) Pályaszerkesztő (level editor) Modellező szoftver pluginek
Játékmotorok feladata, elvárt funkciók Rajzolás: Erőforrások kezelése Videokártya vezérlés Grafikai algoritmusok
Játékmotorok feladata, elvárt funkciók Animáció: Fizikai szimulációk Karakter animáció Részecskerendszerek Kamera mozgatás
Játékmotorok feladata, elvárt funkciók Multimédia: Hangok Átvezető videók
Játékmotorok feladata, elvárt funkciók GUI: Menük Eseménykezelés
Játékmotorok feladata, elvárt funkciók Mesterséges intelligencia: Állapotkezelés Útvonaltervezés
Játékmotorok feladata, elvárt funkciók Scriptelés: Játéklogika és objektumok viselkedésének egyszerű szerkesztése
Játékmotorok feladata, elvárt funkciók Többszálúság, párhuzamosság támogatása
Játékmotorok feladata, elvárt funkciók Procedurális tartalomgenerálás Globális illumináció Növényzet Városi környezet Véletlen pályák …
Játékmotorok feladata, elvárt funkciók Hálózati mód
Játékmotorok feladata, elvárt funkciók Multiplatform támogatás
Játékmotorok feladata, elvárt funkciók (Asset store:) Mások által gyártott tartalom könnyű elérhetősége Saját munka könnyű/egységes publikálása
Rajzolás (rendering) – erőforráskezelés Háromszög modellek, textúrák, shaderek betöltése fájlból A fentiek betöltése/törlése a processzor/videokártya memóriájába Erőforrás megosztás játékobjektumok között 200 egyforma orkhoz ne tároljuk a modellt 200-szor Rajzolási „célpontok”: textúrába rajzolás, bufferek
Rajzolás (rendering) – anyagok/shaderek Anyagjellemzőket a kód újrafordítása nélkül tudjuk szerkeszteni Pl. material script Pl. D3D Effects system Anyagok objektumokhoz rendelése Anyagok beállítása kirajzolás előtt
Rajzolás (rendering) – videokártya vezérlés CPU – GPU kommunikáció minimalizálása Rajzoló hívások, állapotváltozások minimalizálása Rajzolás sorok Rendezés material, textúra stb. szerint Példányosítás
Rajzolás (rendering) – láthatóság Ami nem is látszhat a képen, azt ne rajzoljuk ki Grafikai algoritmusok ennek támogatására
Render motor – példák Ogre3D Crystal Space Genesis3D Irrlicht Truevision3D …
Animáció – fizikai animáció Egy virtuális világnak nem csak valószerűen kell kinéznie, úgy is kell viselkednie! Merevtest mechanika Ütközésdetektálás és válasz Csuklók, motorok Ruha szimuláció Folyadék szimuláció Haj szimuláció
Fizikai könyvtárak – példák Bullet ODE – Open Dynamics Engine NVIDIA PhysX Box2D
Animáció – karakter animáció Morphing Bemenet: csúcspont koordináták kulcspontokban Csontváz animáció Bemenet: csont orientáció kulcspontokban Bőrözés Mi vezérli? Motion capture Fizika (pl. rongybaba) Inverz kinematika kombinálás (blending)
Audio Audio fájlok betöltése Lejátszás Hangok keverése Effektek Digitális jelfeldolgozás Távolság szerinti csillapodás, Doppler, visszhang 3D audio! (effektekkel)
Audio könyvtárak - példák OpenAL XAudio2 IrrKlang, FMOD, SDL_sound
GUI Menük, gombok, csúszkák, kijelölőgomb, választó gombok, állapot jelzők stb. Könyvtárak, pl: MyGUI CEGUI
AI Véges állapotgép Útvonaltervezés Stratégia tétlen/figyel/agresszív/menekül/… Útvonaltervezés Legrövidebb út keresése Formációk, együttműködés Stratégia Bonyolultabb AI algoritmusok
Szkriptelés Magas szintű viselkedés specifikáció Inkább tervezőknek mint programozóknak Interpretált nyelv, nincs előre fordítva Futási időben változtatható Könnyebben olvasható nyelvek Rövid kódrészleteknél ez OK
Szkript nyelvek Lua Python Egyszerűbb, gyorsabb, kisebb Kiválóan használható konfigurációra, jelenet felépítésre Python Sok funkció Jobb matek, szövegfeldolgozás
Tartalom Generálás Offline eszközök (pályaszerkesztőben) Futási időben Globális illumináció (fénytérképek - lightmap) Terep generálás (terrain) Növényzet Futási időben Részletességi szintek Véletlen pályaelemek
Hálózat Kommunikáció Extrapoláció/Predikció Interpoláció client/server Adat tömörítás Broadcasting Üzenetek elvesztésének kezelése, sorrendiség Extrapoláció/Predikció Interpoláció Példa könyvtárak: OpenTNL (Torque Network Library) RakNet
Játékmotorok Unreal 4 Unity 5 Valve Source 2 CryEngine Korona SDK Grafikailag sokat nyújt Lassabb tanulási görbe Sok beépített szolgáltatás (pl blueprint) Unity 5 Könnyű kezdés Nagy közösség, nagy asset store Plusz szolgáltatások fizetősek Valve Source 2 (stabil, gyors) Nem sok gyakorlati tapasztalatról tudunk CryEngine Grafikailag top Lassu tanulási görbe Korona SDK 2D Saját motor Új technológia Speciális szolgáltatások
Rakjuk őket össze A játékobjektumok minden alrendszerrel kapcsolatban vannak Az objektum reprezentációknak ezeket a funkciókat szét kell tudni választani Könnyebb bővíthetőség Komponens alapú modell (Unity)
Ismétlés
Számítógépes grafika feladata illúzió modellezés számok Virtuális világ modell képszintézis
Modellezés feladatai Geometria megadása Transzformációk pont, görbe, terület, felület, test, fraktálok Transzformációk lokális modellezési és világkoordináta rendszer Színek, felületi optikai tulajdonságok
Koordináta rendszerek Yh 1 y 1 r f w Xh x Descartes Polár Baricentrikus Homogén
Descartes koordináták x, y, z: tengelyek mentén elmozdulás kitüntetett origó x, y, z irányok Miért hasznos? eltolás: összeadás irány: 1 hosszú vektor közbezárt szög cosinusa: skalárszorzat (dot) merőleges: vektoriális szorzat (cross) y 1 x 1
Baricentrikus koordináták súlypont a, b, c súlyok: pont a síkon kitüntetett 3 csúcs Miért hasznos? mind pozitív: pont a háromszögön belül a súlyok használhatók a csúcsokhoz rendelt értékek közötti interpolációra homogén 2x súly: ugyanaz a pont 1 3 1
Felületmodellezők Test = határfelületek gyűjteménye Topológiai ellenőrzés (Euler tétel): csúcs + lap = él + 2
B-rep: Euler operátorok
Poligon modellezés Alapelemek modellezési példa1 : házikó modellezési példa2 : asztal
CSG Operátorok Modellezési példa : fogaskerék
Szabadformájú görbék Definíció kontrolpontokkal Polinom: x(t) = S ai ti, y(t) = S bi ti A polinomegyütthatók származtatása: Interpoláció Approximáció
Szabadformájú felületek: r(u,v) Definíció kontrolpontokkal r(u,v) = rv(u) = S Bi (u) ri (v) ri (v) = S Bj(v) ri,j r(u,v) = S S Bi (u) Bj(v) ri,j
Szabadformájú felületek 2D kontrolpont sereg: szorzatfelületek r(u,v) = S S Bi,j (u,v) ri, j = S S Bi(u) Bj(v) ri, j Súlyfüggények: Interpoláció, Approximáció
2.5 dimenziós módszerek Kihúzás: extrude Forgatás: rotate
Elemi affin transzformációk Eltolás: r = r + p Skálázás: x’= Sx x; y’= Sy y; Forgatás: Sx 0 0 Sy Fix pont: origó [x’,y’] = [x,y] r’ r cos f sin f -sin f cos f r’ = r Fix pont: origó
Összetett transzformáció Affin transzformáció: r’ = r A + p A: lineáris transzformáció forgatás, skálázás, tükrözés, nyírás, stb. p: eltolás Amíg lineáris transzformáció: konkatenáció r’ = (...(r A1) A2)... An) = r (A1A2... An )
Homogén koordináták legyen a 3 pont: [0,0], [0,1] és [1,0] (Descartes koordinátákban megadva) ekkora súlyok kellenek [x,y]-hoz Xh = x Yh = y w = 1 - Xh - Yh ha a súlyösszeg 1, különben ezek valahányszorosa (≠0) Yh w Xh
Homogén koordináták w helyett inkább adjuk meg h súlyösszeget homogén koordináták a síkon [Xh, Yh, h] ugyanez a pont 1 összsúllyal (/h): [Xh/h, Yh/h, 1] Descartesban: [Xh/h, Yh/h]
Mennyivel tud többet? szemléletesen h lehet 0 is! Xh, Yh pont irányában, 1/h-szoros távolságra h lehet 0 is! ideális pont végtelen távol Descartesban nem ábrázolható [0,0,0] pont nincs! eltolás, középpontos vetítés lineáris transzformáció [2. előadás]
Homogén koordinátás transzformációk Eltolás nem fér bele a 2x2-es mátrixba Dolgozzunk 3x3-as mátrixokkal A a11 a12 0 a21 a22 0 p1 p2 1 [r’, 1] = [r, 1] = [r A + p, 1] p [r’,1] = (...([r,1] T1) T2)... Tn) = [r,1] (T1T2... Tn)
Képszintézis = valós világ illuziója Tone mapping pixel Virtuális világ színérzet Valós világ Sugársűrűség = egységnyi látható felület egységnyi térszögbe kisugárzott teljesítménye
Irányok, irány halmazok: 2D 2D eset Irány: szög egy referencia iránytól Irány halmaz: szög [rad] egység kör íve Méret: ívhossz Teljes halmaz: 2
Irányok, irány halmazok : 3D , szögek 2 referencia iránytól Irány halmaz: térszög [sr] tartomány az egységgömbön Méret: tartomány területe Teljes halmaz: 4
Sugársűrűség (Radiancia): I(x,w) Egy egységnyi látható felület által egységnyi térszög alatt kibocsátott teljesítmény [Watt/ sr/ m2] w dw dF I(x,w) = dF / (dA cos dw) dA
Fény-felület kölcsönhatás w dw w’ x Visszaverődés valószínűség sűrűségfüggvénye: w(w’,x,w) dw = Pr{foton w dw -ba megy | w’-ből jön} w(’,x,) cos BRDF: fr (’,x,) [1/sr] = fr (’,x,)
Rendering egyenlet I(x,w)=Ie(x,w)+I(h(x,-w’),w’) fr(’,x,) cos’dw’ I(h(x,-w),w) h(x,-w) I(x,w) ’ ’ w x fr (’,x,) I = Ie + t I
Absztrakt fényforrások I(x,w)=Ie(x,w)+I(h(x,-w’),w’) fr(’,x,) cos’dw’ mezei jelöléssel Iout=Iin fr cos’dw’ ha csak egy irányból jön be fény, nem kell az integrál pontfényforrás irányfényforrás Iout=Iin fr cos’
Mért BRDF adatok reprezentálása 1 2 1 2 BRDF 5-változós függvény: 1 , 1 , 2 , 2 , Tábla méret: 100x100x100x100x10 = 109
Matematikai BRDF modellek Anyagcsaládra jellemző matematikai képlet 1 1 2 2 fr , BRDF paraméterek
BRDF tulajdonságok 1. Pozitív 2. Szimmetrikus (reciprok) - Helmholtz 3. Energia megmaradást nem sértő: a visszavert energia kisebb mint a beérkező a visszaverési valószínűség 1-nél kisebb fr (’,x,) = fr (,x,’)
Diffúz visszaverődés (Lambert) Radiancia a nézeti iránytól független Helmholtz: BRDF a megvilágítástól is független A BRDF konstans: q’ ’ fr (’,x,) = kd(l)
Lambert árnyalás Iout=Iin fr cos’ Iout=Iin kd cos’
Ideális visszaverődés Visszaverődés a tükörirányba A BRDF Dirac-delta: itt nem a fényforrás, hanem a BRDF miatt nem kell integrálni q’ Iout=Ireflect kr q’ w’ wr fr (’,x,) = d(w-wr ) kr /cos’
Spekuláris visszaverődés: Phong modell y q’ q’ = diffúz + Kell egy függvény, ami nagy y=0 -ra és gyorsan csökken Iout=Iin kscosny
Diffúz+Phong anyagok diffúz Phong diffúz + Phong n= 5 10 20 50
Árnyalásról még bővebben, később…
Textúra interpretációk kép a memóriában ugyanolyan mint a frame buffer pixel helyett texel adatok tömbje 1D, 2D, 3D tömb pl. RGB rekordok függvény diszkrét mintapontjai rácson rekonstrukció: szűrés függvény a 3D felületi pontok felett? R G B R G B R G B R G B R G B R G B
Textúra leképezés 3D felületi pont → 2D textúratérbeli pont u = T(x) tetszőleges f(x) tárolható textúrában f(x) = f(u) = f(T(x)) megkeressük a pont textúrakoordinátáját értéket kiolvassuk a textúra megfelelő texeléből árnyaláshoz a felületi jellemzőket tárolhatjuk BRDF paraméterek: kd, ks, shininess, kr normálvektor: bump map, normal map
Textúra leképezés T(x) legyen könnyen számítható csúcsokban adott modellezéskor u,v koordinátákat rendelünk a vertexekhez háromszögeken interpoláljuk a felületen NEM a képernyőn
Perspektív helyes interpoláció ha a világban lineáris, akkor a képernyőn nem textúráknál látszik persp. helyes textúrázás de ma már mélység szín
Textúrákról még bővebben, később…
Ismétlés vége