Poznámky z 10. prezentace z UPG
This commit is contained in:
parent
35caf2ee49
commit
398020f37b
1 changed files with 238 additions and 0 deletions
238
KIV UPG/10. Základy 3D grafiky.md
Normal file
238
KIV UPG/10. Základy 3D grafiky.md
Normal file
|
@ -0,0 +1,238 @@
|
|||
# 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 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
|
||||
- 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
|
||||
- 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
|
||||
- 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é
|
||||
|
||||
**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
|
||||
|
||||
**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
|
Loading…
Reference in a new issue