先日、開催されたBlenderの発表会でプレゼンしたうちのひとつのネットワークレンダリングについて、ここで細かく記事にしておきます。
ネットワークレンダリングを使うことで、レンダリング時間を大幅に短縮することができますが、ここで紹介するのは有料のネットサービスではなく、自宅でできるネットワークレンダリングです。
自宅に2台以上のPCがあればネットワークレンダリングが出来るのでやってみるのも良いかと思います。無料だし。どれくらい早くなるかはPCの性能に依存してしまいますが、少しはマシになるかも。
ちなみに、Blenderに付属されているアドオンにBlender Networkというネットワークレンダリングのためのアドオンがありますが、これとは違います。
標準アドオンではMasterやSlave、Clientノードを用意する必要があり、標準アドオンでは1フレームのレンダリングを分散して行えないです。
ここで紹介するスクリプトを使ったレンダリングでは、1枚の画像(=1フレーム)を分割してレンダリングしてくれます。この記事の源泉は次のサイトです。Windowsでの設定方法など以下に補足しました。
[GARD]
(準備)
Scriptは作者サイトが消されたので、私のサーバーからダウンリンクできます(以下)。Copyraightは作者にあります(Copyright (c) 2016, Mahlon E. Smith)。
Blender network rendering for single frames
このScript見ても分かるように難しいことはしてません。単純にレンダリングする画像を100分割しています。そして、同じフォルダを他のPCからも参照して実行しているので、フォルダ内に100分割のうち出力されていないものを識別して各PCでレンダリングを実行していくという仕組みです。
また、100分割した画像を一つの画像に統合するため、ImageMagikを使います(他のソフトでもOK)。
ImageMagickはこちらの公式サイトからダウンロードできます。
インストールする際に、以下のように選択してインストールします。
(使い方: Windowsの場合)
Step 1
他のPCからもアクセスできるように共有フォルダを作ります。
Step 2
コマンドプロンプトでBlenderが実行できるように、OSの環境変数を修正します。
具体的には、PCアイコンを右クリックし、プロパティを開きます(または、コントロールパネルの「システムとセキュリティ」→「システム」)。「システムの詳細設定」をクリック。
表示されたウィンドウの「環境変数」をクリック。
システムの環境変数のリストの中から「Path」を選択し、「編集」ボタンを押します。
別のウィンドウが開くので、その画面の「新規」ボタンを押してから、以下を入力し、「OK」ボタンを押します。
C:\Program Files\Blender Foundation\Blender
以上をレンダリングする他のPCにも設定しておきます。
Step3
共有したフォルダにレンダリングするBlendファイルと、ダウンロードしたScriptを入れておきます。
Step 4
他のPC(共有フォルダを見に行く他のPC)では、エクスプローラーのツリー表示のところで、「ネットワーク」の下にある共有フォルダを右クリックし、「ネットワークドライブの割り当て」を実行します。これをしないと、コマンドプロンプトで実行できません(ネットワーク上の共有フォルダにカレントディレクトリを移動できません)。
Step5
全てのPCでコマンドプロンプトを開き、ネットワーク上の共有フォルダを開きます。そして、以下を実行します。「-b」はバックグラウンド実行、「-P」はその後のPython Scriptを実行するという意味です。
blender file.blend -b -P chunked_render.py
以下のように100分割でレンダリング結果が作成されます。
Step 6
100分割した画像が出来上がったら、コマンドラインで以下を実行すると、統合された画像(rendered.png)が作成されます。
montage -background none -mode concatenate -tile 10x10 chunk_* rendered.png
統合後の画像↓
以上です。もし、コマンドラインで実行できない場合は環境変数の部分に間違いがないか見直しましょう。