fórum Světa hardware TV Freak - ikona fórum TV Freaku Digimanie - ikona fórum Digimanie Relaxuj - ikona Dance Radio - ikona
reklama

Grafické enginy her a reálný svět


V tomto článku se podíváme na enginy moderních her, porovnáme si je s reálným světem a také se softwarovým renderingem. Doba pokročila a dnešní hry již vypadají velice reálně. Čím se tedy liší od reálného světa a moderních rendering systémů?

Slovíčka pro začátek

Nejdříve si uvedeme krátký slovníček výrazů, které v tomto článku budu používat. Ti, kdo se v 3D pohybují, jistě už většinu těchto pojmů znají, a tak je klidně mohou přeskočit. Ostatní si však raději pročtěte alespoň některé fráze. Jde však pouze o opravdu stručný souhrn pojmů, které musíte bezpodmínečně znát pro orientaci v tomto článku, přičemž ty ostatní jsou vysvětleny dále.
  • Pixel = bod v obraze
  • Polygon = obecně jde o 2D mnohoúhelník. Ve hrách se často používá pouze trojúhelník, protože je pro grafickou kartu nejjednodušší zpracovávat.
  • Vertex = vrchol polygonu
  • Edge = hrana polygonu
  • Textura = bitmapa určená pro namapování na 3D model
  • RayTracing = metoda sledování paprsku
  • Render = v podstatě jde o vizualizaci dat, resp. přenesení modelu do 2D bitmapy. Existují softwarové rendery a hardwarové rendery. Softwarové jsou přesnější, počítá je procesor, ale trvají výpočetně mnohonásobně déle. Hardwarový render je použit pro náhledy a ve hrách.
  • Shader = program určený pro zpracování v grafické kartě
  • VertexShader = Provádí transformaci vertexů v jádře grafické karty. Například posouvá pozici vstupního vertexu. Nikdy nové vertexy však nevytváří!
  • PixelShader = Po provedení programu z VertexShaderu je aplikován PixelShader, který namapuje texturu a aplikuje různé efekty jako je BumpMapping apod. Stará se například i o odlesky atd.

Tak to je opravdu jen základní výčet pojmů. Pro naše účely však celkem dostačuje.


Polygonální model

Začněme pěkně popořádku. Drátový model je základní stavební kámen pro každou dněšní moderní 3D hru. V reálném světě jsou objekty tvořeny z atomů, molekul apod. Všechny tyto mikročástice se spojí dohromady a podle jejich vlastností získává objekt barvu, průhlednost atd. V hrách a obecně ve 3D grafice však takto tvořit samozřejmě nelze. Proto se vymyslel polygonální model. Polygonální model si lze představit jako různě v 3D prostoru poskládané trojúhelníky, které se svým uspořádáním snaží přiblížit reálnému objektu. Protože jsou však tyto polygony dost velké (u postav mají řádově několik centimetrů dlouhou hranu), tak se nemůžeme dostat na tak kvalitní model, jako je v reálném světě. Postupem času se sice modely hodně zjemňují (rozuměj zmenšují se ony trojúhelníky), ale stále se velikost polygonů od atomů liší o několik řádů.


Klasický polygonální model lidské hlavy


Vystínovaný polygonální model lidské hlavy


Vystínovaný a otexturovaný model lidské hlavy

Na prvním obrázku je vidět drátový model lidské hlavy. Všimněte si, že je opravdu tvořen z trojúhelníků, povšimněte si také jejich velikosti. Na druhém obrázku je ten samý model vystínován pomocí Gouraudova stínování. Na posledním obrzku je model již potažen texturou a opět vystínován pomocí Gouraud. Tento způsob vytváření 3D modelů se používá již delší dobu a aplikuje se dodnes (i když v poslední době se již často používá Phongovo stínování). Samozřejmě se používají jistá vylepšení pro vzhled, ale o tom si povíme něco později. Nyní berme v potaz pouze jednoduchý plošný model složený z trojúhelníků, který potáhneme texturou a vystínujeme pomocí velmi jednoduchého phongova stínování.

Vidíte, že model jako takový je velice jednoduchý a teprve textura mu dodává na realističnosti. Takto vypadaly hry v době DirectX 6, kdy ještě neexistovaly Pixel a Vertex Shadery. Maximum, co šlo u takovýchto modelů používat, byla průhledná textura, která se používala např. na roztrhané vlajky vlající na stožáru apod. Dnes je však situace zcela jiná a je třeba se podívat na další technologie, které se používají u moderních her.


Zvrásnění povrchu (BumpMapping a jemu podobní)

Tato technologie přišla prakticky jako první efekt do 3D her, který výrazně posunoval kvalitu obrazu kupředu. BumpMapping dokáže opravdu hodně, dokáže nasimulovat jemné zvrásnění povrchu, aniž by byl modifikován a zesložiťován polygonální model. Samotný BumpMapping se ve velké míře používá dodnes a to jak u her, tak u 3D grafiky jako takové.


Model bez BumpMapy


Model s BumpMapou

