Úloha 4

Zadání:

  1. Ke každému přístroji přidejte ve smyčce běžící animaci reprezentující "stroj v chodu" - typicky půjde o jemné chvění celého přístroje a vrčení motoru.
  2. Přidejte ke každému modelu "hlavní vypínač" (ovládaný skriptem), který po stisknutí:
  3. Na existenci tohoto důležitého vypínače upozorněte uživatele vhodnou animací (barvy, velikosti) běžící v nepřetržitém cyklu. Hlavní vypínač definujte v těle prototypu.
  4. Skript dále vylepšete tak, aby po zastavení a následném spuštění přístroje došlo k pokračování všech animací z naposledy dosaženého stavu (polohy, barvy, přehrávání zvuků apod.), tedy nikoliv opět od začátku
  5. Vytvořte panel HUD (Head-Up Display) s jedním tlačítkem a umístěte jej do scény. Propojte tlačítko s hlavními vypínači všech přístrojů a umožněte tak spouštění/zastavení celé scény tímto přepínačem.
  6. Definujte druhé tlačítko v panelu HUD jako přepínač noc/den, po jehož stisknutí se rozsvítí, resp. zhasnou světla nad všemi přístroji. Spolu s těmito světly měňte barvu pozadí scény a stav avatarovy svítilny.

Prototypy

Přepravník
field SFInt32 lod 1
field SFColor bodyColorDiffuse .1 .1 .4 # diffuse color of body (used when texture not used, and/or for lowest LOD)
field SFColor bodyColorSpecular .3 .3 1 # specular color of body (used when texture not used, and/or for lowest LOD)
field SFFloat bodyShininess 1 # shininess of body (used when texture not used, and/or for lowest LOD)
field MFString bodyTexture "" # body texture
field SFInt32 bodyUseTexture 0 # body texture usage enabled
field SFColor chairColor .1 .1 .1 # color of the chair
field SFColor roofColorDiffuse .9 .3 .3 # diffuse color of the vehicle roof
field SFColor roofColorSpecular 1 .8 .8 # specular color of the vehicle roof
field SFFloat roofShininess .1 # shininess of the vehicle roof
field SFInt32 remotelyControlledLifter 0 # whether the lifter has room for operator or no
field SFColor proximityLightColor 1 1 1 #light color that shines on model when avater is close
eventIn SFBool lightAlwaysOn #when passed ==TRUE, the light above the machine will always be on
eventIn SFBool powerOn #power the machine on/off

Míchačka
field SFInt32 lod 1 # level of detail on/off
field SFInt32 rust_texture 0 # 0 - no texture, 1 - grey rust texture, 2 - yellow rust texture
field SFNode wheel_material Material {diffuseColor 0 0 0 specularColor .04 .04 .04} # wheel material
field SFVec3f proximitySize 10 10 10 # size of proximity box (for lamp switch)
field SFColor lightColor 1 1 1 # above lamp color
eventIn SFBool lightAlwaysOn # above lamp always on switch
eventIn SFBool mainSwitch # main switch for all animations and sensors

Skripty

Míchačka

Přepravník


Scéna se zapnutým LOD:
Scéna s vypnutým LOD:
scena.wrl scena_no_lod.wrl