【例1】移動の例(タッチされた物体自体が動く)
【例2】移動の例(タッチしたのとは別の物体が動く)
【例3】回転の例(クリックしたのとは別の物体が回転する)
【例4】2つの物体が動く例
【例1】移動の例(タッチされた物体自体が動く) 球をクリックすると、1回だけ球が動く #VRML V2.0 utf8 #球をクリックすると1回だけ移動する #球に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ノード cycleInterval 2.0 #1周期の時間の設定 loop FALSE #繰り返しの設定 } #移動に関するアニメーションの定義 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.touchTime TO TIMER.set_startTime ROUTE TIMER.fraction_changed TO PI.set_fraction ROUTE PI.value_changed TO KYUU.set_translation
実行例
【例2】移動の例(タッチしたのとは別の物体が動く) 赤い球をクリックすると、1回だけ緑の球が動く #VRML V2.0 utf8 #赤い球をクリックすると1回だけ移動する #アニメーションのための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ノード cycleInterval 2.0 #1周期の時間の設定 loop FALSE #繰り返しの設定 } #移動に関するアニメーションの定義 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.touchTime TO TIMER.set_startTime ROUTE TIMER.fraction_changed TO PI.set_fraction ROUTE PI.value_changed TO KYUU.set_translation
実行例
【例3】回転の例(クリックしたのとは別の物体が回転する) 赤い球をクリックすると、1回だけ物体が回転する #VRML V2.0 utf8 #クリック&回転アニメーション #赤い球をクリックすると1回だけ回転する 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によるインスタンス処理 cycleInterval 5.0 #1周期の時間を設定 loop FALSE #繰り返しの設定 } #回転に関するアニメーションの定義 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.touchTime TO TIMER.set_startTime 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 } } ] } #TimeSensor1の定義 DEF TIMER1 TimeSensor{ #TimeSensorノード cycleInterval 5.0 #1周期の時間の設定 loop FALSE #繰り返しの設定 } #TimeSensor2の定義 DEF TIMER2 TimeSensor{ #TimeSensorノード cycleInterval 5.0 #1周期の時間の設定 loop FALSE #繰り返しの設定 } #移動に関するアニメーションの定義 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.touchTime TO TIMER1.set_startTime ROUTE TIMER1.fraction_changed TO PI1.set_fraction ROUTE PI1.value_changed TO Kyuu1.set_translation ROUTE TS.touchTime TO TIMER2.set_startTime ROUTE TIMER2.fraction_changed TO PI2.set_fraction ROUTE PI2.value_changed TO Kyuu2.set_translation 実行例
【問題】
赤い球をクリックすると、1回だけ3つの球が動くようにしなさい。