規則的に繰り返す動きの作り方をいくつか紹介する。
もくじ
アクション全体の場合
ループさせたい動きを作っておき、アクションをストリップ化する。
NLAエディターに切り替え、対象のトラックを選択する。
サイドメニュー > ストリップ > リピートの回数を増やすことでループさせることができる。
キャラクター全体の動きをループさせたい場合はこれ。
Fカーブモディファイアの反復モディファイア
特定の軸をループさせたい場合はこれ。
ループさせたい動きを作っておく。
グラフエディターにて、対象のカーブを選択し、サイドメニューのモディファイアから反復 を追加する(Shift + E でも追加できる)。
位置を永遠に動かしたい場合は、オフセットオプションを利用するとよい。
Fカーブモディファイアでは動きを途中で開始・終了できない
Fカーブモディファイアには反復モディファイアがあるが、影響力にキーやドライバーを付けることができない。
そのため、 繰り返しの動きをさせつつ途中で動きの開始・終了させることができない。
途中で動きを変えたい場合は、下記のようにドライバーを利用する。
関数で作る
特定の軸のループを途中で開始・終了させたい場合はこちら。
他より高度で難しいが、より細かな調整ができる。
トランスフォーム値入力欄内に「#」で始まるスクリプトを追加すると、そのスクリプトを使ったドライバーが作成される。 下記のスクリプトでは、5フレームごとに繰り返す動きが作れる。
#cos(frame*pi/5)
途中で開始・終了させる
途中で繰り返しを開始・終了させたい場合は、別途入力値のvarを作り、乗算などして値を消す。
動画ではボーンの位置0.0-1.0 の値を入れて調節できるようにしている。
初期値が0だと乗算で最初から消えてしまうので、最後に1引くことで逆転させている。
cos(frame*pi/5) * (var-1)
1.0と0.0を繰り返す
シェイプキーやモディファイアのオンオフを繰り返すのには1.0と0.0の値が必要。
frame*pi/5 では、5フレームごとに1.0と-1.0を繰り返す。
1足して2と0間にし、半分にすると1.0と0になる。
(1 + cos(frame*pi/5))/2
参考
python - Sine wave function as an input value? - Blender Stack Exchange