Texturování

Textura Wikibook nanesená na kouli
Obrázková (rastrová) textura
Procedurální textura

Texturování (mapování textur) je technika, která umožňuje dodat realistický vzhled virtuálnímu trojrozměrnému modelu. Znamená to, že určíme barvu a případně další optické vlastnosti v určitém bodě povrchu modelu. Algoritmus nanášení textur se označuje pixel shader a realizuje jej grafická karta.

Běžné typy textur

  • Diffuse textura – Kanály RGB obsahují základní obrazovou informaci při rovnoměrném nasvícení povrchu. Kanál A bývá používán jako alfa kanál určující hodnotu průhlednosti. Nižší hodnota obvykle znamená vyšší průhlednost. Tento typ je zodpovědný za základní vizuální podobu.
  • Normálová textura – Kanály RGB značí XYZ hodnotu normálového vektoru v tangent space. Příležitostně se využívá A kanál pro informaci o výšce – vyšší hodnota pak většinou odpovídá výstupku nad povrchem.
  • Specular (odrazová) textura – Kanály RGB označují barvu a intenzitu odlesku (přesněji: barevnou změnu vstupního světla) pixelu po nasvícení. Starší hry používají pouze jednokanálové odlesky.
  • Distortion / Refraction (textura lomu) – Používá se pro definici materiálů, které lámou světlo – např. nerovné sklo. Bývá zjednodušována jako zápis vektorů odchýlení pixelů obrazu za povrchem ve scéně v RGB, podobně jako normálové vektory zapsané v normálové mapě. Přechod paprsku světla lze ovlivnit distorcí odchylující zobrazený obraz za materiálem. Tento typ ukazuje průhlednost skrze materiál.
  • Occlusion (pohlcování světla) – Udává, do jaké míry je schopen být pixel nasvícen, opačně řečeno – kolik příchozího světla pohltí (neodrazí). Použitím těchto textur se obvykle zlepší vnímavost nerovností na materiálu.
  • Ambient (prostředí) – Bývá používána jako první v procesu nasvětlování a stínování. Obsahuje informaci o okolní scéně, nejčastěji zadána formou cube mapy, což je soubor 6 textur, kde každá textura zaujímá jednu stranu krychle. Použitím této složky lze docílit efektu „kovového“ odlesku materiálu. Tato technika se také nazývá environment mapping nebo reflection mapping.
  • Bump (hrubost materiálu) – Tato černobílá textura ve 3D světě zodpovídá za efekt nepravidelného povrchu. Má různou intenzitu černé od bílé po šedou, což způsobuje deformaci povrchu. Bílá zobrazuje "hrbol", černá "prohlubeň". Objekt ve skutečnosti ale deformován není. Jedná se o optický trik, díky kterému objekt nevypadá plochý, ale ale jako kdyby vyčníval do prostoru.

Vytváření textur

Z hlediska způsobu vytváření textury dělíme do dvou kategorií.

Rastrová textura

U rastrové textury je texturou předem připravený rastrový obrázek. Pro dobrý vzhled výsledné scény je důležitá dostatečná detailnost textury. Často používanými formáty pro ukládání rastrových textur jsou BMP, TGA a DDS (DirectDraw Surface). Výhodu této textury představuje snadná implementace ve vykreslovacím řetězci. Texturu lze komprimovat, vytvářet ji v různých rozlišeních, tzv. mippmaping. Další výhodu představu to, že pokud je u rastrové textury použita průhlednost, tzv. alfa kanál, lze vizuálně měnit geometrii předmětů.

Na druhou stranu je limitující předem dané rozlišení, tedy počet pixelů, z nichž je textura zestavena. Tento typ zabírá i značné množství paměti. Pokud je v paměti grafického akcelerátoru málo místa, musí se textury při vykreslování nahrávat z hlavní paměti počítače. To zatěžuje sběrnici nebo port a zpomaluje vykreslování. Problém lze z části řešit komprimací.

Procedurální textura

Je vyjádřena pomocí určité matematické funkce. Výhodou je, že nezáleží na rozlišení, procedurální textura se přizpůsobí velikosti renderovaného obrazu. Nevýhodou ale je, že ne všechny povrchy lze matematicky vyjádřit.

Procedurální textura vzniká za pomocí algoritmů založených zpravidla na faktálních technikách. Tento typ nalézá uplatnění pro výpočet rastrových obrázků před vlastním vykreslováním. Dále pro výpočet textur v reálném čase až při vykreslování. Parametry výpočtu textury se následně nastaví dle aktuální velikosti a orientace plochy, na niž je textura nanášena.

Mapování textur

Především u obrázkových textur záleží na zvoleném mapování. Tím se myslí to, jak se bude texturou zakřivený objekt potahovat. Většina vychází ze základních geometrických primitiv jakými jsou rovina, koule nebo válec. Proces umísťování textury na povrch tělesa bývá označován jako UV mapování. Při aplikaci každého materiálu na 3D objekty je třeba definovat dvě věci: jak velká má být daná textura na vybraných polygonech a jakou má orientaci a rotaci. V případě, kdy nejsou tyto parametry vhodně zvoleny, je dojem z vizualizace textury rušivý. Aby se tomuto zamezilo, používá se právě UV mapping pro aplikování textur na polygony 3d objektů. Zpravidla se jedná o kolmé promítnutí textury na plochu s velikostí UV – délka, šířka.

Při mapování může docházet k deformaci textury. Proto je u poměru stran UV – délka a šířka – nutné, aby se maximálně přibližoval poměru stran mapované textury.

Související články

Externí odkazy

Média použitá na této stránce

Procedural Texture.jpg
Autor: unknown, Licence: CC-BY-SA-3.0
Brick-wall-down-the-stairs.jpg
Autor: Adamantios, Licence: CC-BY-SA-3.0
Yet another brick wall.