Blenderのコマンドラインレンダリング 【2.8x系対応】

スポンサーリンク

Blenderは、コマンドラインでも動かすことができます。レンダリング命令もできるので、簡易ネットワークレンダリングやバッチレンダリングにぴったりです。

スポンサーリンク

コマンドの例

コマンドはこのような感じになります。Windows, Linuxどちらも共通です。

blender --background -noaudio test.blend --threads 0 --render-output //anim --render-anim

オプションの解説

よく使うもののみを紹介します。すべてのオプションは、公式マニュアルにあるのでそちらを御覧ください。

Command Line Arguments — Blender Manual

-b もしくは –background
バックグラウンド実行(GUIを表示しない)。コマンドラインレンダリングの際は通常これにする。

-noaudio
オーディオシステムを使わない(GUIを起動していないLinuxなどはこれを追記する)。

-t もしくは –threads <スレッド数>
レンダリングに使うスレッド数。0を指定すると、すべての論理スレッドを使う。これは無くてもいいが、blendファイルで少なく指定している場合にオーバーライドするために使う。

-o もしくは –render-output <アウトプットのパス+ファイル名>
出力先。指定しない場合は、blendファイルの情報が使用される。
・// がblendファイルの場所基準の相対パス。
・アニメーションの場合、末尾に0000.pngや0000.exrがつく。
したがって、たとえば //render/out とすると、(blendファイルの場所)/render/out0000.exr 、 (blendファイルの場所)/render/out0001.exr 、といった形でファイルが保存されていく。
・#記号を使うことで、その部分を連番扱いにすることも可能。
//render/animation_##_testとすると、animation_01_test.png のように名前がつけられる。#の数がそのままゼロ埋めの桁数になる。

-a もしくは –render-anim
アニメーションレンダリング。blendファイルで定義されたフレームのレンダリングを順番にすべて行う。

-f もしくは –render-frame <フレーム番号>
特定のフレームのみレンダリング。とびとびの値や、連続フレームなどが柔軟に指定できる。
・複数のフレームを指定するときは、コンマで区切る。
例 : –render-frame 1,4,10,20
・あるフレームからあるフレームの間を指定するときは、「..」を使う。
例 : –render-frame 5..10
・上2つを組み合わせた表記も可能。
例 : –render-frame 1,5,10..20,30..40,55,60
・スペースなどを含めないこと(引数の切れ目として認識されてしまう)。

オプション指定の注意点

以上のオプションを書く順番は、ある程度決まっています。ルールは、

blender [引数を取らないオプション] [blendファイル] [引数をとるオプション] [フレーム指定オプション]

となります。

[引数を取らないオプション]
-b(–background)や、-noaudioなど。blenderの起動方法に関わる部分。

[blendファイル]
blendファイルの場所を指定する。

[引数をとるオプション]
上の例では-t(–threads)や-o(–render-output)など。

[フレーム指定オプション]
-a(–render-anim)もしくは-f(–render-frame)を入れる。このオプションは必ず最後にしないといけない。途中に書くと、命令がそこまでだと認識され、後に書いた部分はすべて無視される。

Windowsバッチファイル

Windowsのバッチレンダリングに使える.batファイルを作成してみました。変数を使って、柔軟に変更できるようになっています。
set文は、変数の指定を意味しています。同じ変数の指定文が複数ありますが、一番下にあるものが優先されるので、行の順番を変えることで設定をいじれるようになっています。
また、logファイルに、レンダリングの情報が逐一出力されるようになっています。log=nulにすると、ログを作りません。
%blender%から始まる行を複製して並べれば、複数ファイルを順番にレンダリングするようなものを作れます。

set blender="C:\Software\Blender.81\blender.exe"
set log=nul
set log="Z:\Web\CGBeginner\log.txt"

set blendfile="Z:\Web\CGBeginner\render.blend"
set threads=0

set outpath= --render-output //scene1/render
set outpath=

set frame=--render-frame 359..360
set frame=--render-anim

%blender% --background -noaudio %blendfile% --threads %threads% %outpath% %frame% >> %log% 2>&1

rem @echo off
echo End of Batch
pause

シェルスクリプト(Bash)

Linuxで使うシェルスクリプトも作成しました。中身は.batと同等です。

blender="/home/user/bin/blender2.81/blender"
log="/dev/null"
log="/home/user/log"

blendfile="/home/user/render.blend"
threads=0

outpath="--render-output //scene1/render"
outpath=""

frame="--render-frame 1,3,5"
frame="--render-frame 1..10"
frame="--render-anim"

${blender} --background -noaudio ${blendfile} --threads ${threads} ${outpath} ${frame} >> ${log} 2>&1 &

コメント

タイトルとURLをコピーしました