Zdefiniowanie trasy animacji (węzły <typ_animacji>Interpolator)

 
Węzły interpolacji definiują trasę jaką dany obiekt będzie przebywał podczas animacji. Zastosowanie węzła interpolacji nie musi jednak prowadzić tylko do tego by dany obiekt wprowadzić w ruch. W specyfikacji VRML 2.0 jest sześć różnych węzłów opartych na wartościach interpolowanych, a każdy z nich w inny sposób odpowiada za "ożywienie" obiektów na scenie.

OrientationInterpolator {
  eventIn      SFFloat    set_fraction
  exposedField MFFloat    key           []
  exposedField MFRotation keyValue      []
  eventOut     SFRotation value_changed
}
 

Węzeł OrientationInterpolator interpoluje między wartościami typu MFRotation określającymi dane dotyczące obrotu jakiegoś obiektu. Obrót obiektu definiujemy w polu key określając liczbę „momentów kluczowych animacji" czyli takich punktów, w których dany obiekt ma być obrócony o wartość określoną w polu keyValue. Węzeł korzystając z pól key i keyValue oblicza funkcję interpolacyjną obrotu obiektu. Liczba wartości w polu key i keyValue musi być identyczna.

Zdarzenia set_fraction i value_changed używane są do sterowania węzłem OrientationInterpolator. Ich zastosowanie zobaczycie na przykładzie w punkcie "Tworzymy animację"
 


PositionInterpolator {
  eventIn      SFFloat set_fraction
  exposedField MFFloat key           []
  exposedField MFVec3f keyValue      []
  eventOut     SFVec3f value_changed
}

Węzeł PositionInterpolator interpoluje między punktami zdefiniowanymi w przestrzeni trójwymiarowej. Liczba wartości w polu key i keyValue musi być identyczna. Zasady działania pól key, keyValue oraz zdarzeń jest identyczna jak w węźle OrientationInterpolator.


ScalarInterpolator {
  eventIn      SFFloat set_fraction
  exposedField MFFloat key           []
  exposedField MFFloat keyValue      []
  eventOut     SFFloat value_changed
}

Węzeł ScalarInterpolator interpoluje między wartościami typu SFFloat. Można więc tego węzła używać do zmieniania wartości wszędzie tam gdzie występuje wartość SFFloat, a więc np: wysokości i średnice obiektów. Liczba wartości w polu key i keyValue musi być identyczna. Zasady działania pól key, keyValue oraz zdarzeń jest identyczna jak w węźle OrientationInterpolator.


CoordinateInterpolator {
  eventIn      SFFloat set_fraction
  exposedField MFFloat key           []
  exposedField MFVec3f keyValue      []
  eventOut     MFVec3f value_changed
}
 

Węzeł CoordinateInterpolator interpoluje między wektorami typu MFVec3f. Każdej wartości w polu key musi odpowiadać X definicji wektorów w polu keyValue. X - musi być taką liczbą, której wynik dzielenia z ilością wartości w polu key da liczbę całkowitą.

CoordinateInterpolator {
       key      [ 0.0,  0.5,  1.0]
       keyValue [ 0  0  0,   10 10 30,

                 10 20 10,   40 50 50,

                 33 55 66,   44 55 65 ]
}
 
Pierwsze dwie współrzędne (0 0 0) i (10 10 30) reprezentują klucz 0.0, dwie następne współrzędne reprezentują klucz 0.5 itd. X = 6, liczba wartości w polu key = 3, 6 / 3 = 2 -  liczba całkowita.


ColorInterpolator {
  eventIn      SFFloat set_fraction
  exposedField MFFloat key           []
  exposedField MFColor keyValue      []
  eventOut     SFColor value_changed
}

Węzeł ten interpoluje między wartościami typu MFColor. Ilość definicji kolorów w polu keyValue powinna odpowiadać ilości wartości w polu key - punktów zwrotnych animacji. Węzeł ten (jak i wszystkie węzły interpolacji) uruchamiany jest wraz z przyjęciem zdarzenia set_fraction.


NormalInterpolator {
  eventIn      SFFloat set_fraction 
  exposedField MFFloat key           []   
  exposedField MFVec3f keyValue      []   
  eventOut     MFVec3f value_changed
}
 
Węzeł NormalInterpolator interpoluje między prostopadłymi (do określonej powierzchni) wektorami typu MFVec3f. Każdej wartości w polu key musi odpowiadać X definicji wektorów w polu keyValue. X - musi być taką liczbą, której wynik dzielenia z ilością wartości w polu key da liczbę całkowitą.

Można używać tego węzła do tworzenia ruchomych efektów cieniowania.

NormalInterpolator {
   key      [ 0.0, 0.5, 1.0 ]
   keyValue [  .1 .5 .2
              .5 .4 .6
              .8 .4 .3
              .2 .7 .6
 
              .2 .5 .6
              .3 .4 .5
              .8 .7 .3
              .1 .2 .2
 
              .1 .5 .8
              .3 .4 .6
              .1 .5 .8
              .6 .2 .1
 
           ]
}

X = 12, liczba wartości w polu key = 3, 12 / 3 = 4 -  liczba całkowita.