Grafika 2. ZH A csoport

**1. Adja meg a modelltér jeleneteiből a raszteres kép előállításának lépéseit! Mit értünk képgenerálási pipeline alatt?**

A modelltér jeleneteiből a 2D-s raszteres kép előállítása több lépésben történik.

* Amennyiben a modelltér elemeit már definiáltuk, akkor a képelőállításhoz még:
* Meg kell adni a modelltér objektumait megvilágító fényforrásokat a világkoordináta-rendszerben.
* Rögzítenünk kell a nézőpontot vagy a kameraállást a világkoordináta-rendszerben, ahonnan a jelenetet szemléljük.
* El kell döntenünk, hogy a modelltér milyen objektumait kívánjuk szerepeltetni a generálandó képen. Ehhez egy ablakot (window) kell definiálni a világkoordináta-rendszerben, amelyen keresztül a nézőpontból a jelenetet látjuk. Azok az objektumok, amelyek ezen az „ablakon” kívül esnek, nem vesznek részt a képgenerálásban, azokat kivágjuk. A megjelenítésnek ezt a lépését ablakozásnak és kivágásnak (windowing and clipping) nevezik a szakirodalomban.
* A modelltérnek a jelenetben szereplő objektumait a világkoordináta-rendszerből affin és perspektív transzformációval egy normalizált ábrázolási térbe kell leképeznünk.
* Az ábrázolási térben meg kell határozni az objektumok takarási viszonyait, azaz a nézőpontból látható éleket és felületeket. Ez a látható kép meghatározó algoritmusokkal történik.
* A látható felületelemek képpontjaihoz ezt követően az árnyalási algoritmusokkal hozzárendeljük a fényviszonyoknak és a textúráknak megfelelő színeket.
* A raszteres képernyőn a kiválasztott ablaknak megfelelő pixelekre "vetítjük" a felületelemek képpontjainak színértékeit a monitor fizikai eszközkoordináta-rendszerében.

A vektorgrafikus objektumok definiálásával kezdődő és a képernyőn való megjelenítésükig tartó teljes folyamatot a szakirodalomban képgenerálási pipelinenak (viewing pipeline vagy rendering pipeline) nevezik.

**2. Mit nevezünk lokális és globális megvilágítási modellnek? Mutassa be az algoritmusok lényegét!**

A **lokális megvilágítási modellekben** az objektumok színét, világosságát más objektumok nem befolyásolják, ezek csak az objektumtól, a fényforrásoktól és a nézőponttól függnek. Ilyenek a háttérmegvilágítás, valamint a diffúz és csillogó fényvisszaverődés.

A **globális megvilágítási modellekben** az objektumok színe nem csak közvetlenül a fényforrásoktól, hanem a más objektumokon áthaladó, illetve a más objektumok által visszavert fénytől is függ. A modelltér objektumainak kölcsönhatását figyelembe kell venni a tükröződő fényvisszaverésnél, az árnyékképzésnél és az átlátszóság kezelésénél.

A z-buffer és scan-line algoritmus csak a diffúz és a spekuláris (tükrözött) visszaverődést, a pontszerű absztrakt fényforrásokat és az ambiens fényt kezeli.

A rekurzív raytracing a lokális megvilágítás kiterjesztése. Kezelni tudja a tükröződéseket és az átlátszóságot. A rekurzív sugárkövetést egyes szakirodalmak a lokális, míg mások a globális megvilágítási modellek közé sorolják. Ennek oka:

* sok renderelő program kiegészítésnek használja a lokális megvilágítási modellhez;
* működését tekintve inkább a globális megvilágítási modellek közé tartozik, mivel az objektumok színe egymástól is függhet.

**3. Milyen puffereket használ a z-buffer algoritmus? Ismertesse a z-buffer algoritmus működését! Mennyiben függ a z-buffer algoritmus a modelltér objektumainak alakjától?**

