Szegedi Tudományegyetem Informatikai Tanszékcsoport tanév

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

A kurzusról. Pontok rajzolása. Szegedi Tudományegyetem Informatikai Tanszékcsoport

Szegedi Tudományegyetem Informatikai Tanszékcsoport tanév

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

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

Algoritmusok raszteres grafikához

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

Algoritmusok raszteres grafikához

Algoritmusok raszteres grafikához

Érdekes informatika feladatok

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

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

Számítógépes grafika

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

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 21./0. 3D grafika programozása OpenGL támogatással A 3D API

Grafikus csővezeték 2 / 77

OpenGL és a mátrixok

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

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)

Mesh generálás. IványiPéter

A számítógépi grafika elemei. 2012/2013, I. félév

Bevezetés a CGI-be. 1. Történelem

VII. Appletek, grafika

4. gyakorlat: interpolációs és approximációs görbék implementációja

Mintavételes szabályozás mikrovezérlő segítségével

1.4 fejezet. RGB színrendszerek

Képszerkesztés elméleti feladatainak kérdései és válaszai

A térinformatika lehetőségei a földrajzórán

Számítógépes grafika

Grafikus csővezeték 1 / 44

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Objektumok és osztályok. Az objektumorientált programozás alapjai. Rajzolás tollal, festés ecsettel. A koordinátarendszer

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás

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

Kérdés Lista. A Magyarországon alkalmazott rajzlapoknál mekkora az oldalak aránya?

Java grafikai lehetőségek

Képszerkesztés elméleti kérdések

Felhasználói kézikönyv - Android kliens

Bevezetés a programozásba II 1. gyakorlat. A grafikus könyvtár használata, alakzatok rajzolása

Helyzet: 1853, London, Soho, kolerajárvány, 700 halott Kérdés: honnan ered a járvány? Adatok: az elhunytak neve, lakhelye Megoldás dr.

Térinformatika. Térinformatika. GIS alkalmazói szintek. Rendszer. GIS funkcionális vázlata. vezetői szintek

Informatika érettségi vizsga

Operációs rendszerek. Tanmenet

A számítógépek felépítése. A számítógép felépítése

Operációs rendszerek. Az NT folyamatok kezelése

Architektúra, megszakítási rendszerek

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

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

A grafika programozás módozatai A képernyő koordinátarendszere A graphics.h header-fájl fontosabb függvényei Mintaprogram

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon)

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon)

Programfejlesztés az OpenGL segítségével (1. rész) A 3D programozás alapjai

A digitális képfeldolgozás alapjai

Számítógépes alapismeretek 2.

3.óra Beviteli perifériák. Perifériák: A szg.-hez csatolt külső eszközök. A periféria illesztőkön keresztül csatlakoznak.

Termék modell. Definíció:

SysCVideo: fiktív grafikus kártya SystemC modulként, SDL alapú megjelenítéssel

Operációs rendszerek. Az X Window rendszer

3D koordináta-rendszerek

C++ programozási nyelv Struktúrák a C++ nyelvben Gyakorlat

Modellek dokumentálása

Hogyan kell 3D tartalmat megtekinteni egy BenQ kivetítőn? Minimális rendszerkövetelmények 3D tartalom lejátszásához BenQ kivetítőn:

1. Digitális írástudás: a kőtáblától a számítógépig 2. Szedjük szét a számítógépet 1. örök 3. Szedjük szét a számítógépet 2.

Az interrupt Benesóczky Zoltán 2004

2. modul - Operációs rendszerek

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Farkas Gyula Szakkollégium Bit- és számtologatók. DirectX9 felhasználása számítógépes grafikában (bevezető egy primitív keretrendszer)

Programozás I. Grafika Eseménykezelés. Programozás I. 2. gyakorlat Interakció a grafikus felületen, tagfüggvények. Surányi Márton PPKE-ITK

A MIMIO interaktív tábla használata. Dr. Boda István DRHE,

Programozási nyelvek JAVA EA+GY 1. gyakolat

Tisztelt Felhasználó!

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./0. 3D grafika programozása OpenGL támogatással Transzformációk

QGIS tanfolyam (ver.2.0)

Tanulási segédlet 4. osztály

Képszerkesztés. Letölthető mintafeladatok gyakorláshoz: Minta teszt 1 Minta teszt 2. A modul célja

CAD Rendszerek I. Sajátosság alapú tervezés - Szinkron modellezés

Programozás alapjai. 5. előadás

FEJLETT GRAFIKAI ALGORITMUSOK

Térképismeret ELTE TTK Földtudományi és Földrajz BSc. 2007

SAMSUNG SSM-8000 szoftvercsomag

