Játékfejlesztés.

Slides:



Advertisements
Hasonló előadás
A felhasználói interfész A felhasználói interfész az a felület, amellyel a szoftver az ember felé „fordul”; amellyel a felhasználó nap mint nap találkozik.
Advertisements

A kártyanyomtatás fortélyai Csákvári Krisztián Kártya és címke gyártás
A szenior tudástőkére épített társadalmi innováció május 21. Miskolc ©Sárközy Erika.
Kik vagyunk mi? Magdics Milán Umenhoffer Tamás cg.iit.bme.hu.
Beruházási és finanszírozási döntések kölcsönhatásai 1.
Manhertz Gábor; Raj Levente Tanársegéd; Tanszéki mérnök Budapesti Műszaki és Gazdaságtudományi Egyetem Mechatronika, Optika és Gépészeti Informatika Tanszék.
Dr. Szűcs Erzsébet Egészségfejlesztési Igazgatóság Igazgató Budapest, szeptember 29. ÚJ EGÉSZSÉGFEJLESZTÉSI HÁLÓZATOK KIALAKÍTÁSA ÉS MŰKÖDTETÉSE.
Informatikai rendszerek általános jellemzői 1.Hierarchikus felépítés Rendszer → alrendszer->... → egyedi komponens 2.Az elemi komponensek halmaza absztrakciófüggő.
Kiszervezés szolgáltatói szemmel Tóth Zoltán november 9.
BEST-INVEST Független Biztosításközvetítő Kft.. Összes biztosítási díjbevétel 2004 (600 Mrd Ft)
avagy a háromszög technika
KÉPZŐ- ÉS IPARMŰVÉSZET ISMERETEK ÁGAZATI SZAKMAI ÉRETTSÉGI VIZSGA (középszintű) május-június.
Internet tudományos használata
ERASMUS+ DISSZEMINÁCIÓS PLATFORM
Nemzeti Audiovizuális Archívum
Nemzeti Erőforrás Minisztérium Oktatásért Felelős Államtitkárság
Adattárház fejlesztés módszertani tapasztalatok a HIFI-ben
FITLIFE BAY Fitness és Mozgásközpont
3D grafika összefoglalás
Logo Országos Számítástechnikai Tanulmányi Verseny
Microsoft Office Publisher

Az iskolai könyvtár szolgáltatás típusai
Az Európai Uniós csatlakozás könyvtári kihívásai
Magyar Tudományos Művek Tára
Programozás III. Gyakorlás.
Háttértárak karbantartása
TOP SO „Foglalkoztatási paktum Barcs és térségében” A Foglalkoztatási stratégia célrendszere tervezett programok BARCS VÁROS.
Követelményelemzés Cél: A rendszer tervezése, a feladatok leosztása.
CSOPORT - A minőségellenőrök egy megfelelő csoportja
SZÁMVITEL.
Végeselemes modellezés matematikai alapjai
Szervezetfejlesztés II. előadás
Munka és Energia Műszaki fizika alapjai Dr. Giczi Ferenc
Tömör testmodellek globális kapcsolatai
2. Koordináta-rendszerek és transzformációk
Projektmunka Földrajzolok
Az élesség beállítása vagy fókuszálás
Downstream Power Back Off (DPBO)
A számítógép operációs rendszere
Life is game! But do not only play with a game!
Algoritmusok és Adatszerkezetek I.
Körmendi Dániel MAS Meeting Scheduler.
Rendszerfejlesztés gyakorlat
CONTROLLING ÉS TELJESÍTMÉNYMENEDZSMENT DEBRECENI EGYETEM
Monitor(LCD).
Tilk Bence Konzulens: Dr. Horváth Gábor
Tájékoztató az Önkormányzati ASP Projektről
Informatikai gyakorlatok 11. évfolyam
AVL fák.
Szoftverrobotok vs biorobotok Bemutatkozik Albert, a vállalati robot
Környezeti Kontrolling
A csoportok tanulása, mint a szervezeti tanulás alapja
Sigfox technológia és hálózatok
Perspektív térábrázolás
SZAKKÉPZÉSI ÖNÉRTÉKELÉSI MODELL I. HELYZETFELMÉRŐ SZINT FOLYAMATA 8
A szállítási probléma.
(Geolevel Geoinformatikai és Szolgáltató Kft.)
A számítógép operációs rendszere
Együtt Nyírbátorért Helyi Közösség
Műveletek, függvények és tulajdonságaik Mátrix struktúrák:
Ki mit tud?- művészeti nap december 15. szombat
Mintaillesztés Knuth-Morris-Pratt (KMP) algoritmus
Tájékoztató az EPER pályázati folyamatáról
Áramlástan mérés beszámoló előadás
A geometriai transzformációk
A POWERPOINT 2007 újdonságai
Hagyományos megjelenítés
A SIKERTELENSÉG NÉHÁNY OKA
Az operációs rendszer definíciója
Előadás másolata:

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