サンプル
アニメーションの制御
m3dAnimationController クラスによるアニメーション制御
m3dAnimationController クラスはアニメーションシーケンスの位置、速度やウェイトを制御しています。 m3dAnimationController オブジェクトを操作することで、アニメーションシーケンスの開始・終了、再生速度などを設定することができます。たとえば、IMICRO3Dv4es_m3dAnimationController_setSpeed() メソッドを用いると、アニメーションの速度を変えられます。
以下は、サンプルコードでアニメーションの速度を操作しているところです。逆再生、停止から3倍速まで変更しています。
/* アニメーションコントローラの取得 */
/* 赤い立方体のモデルに設定されているアニメーションコントローラ ( userID:5 ) を取得 */
pmc -> pAnimCtrl = ( m3dAnimationController* ) IMICRO3Dv4es_m3dObject3D_find ( pMe -> pIM3D,
/* アニメーションスピードの初期化 */
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 )) {
/* 新しいスピードを設定する */
IMICRO3Dv4es_m3dAnimationController_setSpeed ( pMe -> pIM3D, pmc -> pAnimCtrl, pmc -> animSpeed, 0 );
/* 赤い立方体のモデルに設定されているアニメーションコントローラ ( 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を指定し、速度変更後は再び初期位置からアニメーションが開始するように設定しています。

描画結果