Feladatok. Tervek alapján látvány terv készítése. Irodai munka Test modellezés. Létező objektum számítógépes modelljének elkészítése

Informatika 1. Informatika el adás. Kovács Kristóf, Pálovics Róbert. Budapesti M szaki Egyetem november 13.

Programozási környezetek

components : IContainer dx : int dy : int tmidőzítő : Timer toolstripseparator1 : ToolStripSeparator tsmikilépés : ToolStripMenuItem

Kivételkezelés a C++ nyelvben Bevezetés

Szoftvertechnológia alapjai Java előadások

Mio Technology Limited C510, C710. Gyors használati utasítás a Mio Map v3 programhoz. Magyar

Raszter georeferálás QGIS-ben Összeállította: dr. Siki Zoltán verzióra aktualizálta: Jáky András

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Stack Vezérlés szerkezet Adat 2.

Az ErdaGIS térinformatikai keretrendszer

Direct3D pipeline. Grafikus játékok fejlesztése Szécsi László t03-pipeline

Minták automatikus osztályba sorolása a mintát leíró jellemzők alapján. Típusok: felügyelt és felügyelet nélküli tanuló eljárások

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

Az MS Word szövegszerkesztés modul részletes tematika listája

Nem roncsoló tesztelés diszkrét tomográfiával

Rajz 02 gyakorló feladat

BEÁGYAZOTT RENDSZEREK ALAPJAI. Grafikus benchmark alkalmazás

A Számítógépek hardver elemei

Átírás:

Szegedi Tudományegyetem Informatikai Tanszékcsoport Képfeldolgozás és Számítógépes Grafika Tanszék 2013-2014. tanév

A kurzusról Előadó és gyakorlatvezető: Németh Gábor Előadás (nappali tagozaton): heti 2 óra Gyakorlat (nappali tagozaton): heti 1 óra Követelmények: 1 kötelező program a meghirdetett témakörben 2 ZH (gép előtt)

Pontok rajzolása Bevezetés történeti áttekintés

Bevezetés Számítógépes grafika: Valós és képzeletbeli objektumok (pl. tárgyak képei, függvények) szintézise számítógépes modelljeikből (pl. pontok, élek, lapok).

Bevezetés Számítógépes képfeldolgozás: Képek analízise, objektumok modelljeinek rekonstrukciója képeikből (pl. légi-, űr-, orvosi felvételek kiértékelése, torzított képek helyreállítása).

Bevezetés

Bevezete s Tapasztalat, hogy ke pek forma ja ban az adatok gyorsabban e s hata sosabban feldolgozhato k az ember sza ma ra. Fejlo de s: foto za s televı zio sza mı to ge pes grafika http://www.thenorthernecho.co.uk Sza mı to ge pes grafika alapjai

Alkalmazási területek torcs.sourceforge.net felhasználói programok üzlet, tudomány tervezés, CAD játék, szimuláció technology.desktopnexus.com git-scm.com művészet, kereskedelem folyamatirányítás térképészet

Történeti áttekintés Kezdetben a képek megjelenítése teletype nyomtatókon történt. 1950: MIT: számítógéppel vezérelt képernyő SAGE légvédelmi rendszer (a programok képernyőről történő vezérlése fényceruzával)

Történeti áttekintés

Történeti áttekintés 1963: A modern interaktív grafika megjelenése. I. Sutherland: Sketchpad Adatstruktúrák, szimbólikus struktúrák tárolása, interaktív megjelenítés, választás, rajzolás

Történeti áttekintés 1964: CAD - DAC-1 (IBM) Autók tervezése (General Motors)

Történeti áttekintés Lassú a fejlődés, mert drága a hardver drága számítógépes erőforrások (nagy adatbázis, interaktív manipuláció, intenzív adatfeldolgozás) nehéz volt nagy programokat írni a szoftver nem hordozható

Történeti áttekintés 1960-as évek: Jellemző output eszköz az ún. vektor-képernyő (szakaszokat rajzol ponttól pontig) Részei: Képernyő processzor (DP) - mint I/O periféria kapcsolódik a központi egységhez Képernyő tároló memória a megjelenítéshez szükséges program és adat tárolására Képernyő - katód sugár cső

Történeti áttekintés

Történeti áttekintés utasítás koordináták elektromos jel képernyő processzor vektor generátor 30 Hz-es frissítés (foszforeszkáló képernyő - nem villog annyira) 1960-as évek vége: DVST (direct-view storage cube) - a látványt közvetlenül tároló cső: olcsóbb képernyő kisszámítógép felszabadul a központi gép

