Firmy vyrábějící grafické čipy a karty mají zájem na tom, aby zákaznická veřejnost do jisté míry věděla, o co uvnitř jejich produktů jde. Důvod je prozaický: bez těchto znalostí mohou ve svých reklamách donekonečna inzerovat nové vlastnosti svých karet, ale málokdo si pod nimi něco konkrétnějšího představí. Hlubší znalost věci by jim však mohla také vadit – zákazník je pak někdy schopen odhalit, že za halasně propagovanou záležitostí je pouze nafouklá bublina.
Tak či onak, pokud se chceme v oblasti zobrazování trojrozměrných scén trochu orientovat, musíme zabrousit do oblasti prostorové geometrie, barev, (ne)schopností lidského oka a dalších intelektuálně stimulujících věcí. Začněme tím pojmem, který celý proces vytváření 3D obrazu zastřešuje.
3D potrubíObraz, který vidíte při hraní 3D her na svém monitoru, prošel před vlastním zobrazením několika fázemi. Tyto fáze bychom mohli přirovnat k jednotlivým pracovištím výrobní linky – na každém z nich se s polotovarem provede určitá operace a na výstupu je pak finální výrobek. „Lince“ pro výrobu 3D obrazu se říká 3D potrubí (3D pipeline). Níže uvedené schéma ukazuje příklad 3D potrubí. V praxi mohou jednotlivé kroky probíhat i v jiném pořadí, nicméně všechna 3D potrubí musejí začínat definicí scény, tj. toho všeho, co v obrazu vystupuje.
Programátoři vědí, že drtivá většina praktických problémů vyžaduje nasazení databází – ostatně, když se poněkud povznesete, zjistíte, že například taková adventure nebo RPG je v podstatě programem nad databází postav, lokací, úkolů a předmětů. Nuže, scéna je definována tzv. scénovou databází (scene database), která obsahuje matematickou reprezentaci jednotlivých virtuálních objektů vystupujících ve scéně a jejich vzájemnou polohu. Aby bylo možné na scénu „zaujmout pohled“, je ještě nutné znát pozici zorného bodu (view point), tj. bodu, odkud scénu pozorujeme. Objekty samozřejmě v průběhu vašeho hraní mění polohu, objevují se, mizí atd., takže se mění i obsah scénové databáze. Proces této aktualizace scénové databáze se nazývá administrace scény (scene management).
V dnešních hrách a 3D aplikacích jsou modely objektů (object models) obvykle definovány pomocí množiny mnohoúhelníků neboli polygonů – typicky trojúhelníků nebo čtyřúhelníků – představujících povrch daného objektu. Samotné polygony jsou pak definovány souřadnicemi svých vrcholů (vertex) v třírozměrném prostoru. Na dalším obrázku vidíte, jak se ze seznamu vrcholů dají vytvářet celé polygonové pásy (polygon strips) a síta (meshes), v nichž se využívá společných vrcholů, aby byl celkový počet různých vrcholů v daném modelu co nejnižší (a tím pádem definice modelu co nejjednodušší).
Chceme-li získat hladší reprezentaci objektu, musíme ho pokrýt větším počtem polygonů, čímž ovšem zvýšíme výpočetní náročnost objektu. Definice objektů pomocí polygonů má samozřejmě své meze – těžko je například použijete k reprezentaci vlasů nebo ohně. Nemohou také už ze své podstaty nic vypovídat o vnitřku objektu – popisují pouze jeho povrch.
K vyřešení těchto záležitostí bylo vyvinuto několik metod. Pro přímý popis zakřivených povrchů lze použít vhodné matematické postupy, například neuniformní racionální B-spline křivky (nonuniform rational B-splines – NURBS). Tento způsob je sice podstatně kompaktnější než dlouhý seznam polygonů, ale výpočetně velmi náročný – na čipy schopné renderovat scénu přímo z těchto funkcí si budeme muset ještě nějaký ten rok počkat. Pro převod funkcionálního modelu na polygonový se používá proces zvaný mozaikování (tesselation). Tuto konverzi lze provádět těsně před vlastním renderováním objektu a výsledný počet a velikost generovaných polygonů přizpůsobit velikosti objektu na obrazovce – vizuálně menší objekty vyžadují méně polygonů.
Pro popis objektů včetně jejich vnitřku se používají namísto polygonů třírozměrná pole tzv. voxelů, s nimiž zacházejí systémy pro objemové renderování (volume rendering). Ty jsou zapotřebí, pokud potřebujeme zobrazovat řezy pevnými objekty.
Zdroj: MicroDesign Resources