Všimněte si okrajů objektu, který je i při použití BumpMapy stále hladký. Nemodifikuje se tedy polygonální model, ale jde pouze o efekt. Také stín vržený objektem s BumpMappingem je hladký a odpovídá polygonálnímu modelu. Obvykle to není na škodu, protože BumpMapping se používá na detaily v podobě vrásek v obličeji, či lehce vystouplého písma SPZky. Odrůda BumpMappingu je NormalMapping, který je vlastně to samé, akorát vzniká trochu jiným způsobem. U NormalMappingu se textura vytváří z vysokopolygonálního modelu. Tato textura "normál" se poté namapuje na polygonální model s počtem polygonů i o několik řádů nižším než u původního modelu. BumpMapping a NormalMapping mají společnou nevýhodu. Zvrásnění vytvořené těmito metodami nevrhá na sebe (self-shadowing) stíny, a tak toto zvrásnění nevypadá moc reálně u povrchů, které jsou výškově hodně zvrásněné.

Použití Displacement

V 3D programech se dost často používá Displacement, který teseluje (zesložití) polygonální model před finálním renderingem a poté polygony posune ve směru normály. V tomto případě se již jedná o zesložitění polygonálního modelu, a tak se musí počítat s větší zátěží pro procesor.


Ukázka BumpMappingu

U her se však usídlila jiná technologie, která neteseluje objekty, ale využívá PixelShadery. Ve své podstatě jde o podobnou technologii jako u BumpMappingu, avšak jde na to trochu víc kulišácky. Sice stále nezvrásňuje povrch jako takový a pokud se použije na jednoduchý jeden polygon, bude to stále z pohledu ze strany pouze přímka. Parallax Occlusion Mapping, tak zní celý název této moderní technologie, která se začíná usídlovat v dnešních hrách (používá ji CryEngine 2, Unreal Engine 3 a ze zatím nepotvrzených zdrojů i Source Engine u Half-Life 2 - Epizoda 2). Parallax Occlusion Mapping využívá metodu sledování paprsku, kdy se vyšle paprsek od pozorovatele a jakmile dopadne na povrch s Paralax Occlusion Mappingem, tak se aplikují transformace, resp. jde o čisté posunutí tohoto pixelu o nějakou hodnotu závislou na textuře Parallax Occlusion Mappingu.



Na předchozím schémátku je znázorněno, jak vzniká Parallax Occlusion Mapping ve 2D prostoru. Hlavní výhodou je fakt, že Parallax Occlusion Maping dokáže vrhat stíny sám na sebe (self-shadowing). Díky tomu se dá použít i na povrchy hodně zvrásněné, aniž by nevypadaly reálně. Často se tato technologie používá na dlažbu, kamennou cestu, cihlovou zeď bez omítky apod.


Ukázka Parallax Occlusion Mapingu v demu ATI - ToyShop

V demu od ATI ToyShop se zaměřili právě na Parallax Occlusion Mapping, který zde použili na kde co. Nejvýraznější je použití na kamenném chodníku, který se tváří skutečně hodně prostorově a prakticky nemáte šanci poznat, že se nejedná o čistě polygonální model, ale o PixelShader efekt.

Autor: Pavel Kovač

Členem redakce SHW je od léta 2005. Ani 3D grafika a vše s ní spojené mu není cizí. Od roku 2007 vyučuje 3ds MAX (kurz zaměřený na osvětlení, GI a speciální efekty). Je studentem ČVUT Fakulty Strojní. Rád se odreaguje jízdou na kole.

 poklona...Wlcheck13.2.200807:48
 Skutocne pekneYaDo13.2.200808:00
+ Re: Skutocne peknePavel Kovač13.2.200808:43
 Ray-tracingBoguš13.2.200808:49
+ Re: Ray-tracingJan Novák13.2.200817:02
 Crysis...Mr.DiGi13.2.200808:53
+ Re: Crysis...rudidlo13.2.200809:36
+ Re: Crysis...Pavel Kovač13.2.200809:51
++ Re: Crysis...rudidlo13.2.200810:06
++ Re: Crysis...Pavel Kovač13.2.200810:12
+++ Re: Crysis...rudidlo13.2.200810:27
+++ Re: Crysis...Squad_leader14.3.200814:59
++ Re: Crysis...Mr.DiGi13.2.200810:32
+++ Re: Crysis...rudidlo13.2.200810:52
+++ Re: Crysis...lia13.2.200812:36
+++ Re: Crysis...rudidlo13.2.200813:22
++ Re: Crysis...Squad_leader14.3.200814:54
+ Re: Crysis...Blayder22.4.200821:29
 Chyby ve stinovaniXb00113.2.200809:51
+ Re: Chyby ve stinovaniPavel Kovač13.2.200810:00
+ Re: Chyby ve stinovaniDavesMan13.2.200810:26
 a co takhle lighsprint?bublous13.2.200810:21
+ Re: a co takhle lighsprint?Pavel Kovač13.2.200810:32
 Link pro doplneni vzdelani..AX13.2.200810:22
