11日目が空いていたので(またか
説明画像はありません。
Auto Run Python Scriptを設定からONにしておかないと動きません。
BlenderにおけるDriverとは、1行で書き表されるpython scriptです。
どんなものか試してみたい人はまず
Emptyをシーンに追加し、Rotationのどれかに
#radians(frame)
と打ってEnterを押してみましょう、現在のフレームの角度に回転するアニメーションになるはずです。
やっていること
- frameはBlender Driverの機能として、現在のフレームの値が入っている変数です。
- blenderはスクリプトだとラジアン角度なので、frameをradians() で囲むことによって、frameを角度として扱うようにしています。
- 最初の#はDriverを書いているということをBlenderに示すというショートカットです。欄が紫のときは必要ありません。
#sin(radians(frame))
- 数学のsinです。locationに入れるとsin波みたいになります。ゆらゆらします
#round(sin(radians(frame))*5)
- さらに値を四捨五入してみました(元の値を5倍にしています。0-1の範囲だと分かりにくいので)
カクカクな感じのsinな動きになりました
mathはインポートされているようなので使ってみると良いでしょう
##ヘンなことをしてみる
###自己責任で…
#len(bpy.data.objects)
オブジェクトデータの数を値に入力します。Driver Editorには遅いだのうまく動かないなどと怒られますが、どうやら動くようです。
スザンヌを作成し、フレームENDを507にします。
Emptyのlocation のXに
bpy.data.meshes[0].vertices[int(frame)].co[0]
location のYに
bpy.data.meshes[0].vertices[int(frame)].co[1]
locationの Zに
bpy.data.meshes[0].vertices[int(frame)].co[2]
でフレーム数に対応した頂点のローカル座標にEmptyが移動します。CNCとか3Dプリンタっぽい動きに見えなくもない・・・
one more thing...
ワンライナーがキツイという方はテキストエディタ->templates->python->Driver Functions
で出来たテンプレを読んでみると良いかもしれません(Driverに機能追加できる