【例1】移動の例(クリックされた物体自体がクリックしている間だけ動く)
【例2】移動の例(クリックしたのとは別の物体が、クリックしている間だけ動く)
【例3】回転の例(クリックしたのとは別の物体が、クリックしている間だけ回転する)
【例4】2つの物体が動く例
#VRML V2.0 utf8 #クリック&移動アニメーション #赤い球をクリックすると、クリックしている間だけ移動する #球にTouchSensorを付加する DEF KYUU Transform{ translation 5 2 0 children[ Shape{ appearance Appearance{ material Material{ diffuseColor 0.0 1.0 0.0 } } geometry Sphere{ radius 1.0 } } DEF TS TouchSensor{ } ] } #TimeSensorの定義 DEF TIMER TimeSensor{ #TimeSensorノード enabled FALSE cycleInterval 2.0 #1周期の時間の設定 loop TRUE #繰り返しの設定 } #移動に関するアニメーションの定義 DEF PI PositionInterpolator{ #移動するアニメーションの設定 key[ 0.0 0.5 1.0 #動作を起こす時間ポイント(0.0から1.0の間で指定) ] keyValue[ #値の変化を設定 5.0 2.0 0.0, -5.0 2.0 0.0 5.0 2.0 0.0, ] } #ROUTE文の定義 ROUTE TS.isActive TO TIMER.set_enabled ROUTE TIMER.fraction_changed TO PI.set_fraction ROUTE PI.value_changed TO KYUU.set_translation 実行例
【例2】移動の例(クリックしたのとは別の物体が、クリックしている間だけ動く) 赤い球をクリックすると、クリックしている間だけ緑の球が動く #VRML V2.0 utf8 #クリック&移動アニメーション #赤い球をクリックすると、クリックしている間だけ移動する #アニメーションのためのTransformノードのインスタンスを生成 DEF KYUU Transform{ translation 5 2 0 children[ Shape{ appearance Appearance{ material Material{ diffuseColor 0.0 1.0 0.0 } } geometry Sphere{ radius 1.0 } } ] } #TimeSensorの定義 DEF TIMER TimeSensor{ #TimeSensorノード enabled FALSE cycleInterval 2.0 #1周期の時間の設定 loop TRUE #繰り返しの設定 } #移動に関するアニメーションの定義 DEF PI PositionInterpolator{ #移動するアニメーションの設定 key[ 0.0 0.5 1.0 #動作を起こす時間ポイント ] keyValue[ #値の変化を設定 5.0 2.0 0.0, -5.0 2.0 0.0 5.0 2.0 0.0, ] } #球にTouchSensorを付加する Transform{ translation 0 -1 0 children[ Shape{ appearance Appearance{ material Material{ diffuseColor 1 0 0 specularColor 1 1 1 } } geometry Sphere{ radius 0.5 } } DEF TS TouchSensor{ } ] } #ROUTE文の定義 ROUTE TS.isActive TO TIMER.set_enabled ROUTE TIMER.fraction_changed TO PI.set_fraction ROUTE PI.value_changed TO KYUU.set_translation 実行例
【例3】回転の例(クリックしたのとは別の物体が、クリックしている間だけ回転する) 赤い球をクリックすると、クリックしている間だけ物体が回転する #VRML V2.0 utf8 #球をクリックすると、クリックしている間だけ物体が回転する DEF WHEELS Transform{ translation 0.0 1.5 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{ #DEFによるインスタンス処理 enabled FALSE cycleInterval 5.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 ] } #球にTouchSensorを付加する Transform{ translation 0 0 0 children[ Shape{ appearance Appearance{ material Material{ diffuseColor 1 0 0 specularColor 1 1 1 } } geometry Sphere{ radius 0.5 } } DEF TS TouchSensor{ } ] } #ROUTE文の定義 ROUTE TS.isActive TO TIMER.set_enabled ROUTE TIMER.fraction_changed TO OI.set_fraction ROUTE OI.value_changed TO WHEELS.set_rotation 実行例
【例4】2つの物体が動く例 赤い球をクリックすると、クリックしている間だけ2つの物体が移動する #VRML V2.0 utf8 #クリック&移動アニメーション #球をクリックすると移動する DEF Kyuu1 Transform{ translation 5 2 0 children[ Shape{ appearance Appearance{ material Material{ diffuseColor 0.0 1.0 0.0 #色の設定 } } geometry Sphere{ radius 1.0 } } ] } DEF Kyuu2 Transform{ translation -5 0 0 children[ Shape{ appearance Appearance{ material Material{ diffuseColor 0.0 1.0 0.0 #色の設定 } } geometry Sphere{ radius 1.0 } } ] } #TimeSensorの定義 DEF TIMER1 TimeSensor{ #TimeSensorノード enabled FALSE cycleInterval 5.0 #1周期の時間の設定 loop TRUE #繰り返しの設定 } #TimeSensorの定義 DEF TIMER2 TimeSensor{ #TimeSensorノード enabled FALSE cycleInterval 5.0 #1周期の時間の設定 loop TRUE #繰り返しの設定 } #移動に関するアニメーションの定義 DEF PI1 PositionInterpolator{ #移動するアニメーションの設定 key[ 0.0 0.3 1.0 #動作を起こす時間ポイント ] keyValue[ #値の変化を設定 5.0 2.0 0.0, -5.0 2.0 0.0, 5.0 2.0 0.0 ] } #移動に関するアニメーションの定義 DEF PI2 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 ] } #球にTouchSensorを付加する Transform{ translation 0 -2 0 children[ Shape{ appearance Appearance{ material Material{ diffuseColor 1 0 0 specularColor 1 1 1 } } geometry Sphere{ radius 0.5 } } DEF TS TouchSensor{ } ] } #ROUTE文の定義 ROUTE TS.isActive TO TIMER1.set_enabled ROUTE TIMER1.fraction_changed TO PI1.set_fraction ROUTE PI1.value_changed TO Kyuu1.set_translation ROUTE TS.isActive TO TIMER2.set_enabled ROUTE TIMER2.fraction_changed TO PI2.set_fraction ROUTE PI2.value_changed TO Kyuu2.set_translation 実行例
【問題】
赤い球をクリックすると、クリックしている間だけ3の球が動くようにしなさい。