8.1 KiB
8.1 KiB
Základy 3D grafiky
3D grafika
- princip
- objekty modelovány ne 3D
- výsledek převedený na 2D
- oba procesy mohou být úzce provázány
- např. počítačové hry (XNA, DirectX, OpenGL)
- oba procesy mohou být oddělené
- příprava 3D dat provedena v prvním nástroji
- zobrazení na 2D provedeno druhým nástrojem
- např. filmový průmysl
- typické užití
- počítačové hry a filmový průmysl
- augmented reality
- vizualizace terénu (např. Google Earth)
- vizualizace strojírenských součástek
- vizualizace architektonických budov
- vizualizace medicínských dat
- ...
Programování 3D aplikací
- různé přístupy dle výsledné aplikace
1. přístup
- programuji pouze rozhraní mezi modelovací a zobrazovaní komponentou
- nejjednodušší
- 3D data připravý někdo jiný, zobrazení provede standardní prohlížeč
2. přístup
- provádím vytváření 3D objektů, zobrazování neřeším
- připravím 3D objekty (nehybné, interaktivní), rozmístím je v prostoru
- výsledkem scéna, kterou zobrazí standardní prohlížeč
3. přístup
- řeším zobrazování 3D objektů
- řeším, jak bude vypadat scéna
- chci zvýšit realističnost, přehlednost či výkon
- mohu použít 3D knihovny
Souřadný systém scény
- kartézský souřadný systém
- natočení os bývá aplikačně závislé
- osa z někdy bývá vodorovná, jindy vertikální, často také ve směru od/do tradiční 2D roviny
- točivost systému
- jakým směrem probíhá rotace o kladný úhel okolo os x, y, z
- levotočivý a pravotočivý systém
3D objekty
- získávány z databáze 3D objektů nebo vlastním vytvořením
- databáze 3D objektů
- volné i komerční
- volné často omezené, komerční často drahé
- nejjednodušší způsob získání, často nejlevnější
- modely podléhají licencím
- často obsahují skrytý watermark
- vlastní tvorba 3D modelu
- tvorba složitějších modelů je časově náročná
- základní principy
- 3D skenování
- oskenování reálného objektu 3D skenerem či systémem kamer
- výsledkem zašumělá množina bodů ve 3D
- data je nutné zpracovat
- 3D modelování
- 3D skenování
3D modelování
- lze použít dostupné modelovací nástroje
- technicky orientované (CAD)
- graficky orientované
- objekty bývají modelovány
- skládáním z jednodušších objektů
- rotací 2D křivky okolo osy (tzv. resolve)
- vytažením 2D křivky
- manipulací s primitivy, ze kterých je objekt vymodelován
Jednoduché objekty - válec, kvádr, kužel, koule, ... - snadno vymodelovatelné
Složité objekty
- reprezentovány množinou primitiv (body, úsečky, trojúhelník, čtyřúhelník, ...)
- mohou vzniknout převodem analyticky vyjádřených objektů
- mohou vzniknou rotací kolem osy (váza, láhev, hřebík, ...)
- Beziérův plát - zobecnění Beziérovy křivky (určen 4x4 vrcholy)
- kvalita na výstupu je určena velikostí primitiv po jejich transformaci na 2D grafiku
- využívá se analytických popisů objektů
- technika Level of Detail (LOD)
- více modelů pro jeden objekt (vybere se nejvhodnější)
Čtyřúhelníkové sítě
- přirozenější pro strojírenství, GIS, ...
- vrcholy čtyřúhelníku nemusí ležet na rovině
- pro zobrazení je čtyřúhelník automaticky rozdělen na 2 trojúhelníky
Trojúhelníkové sítě
- množina trojúhelníků
- trojúhelník zadán třemi vrcholy
- může zdegenerovat na úsečku nebo bod
- nezdegerovaný korektně reprezentuje rovinu
- souřadnice ve floatech
- nejčastěji specifikována dvojicí seznamů
- seznam vrcholů
- seznam trojúhelníků
Izolované body a hrany
- občas je potřeba do scény přidat izolované body nebo hrany
- body a hrany mají 0 rozměr
- je potřeba je
- modelovat jako objekty ve 3D s danou velikostí ve fyzických jednotkách
- modelování bodů ve 3D
- trojúhelník/čtyčúhelník se natáčí k pozorovateli (tzv. billboard)
- 3D objekt
- modelování hran ve 3D = válec
- modelování bodů ve 3D
- zobrazit jako překryvnou vrstvu při ve výsledném 2D obrázku
- 3D scéna zobrazena, přes výsledný obraz nakresleny 2D objekty
- modelovat jako objekty ve 3D s danou velikostí ve fyzických jednotkách
- 3D grafické knihovny běžně podporují oba přístupy
Kamera
- bod jejího umístění
- bod, na který se dívá
- vektor natočení vůči EC (Up)
- zorné pole - Field of View (FOVx, FOVy)
- přední ořezová rovina (near clipping)
- bližší objekty jsou ignorovány
- zadní ořezová rovina (far clipping)
- vzdálenější objekty jsou ignorovány
- urychlení vykreslování
- typy kamer
- ortogonální
- kolmé promítání
- velikost zobrazení objektu nezávisí na jeho vzdálenosti od kamery
- vhodné pro technické zobrazování
- perspektivní
- paprsky se sbíhají
- velikost zobrazení objektu závisí na jeho vzdálenosti od kamery
- napodobuje lidské vnímání světa
- ortogonální
- zobrazovaný prostor (view frustum)
- kvádr pro ortogonální kameru
- komolý jehlan pro perspektivní kameru
Zobrazení scény
- různé zobrazovací techniky
- drátěný model (wireframe)
- vypočte 2D pozice crcholů
- spojí 2D vrcholy 2D úsečkami
- nejjednodušší a nejrychlejší
- dívám se skrz objekty (můžu s nimi manipulovat)
- jednobarevné plošné zobrazení
- zakryté plošky nejsou vidět
- 2D obrazce se vyplní jednou barvou
- velmi rychlé
- vhodné např. pro schématická CAD zobrazení
- využívá se v kombinaci se zobrazením obrysových hran
- konstantní stínování
- obdoba jako jednobarevné plošné zobrazení
- jas trojúhelníků zavislý na dopadajícím světle (je potřeba definovat světla)
- velmi rychlé
Normála
- normálový vektor = vektor kolmý k povrchu
- pro trojúhelníkové sítě ji 3D grafické knihovny vypočítají obvykle samy
- vrcholy trojúhelníků musá být zadávány v konzistentním pořadí
- po/proti směru hodinových ručiček (CW/CCW)
Světla
- důležité pro složitější zobrazovací přístupy
- pro scénu nezbytné nadefinovat alespoň jeden zdroj světla
- pro každé se specifikuje jeho barva (obvykle RGB)
- modely zdrojů světla
- rovnoběžné
- definováno směrem
- paprsky na scénu dopadají rovnoběžně
- bodové
- definováno pozicí ve scéně
- paprsky se šíří všemi směry od pozice
- kuželové
- reflektor (spotlight)
- paprsky se šíří ve směru kužele
- ambientní (roztýlené)
- definováno pouze barvou
- přichází ze všech směrů
- bez něj jsou části bez světla černé
- rovnoběžné
Materiály objektů
- určují, jak objekt odráží světlo
- nejčastěji definovány třemi parametry
- matný odraz
- část dopadajícího světla se pohltí
- část se odrazí ve všech směrech
- lesklý odraz
- část dopadajícího světla se pohltí
- část dopadajícího světla se odrazí dle zákona odrazu
- rozptýlený odraz
- pracuje pouze s rozptýleným (ambientním) světlem
- matný odraz
Stínování
- Goraud [Guró] stínování
- také smooth shading
- jas barvy se na ploše 2D trojúhelníku mění v závislosti na dopadajícím světle
- Sofistikovanější stínování
- např. Phongovo stínování
- náročnost výpočtů na pozadí
- není běžně implementováno
Fotorealistické modelování
- 1. možnost
- reálné objekty modelovány velmi jemnou sítí
- každý trojúhelník má přiřazenu jednu barvu
- vysoce neefektivní
- 2. možnost
- parametry difúzního odrazu v libovolném bodě trojúhelníku uloženy ve 2D barevné textuře
- velmi rychlé a rozšířené
Textura
- mnoho významů a použití
- pro naše účely: textura = bitmapový obrázek
- typicky čtvercové o hraně mocniny 2
- 128x128, 256x256, 512x512
- obsahem může být
- uměle vygenerovaný obrázek
- reálná fotografie
3D formáty
Binární
- VTK, OBJ, X (DirectX), ...
Textové
- VTK, OBJ, STL, PLY, COLLADA (.dae), X, X3D, VRML, XAML
Různá složitost formátů
- některé pouze jeden objekt, jiné celé systémy
- některé pouze statické scény, jiné dynamické
- některé formáty požadují kameru jako součást popisu