忘却まとめ

Blenderの中級者・上級者向けの踏み込んだ情報や、アドオン・3DCGに関する情報を記事にします

繰り返す動きを作る方法【アクション・Fカーブモディファイア / ドライバー / 関数 / Blender】

Blender

更新日:

規則的に繰り返す動きの作り方をいくつか紹介する。

アクション全体の場合

ループさせたい動きを作っておき、アクションをストリップ化する。
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

Blender のドライバー Tips - dskjal

3Dモデルなどの制作依頼はこちら

-Blender

Copyright© 忘却まとめ , 2021 All Rights Reserved Powered by STINGER.