prev up inhalt next


8.6 Animation

Die benutzergesteuerte oder automatische Bewegung von Objekten und Szenenteilen wird wiederum mit Hilfe der Ereignisbehandlung organisiert. Im Beispiel 6 wird die Ziehbewegung des gedrückten Mauszeigers zur Manipulation der lokalen Translation eines Objekts verwendet und das regelmäßige Verstreichen eines Zeitintervalls löst eine Nachricht an denselben geometrischen Knoten aus, der hierdurch seinen aktuellen Rotationsvektor erhält. Eine solche Konstruktion verlangt einen Orientation-Interpolator, welcher beliebige Bruchzahlen zwischen 0 und 1 auf die zugeordneten Werte seines Schlüsselintervalls abbildet, hier bestehend aus allen Drehwinkeln zwischen 0 und 3.14 (=180 Grad beschrieben in Bogenmaß), bezogen auf die y-Achse.

 
#VRML V2.0 utf8 
# animation.wrl 
# selbstaendig sich drehende und interaktiv verschiebbare Pyramide 
  
DEF Schieber PlaneSensor {}            # Sensor zum Melden einer Mausbewegung 
  
DEF Timer TimeSensor {                 # Sensor zum Melden eines Zeitintervalls 
  cycleInterval 5                      # Dauer 5 Sekunden 
  loop TRUE                            # Endlosschleife 
} 
  
DEF Rotierer OrientationInterpolator{  # Interpolator fuer Rotation 
  key      [0 , 1]                     # bilde Schluessel 0 und 1 ab auf 
  keyValue [ 0  1  0  0                #   0 Grad Drehung bzgl. y 
             0  1  0  3.14]            # 180 Grad Drehung bzgl. y 
} 

DEF Pyramide Transform {               # plaziere Objekt mit Namen Pyramide 
      children [                       # bestehend aus 
        Inline {url "pyramide.wrl"}    # VRML-Datei pyramide.wrl 
      ] 
} 
  
ROUTE Timer.fraction_changed           # falls Zeitintervall sich aendert 
   TO Rotierer.set_fraction            # schicke Bruchteil an Rotierer 
ROUTE Rotierer.value_changed           # falls Drehung sich aendert 
   TO Pyramide.set_rotation            # schicke Drehwert an Pyramide 
 
ROUTE Schieber.translation_changed     # falls gedrueckter Mauszeiger bewegt wird 
  TO Pyramide.set_translation          # schicke Translationswert an Pyramide





prev up inhalt next