Také3D scéna, grafická scéna, herní scénaPokročilý

Definice

Scéna je v grafickém programování a 3D designu uspořádaný celek objektů, světel, kamer, materiálů a dalších dat, ze kterých renderer nebo herní engine vytváří výsledný obraz či interaktivní prostředí. Určuje prostorové vztahy, viditelnost, animace i vazby mezi prvky. Dobře navržená scéna odděluje obsah od způsobu vykreslení a usnadňuje úpravy, optimalizaci i sdílení dat mezi nástroji.

Kategorie: Grafické programováníAktualizováno

Nezaměňujte: Ve slovníku jde o scénu v grafickém programování a 3D nástrojích, nikoli o divadelní scénu nebo obecný výjev ve filmu.

Co scéna drží pohromadě

Scéna v grafickém programování představuje pracovní model světa, který má být zobrazen, simulován nebo předán dalšímu nástroji. Typická scéna obsahuje geometrii, materiály, textury, světla, kamery, animace, fyzikální vlastnosti a metadata. Renderer z těchto dat nevytváří obraz přímočaře jako z jednoho souboru, ale řeší vztahy mezi prvky: kde objekt leží, co zakrývá, jak reaguje na světlo a z jaké kamery se má zobrazit.

Scéna bývá hierarchická. Skupina objektů může sdílet transformaci, takže posunutí auta přesune karoserii, kola i interiér najednou. Tato struktura se často popisuje jako scene graph, tedy strom nebo graf uzlů. Uzel může být prázdný organizační bod, mesh, světlo, kamera nebo instance již existujícího objektu.

Scéna není jen seznam modelů

Samotný mesh říká, jaký tvar má objekt, zatímco scéna určuje jeho roli v celku. Stejný model židle může stát v místnosti, být schovaný za zdí, používat jiný materiál nebo se opakovat jako instance v davu objektů. Scéna proto řeší nejen obsah, ale i kontext.

Volba rendereru mění interpretaci scény. Při rasterizaci se klade důraz na rychlé promítnutí geometrie na obrazovku. Při ray tracingu jsou důležitější paprsky, odrazy, průhlednost a přesnější světelné vztahy. Výsledný render tedy závisí na datech scény i na algoritmu, který s nimi pracuje.

Dva příklady z praxe

Produktová vizualizace v e-shopu

Produktová vizualizace boty používá jednu scénu s modelem, kamerou, měkkým studiovým světlem a několika variantami materiálu. Zákazník přepne barvu, ale geometrie a kamera zůstávají stejné. Výsledkem je levnější konfigurátor, protože aplikace nemusela připravit samostatný model pro každou barevnou variantu.

{
  "scene": {
    "camera": "frontProductCamera",
    "lights": ["softboxLeft", "softboxRight"],
    "objects": ["shoeMesh"],
    "materialVariant": "blue-suede"
  }
}

Úroveň v mobilní hře

Herní úroveň na telefonu obsahuje terén, překážky, nepřátele, zvuky, kolizní tvary a spouštěče událostí. Herní engine při načtení scény vytvoří objekty, nastaví jejich skripty a začne počítat animace. Pokud se vzdálené dekorace nahradí jednodušší verzí, hra si udrží plynulejší snímkovou frekvenci.

Kde scéna nejčastěji brzdí výkon

Scéna může být správně navržená z hlediska obsahu, ale drahá pro vykreslení. Problém způsobují nadměrně detailní meshe, příliš mnoho světel, nepraktické materiály, nekomprimované textury nebo chybějící sdílení objektů. Velká scéna také zatěžuje paměť, načítání a přenos po síti.

Optimalizace scény obvykle znamená rozdělit data podle viditelnosti a použití. Část světa se načte až ve chvíli, kdy se k ní kamera přiblíží. Opakující se prvky se instancují místo kopírování. Vzdálené objekty používají jednodušší úroveň detailu. Scéna tím zůstává srozumitelná pro autory a zároveň únosná pro zařízení, na kterém běží.

Příklady z praxe

  1. Produktová vizualizace v e-shopu

    Produktová vizualizace boty používá jednu scénu s modelem, kamerou, měkkým studiovým světlem a několika variantami materiálu. Zákazník přepne barvu, ale geometrie a kamera zůstávají stejné. Výsledkem je levnější konfigurátor, protože aplikace nemusela připravit samostatný model pro každou barevnou variantu.

    {
      "scene": {
        "camera": "frontProductCamera",
        "lights": ["softboxLeft", "softboxRight"],
        "objects": ["shoeMesh"],
        "materialVariant": "blue-suede"
      }
    }
  2. Úroveň v mobilní hře

    Herní úroveň na telefonu obsahuje terén, překážky, nepřátele, zvuky, kolizní tvary a spouštěče událostí. Herní engine při načtení scény vytvoří objekty, nastaví jejich skripty a začne počítat animace. Pokud se vzdálené dekorace nahradí jednodušší verzí, hra si udrží plynulejší snímkovou frekvenci.

Časté omyly

MýtusScéna je jen soubor s několika modely pohromadě.
Ve skutečnostiScéna zahrnuje i vztahy, transformace, kamery, světla, materiály, animace a často také logiku nebo metadata. Bez těchto informací by stejné modely nemusely dát správný obraz ani chování.
MýtusKdyž scéna vypadá dobře v editoru, poběží dobře i v aplikaci.
Ve skutečnostiEditor často běží na výkonnějším počítači a nemusí mít stejné limity jako cílové zařízení. Výkon scény ovlivňuje počet objektů, materiály, textury, světla, skripty, průhlednost i způsob načítání.

Časté dotazy

Proč nestačí uložit jen 3D model místo celé scény?
Scéna v grafickém programu určuje, jak spolu objekty v prostoru souvisejí. Model popisuje tvar konkrétní věci, třeba stolu nebo auta, zatímco scéna přidává kameru, světla, umístění, animace, materiály a další objekty kolem. Jeden model může být použit ve více scénách a v každé může vypadat jinak, protože se změní jeho měřítko, osvětlení nebo okolí.
Kdy má smysl scénu rozdělit na menší části?
Scéna se vyplatí rozdělit, když je svět větší, než zařízení dokáže pohodlně načíst a vykreslit najednou. Rozdělení pomáhá hlavně u herních map, rozsáhlých architektonických vizualizací a webových konfigurátorů s mnoha variantami. Menší části se mohou načítat postupně, skrývat podle vzdálenosti nebo znovu používat v různých kombinacích.
Proč se scéna pro realtime grafiku připravuje jinak než pro offline render?
Scéna pro realtime grafiku musí počítat s časovým limitem každého snímku. Herní engine nebo webový prohlížeč potřebuje obraz obnovovat plynule, takže scéna často používá jednodušší materiály, instancing, culling a úrovně detailu. Scéna pro offline render může být náročnější, protože výpočet jednoho snímku nemusí skončit během několika milisekund.
K čemu je ve scéně scene graph?
Scene graph pomáhá organizovat scénu jako propojenou strukturu uzlů. Rodičovský uzel může nést transformaci, kterou zdědí podřízené objekty, takže složitý celek se dá přesouvat nebo animovat najednou. Scene graph také usnadňuje vyhledávání viditelných prvků, skládání objektů z menších částí a oddělení logické struktury od samotné geometrie.

Zdroje

  1. WebGL API(otevře se v novém okně)MDN Web Docs
  2. WebGPU API(otevře se v novém okně)MDN Web Docs
  3. glTF Runtime 3D Asset Delivery(otevře se v novém okně)The Khronos Group
  4. Blender(otevře se v novém okně)Blender Foundation

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.