モーションの計算を間引くには?
上記のLimitedAnimationの記述を見て、「そういえばモーションの計算を間引くのはどうやればいいのだろう??」と気になったので調べてみました。
■ Animation(Legacy)の場合
単純に animation の enabled を 特定のフレーム間隔でtrueにすれば実現できました。
myAnimation.enabled = counter % 3 == 0;
counter++;
みたいな。
ちょっと面白かったのが、「3フレームに1回更新にするんだったら、アニメーション速度を3倍にしなければ…」と思っていたのですが、それが必要なかった点。
直前にenabledで計算した時間から経過時間をとっているのかな??
■ Animatorの場合
こちらも特定のタイミングでenabledをtruenにすれば良い。
ただ、こっちの場合はアニメーションスピードを間引いたフレーム分倍速化しなければ動きが一致しない。
myAnimator.enabled = counter % 3 == 0;
counter++;
myAnimator.speed = 3f;
みたいな。
という事でアニメーションの更新タイミングを間引くことが可能になりましたが、上記のリンク先にもあるように
最初期はFカーブを用いて毎秒60コマのフルフレームでキャラクターを動かし,その60コマのアニメーションから間引いていくような制作手法も試してみました。ただ,そうすると,ただの「コマ落ちした3Dグラフィックス」にしか見えなくて(笑)。
との事で、逆にチープになること請け合いかもしれません;
遠くのキャラのモーションを間引いて軽量化…とかには使えるかもですかね。
※動画は気が向いたら撮ります。