:

Szerző: Bodnár Ádám

2000. március 21. 00:00

Cube Environment Mapping

A legújabb számítógépes játékokban használt leképezési technológiák egyre jobban megközelítik a komplex 3D-ábrázoló programokban használt algoritmusok életszerű minőségét. Az eljárások egyre bonyolultabbá válásával azok számításigénye is megnőtt, ezért a legtöbb funkciót ma már célhardver segítségével valósítják meg a programozók és a számítógépek. A legújabb grafikus gyorsító chipek játszva kezelik a megjelenítendő objektumok legtöbb tulajdonságát, legyen szó távolságról, színekről, fényekről vagy akár érdes felületekről. Ám a tükröződő felületű tárgyak pontos ábrázolása a GeForce256 megjelenéséig nagyon időigényes feladat volt.

A legújabb számítógépes játékokban használt leképezési technológiák egyre jobban megközelítik a komplex 3D-ábrázoló programokban használt algoritmusok életszerű minőségét. Az eljárások egyre bonyolultabbá válásával azok számításigénye is megnőtt, ezért a legtöbb funkciót ma már célhardver segítségével valósítják meg a programozók és a számítógépek. A legújabb grafikus gyorsító chipek játszva kezelik a megjelenítendő objektumok legtöbb tulajdonságát, legyen szó távolságról, színekről, fényekről vagy akár érdes felületekről. Ám a tükröződő felületű tárgyak pontos ábrázolása a GeForce256 megjelenéséig nagyon időigényes feladat volt.

A 3D-ábrázoló programok leképezési algoritmusainak megalkotásánal a legfőbb szempont az elkészült kép minél tökéletesebb élethűsége. Ennek érdekében a legkomplexebb eljárásokat vetik be, ám a képek elkészítési ideje nem teszi lehetővé az algoritmusokat real-time rendering feladatokra- legalábbis a mai otthoni számítógépeken semmiképpen sem. Ezzel szemben a játékprogramoknál az egyik legfontosabb szempont a leképezés sebessége, hiszen a "színpad", ahol az események zajlanak állandóan változik, és a változásokat azonnal meg kell jeleníteni -ellenkező esetben képregény a végeredmény és nem valósidejű játék. Ezért több próbálkozás is született afféle pszeudo-tükröződés eljárásokra, amelyek ilyen körülmények között is hatékonyan alkalmazhatók. Ezek közül most kettőt mutatunk be.

[oldal:Spherical Mapping]

A fénysugárkövetéses eljárást alkalmazó "ray-trace" programok a tükröződő felületű tárgyra eső minden fénysugarat megvizsgálnak, valamint a tárgy által visszavert sugarakat is. Látható, hogy a nagyszámú fénysugár vizsgálata borzasztóan időigényes feladat, ezért valós idejű leképezésre ez az eljárás nem használható. Ezért kidolgoztak egy módszert, ami sok esetben jól használható a szemünk becsapására, ez pedig a spherical environment mapping technológia. A módszer lényege, hogy a tükröződő felületű objektumot körülvevő "világot" egy bittérkép formájában egy gömbre feszítik rá, majd ezt a képet "rávetítik" a tárgyra. Ekkor a tárgyon megjelenik az őt körülvevő világ képe, kvázi "tükröződik benne". Ennek az eljárásnak két fő hibája van:

  • Az objektumot körülvevő világról készült kép, az "environment map" a gömbre feszítéskor szükségképpen eltorzul, és nem is lehet pontos. Egy négyszögletes kép gömbre feszítésekor a négyszög négy éle a gömbön egymás mellé esik, ami azt jelenti, hogy a világ egymástól a valóságban nagyon is távol eső részei a gömbön közel lesznek. Ezért a tükrözés pontatlan és torz lesz, legalábbis a tárgy azon részén, ahol a "fénykép" élei találkoznak.
  • Az adott "environment map" csak egy bizonyos nézőpontra használható. Amenyiben a tárgyat más nézőpontból vizsgáljuk, azt kellene tapasztalnunk, hogy a tárgyon látható tükörkép is megváltozik, hiszen teljesen más fénysugarak jutnak a szemünkbe, és a tárgyon más értelmet kap az elöl, a hátul, a fent, a lent, stb. Ám az "environment map" statikus mivolta miatt ez nem teljesül, a mozgással egyidőben frissíteni kellene azt, és ez nagyon időigényes feladat.

A bal oldali képen a gömb jól tükrözi környezetét, ám hátulról nézve láthatóak az environment map élei

Láthatjuk tehát, hogy a spherical environment mapping csak azokban az esetekben alkalmazható, ha a tükröző objektumot egy adott pontból nézzük, és az "environment map" torz részeit tükröző felületet nem látjuk.

[oldal:Cube mapping]

A cube mapping eljárás az előzőhöz merőben hasonló egyszerű megoldás erre a problémára. Itt a tárgyat körülvevő világ nem gömb, hanem egy kocka. Képzeljetek el egy tárgyat egy szobában, aminek a falaira felfestették a környező világot, és ezeket a képeket használják a tükröződés létrehozására.

Ennek a módszernek a használatával szinte tökéletesen pontos képet kaphatunk- minden nézőpontból! Látható, hogy a sphere mapping esetében egy "environment map" csak egy nézőpontra érvényes, ám a cube mapping esetében minden nézőpontra alkalmazható. A sphere mapping-gal járó fényképtorzulás sincs jelen, hiszen a felületek, ahová a fényképek kerülnek szintén sík négyszögek- egy kocka (cube) oldalai. Ráadásul ha előre látható, hogy a tárgy valamelyik oldalát nem látja majd a kamera, akkor az arra az oldalra eső "fotót" nem is kell leképezni, amivel memóriát és számítási időt lehet megtakarítani. És csak abban az esetben kell az "environment map"-et frissíteni, ha a környező világ megváltozik.

Ezzel az eljárással nem csak tükröződést hozhatunk létre, hanem akármilyen effektust. Ilyen pl. a crisp specular lighting. A crisp specular lighting eljárás lényege, hogy az "environment map"-be egy csillogás (is) kerül, ami a cube environment mapping technika segítségével tökéletesen pontosan jelenik meg a tárgy minden pontján. Szemben a korábbi vertex-alapú effektekkel ebben az esetben tökéletesen látható az egész csillogó felület minden pontja, hiszen a cube mapping a térgyakra nem felületek hanem pontok szerint kerül fel.

[oldal:Konklúzió és a GeForce256]

Lássuk be, hogy az itt leírt módszerek egyike sem valós tükröződést állít ellő. MIndösszesen arra alkalmasak, hogy nagyon gyorsan egy közel valós képet állítsanak elő. Nem igazi, hanem pszeudo-eljárások egy borzasztóan bonyolult és számításigényes feladat megoldására.

És hogy miért is írtam le mindezt? Azért, mert az nVidia GeForce256 GPU (és a jelek szerint minden követője) hardveresen kezeli a cube environment mapping technológiát, lehetővé téve ennek a villámgyors és mégis pontos effektusnak a valósidejű használatát a számítógépes játékokban és egyéb alkalmazásokban. Valószínű, hogy az eljárást hamarosan a programozók is elkezdik majd komolyan kihasználni, hiszen mind a DirectX 7, mind az OpenGL API-k képesek kezelni. Ismerve a GeForce chipben rejlő potenciált, és látva az egyre növekvő népszerűséget és támogatottságot várható, hogy hamarosan az alkalmazások egész sora fogja támogatni ezt a módszert, és mind szebb és szebb játékokat láthatunk majd.

A felhasznált fotók az nVidia oldaláról származnak

a címlapról