„Vizualizációs módszerek” változatai közötti eltérés
a (Új oldal, tartalma: „== Képalkotó módszerek == == Raszterizáció == == Sugárkövetés ==”) |
a (→Példák sztereoszkopikug megjelenítési technikákra) |
||
(8 közbenső módosítás ugyanattól a szerkesztőtől nincs mutatva) | |||
1. sor: | 1. sor: | ||
== Képalkotó módszerek == | == Képalkotó módszerek == | ||
− | == Raszterizáció == | + | Ha 3D-s objektumokat szeretnénk megjeleníteni, valamennyire is kötődve a valóságos fényviszonyok reprodukálására, akkor alapvetően két fajta megközelítésből kell választanunk. Az egyik a fizikailag intuitív sugárkövetés alapú módszerek családja. Itt lényegében az intenzitást sugarak terjesztik az objektumok, így például a képernyőt reprezentáló kamera felületei között. A másik módszer, a raszterizáció eleve kihasználja, hogy a képet diszkrét pixelekből álló 2D-s rácson akarjuk előállítani és a problémát lényegében a felületek vetületeinek kitöltésére transzformálja. |
− | == Sugárkövetés == | + | |
+ | === Raszterizáció === | ||
+ | Legyenek adottak a felületek, amelyeket le szeretnénk rajzolni a képernyőre. Ez nyilvánvalóan tartalmaz egy vetítést a 3D-s térből a 2D-s képfelületre. Ezt a lépést a raszterizáció a felületek (tipikusan poligonok) analitikus transzformációjával állítja elő. Poligonok esetén ez a csúcspontok levetítését jelenti. Ezek után két feladat van: előállítani pixelere diszkretizált képfelületen az alakzat körvonalát, majd kitölteni azt. | ||
+ | |||
+ | Négyzetrácsos képsík esetén mindkét feladat igen hatkékony algoritmusokkal valósítható meg. Az alakzat körvonalának előállítására a legegyszerűbb módszer a Bresemham-approximáció. Ez megadott két pont között sorban bejárja azokat a pixeleket, amelyeken a vonal áthalad. Az eljárás lényege, hogy a kindulási pontnak megfelelő pixelnél inicializál egy hiba változót, amit az egyenes meredekségének megfelelő értékkel növel. Amikor ez a hiba eléri azt a küszöböt, amikor az egyenes már a másik pixelhez van közelebb, akkor eggyel növeli az aktuális koordinátát és csökkenti a hibát. Az eljárás előnye, hogy lebegőpontos műveletek nélkül mnegvalósítható, olyan hatékonyan, hogy a belső ciklus léptetése csupűán néhány órajelet igényel. | ||
+ | |||
+ | Az alakzat körvonala után annak kitöltése úgy történhet, hogy meghatározzuk körvonal befoglaló téglalapját, és minden sorban a befoglaló széléről elindulva megnézzük, hogy mikor érünk el a körvonalhoz tartozó (előre megjelölt) pixelt. Ekkortól minden pixelt kitöltünk addig, amíg újra egy eleve már megjelölt pixelhez nem értünk. | ||
+ | |||
+ | A raszterizációs módszerek valóságot imitáló trükkjei ott jelennek meg, hogy milyen színértékeket rendelünk a kitöltés során a pixelekhez. Mivel poligonjaink vannak, ezek mindig háromszögekre bonthatóak (sőt, eleve így vannak tárolva). Minden a fényhatásokat jellemző paramétert a háromszögek csúcsaiban szokás eltárolni (a pozíción túl a felületi normális, adott pont beli szín, felületi textúra koordináta stb.), majd ezeket az értékeket interpolálni a háromszög felületén az aktuális kitöltési pontokra. | ||
+ | |||
+ | Igen egyszerű példaként, tekintsük a legegyszerűbb megvilágítást: ha egy háromszög a pontszerű fényforrás felé néz, akkor világosabb, ha elfele, akkor sötétebb. A legegyszerűbb esetben ezt a fényforrás irányának (l) és a felületi normálisnak (n) az irányával lehet elérni, Így az adott pixel intenzitás értéke a két normálvektor skalárisszorzata: | ||
+ | |||
+ | :<math>I = \mathrm{max}(0, \vec{n}\vec{l})</math> | ||
+ | |||
+ | ahol a skalárisszorzat negatív lenne, ott zérus lesz a megvilágítás és így az intenzitás is. | ||
+ | |||
+ | === Sugárkövetés === | ||
+ | A sugárkövetés a teljes megjelenítést a reprezentálni kívánt 3D-s rendszer koordinátarendszerében végzi, nem a képernyő terében, mint a raszterizáció. Bár a sugárkövető algoritmusoknak igen széles palettája van, a közös pont az, hogy valamilyen sugarakat használnak a fényesség transzportjának leírására a felületek és testek között. Az alábbiakban a legegyszerűbb és legintuitívabb eljárást ismertetjük. | ||
+ | |||
+ | Tekintsük a klasszikus optikát motivációnak: adottak fényforrásaink, ahonnan fotonok indulnak ki, amik egyenes vonalban terjednek addig, amíg valamilyen felületet el nem érnek. A felületen a tükröződés és törés törvényeinek megfelelően megváltoznak, majd haladnak tovább a következő felület felé. Mindegyik ilyen sugarat jellemezhetünk az általa szállított fényességgel, illetve hullámhosszal, de a legegyszerűbb esetben számolhatunk RGB intenzitásokkal is. | ||
+ | |||
+ | A legegyszerűbb sugárkövetési eljárás tehát úgy állítja elő a képet, hogy követi a fényforrásokból induló sugarakat egészen addig, amíg azok el nem nyelődnek valahol. Az elnyelő objektunok közül kitüntetett a kékpernyőt reprezentáló test: az ide eső sugarak alkotják a végén megjelenő képet. | ||
+ | |||
+ | Mivel a sugarak kontinuum kezelése lehetetlen a változatos alakú testek és határfelületek miatt, ezért lényegében egy hatalmas méretű Monte-Carlo eljárással van dolgunk: nagyon sok fénysugarat indítunk és a képernyőn integráljuk a beeső intenzitást. Ebből azonnal következik sokminden, a legfontosabb, hogy a fénysugarak számával csak lassan nő a képminőség, eleinte igen zajos. | ||
+ | |||
+ | A sugárkövető algoritmusoknak azonban határozott előnyeik vannak a raszterizációs technikákkal szemben: az átlátszó, áttetsző, illetve nagyon sok tükröző felületet tartalmazó rendszerek kirajzolása raszterizációs módszerrel igen bonyolult, ezzel szemben sugárkövetéssel teljesen intuitív a megvalósításuk. Hasonlóan, a fizikailag korrekt képalkotás (pl. diszkrét színek helyett spektrumokkal számolás és csak a legvégén RGB konverzió) is jól illik ehhez a megközelítéshez. A növekvő számítási kapacitás, valamint a kiterjedt optimalizációs trükkök segítségével manapság már ez a módszer is általánosan használható, főleg ha a képminőség az elsődleges. | ||
+ | |||
+ | == Színek reprezentálása == | ||
+ | Amit a szemünkkel különböző színeknek látunk, az a fizikailag az elektromágneses sugárzás intenzitás spektruma. A szemünkben három színérzékeny receptor-rendszer található, amelyek körülbelül a vörös-zöld-kék színekre érzékenyek, azonban ez az érzékenység nem diszkrét frekvenciát jelent, hanem egy kiterjedt tartományt. Nagyon durván mondhatjuk azt, hogy a szem érzékenysége a három színre három Gauss-függvénnyel jellemezhető. | ||
+ | |||
+ | Ha a azt akarjuk leírni, hogy mekkora intenzitású választ vált ki egy adott spektrum a három érzékelő-rendszerben, akkor az matematikailag a három súlyfüggvénnyel való konvolúciját jelenti a spektrummnak. Ez a három szám feleltethető meg a technikában használatos RGB koordinátáknak. | ||
+ | |||
+ | Számos probléma van itt azonban: a szem eltérően érzékeny a három tartományban érkező intenzitásra, maga az érzékelés tipikusan logaritmikus. A legnagyobb probléma, hogy a súlyfüggvények nem egészen ismertek, sőt, nem is teljesen pozitív definitek (azaz bizonyos frekvencián érkező sugárzás blokkoló hatás fejt ki egyik, vagy másik receptorokon), így a pusztán három számmal történő reprezentációban számos egyszerűsítő feltevés van, amelyek bizonyos helyzetekben problémákhoz vezethetnek. | ||
+ | |||
+ | ==Sztereoszkopikus megjelenítés== | ||
+ | A fentiekben részletezett mindkét módszer eredménye 2D-s kép. Azonban semmi nem akadályoz minket abban, hogy két képet készítsünk bármelyik eljárással ugyan arról a virtuális térről, úgy beállítva a nézeti képeket, hogy azok a két szemünk által látott képeknek felelhessenek meg. Ezek után csak az a kérdés, hogy hogyan tudjuk ezeket a képeket a szemünkre vetíteni, ezáltal teljes térhatást elérve. | ||
+ | |||
+ | ===Példák sztereoszkopikus megjelenítési technikákra=== | ||
+ | |||
+ | A sztereoszkopikus megjelenítés azokat a technikákat foglalja magába, amelyek lehetővé teszik két különböző sík kép szemünkbe juttatását. | ||
+ | |||
+ | A legrégebbi ilyen módszer az "anaglyph" eljárás, ahol két féle színnel (tipikusan piros-zöld) vetített képeket lehetett ezeknek megfelelő színszűrős szemöveggel nézni, így a szűrök mindig kiszűrték az egyik, vagy a másik képet az adott szem előtt. Ennek nyilván az a baja, hogy nem lehet sszíneket reprezentálni vele. | ||
+ | |||
+ | Az elvet tovább lehetett vinni úgy, hogy sűrűbben váltakoztak a spektrumban az egyik és másik szembe juttatható hullámhosszak, azonban az ehhez szükséges szűrők előállítása drága. | ||
+ | |||
+ | Teljesen más elven működnek a passzív sztereo megjelenítők, ahol a passzív jelző arra utal, hogy a szemüveg nem csinál semmit, abban csak két elforgatott beállítású polárszűrő található. A vetítőből egyszerre jön a kétféle polarizáltsággal a két féle kép, amely ismételten kiszűrődik a megfelelő beállítású polárszűrőn. Ennek az a hátránya, hogy normál papírral, vagy monitottal ilyen forrás nem állítható elő. Másik hátránya, hogy ha a megfigyelő elforgatja/eldönti a fejét, akkor széteshet a kép. | ||
+ | |||
+ | Az aktív sztereo megoldásnál a szemüvegek infravörös jelekkel szinkronizálva vannak a vetítőkkel. Két vetítő vetíti a két képet, a szokásos képfrissítésnél 2x magasabb frekvencián, 120 Hz-en. A szemüveg sorban kiválogatja a vetítőkből jövő képet jobb-bal-jobb-bal sorrendben. | ||
+ | |||
+ | Léteznek szemüvegmentes megvalósítások is. Ezek két nagy csoportra oszthatóak: vagy valamilyen módon követik a megfigyelő fejének/szemének mozgását, és ez alapján vetítenek két különböző képet, vagy egyszerre több különböző irányú képet vetítenek, függetlenül a szemlélő néőpontjától, de a kialakítás olyan, hogy adott pontból legerősebben csak az "odaszánt" vetület jut. | ||
+ | |||
+ | Ez utóbbak közül a parallaxis és lentikuláris módszert emeljük ki. A parallaxis módszernél az egymásba fésült jobb-bal kép előtt kis távolságra egy rács van, amely különböző szögekből nézve mindig kitkarja a nem abba szembe szánt képet vetítő pixeleket. Ez effektíve lefelezi a vízszintes felbontást, és viszonylag precíz pozíciókból nyújt csak jó minőségű térhatást. A legfejlettebb megoldások 30-40 különböző látószögből is el tudják ezt érni, de itt már nem 2 képet, hanem többet (18-at) fésülnek össze. | ||
+ | |||
+ | A lentikuláris lencséket használó rendszereknél pici lencsék sorozata van elhelyezve a képek előtt, amelyek különböző nézőirányok felé különböző képeket fókuszálnak. | ||
+ | |||
+ | [[Fájl:GlassFree3D.png]] | ||
+ | {{MSc záróvizsga}} |
A lap jelenlegi, 2011. június 13., 18:50-kori változata
Tartalomjegyzék
Képalkotó módszerek
Ha 3D-s objektumokat szeretnénk megjeleníteni, valamennyire is kötődve a valóságos fényviszonyok reprodukálására, akkor alapvetően két fajta megközelítésből kell választanunk. Az egyik a fizikailag intuitív sugárkövetés alapú módszerek családja. Itt lényegében az intenzitást sugarak terjesztik az objektumok, így például a képernyőt reprezentáló kamera felületei között. A másik módszer, a raszterizáció eleve kihasználja, hogy a képet diszkrét pixelekből álló 2D-s rácson akarjuk előállítani és a problémát lényegében a felületek vetületeinek kitöltésére transzformálja.
Raszterizáció
Legyenek adottak a felületek, amelyeket le szeretnénk rajzolni a képernyőre. Ez nyilvánvalóan tartalmaz egy vetítést a 3D-s térből a 2D-s képfelületre. Ezt a lépést a raszterizáció a felületek (tipikusan poligonok) analitikus transzformációjával állítja elő. Poligonok esetén ez a csúcspontok levetítését jelenti. Ezek után két feladat van: előállítani pixelere diszkretizált képfelületen az alakzat körvonalát, majd kitölteni azt.
Négyzetrácsos képsík esetén mindkét feladat igen hatkékony algoritmusokkal valósítható meg. Az alakzat körvonalának előállítására a legegyszerűbb módszer a Bresemham-approximáció. Ez megadott két pont között sorban bejárja azokat a pixeleket, amelyeken a vonal áthalad. Az eljárás lényege, hogy a kindulási pontnak megfelelő pixelnél inicializál egy hiba változót, amit az egyenes meredekségének megfelelő értékkel növel. Amikor ez a hiba eléri azt a küszöböt, amikor az egyenes már a másik pixelhez van közelebb, akkor eggyel növeli az aktuális koordinátát és csökkenti a hibát. Az eljárás előnye, hogy lebegőpontos műveletek nélkül mnegvalósítható, olyan hatékonyan, hogy a belső ciklus léptetése csupűán néhány órajelet igényel.
Az alakzat körvonala után annak kitöltése úgy történhet, hogy meghatározzuk körvonal befoglaló téglalapját, és minden sorban a befoglaló széléről elindulva megnézzük, hogy mikor érünk el a körvonalhoz tartozó (előre megjelölt) pixelt. Ekkortól minden pixelt kitöltünk addig, amíg újra egy eleve már megjelölt pixelhez nem értünk.
A raszterizációs módszerek valóságot imitáló trükkjei ott jelennek meg, hogy milyen színértékeket rendelünk a kitöltés során a pixelekhez. Mivel poligonjaink vannak, ezek mindig háromszögekre bonthatóak (sőt, eleve így vannak tárolva). Minden a fényhatásokat jellemző paramétert a háromszögek csúcsaiban szokás eltárolni (a pozíción túl a felületi normális, adott pont beli szín, felületi textúra koordináta stb.), majd ezeket az értékeket interpolálni a háromszög felületén az aktuális kitöltési pontokra.
Igen egyszerű példaként, tekintsük a legegyszerűbb megvilágítást: ha egy háromszög a pontszerű fényforrás felé néz, akkor világosabb, ha elfele, akkor sötétebb. A legegyszerűbb esetben ezt a fényforrás irányának (l) és a felületi normálisnak (n) az irányával lehet elérni, Így az adott pixel intenzitás értéke a két normálvektor skalárisszorzata:
ahol a skalárisszorzat negatív lenne, ott zérus lesz a megvilágítás és így az intenzitás is.
Sugárkövetés
A sugárkövetés a teljes megjelenítést a reprezentálni kívánt 3D-s rendszer koordinátarendszerében végzi, nem a képernyő terében, mint a raszterizáció. Bár a sugárkövető algoritmusoknak igen széles palettája van, a közös pont az, hogy valamilyen sugarakat használnak a fényesség transzportjának leírására a felületek és testek között. Az alábbiakban a legegyszerűbb és legintuitívabb eljárást ismertetjük.
Tekintsük a klasszikus optikát motivációnak: adottak fényforrásaink, ahonnan fotonok indulnak ki, amik egyenes vonalban terjednek addig, amíg valamilyen felületet el nem érnek. A felületen a tükröződés és törés törvényeinek megfelelően megváltoznak, majd haladnak tovább a következő felület felé. Mindegyik ilyen sugarat jellemezhetünk az általa szállított fényességgel, illetve hullámhosszal, de a legegyszerűbb esetben számolhatunk RGB intenzitásokkal is.
A legegyszerűbb sugárkövetési eljárás tehát úgy állítja elő a képet, hogy követi a fényforrásokból induló sugarakat egészen addig, amíg azok el nem nyelődnek valahol. Az elnyelő objektunok közül kitüntetett a kékpernyőt reprezentáló test: az ide eső sugarak alkotják a végén megjelenő képet.
Mivel a sugarak kontinuum kezelése lehetetlen a változatos alakú testek és határfelületek miatt, ezért lényegében egy hatalmas méretű Monte-Carlo eljárással van dolgunk: nagyon sok fénysugarat indítunk és a képernyőn integráljuk a beeső intenzitást. Ebből azonnal következik sokminden, a legfontosabb, hogy a fénysugarak számával csak lassan nő a képminőség, eleinte igen zajos.
A sugárkövető algoritmusoknak azonban határozott előnyeik vannak a raszterizációs technikákkal szemben: az átlátszó, áttetsző, illetve nagyon sok tükröző felületet tartalmazó rendszerek kirajzolása raszterizációs módszerrel igen bonyolult, ezzel szemben sugárkövetéssel teljesen intuitív a megvalósításuk. Hasonlóan, a fizikailag korrekt képalkotás (pl. diszkrét színek helyett spektrumokkal számolás és csak a legvégén RGB konverzió) is jól illik ehhez a megközelítéshez. A növekvő számítási kapacitás, valamint a kiterjedt optimalizációs trükkök segítségével manapság már ez a módszer is általánosan használható, főleg ha a képminőség az elsődleges.
Színek reprezentálása
Amit a szemünkkel különböző színeknek látunk, az a fizikailag az elektromágneses sugárzás intenzitás spektruma. A szemünkben három színérzékeny receptor-rendszer található, amelyek körülbelül a vörös-zöld-kék színekre érzékenyek, azonban ez az érzékenység nem diszkrét frekvenciát jelent, hanem egy kiterjedt tartományt. Nagyon durván mondhatjuk azt, hogy a szem érzékenysége a három színre három Gauss-függvénnyel jellemezhető.
Ha a azt akarjuk leírni, hogy mekkora intenzitású választ vált ki egy adott spektrum a három érzékelő-rendszerben, akkor az matematikailag a három súlyfüggvénnyel való konvolúciját jelenti a spektrummnak. Ez a három szám feleltethető meg a technikában használatos RGB koordinátáknak.
Számos probléma van itt azonban: a szem eltérően érzékeny a három tartományban érkező intenzitásra, maga az érzékelés tipikusan logaritmikus. A legnagyobb probléma, hogy a súlyfüggvények nem egészen ismertek, sőt, nem is teljesen pozitív definitek (azaz bizonyos frekvencián érkező sugárzás blokkoló hatás fejt ki egyik, vagy másik receptorokon), így a pusztán három számmal történő reprezentációban számos egyszerűsítő feltevés van, amelyek bizonyos helyzetekben problémákhoz vezethetnek.
Sztereoszkopikus megjelenítés
A fentiekben részletezett mindkét módszer eredménye 2D-s kép. Azonban semmi nem akadályoz minket abban, hogy két képet készítsünk bármelyik eljárással ugyan arról a virtuális térről, úgy beállítva a nézeti képeket, hogy azok a két szemünk által látott képeknek felelhessenek meg. Ezek után csak az a kérdés, hogy hogyan tudjuk ezeket a képeket a szemünkre vetíteni, ezáltal teljes térhatást elérve.
Példák sztereoszkopikus megjelenítési technikákra
A sztereoszkopikus megjelenítés azokat a technikákat foglalja magába, amelyek lehetővé teszik két különböző sík kép szemünkbe juttatását.
A legrégebbi ilyen módszer az "anaglyph" eljárás, ahol két féle színnel (tipikusan piros-zöld) vetített képeket lehetett ezeknek megfelelő színszűrős szemöveggel nézni, így a szűrök mindig kiszűrték az egyik, vagy a másik képet az adott szem előtt. Ennek nyilván az a baja, hogy nem lehet sszíneket reprezentálni vele.
Az elvet tovább lehetett vinni úgy, hogy sűrűbben váltakoztak a spektrumban az egyik és másik szembe juttatható hullámhosszak, azonban az ehhez szükséges szűrők előállítása drága.
Teljesen más elven működnek a passzív sztereo megjelenítők, ahol a passzív jelző arra utal, hogy a szemüveg nem csinál semmit, abban csak két elforgatott beállítású polárszűrő található. A vetítőből egyszerre jön a kétféle polarizáltsággal a két féle kép, amely ismételten kiszűrődik a megfelelő beállítású polárszűrőn. Ennek az a hátránya, hogy normál papírral, vagy monitottal ilyen forrás nem állítható elő. Másik hátránya, hogy ha a megfigyelő elforgatja/eldönti a fejét, akkor széteshet a kép.
Az aktív sztereo megoldásnál a szemüvegek infravörös jelekkel szinkronizálva vannak a vetítőkkel. Két vetítő vetíti a két képet, a szokásos képfrissítésnél 2x magasabb frekvencián, 120 Hz-en. A szemüveg sorban kiválogatja a vetítőkből jövő képet jobb-bal-jobb-bal sorrendben.
Léteznek szemüvegmentes megvalósítások is. Ezek két nagy csoportra oszthatóak: vagy valamilyen módon követik a megfigyelő fejének/szemének mozgását, és ez alapján vetítenek két különböző képet, vagy egyszerre több különböző irányú képet vetítenek, függetlenül a szemlélő néőpontjától, de a kialakítás olyan, hogy adott pontból legerősebben csak az "odaszánt" vetület jut.
Ez utóbbak közül a parallaxis és lentikuláris módszert emeljük ki. A parallaxis módszernél az egymásba fésült jobb-bal kép előtt kis távolságra egy rács van, amely különböző szögekből nézve mindig kitkarja a nem abba szembe szánt képet vetítő pixeleket. Ez effektíve lefelezi a vízszintes felbontást, és viszonylag precíz pozíciókból nyújt csak jó minőségű térhatást. A legfejlettebb megoldások 30-40 különböző látószögből is el tudják ezt érni, de itt már nem 2 képet, hanem többet (18-at) fésülnek össze.
A lentikuláris lencséket használó rendszereknél pici lencsék sorozata van elhelyezve a képek előtt, amelyek különböző nézőirányok felé különböző képeket fókuszálnak.