Történeti áttekintés 1968: A hardver képes a skálát változtatni, a képet mozgatni, vetületeket előállítani valós időben. 1970-es évek: Jellemző output eszköz a raszter képernyő (TV-technika, bit-térképes grafika) Bit-térkép (bitmap) képek reprezentálása bitmátrixszal

Történeti áttekintés A raszteres képernyők a grafikus primitíveket (pixel - képpont) ún. frissítő tárolóban tartják.

Történeti áttekintés mátrix raszter sorok képpontok Bit-térképek: 1024 1024 1 = 128 k bináris kép Pixel képek: 1024 1024 8 = 256 szürkeárnyalat vagy szín 1024 1024 24 = 2 24 szürkeárnyalat vagy szín Ma tipikus: 1080 1024 24 3,75 MB RAM

Történeti áttekintés A raszteres képernyő előnyei: Olcsó logikájú processzor (soronként olvas). A területek színekkel kitölthetők. Az ábra bonyolultsága nem befolyásolja a megjelenítést.

Történeti áttekintés A raszteres képernyő hátrányai: A grafikus elemeket (pl. vonal, poligon) át kell konvertálni (RIP - Raster Image Processor) A geometriai transzformációk számításigényesek.

Megjelenítés raszteres képernyőn Ideális vonalrajz Vektoros kép Raszteres kép Raszteres kép terület kitöltéssel

Történeti áttekintés 1980-as évekig: A számítógépes grafika szűk speciális terület a drága hardver miatt. Újdonságok: Személyi számítógépek (Apple Machintosh, IBM PC) Raszteres képernyők Ablak technika Eredmény: Sok alkalmazás Sok I/O eszköz (pl. egér, tábla) Kevesebbet használjuk a billentyűzetet (ikonok, menük,...)

Történeti áttekintés (szoftverek) Eszköz-függő fejlődés eszközfüggetlen Így lehet hordozható a felhasználói szoftver 1977: 3D Core Graphics System 1985: GKS (Graphics Kernel System) 2D

Történeti áttekintés (szoftverek) 1988: GKS - 3D PHIGS (Programmer s Hierarchical Interactive Graphics System) Logikailag kapcsolódó primitívek csoportosítása szegmensekbe, 3D primitívek egymásba ágyazott hierarchiája, Geometriai transzformációk, Képernyő automatikus frissítése, ha az adatbázis változik 1992: OpenGL (SGI)

Interaktív grafikai rendszerek Interaktivitás A felhasználó vezérli az objektumok kiválasztását, megjelenítését billentyűzetről, vagy egérrel...

Interaktív grafikai rendszerek Felhasználói modell adatbázis: Adatok, objektumok, kapcsolatok (adattömb, hálózati adatok listája, relációs adatbázis) Primitívek (pontok, vonalak, felületek) Attribútumok (vonal stílus, szín, textúra)

Interaktív grafikai rendszerek Az interaktívitás kezelése: Tipikus az esemény-vezérelt programhurok: kezdeti képernyő beállítás; while (true) { parancsok vagy objektumok választhatók; várakozás, amíg a felhasználó választ; switch (választás) case választott : a modell és a képernyő frissítésére; break;... case (quit) exit(0); }

A számítógépes grafika osztályozása I. Dimenzió szerint: 2D 3D Képfajta szerint: vonalas szürkeárnyalatos színes (árnyékolt)

A számítógépes grafika osztályozása II. Interaktivitás szerint: Offline rajzolás Interaktív rajzolás (változó paraméterekkel) Objektum előre meghatározása és körüljárása Interaktív tervezés Kép szerepe szerint: Végtermék Közbülső termék

Pontok rajzolása OpenGL Pontok rajzolása

Pontok rajzolása Rajzoljunk egy piros pontot a (10, 10), egy zöld pontot az (50, 10) és egy kék pontot a (30, 80) koordinátákba (az ablak 100*100-as méretű)

Színmodellek, színcsatornák RGBA színmodell: Minden színt négy komponens definiál (R, G, B, A) R - vörös (red) G - zöld (green) B - kék (blue) A - átlátszóság (alpha) Minél nagyobb az RGB komponens értéke, annál intenzívebb a színkomponens. Átlátszóság: 0.0: teljesen átlátszó 1.0: nem átlátszó Például: (0.0, 0.0, 0.0, 0.0) átlátszó fekete

Törlő szín Az aktuális törlőszín beállítására szolgáló függvény: void glclearcolor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) Alapértelmezett érték: (0.0, 0.0, 0.0, 0.0); GLcampf - float

Színbeállítás A rajzoló (vagy kitöltő) szín beállítása: void glcolor{34}{b s i f d ub us ui} (T components); b - byte s - single i - integer f - float d - double u - unsigned A színbelállítás a csúcspontokhoz van hozzárendelve. Például: glcolor3f(1.0f, 0.0f, 0.0f) piros glcolor3f(0.0f, 1.0f, 0.0f) zöld glcolor3f(0.0f, 0.0f, 1.0f) kék

