FAV-ZCU/KIV UPG/10. Základy 3D grafiky.md

8.2 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 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ý (difúzní) odraz
      • část dopadajícího světla se pohltí
      • část se odrazí ve všech směrech
      • často definováno pro každou barvu zvlášť
    • lesklý (spekulární, zrcadlový) 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