A z-buffer képpontosság-algoritmus előnye, hogy a szoftveres megvalósítás mellett a 3D-s gyorsítókártyákban is könnyen realizálható.

Az algoritmus két tárolóterületet használ:

* a frame-buffert, amely a képernyő pixeljeihez rendelt színértékeket tárolja, induló feltöltése a képernyő háttérszíne,
* a z-buffert, amely az egyes pixelekhez rendelt *z* értékeket tárolja a normalizált látótérből, kezdeti értéke a hátsó kivágósík *z* koordinátája (a maximálisan ábrázolható z-érték).

Az algoritmus lényege, hogy egy raszterponthoz tartozó vetítő sugáron kiválasztjuk az objektumoknak a nézőponthoz legközelebb fekvő döféspontját.

A z-buffer algoritmus a modelltér elemeinek formájától független, így háromszög, poliéder vagy görbült felületek láthatóságának megállapítására egyaránt alkalmas. Alkalmazhatóságának egyetlen feltétele, hogy az objektumok felületi pontjaiban a nézőponttól való *z* távolság és az árnyalási információk (szín, megvilágítás, textúrák) meghatározhatók legyenek.

**4. Mi az X-Windows System? Az X11 szabvány szerint mit tartalmaz a grafikus munkahely? Mi az X-szerver feladata? Mi a feladata a Windows Manager kliensnek?**

Az X-Windows System hardverfüggetlen, a raszteres grafikára alapozott ablakozó megjelenítés szabványa.

A grafikus munkahely az X11 szerint képernyőt (screen), billentyűzetet (keyboard) és mutatóeszközt (egér, tablet) kezelő architektúra, amelyen az X-szerver program fut. (Felhívjuk a figyelmet, hogy a szabvány terminológiája eltér pl. a LAN-nál megszokottól.) Ez lehet például egy PC, amely az X-szervert futtatja, vagy egy X-terminál, amely beégetett vagy programként futó X-szervert tartalmaz.

Az X-szerver feladata a grafikus megjelenítés (2D-s rajzolás), és a felhasználó inputjainak a fogadása. Az X-szerver hálózati kliensekkel, az úgynevezett alkalmazásokkal (applications) tarthat kapcsolatot, amelyek számára hozzáférést biztosít a grafikus munkahelyhez.

Az X11 felhasználói felülete a Windows-ból jól ismert ablakozó rendszer. Az ablakok méretezését és általában a menedzselését a Windows Manager program végzi, mely az X-szerver számára szintén egy kliens.

**5. Milyen szoftverelemekből épül fel egy grafikus rendszer szoftverarchitektúrája?**

Az egyes szoftverelemek fontosabb feladatai a következők:

* Operációs rendszer
	+ az ablakozó rendszer kezelése és a frame-bufferből való végső kirajzolás a képernyőre,
	+ grafikus I/O eszközkezelés.
* Alkalmazásspecifikus felhasználói program
	+ interaktív kapcsolattartás a felhasználóval,
	+ alkalmazási területtől függő funkciók,
	+ 3D modellezés,
	+ objektummozgatás, animáció,
	+ objektumstruktúrák kezelése (jelenetgráfok = scene graph),
	+ grafikus adatbázis-kezelés,
	+ jelenet előkészítése rendereléshez (fényforrás, kameradefiníciók stb.).
* Grafikus programcsomag
	+ geometriai alapelemek rajzolása,
	+ szín, megvilágítási, árnyalási modellek,
	+ transzformációk,
	+ speciális effektusok, textúrakezelés,
	+ görbe- és felületmodellezés és háromszögekre bontás.
* Grafikus kártya eszközkezelő programja
	+ hardverspecifikus illesztés,
	+ grafikus processzor vezérlése, adatok átadása.
* Grafikus processzor programjai (vertex és pixel shader)
	+ transzformációk és megvilágítási számítások (vertex shader),
	+ raszterizálás (pixel shader).