# 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.