prev up inhalt next

Scripts

Manchmal reichen die in VRML angebotenen Funktionen wie Sensoren und Interpolatoren nicht aus, um ein spezielles situationsbedingtes Interaktionsverhalten zu erzeugen. Abhilfe schafft hier der sogenannte Script-Knoten, welcher Input empfangen, Daten verarbeiten und Output verschicken kann. Z.B. kann eine vom Touch-Sensor geschickte Nachricht eine Berechnung anstoßen, deren Ergebnis in Form einer Translations-Nachricht an ein bestimmtes Objekt geschickt und dort zur Neupositionierung genutzt wird.
javascript.wrl
# VRML V2.0 utf8
# javascript.wrl: Rotation eines Objekts ueber Javascript 

Viewpoint {position  0 2 8}             # Augenpunkt

Group {                                 # gruppiere 
  children [                            # folgende Objekte 
    DEF Taste TouchSensor{}             # Beruehrungssensor Taste
    DEF Pyramide Transform {            # Objekt Pyramide
      children[                         # bestehend aus
        Inline {url "pyramide.wrl"}     # VRML-Welt pyramide.wrl
      ]
    }
  ]
}

DEF Aktion Script {                     # Script mit Namen Aktion
  eventIn  SFBool     isActive          # Input-Parameter
  eventOut SFRotation drehung           # Output-Parameter
  url [                                 # gespeist von 
     "javascript:                      // inline-Javascript
     function isActive(eventValue) {   // fuer eventIn zustaendig
       if (eventValue == true) {       // falls eventValue den Wert wahr hat
         drehung[0] = 0.0;             // drehe                          
         drehung[1] = 1.0;             // bzgl.                          
         drehung[2] = 0.0;             // der y-Achse 
         drehung[3] += 0.174444;       // um weitere 10 Grad 
       }
     }" 
  ]
}

ROUTE Taste.isActive                    # bei Beruehren der Pyramide 
   TO Aktion.isActive                   # sende Nachricht an das Script Aktion 

ROUTE Aktion.drehung                    # vom Script Aktion erzeugter Dreh-Vektor       
   TO Pyramide.set_rotation             # wird an die Pyramide geschickt 




Die Formulierung des Berechnungsalgorithmus geschieht entweder durch ein Javascript-Programm, inline gelistet im Script-Knoten, oder durch eine assoziierte Java-Klasse, welche in übersetzter Form mit Dateiendung *.class lokal oder im Netz liegt. Zum Übersetzen der Java-Quelle ist das EAI (External Authoring Interface) erforderlich, welches in Form einiger Packages aus dem Verzeichnis importiert wird, in welches sie das VRML-Plugin bei der Installation deponiert hatte. Beispiel 7 zeigt die Pyramide zusammen mit einem Java-Script, welches bei jedem Aufruf den Drehwinkel bzgl. der y-Achse um weitere 10 Grad erhöht.


prev up inhalt next