色変化アニメーション




【文法】
色変化アニメーションは次の(1)〜(4)の手順で設定を行う。


(1)Transformノードの定義


(2)TimeSensorの定義


(3)色変化に関するアニメーションの定義


(4)ROUTE文の定義


【例1】球の色が変化する

#VRML V2.0 utf8    #色変化アニメーション

Transform{
  translation 0.0 0.0 0.0
  children[
    Shape{
      appearance Appearance{
        material DEF Color1 Material{
          diffuseColor 0.0 1.0 0.0
        }
      }
      geometry Sphere{
        radius 1.0
      }
    }
  ]
}

#TimeSensorノードの定義
DEF TIMER TimeSensor{
  cycleInterval 5.0     #1周期の時間の設定(秒)
  loop TRUE             #繰り返しの設定
}

#色の変化に関するアニメーションの定義
DEF CI1 ColorInterpolator{
  key[  
    0.0 1.0        #cycleInterval時間の中で動作を起こすポイント(0.0から1.0の間で指定)
  ]
  keyValue[        #色の変化を設定
    0.0 1.0 0.0,
    0.0 0.0 0.0,
  ]
}

#ROUTE文の定義(青)
ROUTE TIMER.fraction_changed TO CI1.set_fraction
ROUTE CI1.value_changed TO Color1.set_diffuseColor


実行例



【問題】
1つの球を、赤色、緑色、青色に順に変化させなさい。
実行例


【例2】2つの球の色が変化する

#VRML V2.0 utf8    #色変化アニメーション

#1つ目の球
Transform{
  translation -2.0 0.0 0.0
  children[
    Shape{
      appearance Appearance{
        material DEF Color1 Material{
          diffuseColor 1.0 0.0 0.0
        }
      }
      geometry Sphere{
        radius 1.0
      }
    }
  ]
}

#2つ目の球
Transform{
  translation 2.0 0.0 0.0
  children[
    Shape{
      appearance Appearance{
        material DEF Color2 Material{
          diffuseColor 0.0 0.0 0.0
        }
      }
      geometry Sphere{
        radius 1.0
      }
    }
  ]
}

#TimeSensorノードの定義1
DEF TIMER1 TimeSensor{
  cycleInterval 5.0     #1周期の時間の設定(秒)
  loop TRUE             #繰り返しの設定
}

#TimeSensorノードの定義2
DEF TIMER2 TimeSensor{
  cycleInterval 5.0     #1周期の時間の設定(秒)
  loop TRUE             #繰り返しの設定
}

#色の変化に関するアニメーションの定義1
DEF CI1 ColorInterpolator{
  key[  
    0.0 1.0        #動作を起こす時間ポイント
  ]
  keyValue[        #値の変化を設定
    1.0 0.0 0.0,
    0.0 0.0 0.0,
  ]
}

#色の変化に関するアニメーションの定義2
DEF CI2 ColorInterpolator{
  key[  
    0.0 1.0        #動作を起こす時間ポイント
  ]
  keyValue[        #値の変化を設定
    0.0 0.0 0.0,
    0.0 0.0 1.0,
  ]
}

#ROUTE文の定義
ROUTE TIMER1.fraction_changed TO CI1.set_fraction
ROUTE CI1.value_changed TO Color1.set_diffuseColor

ROUTE TIMER2.fraction_changed TO CI2.set_fraction
ROUTE CI2.value_changed TO Color2.set_diffuseColor


実行例



【問題】
信号機を作りなさい。
実行例