4    Zrychlení zobrazování světů ve VRML

Se vzrůstající rychlostí počítačů se zvyšuje i rychlost zobrazení virtuálních světů a je možné zobrazovat stále více objektů. Zobrazení modelu krajiny ale klade extrémní nároky na počítač z důvodů velkého množství dat. Aby se návštěvník mohl pohybovat po krajině virtuálního světa a měl dojem plynulého pohybu, měl by počítač vykreslit 24 snímků za sekundu. Mezní rychlost, kdy pohyb není ještě příliš trhaný, je 10 snímků za sekundu. Rychlost zobrazení lze ovlivnit jednak hardwarově, ale především optimalizací souboru s VRML daty.

4.1   Hardwarové zrychlení

Koupit si kvůli virtuální realitě nejvýkonnější počítač je sice pěkné řešení, ale pro většinu lidí řešení nedostupné. řekl bych, že v současnosti vyráběné počítače střední cenové úrovně už dokážou virtuální realitu zobrazit velice slušně. Je nutné pamatovat na několik věcí. Nejdůležitější pro zobrazení VRML v počítači je grafická karta, nebo spíše grafický 3D akcelerátor. Dnes má většina grafických karet již tento 3D akcelerátor integrován. 3D akcelerátor zvyšuje rychlost zobrazení 2-5x. Prohlížeč VRML komunikuje s akcelerátorem prostřednictvím rozhraní DirectX nebo OpenGL. Je proto nutné zapnout v prohlížeči VRML zobrazování pomocí jednoho z těchto rozhraní. Aby pracoval grafický systém co nejrychleji, je dobré mít nainstalovány nejnovější ovladače grafické karty, popřípadě 3D akcelerátoru.

4.2   Optimalizace VRML souboru

Optimalizace se dá rozdělit do dvou kategorií. První je zrychlení načítání souborů s popisem virtuálního světa po síti a druhá je zrychlení zobrazování a pohybu. Některé prvky optimalizace ovšem zasahují do obou kategorií.

4.2.1  Načítání souborů

Snahou je, aby čas od chvíle, kdy prohlížeč dostane pokyn k zobrazení virtuálního světa, do chvíle, kdy se objeví první objekt, byl co nejkratší. V případě zobrazení virtuálních modelů terénu toho lze docílit následujícími způsoby:

4.2.1.1 Rozdělení světa do několika souborů

Jestliže návštěvník vstoupí do virtuálního světa vždy v jednom místě, je vhodné definovat v hlavním souboru jen objekty v jeho nejbližším okolí a vzdálenější objekty vkládat pomocí uzlu Inline. Další objekty jsou potom postupně zobrazovány a návštěvník se může zatím věnovat objektům v jeho bezprostřední blízkosti.

Při zobrazování map toho lze využít tak, že každý mapový list je uložen v samostatném souboru a pro zobrazení celku se pak vkládají jednotlivé listy do hlavního souboru prostřednictvím uzlu Inline.

4.2.1.2 Definování pomocných obálek

Pokud definujeme velikost a umístění ohraničujícího kvádru (bbox) pro uzly Inline, Transform a další, prohlížeč nemusí při načítání vyhodnocovat skutečné rozměry potomků těchto uzlů. Správně definovaná obálka je výhodná i pro návštěvníka virtuálního světa. Pokud prohlížeč ještě nenačetl potřebný objekt, může na jeho místě dočasně zobrazit hrany kvádru reprezentujícího obálku. Návštěvník je tak informován, že v daném místě brzy přibude do scény objekt dané velikosti.

4.2.1.3 Velikost textur

Při zobrazení prostorových modelů map je důležité určit správné rozlišení textury, která se nanáší na model. Jestliže bude mít textura velké rozlišení, bude vypadat výsledný model lépe, ale velikost souboru s texturou bude značná a rychlost zobrazení malá. Naproti tomu bude-li rozlišení malé, rychlost zobrazení a pohybu bude velká, velikost souboru s texturou malá, ale např. čitelnost nápisů na mapě bude špatná, ne-li nemožná. Proto je vhodné volit určitý kompromis mezi velikostí a čitelností a také použít uzel LOD s vícenásobnou prezentací textury.

