Hlavní navigace

Vektorové grafické formáty a metaformáty

1. 3. 2007
Doba čtení: 10 minut

Sdílet

V předchozích článcích jsme si popsali nejpopulárnější rastrové formáty, včetně "internetových" formátů GIF, PNG a JPEG/JFIF. Dnešní díl bude pojednávat o další velké skupině grafických formátů, které se nazývají vektorové formáty. Jedná se o soubory, ve kterých je grafická informace popsána pomocí geometrických objektů.

Obsah

1. Vektorové grafické formáty a metaformáty
2. Souborový formát nebo plnohodnotný programovací jazyk?
3. Vektorové formáty určené převážně pro 2D grafiku
4. Vektorové formáty pro popis (tiskových) stránek
5. Metaformáty
6. Popis trojrozměrných objektů
7. Virtuální realita
8. Odkazy na další informační zdroje
9. Obsah dalšího pokračování tohoto seriálu

1. Vektorové grafické formáty a metaformáty

Vektorové grafické formáty tvoří poměrně různorodou skupinu souborových formátů určených pro popis grafické informace. Zatímco se u rastrových grafických formátů tato informace nenávratně rozpadla do množiny různobarevných pixelů umístěných v pravidelné rastrové mřížce (bitmapě, pixmapě), u vektorových formátů je aplikován přesně opačný postup – všechny objekty v obrázku jsou popsány analyticky jako množina geometrických tvarů. Podle konkrétního typu formátu je možné použít různé základní geometrické tvary (v dokumentaci nazývané entity): v nejjednodušších formátech jsou podporovány pouze úsečky (formát nazývaný SLD), ve složitějších formátech je možné použít i oblouky, křivky nebo text a ty nejkomplexnější formáty dokonce zavádí hierarchické členění entit včetně možnosti jejich programové změny či vytváření (PostScript, SVG – Scalable Vector Graphics).

Kromě čistě vektorových formátů se v mnoha aplikacích rozšířily takzvané metaformáty, ve kterých je možné sdružit vektorový popis grafické informace s popisem rastrovým (bitmapovým). Mezi metaformáty patří již výše zmíněný PostScript, dále pak PDF – Portable Document Format, WMF – Windows Metafile, EMF – Enhanced Windows Metafile či CGM – Computer Graphics Metafile. Často se také můžeme setkat s vektorovými formáty určenými pro popis trojrozměrných objektů či celých scén. Buď se jedná o formáty určené pouze pro popis trojrozměrných dat (NFF – Neutral File Format, OFF – Object File Format, STL – Stereolithography), či o formáty, do kterých je možné uložit jak dvourozměrná, tak i trojrozměrná data (DXF – Drawing Interchange File Format). Tyto formáty našly své uplatnění jak v CAD či CAM, tak i v aplikacích virtuální reality (VRML – Virtual Reality Modeling Language).

2. Souborový formát nebo plnohodnotný programovací jazyk?

U některých vektorových grafických formátů se můžeme setkat s vlastností, kterou bychom většinou marně hledali u jejich rastrových (bitmapových) protějšků. Jedná se o programové konstrukce. Nejznámějším zástupcem této kategorie vektorových formátů je zcela jistě PostScript, který je založen na programovacím jazyku inspirovaném Forthem. Vlastnosti Forthu jsou v této aplikační doméně zjevné: jazyk je jednoduchý na prvotní zpracování (parsing) i interpretaci, samotný interpreter je tak jednoduchý, že je ho možné uložit do několika kilobytů paměti a i rychlost zpracování je dostatečně vysoká, což umožňuje implementaci PostScriptu přímo v tiskárnách (dnes, kdy je procesor s desítkami milionů tranzistorů obvyklou součástkou, nám to nemusí připadat nijak divné, ovšem PostScript bylo možné provozovat i na šestnáctibitových mikrořadičích).

