図形に動作を与える(回転) - VRML

更新:

VRML 図形に動作を与える(回転)。

図形に動作を与える(回転)
  1. NODE
    以下のノードは、図形を図形の中心軸を基準に回転(動作)させるVRMLノードです。
    #VRML V2.0 utf8
    
    DEF TIME TimeSensor{
      cycleInterval 3.5
      loop TRUE
    }
    DEF MOVE OrientationInterpolator{
      key[0 0.15 0.3 0.45 0.6 0.75 0.9 1]
      keyValue[
        0 1 0 0
        0 1 0 0.9
        0 1 0 1.8
        0 1 0 2.7
        0 1 0 3.6
        0 1 0 4.5
        0 1 0 5.4
        0 1 0 0
      ]
    }
    DEF BOX Transform{
      children Shape{
        appearance Appearance{
          material Material{
            diffuseColor 0.1 0.5 1
          }
        }
        geometry Box{
          size 1 3 1
        }
      }
    }
    ROUTE TIME.fraction_changed TO MOVE.set_fraction
    ROUTE MOVE.value_changed TO BOX.set_rotation
    
  2. DEF
    Transform{

    }
    という通常の物体のノードと異なり、
    DEF BOX Transform{

    }
    となっています。
    これは物体に名前を付けて定義していることを表しています。
    そうすることによって、BOX(他の名前でも良い)という名前で物体を呼び出すことができます。
  3. TimeSensor
    TimeSensorは、JavaScriptのsetTimeoutのようなもので、時間の設定をします。
    cycleInterval n
    は、時間の進み具合(イベントの発生間隔)です。
    loopは、TRUE(無限繰り返し)とFALSE(一度だけ再生)があります。
  4. OrientationInterpolator
    OrientationInterpolatorは、物体を回転させるために使うノードです。
    回転の動作(どのように回転するか)を定義します。
    keyは、0~1までの数字を分割し、動作の回数を決めます。
    多くの動きを定義する場合は、たくさん分割することになります。
    keyValueは、[x y z rad]で表されていて、左から順に、物体のx軸、y軸、z軸、回転角度となっています。
    keyValue[0 1 0 0.5]の場合、物体のy軸を中心に0.5ラジアン回転させることを意味します。
    keyの分割数とkeyValueの個数は、一致させる必要があります。
    この例では、8個です。
  5. ROUTE
    各ノードに関連性を持たせて、あるパラメータが変化すると、 別のパラメータも変化するようにさせるのがROUTEです。
    ここで、DEFで定義した内容が活用されます。
    この例では、TIME、MOVE、BOXの3つのノードのグループがあります。
    ROUTEを記述しないと動作しないので、必ず記述します。
  6. サンプル
    1. モーション(回転)
このエントリーをはてなブックマークに追加