Řešení úlohy 3

Zadání: Dynamický objekt VRML


Vytvořte další adresář na vašich WWW stránkách, tentokrát s číslem 3. Do něj umístěte soubory podle stejných pravidel a se stejnými jmény jako v předchozí úloze.

Dále rozšiřte statický objekt z minulé úlohy o zadané dynamické vlastnosti. Každý prototyp, resp. druh objektu by měl umět:

  1. alespoň 2 dynamické akce a to pomocí různých druhů senzorů (tedy nedělat vše jen pomocí TouchSensor),
  2. pracovat se zvukem a světlem.
Z WWW stránky by měl návštěvník získat následující informace a soubory: Pamatujte na dodržování co nejvyšší snímkové rychlosti a na co nejmenší velikost souborů:
"Virtuální realita je o rychlosti, nikoliv o kráse".
(Je ovšem pravda, že jedno z kriterií hodnocení bude i umělecký dojem... ;-)

Řešení:

uloha.wrl

Popis scény

Pila -- po doteku se pila rozjede a rozřeže stůl, ten se poté rozpadne.

Bazének -- při vstupu do bazénku se stůl uvniř samou radostí rozeskáče, po nějaké době však radost vyprchá (po 5 skocích). Skákaní stolu však zneklidní zdroj světla umístěný nad stolkem a ten začne měnít barvy. Stolem se dá taktéž pohybovat po dně bazánku. Zároveň se stolem se pohybuje i zdroj světla.

Čudl -- tvar stolu lze měnit pomocí otočneho čudlu na kraji bazénku. po každém kliknutí se tvar změní a čudl se potočí. Tvar stolu lze měnit i barevnými kostičkami. Každá kostička odpovídá jednomu tvaru stolu. Při změně tvaru kostičkou se čudl pootočí do správné polohy. Při implementaci čudlu a kostiček byl použit uzel Script.

Popis rozhraní prototypů

PROTO TableAnim[
eventIn SFTime startAnim   # pocatek animace 
]
Prototyp stolu, který se dokáže rozpadnout na dva. Poté, co dostane event startAnim, počká nějaký čas (než k němu přijede pila), pak začne v sobě vytvářet díru a nakonec se rozpadne na dvě půlky.
PROTO PilaAnim[
eventOut SFTime clickAnim   # pocatek animace 
]
Pila z počatku klidná, ale citlivá. Po dotyku se rozeskáče. Zároveň vyšle event pro stůl, že se může připravit na rozřezání.
 PROTO TableShow [
  exposedField MFNode object  Box {} # tvar objektu, který bude ukazován
]
Bazének ve kterém se muže hýbat s objektem. Když avatar vstoupí do bazénku objekt se rozeskáče. V našem případě je objektem stůl z předešlé úlohy.
PROTO MultiButton [
  exposedField    SFInt32 faze   0 # v jake fazi se cudl nachazi
  field    SFInt32 faze_max      3 # kolik fazi bude cudl mit
  eventIn  SFInt32 set_faze        # a temito eventy se faze meni
  eventOut SFInt32 faze_changed    # ... a dava vedet o tom,
                                   # ze byla zmenena
]
Čudl je poněkud mimo rámec této úlohy, proto jen okrajově. Každým kliknutím se zvětší fáze (modulo faze_max). Pokud přijde event faze_changed čudl se obrátí do správné polohy.

Popis předávání událostí

TableShow aneb stůl v bazénku

Downloads

Vše v jednom balíku (tgz, 105kB)

Bez hudby (zip, 90kB)