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 に何度か出てきている
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 を使う別の例として、ポリゴンが変形するアニメを ...