Zkratka proHigh Dynamic Range Imagehá-dé-er-í, případně anglicky ejč-dý-ár-ajTakéHDR mapa, HDR image, environment map, HDRI mapaPokročilý
Definice
HDRI je obrázek, který ukládá jas scény ve výrazně širším rozsahu než běžná osmibitová fotografie, typicky v desetinných číslech bez horního stropu. Ve 3D grafice se panoramatické HDRI používá jako zdroj osvětlení a odrazů: objekt je obklopen koulí s tímto obrazem a světlo přebírá z reálné scény.
Nezaměňujte: HDRI označuje jednak formát obrazu s vysokým dynamickým rozsahem obecně, jednak konkrétně panoramatickou mapu používanou ve 3D jako zdroj osvětlení; s HDR režimem displejů typu HDR10 nesouvisí přímo.
Proč nestačí obyčejný JPEG
Běžný obrázek ukládá každý kanál v osmi bitech, tedy 256 úrovních mezi černou a bílou. Reálná scéna má ale rozsah jasů v řádu mnoha dekád: obloha za oknem je tisícinásobně jasnější než stín pod stolem. Osmibitový formát tenhle rozdíl zahodí, obloha se ořízne na čistou bílou a informace o tom, jak silné to světlo bylo, zmizí. HDRI ukládá hodnoty v pohyblivé řádové čárce (typicky 16bitový half float nebo 32bitový float), takže hodnota 40,0 je opravdu čtyřicetkrát jasnější než 1,0 a nic se neořízne.
Jak HDRI osvětluje 3D scénu
Nejčastější použití je image based lighting. Renderer obalí scénu koulí nebo krychlí, na kterou promítne panoramatické HDRI, a při výpočtu osvětlení z ní vzorkuje příchozí světlo v každém směru. Výsledkem je, že objekt dostane měkké okolní světlo, barevné odlesky od stěn i ostrý stín od slunce, aniž by kdokoli ručně stavěl světla. Právě proto se HDRI panorama nafotí přímo na místě natáčení: vložený CGI objekt pak sedí do záběru.
Formáty, na které narazíte
- OpenEXR (.exr) je průmyslový standard, podporuje více kanálů, half i full float a bezztrátovou kompresi.
- Radiance HDR (.hdr) je starší formát s RGBE kódováním, kde sdílený exponent v osmi bitech nahrazuje pohyblivou řádovou čárku.
- Equirectangular projekce je nejobvyklejší způsob rozbalení panoramatu do obdélníku s poměrem stran 2:1.
Latitude-longitude versus cubemap
Equirectangular mapa se snadno prohlíží a edituje, ale u pólů plýtvá pixely. Cubemap rozdělí okolí na šest čtvercových stěn, vzorkuje rovnoměrněji a hardware ji umí číst přímo, proto ji realtime enginy pro odrazy často přepočítávají.
Tone mapping: cesta zpět na displej
Monitor ani tiskárna neumí zobrazit neomezený jas, takže HDRI se před zobrazením musí převést tone mappingem nebo view transformem (například ACES nebo AgX v Blenderu). Tenhle krok rozhoduje o tom, jak vypadají přepaly a barvy v jasných místech, a je součástí uměleckého rozhodnutí, ne technickou formalitou.
Kde se HDRI potkává s HDR na displeji
Zkratky se překrývají, ale jde o dvě různé vrstvy. HDRI popisuje způsob uložení a výpočtu obrazu ve výrobním řetězci. HDR na televizi nebo telefonu (HDR10, Dolby Vision) je zobrazovací standard s vlastním přenosovým funkcí PQ nebo HLG a definovaným maximálním jasem. Renderovat lze do HDRI i pro výstup na obyčejný SDR displej, a naopak.
Jak HDRI vzniká
Klasický postup je expoziční bracketing: sada snímků stejné scény s různými časy závěrky se sloučí do jednoho souboru s obnovenou křivkou odezvy senzoru. Pro panorama se snímky navíc sešijí, často pomocí zrcadlové koule nebo rybího oka. Alternativou jsou generované mapy z renderu nebo dnes i výstupy z generativních modelů, u těch je ale fyzikální věrnost jasů nejistá.
Příklady z praxe
Produktový render s HDRI ateliérem
Designér má model sluchátek a potřebuje fotorealistickou vizualizaci na web. Místo stavění softboxů použije HDRI panorama fotografického ateliéru: lesklý plast okamžitě dostane protáhlé odlesky panelů a kov realistické okolní světlo. Otočením prostředí o pár desítek stupňů změní celou náladu záběru během vteřin.
import bpy world = bpy.data.worlds['World'] world.use_nodes = True nodes = world.node_tree.nodes env = nodes.new('ShaderNodeTexEnvironment') env.image = bpy.data.images.load('//studio_4k.exr') world.node_tree.links.new(env.outputs['Color'], nodes['Background'].inputs['Color'])Odrazy v realtime konfigurátoru aut
Web s konfigurátorem vozu běží na Three.js a potřebuje, aby lak reagoval na okolí. Vývojář načte .hdr panorama, nechá jej předzpracovat do prefiltrované mapy pro PBR materiály a nastaví ho jako prostředí scény. Karoserie díky tomu odráží oblohu i horizont bez jediného ručně umístěného světla, prohlížeč jen musí zvládnout stažení souboru v rozumné velikosti.
const loader = new RGBELoader(); loader.load('venice_sunset_1k.hdr', (texture) => { texture.mapping = THREE.EquirectangularReflectionMapping; scene.environment = texture; scene.background = texture; });
Časté omyly
- MýtusHDRI je prostě hodně kontrastní fotka, jakou dělá režim HDR v mobilu.
- Ve skutečnostiRežim HDR v telefonu sloučí několik expozic a výsledek ihned stlačí zpět do osmibitového JPEG, takže se dynamický rozsah zase zahodí. HDRI naproti tomu ta široká data zachovává v souboru s pohyblivou řádovou čárkou, aby se s nimi dalo dál počítat.
- MýtusČím větší rozlišení HDRI, tím lepší osvětlení.
- Ve skutečnostiRozlišení ovlivňuje hlavně ostrost viditelného pozadí a odrazů v zrcadlových materiálech. Difuzní osvětlení se stejně silně rozmazává, takže na samotné nasvícení scény často stačí verze 1k nebo 2k a šetří to paměť i čas načítání.
- MýtusHDRI soubor stačí, když chci HDR obraz na televizi.
- Ve skutečnostiZobrazení na HDR displeji vyžaduje kódování podle standardu jako HDR10 nebo HLG s definovanou přenosovou funkcí a metadaty. HDRI je pracovní formát pro výrobu obrazu, ne signál, kterému by televize sama o sobě rozuměla.
Časté dotazy
- Jaké rozlišení HDRI zvolit pro render?
- Volba rozlišení HDRI závisí na tom, k čemu mapa slouží. Pokud jde jen o osvětlení a měkké odrazy, stačí verze 1k nebo 2k, protože difuzní složka detaily stejně rozmaže. Jakmile má být panorama vidět v pozadí záběru nebo se zrcadlit v leštěném kovu či skle, je potřeba 8k i více, jinak se projeví rozmazané pixely. Běžnou praxí je používat malou mapu při náhledech kvůli rychlosti a přepnout na velkou až při finálním renderu.
- Jaký je rozdíl mezi .exr a .hdr souborem?
- OpenEXR (.exr) je novější a bohatší formát: umí half float i 32bitový float, více pojmenovaných kanálů, vrstvy, mip úrovně a několik kompresních režimů. Radiance HDR (.hdr) používá kódování RGBE, kde tři osmibitové kanály sdílí jeden osmibitový exponent, což je kompaktní, ale méně přesné zejména u nasycených barev. Ve filmové a herní produkci se dnes prakticky vždy pracuje s EXR, formát .hdr přežívá hlavně u knihoven panoramat a v realtime nástrojích na webu.
- Jak nafotit vlastní HDRI panorama?
- Vlastní HDRI panorama se pořizuje ze stativu s nodálním bodem: fotograf udělá kolem dokola sérii záběrů a každý z nich ve více expozicích, obvykle s krokem dvou EV, aby pokryl i slunce. Snímky se pak sloučí do jednoho souboru s pohyblivou řádovou čárkou a sešijí do equirectangular projekce. Klíčové je zamknout clonu, ISO a vyvážení bílé a měnit pouze čas závěrky, jinak se mezi snímky rozjede hloubka ostrosti nebo barevný odstín.
- Proč vypadá scéna osvětlená HDRI přepáleně nebo mdle?
- Přepálený nebo naopak plochý vzhled scény osvětlené HDRI má obvykle dvě příčiny. První je nastavení síly prostředí: hodnoty v mapě jsou absolutní, takže venkovní poledne dodá řádově víc světla než interiér a expozici kamery je nutné dorovnat. Druhou příčinou je špatný view transform. Bez rozumného tone mappingu, například ACES nebo AgX, se jasné plochy tvrdě ořežou do bílé a barvy ve světlech ztratí sytost, i když jsou samotná data v pořádku.
Zdroje
- OpenEXR(otevře se v novém okně)
- High-dynamic-range imaging(otevře se v novém okně)
- Blender Manual: World Environment(otevře se v novém okně)
- Khronos glTF Sample Environments and PBR specification(otevře se v novém okně)