アニメーション

2. PositionInterpolator (場所移動のアニメ)


PositionInterpolator は、Timer が示す時間に従って
物体が移動するアニメーションを記述するために用います。

PositionInterpolator と書いて、その後に { } をつけて、
{ } の中に物体移動のデータを書きます。

{ } の中に key と書いて、その後に [ ] をつけて、
キーフレームの枚数などを決めます。

〜ここで注意!〜

VRML では、動作1回の始まりを 0, 終わりを 1 として
キーフレームの該当時刻を記述します。

例えば、5コマのキーフレームがある場合は、
key[0.0, 0.25, 0.5, 0.75, 1.0] というように、
0 から 1 の間の数字を5個書きます。
この5つの数字が、キーフレームのそれぞれの時刻を表します。

〜ここまで注意〜

{ } の中に keyValue と書いて、その後に [ ] をつけて、
それぞれのキーフレームにおける位置を記述します。

以下、PositionInterpolator の記述例です。
5コマのキーフレームで、それぞれのキーフレームにおける
ある物体の位置が (0,0,0), (0,1,0), (1,2,0), (2,3,1), (3,3,3)
であることを示しています。


PositionInterpolator {
  key[0.0, 0.25, 0.5, 0.75, 1.0]
  keyValue[
   0 0 0,
   0 1 0,
   1 2 0,
   2 3 1,
   3 3 3,
  ]
}


では、PositionInterpolator を使ったアニメの実例を見ましょう。
以下の例では、上のほうの TimeSensor に記述された時間で、
中のほうの PositionInterpolator に記述された場所移動を、
下のほうの Sphere に与えています。


#VRML V2.0 utf8

DEF Timer1 TimeSensor {
 cycleInterval 2.0
 loop TRUE
 startTime 1.0
 stopTime 0.0
}

DEF Pos1 PositionInterpolator {
 key [0.0 0.4 0.6 0.8 1.0]
 keyValue [
  -3 0 0,
  0 0 0,
  1 1 0,
  2 0 0,
  2 0 0,
 ]
}

DEF Sphere1 Transform{	
 children Shape{
  appearance Appearance {
   material Material {
    diffuseColor 1 0 1
   }
  }
  geometry Sphere { }
 }
}

ROUTE Timer1.fraction_changed TO Pos1.set_fraction
ROUTE Pos1.value_changed TO Sphere1.set_translation

上の VRML を実際に表示してみましょう。

さて、上記の VRML を理解するためには、
もう少し勉強することがあります。


上記の VRML に何度か出てきている DEF とは、
物体や Timer などに名前をつけるための記述です。

例えば、DEF Timer1 TimeSensor とは、
「この TimeSensor を Timer1 と名づける」
という意味です。

同様に、DEF Pos1 PositionInterpolator は、
「この PositionInterpolation を Pos1 と名づける」
という意味です。

さらに、DEF Sphere1 Transform は、
「この Transform の中にある物体を Sphere1 と名づける」
という意味です。


上記の VRML の最後の2行に出てきている ROUTE とは、
Timer, PositionInterpolate, 物体を関係づける記述です。

これは複雑なので、そのまま覚えてください。
ただし、上記の VRML 中の名前 Timer1, Pos1, Sphere1 が
別の名前になれば、ROUTE 以下の名前の部分も変わります。


Timer を使う別の例として、ポリゴンが変形するアニメを ...

目次に戻る