Takémesh, 3D mesh, trojúhelníková síťPokročilý

Definice

Polygonální síť je datová reprezentace 3D povrchu složená z vrcholů, hran a plošek, nejčastěji trojúhelníků nebo čtyřúhelníků. V grafice určuje tvar modelu, umožňuje texturování, výpočet osvětlení a animaci, ale zároveň ovlivňuje paměť, výkon renderingu a kvalitu deformací. Používá se v herních enginech a DCC nástrojích.

Kategorie: Grafické programováníAktualizováno

Co polygonální síť ukládá

Polygonální síť popisuje povrch objektu pomocí jednoduchých stavebních částí. Základem jsou vrcholy, tedy body v prostoru, hrany spojující dvojice vrcholů a plošky, které z hran vytvářejí viditelné části povrchu. Ploška může být trojúhelník, čtyřúhelník nebo obecný polygon, ale renderovací pipeline ji často nakonec převede na trojúhelníky.

Polygonální síť obvykle neukládá jen samotnou geometrii. Model může mít normály pro výpočet osvětlení, UV souřadnice pro mapování textur, barvy vrcholů, váhy kostí pro animaci a materiálové přiřazení. Dvě sítě se stejným obrysem proto mohou vypadat úplně jinak: jedna bude hladce stínovaná a správně texturovaná, druhá bude působit hranatě nebo bude mít roztaženou texturu.

Proč většinu modelů tvoří trojúhelníky

Trojúhelník je pro grafické zpracování praktický, protože tři body vždy leží v jedné rovině. Čtyřúhelník se může při deformaci zkroutit a renderer musí rozhodnout, jak ho rozdělit. Trojúhelníková reprezentace odstraňuje nejednoznačnost a dobře se mapuje na GPU, index buffery a rasterizaci.

Čtyřúhelníky přesto zůstávají důležité při modelování. Umělci s nimi snáze vytvářejí čisté smyčky hran kolem očí, kloubů nebo otvorů. Čtyřúhelníková topologie se lépe subdividuje, zatímco finální export do herního enginu, WebGL nebo formátu glTF může být triangulovaný.

Topologie: tvar, animace a stínování

Topologie polygonální sítě znamená uspořádání vrcholů, hran a plošek, nikoli jen celkový počet polygonů. Kvalitní topologie vede hrany ve směru očekávané deformace. Obličej postavy má typicky smyčky kolem úst a očí, aby se při mluvení a mrkání nedeformoval nepřirozeně. Technický objekt naproti tomu často potřebuje ostré hrany, přesné normály a kontrolované přechody mezi plochami.

Špatná topologie se projeví i bez animace. Dlouhé úzké trojúhelníky mohou způsobovat viditelné artefakty stínování, překryté plošky blikají kvůli z-fightingu a neuzavřené hrany komplikují fyzikální simulace nebo 3D tisk. Polygonální síť proto není jen „množina trojúhelníků“, ale kompromis mezi editovatelností, vizuální kvalitou a technickými limity cílové platformy.

Cena polygonální sítě v renderingu

Počet vrcholů a trojúhelníků ovlivňuje paměť, velikost souboru i zatížení GPU. Hustá síť dovolí jemné siluety a detailní deformace, ale může zpomalit vykreslování, zvětšit download na webu a zhoršit práci v editoru. Řídká síť je rychlejší, jenže bez normálových map, displacementu nebo LOD úrovní může vypadat příliš jednoduše.

Praktická práce s polygonální sítí proto často zahrnuje retopologii, decimaci, triangulaci a tvorbu několika úrovní detailu. Model pro filmový render může mít jiné požadavky než model pro mobilní hru. Model pro konfigurátor v prohlížeči zase musí myslet na rychlé načtení, kompresi dat a stabilní výkon na různých grafických čipech.

