サンプル

アニメーションの制御

ここでは m3dAnimationController クラスを用いたアニメーションの制御について解説します。






m3dAnimationController クラスによるアニメーション制御

m3dAnimationController クラスはアニメーションシーケンスの位置、速度やウェイトを制御しています。 m3dAnimationController オブジェクトを操作することで、アニメーションシーケンスの開始・終了、再生速度などを設定することができます。たとえば、IMICRO3Dv4es_m3dAnimationController_setSpeed() メソッドを用いると、アニメーションの速度を変えられます。

以下は、サンプルコードでアニメーションの速度を操作しているところです。逆再生、停止から3倍速まで変更しています。

/* アニメーションコントローラの取得 */
/* 赤い立方体のモデルに設定されているアニメーションコントローラ ( userID:5 ) を取得 */
pmc -> pAnimCtrl = ( m3dAnimationController* ) IMICRO3Dv4es_m3dObject3D_find ( pMe -> pIM3D,
  ( m3dObject3D* ) pmc -> pWorld, UID_ANIM );

/* アニメーションスピードの初期化 */
pmc -> animSpeed = IMICRO3Dv4es_m3dAnimationController_getSpeed ( pMe -> pIM3D, pmc -> pAnimCtrl );

( 中略 )

/* アニメーションスピードを変更する */
pmc -> animSpeed = IMICRO3Dv4es_m3dFloatCalc_f_add ( pMe -> pIM3D, pmc -> animSpeed, 1.f );

/* 変更したスピードと最大速度の比較 */
/* 本サンプルでは、3倍速を最大とする */
if ( IMICRO3Dv4es_m3dFloatCalc_f_gt ( pMe -> pIM3D, pmc -> animSpeed, 3.f )) {
pmc -> animSpeed = -1.f;
}

/* 新しいスピードを設定する */
IMICRO3Dv4es_m3dAnimationController_setSpeed ( pMe -> pIM3D, pmc -> pAnimCtrl, pmc -> animSpeed, 0 );

IMICRO3Dv4es_m3dAnimationController_setSpeed ( inst, ctrl, speed, worldTime ) メソッドのworldTime は、速度変更が有効になるための時間を表しています。ここでは worldTime = 0を指定し、速度変更後は再び初期位置からアニメーションが開始するように設定しています。



描画結果
描画結果


このページの先頭へ戻る