Jestliže zmenšíme rozlišení obrázku na polovinu, zvýší se rychlost zobrazení o 20‑50%.

4.2.1.4 Používání komprese

Každý hotový soubor s virtuálním světem by měl být nakonec zkomprimován programem gzip. Soubor s takovouto kompresí dokáže prohlížeč sám rozeznat a také dekomprimovat. Program gzip je schopen soubor zmenšit více než dvakrát, a tak významně přispět ke zrychlení načítání.

4.2.2  Rychlost zobrazování a pohybu

Tyto optimalizace mají jako hlavní úkol co nejvíce zrychlit zobrazování, aby byl pohyb po virtuálním světy plynulý.

4.2.2.1 Využití vícenásobné reprezentace

Pro každý model mapy je dobré definovat několik reprezentací s různým stupněm generalizace zapsaným v uzlu LOD (Level Of Detail). Vložíme-li detailnější reprezentace uzlem Inline, prohlížeč může odložit jejich přečtení až do doby, kdy má více času.

Definování více reprezentací sice zabere více času a zvyšuje množství přenášených dat, ale přináší urychlení zobrazení. Tento uzel je důležitý hlavně při zobrazení větších virtuálních světů.

Uzel LOD obsahuje parametr range, který definuje vzdálenosti objektu od návštěvníka. Podle vzdálenosti potom prohlížeč přepíná jednotlivé reprezentace. Jestliže necháme parametr range prázdný, potom bude prohlížeč přepínat jednotlivé reprezentace automaticky podle výkonu počítače. Automatické přepínání ale může na pomalejších počítačích znamenat, že prohlížeč bude vždy zobrazovat jen nejjednodušší model a návštěvník nikdy neuvidí detaily.

Asi nejlepší je kompromis v podobě několika uzlů LOD v hierarchickém uspořádání. Nejvyšší uzel definuje jedinou přepínací vzdálenost. Pro objekt nacházející se před touto hranicí se vybere jeden ze dvou lepších modelů. Tato volba závisí na prohlížeči. Obdobně jako u dvojice lepších modelů se postupuje u dvojice horších modelů.

LOD {

  range [ 30 ] #jednoduché rozdělení na blízké a vzdálené

               #modely

  level [

    LOD {  #automatický výběr ze dvou modelů pro pohled

           #zblízka

      level [

        Transform {  #model kužel...

        }

        Shape {      #model čtyřboký jehlan...

        }

      ]

    }

    LOD { #automatický výběr ze dvou modelů pro pohled zdálky

      level [

        Billboard {  #model trojúhelník na billboardu...

        }

        Group {}     #model nic

      ]

    }

  ]

}

Program 4.1 Kombinace automatického a doporučeného přepínání mezi reprezentacemi v uzlu LOD.

4.2.2.2 Šetření počtem ploch

Je jasné, že čím bude prohlížeč zobrazovat najednou méně plošek, tím bude zobrazení rychlejší. Šetřit počtem ploch při zobrazení modelu terénu je problém zvláště u větších oblastí, ale je možné vzdálenější oblasti silně generalizovat, a s použitím vícenásobné reprezentace tak ušetřit mnoho ploch.

4.2.2.3 Správná definice plošných objektů

K urychlení zobrazení také přispívá správná definice uzlů ElevationGrid a IndexedFaceSet. Tyto uzly by měly splňovat implicitní nastavení parametru solid, convex a ccw na hodnotu TRUE, tj. plochy by měly být zobrazovány jednostranně, měly by být konvexní a přivrácená strana plochy by měla být vidět shora.

Velkou úsporou je definování plošek výhradně jako trojúhelníků. Rozdělení plošek na trojúhelníky sice zvyšuje velikost souboru, ale celkově znamená úsporu času. Plochy obecného tvaru totiž prohlížeč vždy převádí na trojúhelníky. Tento postup je časově náročný a nemusí vždy správně modelovat požadovanou plochu.