【CG】ライティングのビルドを複数PCで分散処理しよう【UE4】
UE4のライティングのビルド、やっぱ最後の仕上げだとどうしても時間がかかります。
分散レンダリングみたいなことできないかなあ。と思ったらできるんですね。
注意:もし何かトラブルが発生しても一切責任は負いません。自己責任でお願いします。
やってみよう
最初に設定したのがもう2年くらい前なのでどこのURLを参考にしたのか忘れてしまいましたが(確か英語だったような。)、以下の図みたいに設定すればいけます。
SwarmAgent.exeを起動し、[Settings]タブを開き、以下の内容を設定します。このexeは<Epic Games¥UE_4.**¥Engine¥Binaries¥DotNET¥>にあります。
ざっくり言ってしまうと共有したい全PCのSwarmAgent.exeのSettings内容を全部同じにすればとりあえず動きます。
Distribution Settings項目の以下だけいじります。
- AgentGroupName
- AllowedRemoteAgentGroup
- AllowedRemoteAgentNames
- CoordinatorRemotingHost
The name of the agent group to which this machine belongs.
このPCが所属するグループの名前。
The name of the agent group jobs can be distributed to.
処理を割り当てるグループの名前。
グループなんて1つしか作りませんからAgentGroupNameと同じにしました。
The remote machine filter string.
リモートするPC名を羅列します。IPアドレスではなくてPC名の方がいいみたいです。
区切りは「 」(半角スペース)「,」(半角コンマ)「;」(半角セミコロン)です。
私はワイルドカードは使わずに全部手入力しました。なんとなく。
ワイルドカードも使えるようですが、正直よくわかってないので処理対象の全PCのマシン名を記述しました。
The name of the machine hosting the Coordinator.
ホストPC名を指示します。
これは全PCともに同じ内容にします。たぶん必ず。
ちなみに公式にこれが正解なのかどうかは不明です。すみません。
なおUE4自体のバージョンは異なっていても問題ないみたいです。現に私は親PCにUE_4.19を入れ、子PCにUE_4.12を入れています。
ディスク容量が気になる方とか、全PCにUE4を入れるのが面倒だという方は、<Epic Games¥UE_4.*¥Engine¥Binaries¥DotNET¥>フォルダのみを子PCにコピーするだけでもちゃんと動きます。(この方法が公式に認められているかは別です。)
完成
CoordinatorRemotingHostで指定したホストPCでSwarmCoordinator.exeを起動します。
数十秒ほど待つと連携が取れているPC名が表示されます。
準備OKだとStateの列に「Available」と表示されます。
あとはどれかのPCでライティングのビルドを実行してみましょう。
ちゃんと動いています。4台連携の場合、1時間ほどかかるものが20分くらいまで短縮しました。