Není divu, že se PostScript v minulosti stal velmi oblíbený a dodnes je používán, jak v tiskárnách (zejména laserových a osvitových jednotkách), tak i jako přenosový formát, popř. jako médium při přípravě tisku (unixové systémy). V oblasti přenosového formátu (a někdy i tisku) však PostScript vytlačuje jeho mladší a jednodušší následovník PDF – Portable Document Format. Zcela jiným způsobem je programovatelný formát SVG. Zde se nejedná o procedurální zápis vlastních obrazových informací, ale o možnost změny parametrů zobrazované scény (pozice vrcholů, barvy, typu čáry, stylu výplně atd.) pomocí skriptovacího jazyka, typicky JavaScriptu. Dalším programovatelným formátem je VRML, ve kterém je možné (zejména pro potřeby aplikací virtuální reality) naprogramovat například různé odezvy objektů na jejich virtuální uchopení, náraz, průchod atd.

3. Vektorové formáty určené převážně pro 2D grafiku a CAD

V oblasti plošné (dvoudimenzionální) grafiky nalezneme velké množství různých vektorových grafických formátů, od těch nejjednodušších (například SLD, SHP či HPGL) přes nepoměrně složitější formáty (CDR – CorelDraw! File Format) až po výše popsané „programovatelné“ souborové formáty typu PostScript a SVG. Například SLD (Slide) je velmi jednoduchý vektorový formát, ve kterém je možné použít pouze dva grafické prvky: úsečku a výplň. Tento formát byl navržen pro úschovu vektorových snímků různých výkresů s možností jejich dalšího přehrání na obrazovce například pomocí skriptů. Původně byl tento formát vytvořen pro potřeby AutoCADu, později se však rozšířil i na další aplikace. I některá alternativní grafická prostředí pro DOS tento formát nativně používaly, například pro zápis obrázků, které bychom dnes nejspíše nazvali vektorové ikony.

Vektorový formát DXF, neboli Drawing Interchange File Format byl taktéž vytvořen firmou AutoDesk pro její produkt AutoCAD, dnes je však tento formát velmi rozšířený i mimo produkty firmy AutoDesk a podporuje ho naprostá většina aplikací typu CAD i mnoho dalších graficky orientovaných aplikací (ovšem s různou mírou kompatibility). Data o vektorových objektech mohou být uložena buď v textové nebo binární podobě (zde se jedná o soubory s koncovkou DXB), rozšířenější je však textová podoba, která je primárně určena pro velmi jednoduché zpracování dat počítačem (ukládají se dvojice parametr:hodnota, takže není zapotřebí znát kontext dat ani budovat složité stromové struktury). V prvních verzích bylo možné v tomto formátu ukládat pouze plošné entity, ale dnešní verze (vlastně už od historického AutoCADu 9) již umožňují ukládat i trojrozměrná tělesa, v moderních CADech včetně CSG (to je však licencovaná technologie).

Poměrně složitě se však zadává textura povrchu a další optické vlastnosti povrchu (průhlednost, index lomu apod.), proto většina aplikací v tomto formátu ukládá pouze tvar tělesa a jeho barvu. Podobné omezení platí i pro plošnou (2D) grafiku, kde nastávají problémy s vyplňováním vnitřních ploch objektů a v některých případech také k rozdílné interpretaci barev (některé aplikace mají bílou barvu pozadí, další zase černou). Mezi podporované grafické entity patří zejména bod, úsečka, kružnice, kruhový oblouk, elipsa, eliptický oblouk, ploška s třemi či čtyřmi vrcholy, text, polyčára (buď lomená nebo spline křivka) a 3D plocha. Trojrozměrné modely popisované pomocí CSG (Constructive Solid Geometry) jsou do těchto souborů ukládány ve zvláštním tvaru, při přenosu mezi různými aplikacemi se však častěji používají pouze rovinné plošky a/nebo vyhlazené 3D plochy.

4. Vektorové formáty pro popis (tiskových) stránek

