[blender]コマンドラインレンダリングでレンダリング時間を節約しよう

blender2.82使用
レンダリングは時間がかかるものです。
私の場合はアニメーション専門なので一枚数分だとしても、数百枚、千枚越えともなると馬鹿になりません。
印刷用のレンダリングも大変でしょう。
しかしコマンドラインでレンダリングするだけで数パーセントレンダリング時間が節約できるのです。
数パーセントと言えども何時間、数日かかる場合で数パーセントの節約は大きいです。
「コマンドラインは苦手」と思っている人もいるかと思いますが覚えてしまえば意外と簡単ですのでこれを機会にチャレンジしてみましょう。



なぜコマンドラインレンダリングだと速くなるのか?
それはですね、バックグラウンドでblenderを起動するからです。
バックグラウンドで起動するという事はblenderの画面が一切表示されません。
つまり画面表示処理を行わない為にその分レンダリングにパワーをさけるのです。








コマンドラインレンダリングを使ってみる
コマンドラインレンダリングをするにはコマンドプロンプトやコンソールなどを使います。

[簡単]blenderでPythonを使って楽しよう前編でコンソール付きでblenderを起動する方法を紹介しました。
今回もその方法を使います。
基本的にはblenderのあるディレクトリに移動してblenderを指定します。


2020/03/10追記

おさらいしておきましょう。


Linux

cd <blender installation directory>
./blender


Windows

c:\<blender installation directory>
blender


基本的にはblender本体のパスを入力すれば良いと思うのですが・・・

例によって私はMacなのでMacでの方法を紹介しますがMacが一番特殊だと思います。(blender.app本体ではなく中のファイルを指定する必要がある為)
 まず適当なblendファイルを用意しましょう。
 そして、レンダリング範囲やレンダリング先などの設定を済ませておきましょう。
 その後コンソールを開きます。


コンソールでblenderのパス(ドラッグで可)-b blendファイルのパス(ドラッグで可) -aと入力するとアニメーションレンダリングが始まります。
これだけで数パーセントレンダリングが速くなるのですからやらないと損でしょう。

blenderのヘルプを貼っておきます
https://docs.blender.org/manual/en/2.82/advanced/command_line/arguments.html
(英語です)

全てではありませんがいくつかオプションを紹介します。

上の例で行くと
blenderのパス -b ファイルのパス -s 10 -a
(10フレーム目からアニメーションレンダリング)


blenderのパス -b ファイルのパス -s 10 -e 15 -a
(10フレームから15フレームまでをアニメーションレンダリング)

blenderのパス -b ファイルのパス -f 30
(30フレーム目を静止画レンダリング)



2020/3/10追記
例えば-f -5と入力すると最後から5フレーム目をレンダリングという意味になります。

-s や -e ここではやりませんが -o(出力先の指定) などは静止画レンダリングの -f アニメーションレンダリングの -aより前に記述する必要があります。
-f や -a は最後に書くわけです。

ちなみにこれはMacだけなのでしょうか?

echo "alias blender=/Applications/blender.app/Contents/MacOS/blender" >> ~/.profile

(私の場合blenderを直に入れているので)これを入力するとblenderと入力するだけで毎回blenderのパスを入力する手間が省けます。入力した後は一回コンソールのウィンドウを閉じてください。そして開き直すとエイリアスが有効になります。

コンソールで
ls -a
と入力して実行するとその中に.profileが表示されます。
open .profile
と入力すると.profileが開き先ほど入力したエイリアスが書き込まれている事が分かります。
テキストエディットで編集できるので不要なら削除したりパスを書き直す事もできます。

これ出来るのMacだけ?エイリアスを作る事で毎回blenderのパスを書くのを省ける








コマンドラインでバッチレンダリングが出来る!
レンダリングが長くなる時寝る前や出かける前にレンダリングをかけることありますよね?
しかし、それでもまだレンダリングが終わっていないなら良いのですが、既に終わってしまっていると時間が無駄になった気になりませんか?
本当ならもっと複数のシーンファイルをレンダリングしたかった、でも普通は一つのシーンしかレンダリングできない・・・
そんな時にコマンドラインレンダリングです。
例えばコンソールで

blender -b /a.blended -f 1 ; blender -b /b.blende -f 1

などと「;(セミコロン)」でコマンドを繋ぐと二つのコマンドを順番に実行してくれます。
レンダリングしたいシーンが複数ある場合は有効です。
この機能を使う場合は自動でスリープしない様に設定した方がいいと思います。
一つのファイルのレンダリングが終わった時にスリープしてしまった事があるので(^^;


コマンドラインレンダリング是非活用してください