Počítačová 3D grafika
Počítačová 3D grafika (tzv. trojrozměrná grafika, 3D computer graphics) je v informatice označení pro speciální část počítačové grafiky, která pracuje s trojrozměrnými objekty. Převod 3D objektů do 2D zobrazení se nazývá renderování. Nejznámějším využitím počítačové 3D grafiky je vytváření animací (pro tvorbu filmů nebo počítačových her), avšak 3D grafika je využívána i ve vědě a průmyslu (například pro počítačové simulace nebo trojrozměrné zobrazení orgánů).
Historie
Výzkum v oblasti 3D grafiky probíhal současně na mnoha místech převážně ve Spojených státech amerických od 60. let 20. století.[1] Nejvýznamnější roli v tomto oboru sehrála Univerzita v Utahu, kde byl roku 1968 Davidem Evansem založen projekt pro rozvoj počítačové grafiky. Utažské univerzitě se podařilo pro tento program získat jak dostatek peněz, tak přední experty v oboru (na univerzitě pracoval mimo jiné i Ivan Sutherland) a v průběhu let univerzita dosáhla významných výsledků. Mezi důležité objevy provedené v rámci tohoto programu patří:
- Základní algoritmy a techniky renderování (například z-buffer, anti-aliasing, perspektivní zkreslení...)
- Mapování textur („pokrytí“ povrchu tělesa obrázkem)
- Algoritmy pro stínování těles – stínováním se rozumí vykreslení určitého místa na povrchu tělesa správnou barvou pro vytvoření iluze trojrozměrnosti. Nejjednodušší metoda (flat shading, konstantní stínování) vybarví celý polygon jedním odstínem barvy. Existuje ale několik metod pro simulaci zaoblených tvarů:
- Gouraudovo stínování je algoritmus vynalezený v roce 1971 Francouzem Henrim Gouraudem. Spočívá ve vytvoření iluze zaoblenosti interpolováním barvy podél povrchu.
- Phongovo stínování je pomalejší, ale přesnější technika vynalezená Buiem Tuongem Phongem. Iluze oblého povrchu je vytvořena interpolováním směru normály podél povrchu polygonu s nastavitelnou velikostí odrazivosti (lesklosti) materiálu. Tato metoda byla později optimalizována Jimem Blinnem, dalším pracovníkem utažské univerzity. V dnešní době jde o široce využívanou metodu.
- Edwin Catmull a Jim Clark vyvinuli metodu zaoblení povrchu tělesa rozdělením na menší po změnu reliéfu povrchu (Bump mapping) a další.
Několik výzkumníků univerzity později založilo významné firmy na poli počítačové grafiky, například Silicon Graphics (Jim Clark), Adobe Systems (John Warnock), Netscape (Jim Clark) nebo Pixar (Edwin Catmull). Neopomenutelným produktem utažské univerzity je nejslavnější model v historii počítačové grafiky, konvice z Utahu[2], kterou vytvořil Martin Newell.
Prvním filmem, kde se objevily 3D grafické počítačem generované obrázky, se v roce 1976 stal Futureworld[3] a prvním celovečerním 3D-animovaným filmem byl Toy Story z roku 1995.
Prvním českým 3D animovaným filmem byl v roce 2008 Kozí příběh - Pověsti staré Prahy.
Modelování
Pojmem 3D modelování se rozumí proces tvarování a vytváření 3D modelu, který může být reprezentován několika způsoby. Modely mohou být vytvořeny na počítači člověkem pomocí modelovacího nástroje, podle dat získaných měřicím přístrojem z reálného světa nebo na základě počítačové simulace.
Reprezentace těles
Asi nejobvyklejší reprezentace tvaru tělesa je tzv. hraniční reprezentace. Těleso je popsáno jako mnohostěn zcela určený svými hranicemi (stěnami, hranami a vrcholy). Téměř všechny počítačové modely, které se používají ve hrách a filmech, jsou hraniční modely.
V projektování a CAD se používá metoda CSG (konstruktivní geometrie pevných těles). Modely se konstruují z primitivních geometrických těles (koule, kvádr, válec, kužel, toroid) operacemi sjednocení, průniku a rozdílu. Pro zobrazování se tento model většinou převádí do hraniční reprezentace.
V objemové reprezentaci jsou tělesa definována jako množina bodových vzorků získaných např. lékařským tomografem nebo 3D scannerem. Pro zobrazování se používá metoda sledování paprsku, speciální algoritmy (které zviditelňují buď objem nebo povrch) nebo se tělesa převádějí do hraniční reprezentace.
Texturování
Jednou z významných činností při tvorbě 3D grafiky je vytváření a mapování textur. Textura je obrázek, kterým je „obaleno“ těleso; v nejjednodušší formě jsou textury používány pro obarvení modelu, ale na tělese může být více vrstev textur, které určují například i průhlednost či lesklost v daném bodě na povrchu. Pomocí textur je možné dosáhnout velmi dobrých výsledků a vysoké úrovně detailu při použití relativně jednoduchého modelu.
Každý bod na povrchu tělesa má potom kromě souřadnic X, Y, Z (které určují polohu bodu v prostoru) ještě 2 souřadnice označované většinou jako U a V, které určují umístění textury na daném místě. Proces umísťování textury na povrch tělesa se proto často nazývá „UV mapování“.
Animace
Pod pojmem „animace“ se ve 3D grafice nerozumí pouze samotný pohyb objektů, ale i definice zdrojů světla, úhlu pohledu kamery, barev a dalších prvků, které se mohou měnit v čase. Nejjednodušší metoda animace zvaná keyframing je založená na stejném principu jako klasická 2D počítačová animace. Spočívá v definování klíčových „mezních“ pozic, mezi kterými potom počítač vytvoří plynulý přechod.
Animace postav a mechanických zařízení je ve 3D grafice často založena na animaci kostry modelu. Stejně jako skutečný živý organismus i 3D model má kostru a jednotlivým částem modelu se určí, ke které kosti náleží. Pokročilé 3D grafické nástroje usnadňují animaci kostry díky technice zvané inverzní kinematika[4]. Na rozdíl od klasické animace kostry, kdy animátor určuje úhly všech kloubů, stačí při použití inverzní kinematiky určit pozici několika klíčových částí kostry a polohy kloubů jsou dopočítány algoritmicky.
Existuje mnoho dalších technik animace, které se využívají ve 3D grafice. Některé programy umožňují animaci na základě simulace fyzikálních jevů jako je gravitace, pohyb vodní hladiny a podobně. Pro velmi realistickou animaci postav se zase využívá technologie motion capture, kdy je pomocí speciálního zařízení zachycen pohyb živého herce a nahraná data jsou potom aplikována na 3D model postavy.
Renderování
Rendering je vykreslení dvourozměrného obrazu na základě modelu scény a dalších informací (polohy pozorovatele, textur, osvětlení a stínování). Simulují se zejména tyto vlastnosti obrazu:
- Stínování – kolísání barvy a jasu povrchu v závislosti na osvětlení
- Texturování – dodání realistického vzhledu povrchu modelu
- Bump mapping – metoda napodobující drobné nerovnosti povrchu
- Mlha – tlumení světla při průchodu atmosférou
- Stíny – důsledek zakrytí zdroje světla jiným objektem
- Měkké stíny – různé úrovně osvětlení způsobené částečně zakrytými světelnými zdroji
- Odraz světla – zrcadlové nebo velmi lesklé reflexe
- Průhlednost – šíření světla skrze objekty bez zkreslení
- Průsvitnost – šíření světla skrze objekty se zkreslením
- Refrakce – ohyb světla spojený se šířením světla skrze objekty
- Difrakce – ohyb, šíření a interference paprsků na hranách objektů
- Nepřímé osvětlení – plochy, které jsou osvětleny odrazy z jiných ploch, nikoli přímo od zdroje světla
- Kaustika – forma nepřímého osvětlení, světelné paprsky odražené nebo lomené nějakým objektem
- Hloubka ostrosti – objekty vzdálené od objektu v centru pozornosti se jeví nezaostřené
- Pohybové rozostření – rychle pohybující se objekty se jeví rozmazané
- Nefotorealistické zobrazování – vykreslování scény v uměleckém stylu, který má připomínat malování nebo kreslení
Pro realistický vzhled scény je potřeba simulovat především šíření a rozptyl světla v celé scéně (globální osvětlení). Dva nejznámější algoritmy jsou sledování paprsku a radiozita.
- Sledování paprsku je metoda založená na zpětném sledování paprsku vycházejícího z oka pozorovatele a jeho kolizí s tělesy ve scéně. Dobře simuluje ostré stíny, zrcadlové odrazy (i vícenásobné) a průhledné objekty. Algoritmus neposkytuje fotorealistický výstup a příliš se nehodí pro simulaci v reálném čase.
- Radiozita je metoda využívající fyzikální zákony o šíření energie v prostoru. Je vhodná k simulování nepřímého (odraženého) osvětlení ve scéně s matnými povrchy. Nedokáže pracovat s průhlednými objekty a zrcadly. Scéna musí být reprezentována polygonálním modelem.
Součástí fáze renderování je projekce ze tří do dvou rozměrů.
Reference
V tomto článku byly použity překlady textů z článků 3D computer graphics na anglické Wikipedii, 3D modeling na anglické Wikipedii, Polygonal modeling na anglické Wikipedii a Rendering na anglické Wikipedii.
- Zdroj informací o historii: CARLSON, Wayne. A Critical History of Computer Graphics and Animation [online]. The Ohio State University, 2003 [cit. 2009-01-04]. Dostupné v archivu pořízeném dne 2012-03-27. (anglicky)
- Další ikony počítačové grafiky. design.osu.edu [online]. [cit. 2009-08-06]. Dostupné v archivu pořízeném dne 2012-02-12.
- The World's First Computer Animation And Effects In Film: [online]. your3dsource.com [cit. 2009-01-04]. Dostupné online. (anglicky)
- Článek vysvětlující podstatu a problematiku inverzní kinematiky. www.3dsoftware.cz [online]. [cit. 2009-08-06]. Dostupné v archivu pořízeném dne 2006-02-26.
Související články
- Počítačová 2D grafika
- Vektorová grafika
- Bézierova křivka
- NURBS
- Software pro 3D grafiku
- Shader
- DirectX
- OpenGL
Externí odkazy
- Obrázky, zvuky či videa k tématu Počítačová 3D grafika na Wikimedia Commons