Domácí úlohy: 1 2 3 4

Obecný popis kompletní úlohy

Úlohou týmu je vytvořit webovou, 3D počítačovou hru určenou pro malé děti. Cílem hry je procházet prostorovou scénu - viz nabídka prostředí (tj. nahlížet na její součásti z různých stran a úhlů), nacházet interaktivní předměty, tzv. oříšky, a po úspěšném provedení interaktivní akce s předmětem (tj. rozlousknutí oříšku) získat bod (hvězdičku, diamant, apod.) v centrálním čítači splněných úkolů - rozlousknutých oříšků. Po rozlousknutí všech oříšků se zastavuje čas běžící od vstupu do scény a spustí se oslavné outro (závěrečná animace + vypsání dosaženého času).

Každý student vytvoří nejméně 2 interaktivní modely (oříšky) a nejméně 2 jiné modely, sloužící k estetickému doplnění scény, jako falešné objekty či jako zakrývající překážky vyžadující obejití ve 3D. Charakteristika (finálního) individuálního modelu:

  • Je tvořen geometrií, jejíž rozsah nepřesáhne 1.000 trojúhelníků.
  • Textury nesmějí v dekomprimovaném tvaru celkově zabrat pro jeden model více než 4 MB paměti.
  • Interakce a animace jsou vždy doplněny vhodným zvukem. Soubory se zvuky nesmějí pro jeden model přesáhnout velikost 1 MB.
  • Model je definován jako prototyp (PROTO).
  • Model má nejméně 3 stupně detailu (LOD), posledním stupněm může být prázdný uzel (Group).
  • Nejméně na jednom modelu prokazuje student schopnost vytvořit manipulace.
  • Nejméně na jednom modelu prokazuje student schopnost vytvořit animace.

Scéna, v níž jsou rozmístěny individuální modely všech členů týmu, je doplněna webovými stránkami s technickými a doplňujícími informacemi. Samotná virtuální scéna pak obsahuje:
  • Podlahu, případně další jednoduché geometrické objekty.
  • Od každého individuálního modelu nejméně 2 instance, a to v různých variantách (barva, textura, apod.). Každý člen týmu tedy do scény vkládá nejméně 2+2 instance oříšků a 2+2 instance jinách modelů.
  • Sadu stanovišť (Viewpoint) tvořících plynulou procházku scénou a poskytujících pohledy na jednotlivé instance modelů.
  • Doplňkovou sadu stanovišť určenou pro měření rychlosti zobrazování s ohledem na stupně LOD. Při přepínání mezi nimi (PgUp, PgDn) měřte fps.
  • Uživatelské rozhraní ve formě HUD (Head-Up Display) na němž běží čas a zobrazuje se počet rozlousknutých oříšků.
  • Pěkné pozadí.

Pozn.: Při vytváření modelů se můžete inspirovat projekty z Internetu, avšak ve vlastní úloze zásadně nepoužívejte zdrojové kódy a data existujících modelů.


Úloha č. 1: Statický svět a navigace

Každý student vytvoří nejméně 2 modely (oříšky) a nejméně 2 jiné modely, sloužící k estetickému doplnění scény.

Scéna, v níž jsou rozmístěny individuální modely všech členů týmu, je doplněna webovými stránkami s technickými a doplňujícími informacemi. Samotná virtuální scéna pak obsahuje:
  • Podlahu, případně další jednoduché geometrické objekty.
  • Od každého individuálního modelu nejméně 2 instance. Každý člen týmu tedy do scény vkládá nejméně 2+2 instance oříšků a 2+2 instance jinách modelů.
  • Sadu stanovišť (Viewpoint) tvořících plynulou procházku scénou a poskytujících pohledy na jednotlivé instance modelů.
  • Doplňkovou sadu stanovišť určenou pro měření rychlosti zobrazování s ohledem na stupně LOD. Při přepínání mezi nimi (PgUp, PgDn) měřte fps.
  • Pěkné pozadí.

===> Veškerá data úlohy umístěte do adresáře ....../PGR012/1 <===
Adresář bude dále obsahovat:

1) obr.jpg -
náhled scény (snapnuté okénko) v podobě obrázku o velikosti 128x128 pixelů.
2) index.html -
hlavní WWW stránka úlohy. Obsahuje zadání, stručný popis řešení s rozhraním prototypu (až od druhé úlohy) a odkaz na HTML stránku s "EMBED" světem v okénku o velikosti přesně 800x600 pixelů.
3) vse.zip -
archiv celého adresáře PGR012/1, vyčištěný od nepotřebných dat (balastu).
Tato jména jsou závazná a budou sloužit k automatickému vytvoření Galerie předmětu PGR012. Další úlohy budete ukládat do adresářů s pořadovými čísly 2, 3 a 4.

Kritéria pro hodnocení:


Úloha č. 2: Svět s detaily