Vektorových formátů, které jsou primárně určeny pro popis tiskových stránek, bylo vyvinuto velké množství, každý výrobce tiskáren a osvitových jednotek považoval za nutné vytvořit si svůj vlastní formát. Tato doba je naštěstí pryč, protože se dochoval pouze zlomek těchto formátů; nejvíce používanou dvojicí je PostScript a PDF následovaný HPGL (pro plottery, včetně dnešních „rastrových“ plotterů) a PCL (převážně levnější laserové tiskárny, které neimplementují PostScript). S PCL se většinou nesetkáme ve formě souboru, ostatní tři zmíněné formáty jsou však poměrně běžné; samozřejmě s výraznou dominancí PDF. HPGL (Hewlett-Packard Graphics Language, též známý jako PLT) se používá například i při přenosu jednodušší vektorové grafiky mezi různými grafickými aplikacemi a systémy typu CAD, nejde tedy o formát určený pouze pro tiskový výstup.

5. Metaformáty

Již v úvodní části tohoto článku jsme si řekli, že v metaformátech je možné kombinovat více typů informací. Typicky se jedná o informace uložené ve formě rastrů (bitmap či pixmap), vektorové grafiky a formátovaných řádkových i odstavcových textů. Mezi metaformáty patří například WMF (Windows Metafile), EMF (Enhanced Windows Metafile), CGM (Computer Graphics Metafile) či IFF. I další vektorové formáty umožňují kombinovat rastrovou a vektorovou grafiku, typicky se jedná o interní formáty mnoha graficky orientovaných aplikací, například o formát CDR používaný v Corel Draw! – zde se jedná o primárně vektorový formát s možným doplňkem ve formě bitmap. Opačným způsobem vznikly formáty používané v rastrových grafických editorech (GIMP, Adobe Photoshop), ve kterých se k primární rastrové informaci mohou přidat například vektorově zadané cesty nebo výběry.

6. Popis trojrozměrných objektů

Trojrozměrné objekty je možné uložit do mnoha různých formátů, například:

STL neboli Stereolithograp­hy. Tento souborový formát je určený pro uložení těles reprezentovaných polygony. Jak již název napovídá, primárním určením tohoto formátu byl přenos dat na zařízení pro stereolitografii. Tento formát je vzhledem ke své jednoduchosti používán v mnoha CAD aplikacích a se stereolitografií nemusí souviset. Existují dvě verze formátu: binární a textový.

3DS – 3D Studio File Format. Tento souborový formát byl navržený firmou AutoDesk (stejně jako výše popsaný formát DXF) pro popis trojrozměrných scén vytvářených v programu 3D Studio (ještě pro DOS) a posléze i 3D Studio MAX. S tímto formátem pracují i mnohé další aplikace, a to přesto, že v minulosti nebyl uvolněn ani definován jako standard (dnes je možné nalézt několik dobrých dokumentů popisujících tento formát). V tomto formátu, který je binární podoby, lze kromě popisu scény ukládat i informace o animacích, texturách, osvětleních atd.

OFF – Object File Format. Jedná se o formát primárně určený pro vytváření databází trojrozměrných objektů, protože u každého uloženého objektu lze zadat i jméno aplikace, pomocí které byl objekt vytvořen, jméno autora a další důležité i méně důležité metainformace (úlohu celosvětové databáze 3D objektů však tento formát vcelku logicky nesplnil). Soubory uložené v tomto formátu mohou nabývat dvou podob – textové určené primárně pro přenos dat mezi různými platformami a binární pro úsporu místa na paměťovém médiu a/nebo potřebné kapacity přenosové linky.

NFF – Neutral File Format. Tento souborový formát byl původně navržen pro testování rychlosti a kvality vykreslování různých renderovacích programů, je ho však možné použít i pro přenos informací o 3D modelech mezi libovolnými aplikacemi. Data trojrozměrné scény jsou zapsána v textové podobě. Kromě jednotlivých polygonů (nejjednodušší stavební prvek stěn 3D těles) lze ukládat i polygony s normálovým vektorem, informace o nastavení kamery, pozice a barvu světel a v omezené podobě i materiál těles. Existuje také možnost přímého zadání základních kvadrik – koule, kužele a válce.

