Aktuality  |  Články  |  Recenze
Doporučení  |  Diskuze
Grafické karty a hry  |  Procesory
Storage a RAM
Monitory  |  Ostatní
Akumulátory, EV
Robotika, AI
Průzkum vesmíru
Digimanie  |  TV Freak  |  Svět mobilně

Voxel Ray Casting: příští generace grafiky?

16.11.2009, Petr Štefek, článek
Voxel Ray Casting: příští generace grafiky?
O společnosti id Software nebylo dlouho slyšet a nyní k nám přichází s horkou novinkou v podobě vyvíjeného grafického enginu (respektive způsobu zobrazování) s názevm Voxel Ray Casting. Tento způsob zobrazování je do jisté míry revolučnější než ray tracing, takže si o něm pojďme popovídat blíže.
Voxel je stejně jako pixel složeninou dvou slov nebo významů, chcete-li. Pixel jsou složeninou slov „picture“ (obraz) a „element“ (základní součást) a dohromady tvoří základní součást obrazu neboli pixel. Voxel je na tom obdobně, jelikož jeho základ tvoří slova „volume“ (množství nebo objem) a „pixel“. Princip by se dal přiblížit na stavebnici Lego, kde lze vytvořit s pomocí základních jednoduchých kostiček téměř libovolný objekt či strukturu. Jste omezeni pouze jejich množstvím.

V případě voxelů je tento princip podobný, jelikož se jedná o specifické množství trojrozměrných bloků. Vše je tedy odlišné v případě polygonálních modelů, kde samotné trojúhelníky reprezentují pouze a jenom obal daného objektu.

Voxely jsou využívány hlavně v oblasti vizualizací ve zdravotnickém segmentu. Tam se uplatňují hlavně ve vizualizaci průřezových zobrazení orgánů a podobně. Vše je možné díky odlišnému principu, kde jsou základní voxely trojrozměrného charakteru. Dalším typickým využitím je ve specializovaných MRI skenerech.


Vizualizace ve zdravotnictví (voxely)

Samozřejmě toto řešení není samospásné, neboť v reálném světě nejsou objekty tvořeny voxely (neboli malými kostkami) a tak velmi těžko vytvoří přesný obraz reálného objektu. Nicméně pro nasazení v počítačových hrách nebo zdravotnictví je tato technika dostačující bez zřetelných limitů. Na dalším ilustračním obrázku vidíte objekt složený z voxelů. V reálné hře by samozřejmě byl takovýto objekt podstatně detailnější.

V klasickém herním enginu jsou také objekty reprezentovány skrze určitý počet polygonů, které také reprezentující nepřesný a pouze se přibližující obraz objektu. Pokud tedy chcete vytvořit co možná nejdetailnější objekt, musíte logicky tvořit z co možná nejmenších základních stavebních jednotek (v našem případě trojúhelníky nebo voxely). A čím vyšší je počet jednotek, tím vyšší jsou samozřejmě nároky na paměť.



Uveďme si jednoduchý příklad v případě mřížky s 1024 voxely, které zabírají 1024*1024*1024*4 (červená, zelená, modrá a alfa), a to znamená 4 GB paměti. Takovéto vytížení paměti je značné a pokud vezmeme v úvahu, že se nejedná o nějak zázračně vysoké rozlišení, máme na světě problém. Naštěstí pro tento problém existuje řešení pod názvem „octrees“ nebo „octal trees“.



Limitace podobného charakteru, kterou jsme si uvedli v názorném příkladu, je velmi vzácná. Například simulace povrchu je relativně jednoduchá, protože pro každou buňku mřížky je možné definovat jednu maximální hodnotu. My se ale potřebujeme zbavit voxelů, které v dané scéně nejsou viditelné a od toho tady máme Buffer Y. Ten obsahuje maximální hodnotu Y pro každou buňku, která se testuje s hodnotou jednotlivých buněk a odstraňují se ty s menší hodnotou než je hodnota uložená v bufferu. Tato metoda je velmi jednoduchá a efektivní.