Příklady z praxe

  1. Sdílené vrcholy v index bufferu

    Webový konfigurátor nábytku může obdélníkovou desku uložit jako čtyři sdílené vrcholy a dva trojúhelníky. Index buffer zabrání duplicitnímu ukládání stejných bodů, takže model je menší a GPU zpracuje jasně dané trojúhelníky. Výsledek se načte rychleji než varianta, která každý trojúhelník ukládá samostatně.

    const vertices = [
      // x, y, z
      -1, 0, 0,
       1, 0, 0,
       1, 1, 0,
      -1, 1, 0
    ];
    
    const indices = [
      0, 1, 2,
      0, 2, 3
    ];
  2. Špatná topologie u ramene postavy

    Postava exportovaná z modelovacího nástroje může mít kolem ramen nepravidelné trojúhelníky a přerušené smyčky hran. Při zvednutí ruky se síť zlomí, stínování vytvoří tmavé skvrny a textura se nepřirozeně natáhne. Retopologie převede oblast na pravidelnější čtyřúhelníky, takže animace působí přirozeněji.

Časté omyly

MýtusČím víc polygonů, tím lepší model.
Ve skutečnostiVysoký počet polygonů může zlepšit siluetu a detaily, ale nezaručuje dobrou topologii ani pěkné stínování. Pro realtime grafiku je často lepší čistší síť doplněná normálovou mapou a vhodnými LOD úrovněmi.
MýtusPolygonální síť a textura jsou totéž.
Ve skutečnostiPolygonální síť určuje geometrii povrchu, zatímco textura dodává barvu, detaily materiálu nebo další mapy. Špatná UV mapa může způsobit vadné texturování i na dobře vymodelované síti.

Časté dotazy

Proč se polygonální síť často trianguluje před renderem?
Polygonální síť se před renderem často trianguluje, protože trojúhelník je jednoznačná rovinná plocha. Grafická karta nemusí řešit, jak rozdělit zkroucený čtyřúhelník nebo složitější polygon. Triangulace zároveň sjednocuje data pro rasterizaci, index buffery a export do mnoha realtime formátů. Modelář ale může při práci používat čtyřúhelníky, protože se lépe upravují a dávají přehlednější topologii.
Kdy polygonální síť nestačí pro přesný tvar?
Polygonální síť nestačí pro přesný tvar tehdy, když aplikace potřebuje matematicky hladké křivky nebo výrobní přesnost bez aproximačních chyb. CAD systémy často pracují s NURBS nebo jinými parametrickými plochami, které popisují zakřivení jinak než sada polygonů. Polygonální síť se pak používá spíš pro náhled, vizualizaci, hry nebo 3D tisk, kde je aproximace povrchu přijatelná.
Co znamená dobrá topologie u polygonální sítě?
Dobrá topologie u polygonální sítě znamená, že hrany a plošky podporují účel modelu. Animovaná postava potřebuje smyčky hran v místech ohybu, aby se povrch nedeformoval náhodně. Herní rekvizita potřebuje rozumný počet trojúhelníků a čisté normály. Model pro 3D tisk potřebuje uzavřený povrch bez děr, překrytých plošek a nejednoznačných hran.
Jak polygonální síť ovlivňuje velikost 3D souboru?
Polygonální síť ovlivňuje velikost souboru hlavně počtem vrcholů, indexů, normál, UV souřadnic a dalších atributů. Dva modely se stejným počtem trojúhelníků se mohou lišit podle počtu materiálů, texturovacích sad nebo duplicitních vrcholů na hranách UV ostrovů. Optimalizace proto neznamená jen mazání polygonů, ale také úpravu atributů, kompresi a vhodné sdílení dat.

Zdroje

  1. Meshes(otevře se v novém okně)Blender Foundation
  2. glTF 2.0 Specification(otevře se v novém okně)The Khronos Group
  3. WebGL API(otevře se v novém okně)MDN Web Docs
  4. Polygon mesh(otevře se v novém okně)Wikipedia

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.