+ Re: Link pro doplneni vzdelani..Pavel Kovač13.2.200810:29
++ Re: Link pro doplneni vzdelani..Boguš13.2.200810:42
++ Re: Link pro doplneni vzdelani..Boguš13.2.200810:43
++ Re: Link pro doplneni vzdelani..Boguš13.2.200810:44
+++ Re: Link pro doplneni vzdelani..Pavel Kovač13.2.200810:49
+++ Re: Link pro doplneni vzdelani..rudidlo13.2.200810:55
++ Re: Link pro doplneni vzdelani..xR-13.2.200812:48
++ Re: Link pro doplneni vzdelani..xR-13.2.200812:57
++ Re: Link pro doplneni vzdelani..Boguš13.2.200813:32
+ Re: Link pro doplneni vzdelani..Boguš13.2.200810:39
 fyzika ?Lar13.2.200810:37
+ Re: fyzika ?Pavel Kovač13.2.200810:43
+ Re: fyzika ?rs16.2.200802:50
 Crysisuživatel13.2.200811:45
+ Re: Crysisrudidlo13.2.200813:23
++ Re: CrysisX1950pro13.2.200821:25
+ Re: Crysissawer16.2.200800:24
+ Re: Crysis5h1nj116.2.200814:19
 Výborný článekpaulie z malého města13.2.200812:17
+ Re: Výborný článekxpavel1.4.200811:48
 Pěkné, čtivé a příjemně napsanéMechanus13.2.200814:16
 Nohycovex13.2.200814:16
+ Re: Nohycovex14.2.200810:07
+ Re: NohyOrgic14.2.200814:25
 hmsd13.2.200819:50
+ Re: hmPavel Kovač13.2.200819:53
++ Re: hmMr.DiGi13.2.200822:20
+ Re: hmZylTec13.2.200820:07
+ Re: hmPavel Kovač13.2.200820:21
+ Re: hmZylTec13.2.200820:57
 Nedočetl jsem toSkutečný expert14.2.200811:08
+ Re: Nedočetl jsem toPavel Kovač14.2.200811:29
++ Re: Nedočetl jsem toMiCRO ^_~17.3.200823:46
+ Re: Nedočetl jsem toobyčejný čtenář14.2.200811:39
+ Re: Nedočetl jsem toceo14.2.200812:02
+ Re: Nedočetl jsem toJohnyz00716.2.200810:35
+ Re: Nedočetl jsem toFilipZalud17.2.200816:10
+ Re: Nedočetl jsem tosantex18.2.200822:42
+ Re: Nedočetl jsem toRas10.3.200807:36
+ Re: Nedočetl jsem tomuofid1.4.200805:30
+ Re: Nedočetl jsem toRas1.4.200807:58
+ Re: Nedočetl jsem toRas1.4.200808:02
+ Re: Nedočetl jsem torudidlo1.4.200808:12
 Relief Mappingfilky14.2.200813:35
+ Re: Relief Mappingfilky14.2.200813:40
+ Re: Relief Mappingboro__21.2.200800:44
 normal mapyplukovnik16.2.200813:16
 Disperzegrc16.2.200815:02
+ Re: DisperzePavel Kovač16.2.200817:11
+ Re: Disperzegrc17.2.200817:00
+ Re: DisperzePavel Kovač17.2.200817:16
+ Re: Disperzeplukovnik17.2.200817:26
 fajn clanokBoris Kudlač18.2.200814:37
 ...čavoK levaP18.2.200816:49
 BudoucnostLecopivo19.2.200818:16
 drobna opravaboro__21.2.200800:55
 vyjmenovaná slovaAdler24.2.200823:16
+ Re: vyjmenovaná slovaRas10.3.200807:38
+ Re: vyjmenovaná slovaWerym1.4.200814:27
 hustytrollman26.2.200823:20
 Fajn článokMiCRO ^_~18.3.200800:10
Zobrazit komentáře (85)        Přidat komentář 



Speciál

SHWallpaper

Nové komentáře
usb3 (dnes 9:03)
na výběr moc flash disků není ale třeba A­-Data N005 16GB
stojí stejně jak recenzovaný disky a v ry…
Re: Ozone Radon 5k SW (dnes 8:59)
hmm, to je prekrasna mys, ale mam omezeny rozpocet a vic jak tech 1300Kc nedam. Podle me bude drazsi…
Re: G500 (dnes 0:41)
Dikes, pockam este tyzden kym vpustia do predaja Kone+ a hned su jednu objednam uz sa neviem dockat …
Re: Ozone Radon 5k SW (dnes 0:40)
Kup Roccat Kone alebo Kone+ ktora by sa mala zacat predavat to pomto vikende. Ja si idem tiez kupova…
Re: HDDtoGO (včera 22:44)


ISSN 1213-0818    © 1998-2010 oXy Online s.r.o., všechna práva vyhrazena.
Tento server dodržuje právní předpisy o ochraně osobních údajů. Používáme redakční systém oXyMEDIA®.