Přetvořte model z úlohy č. 1:
  1. Modely budou definován jako prototyp (v samostatném souboru), obsahující různé stupně detailu pro různé součásti. Zaveďte nejméně 3 různé stupně detailu. Parametrem prototypu bude volba, zda vlastnost LOD má být zapnuta či vypnuta (viz ukázkový kód), volba barvy nějaké části modelu a volba textury použité na nějakou část modelu.
  2. V modelu použijte nejméně jeden geometrický prvek odlišný od základních těles. Jeho tvar můžete vymodelovat v externím modeláři (např. Blender) a šikovně exportovat do VRML. Vylepšete tak tvar modelu.
  3. Textury aplikujte pouze pro nejlepší kvalitu LOD. Součet dekomprimovaných velikostí všech textur týmu nesmí přesáhnout 16 MB. Výpočet potřebné texturovací paměti uveďte na příslušnou webovou stránku.
  4. K úloze vytvořte v adresáři /2 příslušné stránky s informacemi o vlastnostech virtuální scény (okomentovaná záhlaví prototypů). Testovací scéna bude totožná se scénou z minulé úlohy, bude však existovat ve dvou verzích - se zapnutým a s vypnutým LOD pro všechny modely ve scéně.
  5. Proveďte měření snímkové rychlosti pro různé stupně detailu, které zveřejníte v souboru detaily.html.
  6. Všechny WRL soubory ukládejte na disk v komprimované podobě.
 
#VRML V2.0 utf8
PROTO Model [ exposedField SFInt32 lod 1
              exposedField SFColor barva 0 .6 .8
                # ... a další parametry dle libosti
             ]
# lod: 0 - LOD vypnuto
#      1 - LOD zapnuto
{ Switch { whichChoice IS lod
    choice [Group {}       # varianta bez LOD
            LOD   {}       # varianta s LOD
    ]
  }
}
Soubor kolotoc.wrl
Obsah adresáře PGR012/2 (jména souborů) nechť odpovídá obsahu adresáře PGR012/1.

===> Jak měřit Snímkovou rychlost:

  1. Do scény přidejte ještě další nová stanoviště pro měření fps, umístěná v různých vzdálenostech příslušných danému stupni detailu (pro každou vzdálenost dvojice stanovišť umístěná vedle sebe s rozdílem polohy cca 1 m v levopravém směru). Kolik stupňů LOD, tolik dvojic měřicích stanovišť. Zorný úhel a umístění stanovišť volte tak, aby z nich byly vidět všechny objekty naráz.
  2. Samotná měření provádějte při přepínání (PgUp, PgDn) mezi danými dvojicemi stanovišť v pevně daném "EMBED" okénku o velikosti 800x600 pixelů. Příklad použití značky EMBED:
    <embed src="scena.wrl" border=0 width="800" height="600">.
  3. Měření pochopitelně proveďte pro obě (obsahově totožné) scény: s LOD i bez LOD. Na tyto scény umístěte odkazy z HTML stránky.
  4. Výsledky měření (včetně poměru fps pro verzi s/bez LOD) uspořádejte do přehledné tabulky doplněné vysvětlujícím textem. Tabulku doplňte grafem.

Kritéria pro hodnocení:


Úloha č. 3: Dynamický svět

Přetvořte statické modely do podoby interaktivních, animovaných a ozvučených modelů:
  1. Od této chvíle zpracovávejte pouze variantu modelu s LOD.
  2. Doplňte do svých dvou oříšků nejméně dvě různé manipulace (Plane-, Sphere-, CylinderSensor).
  3. Kliknutím na vybranou část alespoň u jednoho oříšku (TouchSensor.touchTime):
    •  spusťte vhodný zvuk,
    •  zahajte animaci měnící nejméně 2 vlastnosti (pozice, orientace, barva, apod.).
  4. V alespoň jednom oříšku reagujte na přítomnost avatara (ProximitySensor), např. rozsvícením světla nad oříškem, jehož barva bude nastavitelná ze záhlaví prototypu. Senzor definujte uvnitř prototypu. Příslušné stanoviště ve scéně nastavte tak, aby bylo umístěno na okraji citlivé oblasti senzoru.
  5. K úloze vytvořte v adresáři /3 příslušné stránky. Přidejte k nim informace o dynamických vlastnostech (uveďte blokové schéma dynamických akcí, tj. předávání událostí).
  6. Porovnejte, zda přidání dynamiky (fáze 3) změnilo fps ve srovnání se stejným, avšak statickým modelem (fáze 2). Měřte pouze varianty s LOD a výsledky měření opět zveřejněte.

Body 1 až 5 se vztahují k individuálním modelům jednotlivých členů týmu, bod 6 je aktivitou celého týmu.

Kritéria pro hodnocení:


Úloha č. 4: Inteligentní svět (se skriptem)

    V této fázi již nemusíte měřit snímkovou rychlost.
    1. Do scény přidejte panel HUD (Head-Up Display). V něm zobrazujte čas běžící od vstupu uživatele do scény (spouštěný vhodně nastaveným senzorem Proximity). Dále v něm zobrazujte symboly pro postupně vyřešené úkoly (oříšky).
    2. Nad každý oříšek přidejte blikající a animovanou 3D šipku (definovanou jako PROTO). Zobrazení šipky vypínejte a zapínejte událostí eventIn SFBool showIt zasílanou do prototypu oříšku z tlačítka panelu HUD.
    3. Dodejte maximální věrohodnost chování oříšků pomocí uzlu Script. Po rozlousknutí oříšku zašlete z jeho prototypu událost do panelu HUD.
    4. Definujte animovanou akci se zvukem (outro), která bude spuštěna po rozlousknutí všech oříšků.

      Soubor HUD.wrl

      Kritéria pro hodnocení:


      Datum poslední změny 24.10.2010, Jiří Žára