RAW – RAW File Format. Jedná se pravděpodobně o nejjednodušší formát určený pro zápis prostorových objektů. V textovém souboru jsou na každém řádku uloženy souřadnice jednoho trojúhelníku i s případnou normálou každého vrcholu (pokud se na řádku nachází pouze devět hodnot, normála je vypočtena automaticky). V základní verzi není možné ukládat žádné jiné informace, ale rozšířená verze umožňuje sdružení více trojúhelníků do jednoho pojmenovaného objektu. Jména objektů jsou umístěna buď na samostatném řádku nebo na konci některého řádku se souřadnicemi vrcholů trojúhelníku.

7. Virtuální realita

Z formátů a jazyků určených pro popis virtuální reality je doposud nejvíce rozšířený jazyk VRML, neboli Virtual Reality Modeling Language. Tento jazyk, který je definován i normou ISO, se používá pro popis jednotlivých prostorových těles i celých rozsáhlých scén v aplikacích virtuální reality a také (i když v menší míře, než se předpokládalo) na Internetu. Prostorová tělesa lze v tomto formátu popsat pomocí seznamu souřadnic vrcholů a plochami specifikovanými indexy svých vrcholů do seznamu vrcholů. Pro základní tělesa (krychle, koule, kužel apod.) a text jsou definována vlastní klíčová slova, takže je není nutné rozkládat na trojúhelníky, což by bylo prostorově náročné a při přenosu modelů po internetu i pomalé. Také je podporováno texturování, tělesa lze dokonce potáhnout texturou ve formě videa.

Tento formát ideově vychází z formátu používaného v Open Inventoru o kterém vyšel na Rootu seriál, takže je možné tvořit hierarchické stromové struktury těles a měnit vlastnosti (transformace, barvu, texturu apod.) pro každou větev stromu zvlášť. Zvláště výhodná je tato reprezentace při interaktivní změně některých parametrů, například posunu celého složitého modelu. V nových verzích tohoto formátu je dokonce možné zadávat animace a programovat reakce na různé události, takže se z na první pohled běžného souborového formátu stává celá platforma pro virtuální realitu. Soubory typu VRML jsou textové, takže je možné je upravovat textovými editory, posílat je přes filtry, spojit více souborů (a tím i reprezentovaných modelů) do jednoho atd.

root_podpora

8. Odkazy na další informační zdroje

  1. Drs, L.: „Plochy ve výpočetní technice“,
    SNTL, 1994
  2. Drs, L.: „Matematické metody v počítačové grafice“,
    ČVUT, Praha 1990
  3. Graef, G.L.: „Graphics Format“,
    Graphics Format
  4. Sobota Branislav: „Počítačová grafika a jazyk C“,
    Koop, 1995, České Budějovice
  5. Sobota Branislav, Milián Ján: „Grafické formáty“,
    Kopp, 1996, České Budějovice
  6. Sládeček Hynek a kolektiv: „1000 File Formats“,
    (freeware encyklopedie – hypertextový dokument ve formátu HLP), 1997, 1998
  7. Žára J., Beneš B., Felkel P.: „Moderní počítačová grafika“,
    Computer Press, Praha, 1998, ISBN 80–7226–049–9
  8. Žára J., Limpouch A., Beneš B., Werner T.: „Počítačová grafika – principy a algoritmy“,
    Grada, 1992

9. Obsah dalšího pokračování tohoto seriálu

V následujícím pokračování tohoto seriálu si popíšeme oblíbený vektorový formát HPGL (PLT), který je poměrně jednoduchý jak pro čtení, tak i pro programový zápis. Současně se jedná o formát, který ukazuje filozofii popisu obrázku pomocí série jednoduchých geometrických příkazů.

Byl pro vás článek přínosný?

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.