Python, Blender 回転カメラ
今日はメッシュを置いてないのでカメラ移動だけ。円周に沿ってカメラ移動、秒24f つまり 24fps, 3秒間で72 frames を予定。一周して元に戻る。コマ番号0から71まで。3秒アニメーションを繰り返す予定。
(オマケ。美鈴が丘経由で15km走りました。1hour46min。美鈴が丘の商店街横には小さな神社が作ってあって初詣の予定表あり。)
今日はメッシュを置いてないのでカメラ移動だけ。円周に沿ってカメラ移動、秒24f つまり 24fps, 3秒間で72 frames を予定。一周して元に戻る。コマ番号0から71まで。3秒アニメーションを繰り返す予定。
(オマケ。美鈴が丘経由で15km走りました。1hour46min。美鈴が丘の商店街横には小さな神社が作ってあって初詣の予定表あり。)
BlenderとPythonを調べていてたまたま見つかったpython資料です。ExcelとかMAYAとか Google SpreadSheetなど接点あり。
(以下追記)
昨日書いた(A). 100個程度の立体配置、(B). 照明とカメラを配置、(C). カメラ移動のパスを配置 (D). カメラ設定して数秒間のアニメ作成、この(A)(B)(C)(D)を曲がりなりにpythonで練習しました。使用環境は Blender 2.79, macOS 10.13.2 ,他にpngをアニメGIFに変換するImageMagick 。(例convert -delay 4 -loop 0 *.png py_disc3.gifのようにアニメGIFに変換) 100px*200pxの レンダリング時間は5秒くらい。ファイルサイズ 190kB。セコセコとスクリプトを打ったりデバッグする作業時間は2時間以上かも。
残った課題はカメラ移動のパスの変形やカメラ角度の制御、メッシュの色や反射の指定、照明の強さや向きの指定、など多数。 移動パスpath角度ひとまずはz 3.14/4で指定。(指定なし初期状態ではx軸に平行な方向になる)単位は180度がパイになるラジアン単位だと思ってます。 (残った謎として、カメラやメッシュの rotationは角度指定する数値の制限があるのかも。マイナス数値を入れてエラーが返ったような感じです。あと、注意点は 新規メッシュとか作った直後はそのオブジェクトが選択されている、というのがワナ。これを見落とすと変な選択状態になる。) 以下が使ったスクリプト。コメントアウトしたゴミが少々残ってます。
3Dのblender とPythonで時々遊んでいます。
今の目標は、(A). 100個程度の立体配置、(B). 照明とカメラを配置、(C). カメラ移動のパスを配置 (D). カメラ設定して数秒間のアニメーション作成、この辺までをpythonで実行すること。 全自動化するのは目標が高すぎるので最初のA, Bあたりの作業に慣れたいというところ。手作業で20個くらいはコピペできるけど大量に複製するとか綺麗な曲線に沿って並べるとか考えるとpythonの方がメリットが多いと予想してます。完成アニメは例えばジャングルジム上空からドローンで撮影したような動画とかビル街を右折左折して走る車を後方上からカメラで追っかける動画とか。なお、今後の参考資料としてカメラとカメラ移動のパスを関連づけるscriptはこれ。 Blender Stack Exchange, how to set the camera follow path ...
なお今日の添付GIFアニメ (400kB) のスクリプトは以下の通り。円盤24個と柱4個のメッシュ配置だけ。カメラ動きは手作業。参考は 「BlenderのプリミティブオブジェクトをPythonで操作する...」 「Pythonではインデントがルール」これ大事だと感じました。
オマケ。 【Blender】複数選択方法いろいろ。特にBボタンと左ドラッグ大切。 (室蘭工業大学 「波動エレクトロニクス研究室」)Blender 解説 PDF 初期オブジェクトの削除、カメラの設定、など例文あり役立つ。 直線曲線メモ。bezier_curveと、nurbs_pathの比較。bpy.ops.curve.primitive_bezier_curve_add()は初期状態で曲線。bpy.ops.curve.primitive_nurbs_path_add()初期状態で直線状なので扱いが楽。control pointsの扱いをどう書くかはまだ手付かずのまま。。参考資料keyframe Thread: Blender 2.6: Set keyframes using Python script 良さそう。
3Dのblender とpython言語の 関連資料を少し集めました。各記事の執筆時期は2012-2016年あたり。Blenderのバージョンは2.63から2.73。主にMacOS向けです。
なお過去の日記でBlender関連記事は( カテゴリー「Blender」選んでもいいし)いくつか拾うとこんなところです。 Blender でF-Curveコピペ(xyz動作の曲線グラフをcopy, paste)、 Blenderで文字と照明(照明の動きをアニメーション)、 Blender 2.77立体文字 など。
YouTubeでも英語日本語ともBlender動画解説が豊富です。最近見つけたもので自分に向いているなと感じたものが、この動画。 Blender Animation Tutorial A Car Following a Path and the Front Wheels Turning動画5分間。 自動車が経路沿いに移動。前輪は操舵角度に曲がる。 Blender Free Tutorials by ianscott888 この人の英語説明は聞き取りやすいです。
立方体を設置。パスを設置。立方体(車体)を選択、くさりアイコンのconstraint で add object constraint から follow pathを選択。 targetで狙いの 曲線の名称を選択(この場合は一つだが)して, 三つあるチェックボックスの follow pathをONにする。(この段階で立方体(車体)は、曲線に沿って角度が変化する設定となる) 次に パスを選択して、プロパティの中のdataアイコンを選択(materialのすぐ左) 、そこで timelineパネルの中で End を120フレームに設定。この時点の作業で、1コマ目が表示されていると確認する。(1でないなら1にする)
右端のdata のプロパティの中で下の方、path animation の evaluation timeを0として、そのevaluation time 0 のボタン上で右クリックして insert keyframe を選択。(ボタンが黄色になる)
次に表示コマを(終端まで早送りするボタンで) 120コマに移動。そこで右端のプロパティの frames は100になっている。 それを確認して evaluation time を100と打つ(100%の意味)
もう一度evaluation time のボタン上で右クリックして再度、 insert keyframe する。(これで
始点と終点でのキーフレーム位置が決定されたので )巻き戻して、1コマ目から再生すると立方体(車体)は曲線に沿って移動する)
(ここまでが、 車体の動きを示した 前半の解説。 後半は省略。)
3DソフトのBlenderです。 少し分かってきた、アニメーション動作 F-Curveのcopy and paste (コピペ)をする方法。F-CurveというのはBlenderでのxyz動作を曲線グラフにしたもの。
今日はカーブに沿って動くカメラと上下に動く柱を作ろうと計画してみました。
秒間フレーム速度は30fpsで2秒間目標として60コマを作る。
カメラは看板中央に向かって 円弧を描くように動く。照明の動きはグルグル回る。柱が4本、上下。で、作業開始。柱も看板もすぐできる。ここでわからない部分に直面。 object >>>> Parent >>>> follow path >> follow pathで曲線通りにカメラは動くけど、「1秒間で曲線の端まで到達させる」速度の調整方法がわかりません。
なので follow pathの方式は今日はやめて、 insert keyframe で場所と角度を1, 16, 31, 46, 60コマ目で指定する方法をとりました。これなら確実に第xコマでこの場所、と指定できます。 option + マウスホイールでコマを前後させる操作が大変に便利。今後の課題は、複数のオブジェクトを「同じような動きをさせる」には Graph Editorあたりのグラフ曲線でどうするかという扱いです。
(完成したアニメGIFは1.8MBになってココログに掲載できないのでtwitter投稿だけです)
| 固定リンク
| コメント (0)
| トラックバック (0)
Blender次の課題として照明の動きを試しました。「 移動:Gキー go, 回転:Rキー rotate, 拡大縮小:Sキー scale, 」の手順も数年ぶりに思い出してます。今日作ったのは直方体、3Dテキスト、照明数カ所と、照明の動きを応用したアニメーション。カメラは固定。GIFアニメとしてファイル800kB程度。前回6月27日記事と同様に、仕事場のmacにHomeblewをインストールして、imagemagickもインストール。Blenderからのアニメーション出力はPNGでバラバラで出して、imagemagickでanimGIFに合成。
最近のコメント