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.

Kategorie: 3D designAktualizováno

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

  1. 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'])
  2. 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

  1. OpenEXR(otevře se v novém okně)Wikipedia
  2. High-dynamic-range imaging(otevře se v novém okně)Wikipedia
  3. Blender Manual: World Environment(otevře se v novém okně)Blender Foundation
  4. Khronos glTF Sample Environments and PBR specification(otevře se v novém okně)Khronos Group

Související pojmy

Potřebujete to vyřešit v praxi?

Poradíme, jak na to ve vašem projektu

Vysvětlit pojem je jedna věc, navrhnout kolem něj funkční řešení druhá. Ozvěte se a probereme, co dává smysl u vás.