Pythonスクリプトでレンダリングを制御

BlenderのGUIで出来ることはBlenderコンソールからコマンドを入力することで同様の操作を実現できる。
通常のモデリングはGUIで行った方が視覚的にも簡単だが、複数のシーンを自動でレンダリングするといった繰り返しかつ時間がかかる作業ではスクリプトを組んだ方が便利だったりする。

レンダリングイメージXサイズ
bpy.context.scene.render.resolution_x = 1920
を入力するとレンダリングイメージのXサイズ(横幅)が1920に変更される。
サイズを変える場合は数値を変更。

レンダリングイメージYサイズ
bpy.context.scene.render.resolution_y = 1080
レンダリングイメージのYサイズ(縦幅)を1080に指定。

レンダリングイメージ パーセンテージ
bpy.context.scene.render.resolution_percentage = 50
レンダーイメージのパーセンテージを50%に指定。

スクリーンショット 2014-08-09 9.17.18

出力形式の指定
bpy.context.scene.render.image_settings.file_format = 'QUICKTIME_QTKIT'
レンダリングイメージの出力形式を変更。’QUICKTIME_QTKIT’は.mov形式で出力する事を意味する。
‘QUICKTIME_QTKIT’の部分を変えることで出力形式を指定できる。パラメータとして
‘BMP’, ‘IRIS’, ‘PNG’, ‘JPEG’, ‘TARGA’, ‘TARGA_RAW’, ‘CINEON’,
‘DPX’, ‘OPEN_EXR_MULTILAYER’, ‘OPEN_EXR’, ‘HDR’, ‘TIFF’, ‘AVI_JPEG’,
‘AVI_RAW’, ‘FRAMESERVER’, ‘H264’, ‘FFMPEG’, ‘THEORA’, ‘QUICKTIME_QTKIT’, ‘XVID’
がある。

フレームレート指定
bpy.context.scene.render.fps =30
フレームレート(fps)を30に指定。秒間30コマ。
数値を変更することで自由にフレームレート指定できる。通常は30コマを使用。
60コマだと非常に滑らかな映像になるがファイルサイズが増える。

レンダリングフレームの指定
bpy.context.scene.frame_start = 0
アニメーションをレンダリングする場合のレンダリング開始フレームを指定。
この場合は0フレーム目を指定している。数値を変えることで変更可能。

bpy.context.scene.frame_end = 300
アニメーションをレンダリングする場合のレンダリング終了フレームを指定。
この場合は300フレーム目を指定している。数値を変えることで変更可能。

保存先とファイル名指定
bpy.data.scenes["Scene"].render.filepath = "//xxx.mov"
保存するファイルパスとファイル名を指定。この場合は.blendファイルと同じ階層に「xxx.mov」で保存される。
絶対パス、または相対パスで指定。xxx部分を変数で置き換えることで多数のファイルを連続して保存させることも可能。

アクティブカメラの指定
bpy.context.scene.camera = bpy.data.objects["Camera"]
レンダリング時に使用されるカメラを指定。”Camera”の部分にレンダリングで使用したいカメラ名を書く。
スクリーンショット 2014-08-09 11.29.25
Camera.001を使用したい場合は
bpy.context.scene.camera = bpy.data.objects["Camera.001"]
と入力する。存在しないカメラを指定するとエラーが返ってくる。

アニメーションレンダリング
bpy.ops.render.render(animation=True)
アニメーションをレンダリング。
コマンドラインからレンダリングを実行するとレンダリング終了までBlenderを操作できなくなるので注意。

一回のコマンドが長いのはbpyモジュール内のdataモジュールのなかのsceneモジュールといった指定をしていくため。
bpy.data.objectsと書くところを、

com = bpy.data

というように変数comにbpy.dataを代入し

com.objects

と書いても同じ意味になる。

テキストエディタに書いて一気に実行する場合は最初に import bpy が必要。

import bpy
bpy.context.scene.render.resolution_x = 1920
bpy.context.scene.render.resolution_y = 1080
bpy.context.scene.render.resolution_percentage = 50
bpy.context.scene.render.image_settings.file_format = 'QUICKTIME_QTKIT'
bpy.context.scene.frame_start = 0
bpy.context.scene.frame_end = 300
bpy.context.scene.render.fps =30
bpy.context.scene.camera = bpy.data.objects["Camera"]
bpy.data.scenes["Scene"].render.filepath = "//xxx.mov"
bpy.ops.render.render(animation=True)

複数の動画を自動でレンダリングするにはリスト型などの変数とforループを使用する。

広告

コメントを残す(連絡がとれるメールアドレスをメールアドレス欄に入力していただければ内容によっては直接メールアドレス宛に返信します)

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中