今回はmodoの標準機能を使用してネットワークレンダリングする方法について書いてみます。modoのネットワークレンダリングは静止画と動画の両方に対応してます。Bonjourを使用すると設定も簡単でお勧めです。
ネットワークレンダリングとは
ネットワークレンダリングはレンダリング時間を短縮するために、複数のPCを使用して計算を分散してレンダリングする機能です。
3DCGのレンダリングは一般的に絵の品質を高めれば高めるほど時間がかかります。映画だと1秒間におよそ24コマ(フレーム)の絵を必要としますが、1フレームあたりのレンダリング時間は速いものだと1~5分間。遅い物だと1時間以上かかることも普通にあります。動画を作る場合は1台のPCで全てレンダリングするのは大変なので、複数のPCを使用してネットワークレンダリング(分散レンダリング)を行うのが一般的です。
ネットワークレンダリングの注意点
ネットワークレンダリングにはPCの使い方や、ネットワークに関する最低限の知識が必要です。ネットワークレンダリングでつまずきやすい点をまとめてみました。
modoではシーンファイルを読み込んでレンダリングを実行するPCを「マスター」、マスターからシーンファイルを受信して分散レンダリングするPCを「スレーブ」と呼びます。スレーブPCはmodoのライセンスがなくてもレンダリングに使用することができます。
- マスターPCとスレーブPCに同じバージョン(ビルドナンバー)のmodoをインストールする
- マスターPCからスレーブPCにファイルアクセスできることを確認する
- レンダリング画像の保存先はネットワークパスを使用する
- ファイアウオールの設定を適切に設定する
- 必要に応じてBonjour をインストールする
同じバージョン(ビルドナンバー)のmodoをインストールする
あたりまえの話ですがmodoはバージョンアップごとに機能が追加されるため、同じバージョンのmodoを使用しないとレンダリング結果が異なることがあります。そのようなミスを防ぐためmodoは同じバージョンのスレーブとだけ通信します。これはmodoに限らず他の3Dソフトでも同じですね。
マスターPCからスレーブPCにファイルアクセスできることを確認する
マスターPCとスレーブとして使用するPCが同じネットワーク内に存在していて、お互いのPCが通信可能か確認しましょう。ネットワーク共有したフォルダにアクセスできれば問題ありません。たまにネットワークにPCが見えていてもアクセス出来ないことがあります。
レンダリング画像の保存先はネットワークパスを使用する
レンダリング画像の保存先はネットワークパスを使用します。これもあたりまえの話ですがマスターPCで「C:\RenderImage」のようなローカルパスを出力先に指定しても、スレーブPCからは画像を保存することができません。ネットワークにフォルダを共有して「\\MyPC\Share\RenderImage」のようなネットワーク経由のファイルパスを使用しましょう。
ファイアウオールの設定を適切に設定する
Windowsには「Windows Defenderファイアウオール」が標準で入ってます。modoがネットワークと通信を行う場合、ファイアウオールが通信を遮断してしまうことがあります。その場合はmodoが通信を行えるように適切に設定する必要があります。
追加でセキュリティーソフトを使用している場合も同様に、通信が遮断されないように通信の許可ルールを設定する必要があります。
もしも通信がうまく行かない場合は、PCのファイアウオールを一時的に無効にして通信が成功するか確認し、どこに問題があるかしぼり込むといいです。ネットワークの通信設定は少し面倒くさいので、わからないことは検索して頑張ってください。
必要に応じて Apple Bonjour をインストールする
Windows版のmodoをインストールする時、modo11.0まではmodoと同時にApple社のBonjourというソフトがインストールされていました。modo 11.1以降はBonjourがインストールされなくなったため、Bonjourを使用したい場合には別途インストールする必要があります。
Bonjourとは
BonjourはApple社が開発しているソフトです。「何の設定も行わず機器を使用可能にする」という目的のソフトで、面倒な設定を必要とせずLAN内でソフト間の通信を可能にします。Appleのメディアプレイヤー「iTunes」をインストールすると「Bonjour」もインストールされます。
ネットワークレンダリングの手順
ネットワークレンダリングはスレーブPCでmodoスレーブモードを起動、次にマスターPCのmodoにシーンファイルを読み込んで、レンダリングを実行するという手順で行います。
ネットワークレンダリングで使用されるシーンファイルは1度テンポラリに保存され、各スレーブPCに転送されます。
スレーブPC
スレーブPCはマスターPCからシーンファイルを受信してレンダリングする役割のPCです。マスターPCからレンダリングを実行する前に、modoをスレーブモードで起動する必要があります。
1. PCにmodoをインストールして起動します。
「Modo13.1v1j_Windows.msi」を使用して通常通りmodoをインストールします。modoは複数台のPCにインストールするこが許可されているので、好きな数だけPCにインストールします。
2. スレーブモードに設定します。
スレーブモードを設定するにはmodoをライセンスが無い状態で起動します。すると「ライセンス」ダイアログが表示されます。
ライセンス ダイアログの「高度」ボタンを押すと、いくつかのオプションが表示されるので「スレーブとして起動」を押します。
「レンダースレーブ」ダイアログが開き、modoが待機中になります。
Windowsのセキュリティ警告が表示された場合は「アクセスを許可する」を押してください。キャンセルするとファイアウオールに通信がブロックされレンダリングに参加出来なくなります。
ライセンスインストール済みのmodoをスレーブモードにしたい場合はレンダーメニューから「スレーブモードに設定」を使用します。
以上でスレーブPCの準備完了です。もしサードパーティのプラグインを使用している場合は、スレーブPCにもプラグインをインストールする必要があります。
modo_cl.exeのスレーブモード
modoを起動してスレーブモードにすると、フルスクリーンで起動してGUIのサイズが変えられないので邪魔です。コマンドライン用のmodo (modo_cl.exe)に起動オプション -slave を使用すると、modo_clをスレーブモードにすることができます。ショートカットを作成しておくと便利に使えるのでお勧めです。
マスターPC
マスターPCからネットワークレンダリングを実行する手順です。
modoにはスレーブPCと通信を行う方法が2種類あります。「Bonjour」を使用する方法と「ホストリスト」を使用する方法です。両方の方法を紹介しますが「Bonjour」を使用する方法がお手軽だと思います。
Bonjourを使用したネットワークレンダリング
Bonjourを使用するメリットは手軽に通信が行えることです。
1. modoを起動してシーンファイルを読み込む
2. ネットワークビューでスレーブPCを確認する
「ネットワークビュー」を開いて、スレーブPCがリストされていることを確認します。スレーブPCが表示されない場合は、ファイアウオールの設定など注意点を確認してください。
スレーブPCの状態は●の色で表示されます。
- 緑色 : 互換性がありレンダリングが可能です。
- 灰色 :互換性がありますが、レンダリングの準備ができていません。
- 赤色 : 通信できません。または互換性がありません。
灰色でもレンダリングすると動くことが多いので、とりあえずレンダリング実行してみるといいです。
3. ネットワークレンダリングを設定する
「初期設定」ウィンドウを表示し「最終レンダリング」の項目で「ネットワークレンダーノードを使用」「ボンジュール経由でレンダーノードを検出」をONにします。
好みに応じて「ネットワークノードでのみレンダリング」「ネットワークレンダーノードへフレーム全体を送信」を設定します。
ネットワークノードでのみレンダリング
マスターPCをレンダリングに参加するかどうかの設定です。このオプションがONの場合、レンダリングはスレーブPCのみで実行されます。マスターPCで他の作業がしたい場合はONがいいと思います。
ネットワークレンダーノードへフレーム全体を送信
フレーム単位で分散するかどうかの設定です。このオプションがONの場合、1フレーム単位でスレーブPCに分散します。アニメーションをレンダリングする場合はONがいいです。
オプションがOFFの場合、1フレーム(1枚の画像)をバケット単位で分散します。静止画をレンダリングする場合はOFFがいいと思います。レンダリングウィンドウでは、スレーブのバケットが青枠で表示されます。
4. レンダリングを実行する
「アニメーションをレンダー」 または「F9」を押します。ファイルの出力先にはネットワークパスを指定します。
レンダリングウィンドウが表示され、レンダリングの進行状況やスレーブPCの数が表示されます。レンダリングウィンドウは下のバーをドラッグしてネットワークビューを表示することもできます。
ホストリストを使用したネットワークレンダリング
ホストリストを使用するメリットはレンダリングするPCを指定できることです。例えば10台のスレーブPCうち、5台でレンダリングするというようなグルーピングが可能になります。
1. modoを起動してシーンファイルを読み込む
2. ネットワークレンダリングを設定する
「初期設定」ウィンドウを表示し、「最終レンダリング」の項目で「ネットワークレンダーノードを使用」をON、「ホストリスト経由でレンダーノードを検出」をONにします。
好みに応じて「ネットワークレンダリングでのみ」「ネットワークレンダーノードへフレーム全体を送信」を設定します。
3. ホストを追加する
初期設定ウィンドウの「ホストリスト」の項目でホストを追加します。「ホストを追加」ボタンを押して「新規ホストエントリ」ダイアログを表示し、PC名 または IPを入力します。
リストでホストを選択して、右上の「ホストをテスト」を押してスレーブPCと通信可能かテストします。
次に「選択の接続」を押すと、ネットワークビューにPCがリストされネットワークレンダリングで使用可能になります。
4. レンダリングを実行する
「アニメーションをレンダー」または「F9」を押します。ファイルの出力先にはネットワークパスを指定します。
レンダリングウィンドウが表示され、レンダリングの進行状況やスレーブPCの数が表示されます。
ネットワークレンダリングはBonjourを使用すれば比較的手軽におこなうことができて便利です。
今回modo標準機能を使用したネットワークレンダリングの記事を書いてみましたが、modo標準のレンダリングマネージャーは安定性や信頼性が高くないようです。大規模なシーンのレンダリングではDeadlineのようなレンダリングマネージャー(ディスパッチャー)を使用した方が、PCの性能を考慮して賢く分散処理してくれる気がします。
参考
ネットワークレンダリングの手順
https://learn.foundry.com/modo/content/help/pages/rendering/network_rendering.html
ネットワークレンダリングのトラブルシューティング
https://learn.foundry.com/modo/content/help/pages/rendering/nr_troubleshoot.html
解説ありがとうございます!