Csúcsopontok megadása Csúcspont(ok) (vertexek) megadása: void glvertex{234}{sifd}( T coords ); Például: glvertex2i(20, 10) // a pont koordinátája (20,10)

Objektumok megadása Az objektumok megadása a glbegin(enum mode) és glend() függvények között történik. void glbegin(enum mode)... glend(); A mode értéke lehet pl. POINTS, LINES, POLYGON

Mátrix módok megadása Transzformációk: mátrixokkal vannak definiálva nézeti (viewing), modellezési (modelling), vetítési (projection) void glmatrixmode(enum mode) Ha a mode == GL PROJECTION, akkor a vetítési mátrix van érvényben. Például: glmatrixmode(gl PROJECTION) void glloadidentity(void) az érvényes mátrix az egységmátrix lesz.

Vetítési mátrix megadása (2D) Ortografikus vetítés: void gluortho2d(double left, double right, double bottom, double top) Ez a vetítés az objektum 2D merőleges vetítése adja meg a (left, right, bottom, top) téglalapra. Például: gluortho2d(0,100, 0, 100);

Pufferek törlése A pufferek tartalmának törlése: A pufferek: GL COLOR BUFFER BIT GL DEPTH BUFFER BIT GL STENCIL BUFFER BIT GL ACCUM BUFFER BIT Például: a szín buffer törlése glclear(gl COLOR BUFFER BIT)

Képernyő módok A képernyőmódot a glutinitdisplaymode(enum mode) függvénnyel lehet beállítani. Például: ha mode == SINGLE GLUT RGB, akkor az ún. egyszeresen pufferelt RGB módban specifikál ablakot.

Ablak az ab- void glutinitwindowsize(int width, int height): lak méretét definiálja. void glutinitwindowposition(int x, int y): az ablak helyét (bal felső sarkának pozícióját) adja meg. int glutcreatewindow(char* name): Megnyit egy ablakot az előző rutinokban specifikált jellemzőkkel. Ha az ablakozó rendszer lehetővé teszi, akkor name megjelenik az ablak fejlécén. A visszatérési érték egy egész, amely az ablak azonosítója.

Callback függvények void glutdisplayfunc(void(*func)(void)): Azt a callback függvényt specifikálja, amelyet akkor kell meghívni, ha az ablak tartalmát újra akarjuk rajzoltatni. Pl.: glutdisplayfunc(display); void glutkeyboardfunc(void(*func)(unsigned char key, int x, int y)): Azt a callback függvényt specifikálja, melyet egy billentyű lenyomásakor kell meghívni. A key egy ASCII karakter. Az x és y paraméterek az egér pozícióját jelzik a billentyű lenyomásakor (ablak relatív koordinátákban). Pl.: glutkeyboardfunc(keyboard);

Pontrajzoló program I. #include <GL/glut.h> void init(void) { glclearcolor(0.0, 0.0, 0.0, 0.0); // fekete a torloszin glmatrixmode(gl PROJECTION); // az aktualis matrix mod: vetites glloadidentity(); // a projekcios matrix az egysegmatrix lesz gluortho2d(0,100,0,100); // parhuzamos vetites specifikalasa }

Pontrajzoló program II. void display(void) { glclear(gl COLOR BUFFER BIT); // kepernyo torlese glbegin(gl POINTS); // pontokat specifikalunk glcolor3f(1.0f, 0.0f, 0.0f); // piros glvertex2i(10, 10); // piros pont glcolor3f(0.0f, 1.0f, 0.0f); // zold glvertex2i(50, 10); // zold pont glcolor3f(1.0f, 0.0f, 1.0f); // kek glvertex2i(30, 80); // kek pont glend(); // nem lesz tobb pont glflush(); // rajzolj! }

Pontrajzoló program III. void keyboard(unsigned char key, int x, int y) { switch(key); // billentyu kod case 27: // ha ESC exit(0); // kilepunk break; } }

Pontrajzoló program IV. int main(int argc, char** argv) { glutinit(&argc, argv); glutinitdisplaymode(single GLUT RGB); // az ablak egyszeresen pufferelt, és RGB modu glutinitwindowsize(100, 100); // 100x100-as glutinitwindowposition(100, 100); // bal felso sarok glutcreatewindow("3point"); // neve 3point init(); // inicializalas glutdisplayfunc(display); // a kepernyo esemenyek es glutkeyboardfunc(keyboard); //... billentyuzet esemenyek kezelese glutmainloop(); // belepes az esemeny hurokba return 0; }