移動と回転を組み合わせる方法(回転しながら移動する)

移動と回転を組み合わせる場合は次のようにする。


【例】三角錐が回転しながら移動する
   回転用と移動用にROUTE文を2セット作るところがポイント。

#VRML V2.0 utf8    #三角錐が回転しながら移動するアニメーション
DEF WHEELS Transform{
  translation 0.0 1.0 0.0    #表示位置
  center 0.0 -1.5 0.0        #回転中心
  children[
    Shape{
      appearance Appearance{
        material Material{
          diffuseColor 0.0 1.0 0.0
        }
      }
      geometry Cone{
        bottomRadius 0.2
        height 3.0
      }
    }
  ]
}

#回転用TimeSensorの定義
DEF TIMER TimeSensor{
  cycleInterval 10.0    #1周期の時間を設定(秒)
  loop TRUE             #繰り返しの設定
}

#回転に関するアニメーションの定義
DEF OI OrientationInterpolator{    #回転するアニメーションの設定
  key[
    0.0  0.5 1.0    #動作を起こす時間ポイント
  ]
  keyValue[         #値の変化を設定
    0.0 0.0 1.0 0.0,      #回転軸 X Y Z 回転角度
    0.0 0.0 1.0 -3.14,
    0.0 0.0 1.0 -6.28
  ]
}
#移動用TimeSensorの定義
DEF TIMER2 TimeSensor{   #TimeSensorノード
  cycleInterval 10.0     #1周期の時間の設定(秒)
  loop TRUE             #繰り返しの設定
}

#移動に関するアニメーションの定義
DEF PI PositionInterpolator{   #移動するアニメーションの設定
  key[
    0.0 0.5 1.0    #動作を起こす時間ポイント
  ]
  keyValue[        #値の変化を設定
    5.0 0.0 0.0,
    -5.0 0.0 0.0,
    5.0 0.0 0.0
  ]
}

#回転用ROUTE文の定義
ROUTE TIMER.fraction_changed TO OI.set_fraction
ROUTE OI.value_changed TO WHEELS.set_rotation


#移動用ROUTE文の定義
ROUTE TIMER2.fraction_changed TO PI.set_fraction
ROUTE PI.value_changed TO WHEELS.set_translation




実行例