Kalábovi

Kalábovic wikina

Uživatelské nástroje

Nástroje pro tento web


pitel:msz:phonguv_model_osvetleni_textury

Phongův model osvětlení, textury

Phongův model osvětlení

Phong reflection model, POV-Ray a Phongův osvětlovací model – Root.cz

Osvětlování znamená určování odstínu pixelu na základě normálového vektoru, pozice kamery, světelného zdroje a materiálu. V OpenGL se zapíná pomocí povolení GL_LIGHTNING.

Vektory musí být normalizovány!

Složky

Ambient light

  • Světlost prostředí
  • Konstantní, nezáleží na poloze objektu
  • Iₐ = kₐLₐ
    • kₐ – konstanta materiálu
    • Lₐ – konstanta světelného zdroje

Diffuse light

  • Rozptýlené světlo materiálem
  • Odraz rovnoměrně do všech směrů (záleží jen na náklonu plochy od světelného zdroje – skalární součin vektorů)
  • Pozorovatelné na matných površích
  • Pro výpočet je použit Lambertův osvětlovací model
  • Id = kdLd (I · n)
    • kd – vlastnost materiálu
    • Ld – konstanta světelného zdroje
    • I – je osvětlovací vektor
    • n – normálový vektor

Specular light

  • Odlesk, odraz úzkého svazku paprsků ideálně odražených od povrchu
  • Iₛ = kₛLₛ cosᵅ(φ) = kₛLₛ (e · r)
    • kₛ – konstanta materiálu
    • Lₛ – konstanta světelného zdroje
    • αvyleštěnost, vyšší hodnota dává užší průběh
    • e – vektor směrem k pozorvateli
    • r – vektor odraženého světla

Materiál

Materiál je charakterizován odpovídajícími složkami:

  • Ambient
  • Diffuse
  • Specular
  • Emissive (není považován za zdroj, pouze ovlivňuje barvu)
  • Vyleštěnost

Výpočet

  • Počítá se pro každou barevnou složku (RGB) zvlášť, kde finální intenzita každé složky je dána součtem: Iₐ + Id + Iₛ
  • Intenzita z ambientní složky se započítává vždy (všudypřítomné světlo), difuzní a spekulární složky jen pokud není světelný zdroj zastíněn
  • Při použití více světel se sčítají jejich jednotlivé vypočítané intenzity

Textury

Texture mapping

Textury v OpenGL mohou být 1D, 2D i 3D. Pixely textury se nazývají texely, tyto se aplikují na povrch objektu. Je zapotřebí asociovat texturovací souřadnice s odpovídajícími vrcholy pro správné nanesení textur (definuje programátor, v OpenGl glTexCoord). Algoritmu nanášení textury se pak říká texturování.

Je možné využít opakování nebo roztažení v daných směrech. Při texturování může docházet k aliasingu, pokud není dodržen vzorkovací teorém.

MIP textury

mipmap Multum in Parvo (více v jednom). Několik textur (jedna ve více rozlišeních) je uložena v jedné textuře, vybere se podle vzdálenosti od kamery (LoD). Mimo jiné se tak zabraňuje aliasingu.

Interpolace (bilinear, trilinear, anisotropic filtering) MIP textur je důležitá pro neznatelné přechody mezi jednotlivými úrovněmi detailu.

Multitexturování

Multitexturování umožňuje nanést více textur najednou (např. textura a světelná mapa). Jedná se o rozšíření standardu.

Rastrová textura

Předem připravený obrázek.

Procedurální textura

  • Není dána rastrem
  • Zobrazení do barvy: f(x, z, y) → C
  • Pomalé vyhodnocení, ne všechny povrchy lze matematicky vyjádřit
  • Dřevo, mraky, šum apod.
  • Hrozba aliasingu, řešení:
    • Post-filtering (supersampling)
    • Pre-filtering – filtrace ve spojité oblasti (před vzorkováním)
    • Stochastické vzorkování

Speciální textury

Bump maps, Environment maps, Normal maps, …

/var/www/wiki/data/pages/pitel/msz/phonguv_model_osvetleni_textury.txt · Poslední úprava: 03. 07. 2012, 13.53:33 (upraveno mimo DokuWiki)