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