Bakeryでベイク中にUnityで作業ができないのは、ネットワークベイクで解決できる
UnityのBakeryを使ってライトベイクをするとき、ベイク中はUnityで一切の作業ができなくなるの不便ですよね...特に処理に時間がかかるライトベイクをしているときに、他の作業をしていたいものです。
そんな時に使える機能が、Network Bakingです。
Network bakingとは
通常のBakeryでのライトベイクは以下のフローの通りで、ライトベイク中はUnityでほかの作業をすることができません。
Network bakingを使用するとBakeryのライトベイクを、Unity内ではなく別プロセスで起動したサーバーであるftServer上で行うことができます。
Unityとftserverの通信は、ネットワーク経由で行われます。そのためftServerを実行するPCはBakeryのシステム要件を満たしていれば、Unityを実行しているPCでなくても可能です。
別のPCでライトベイクを行うことで、負荷分散につながり、普段MacでUnityを使用しているが、Bakeryを使用することができない。ただし、Bakeryが動作するWindows環境のPCを所有している場合に、Network Bakingは有用に使用することができるでしょう。
Network bakingを使う
ftServerの準備
Network bakingでライトベイクの処理を行うサーバーであるftServer.exeは、Bakeryのunitypackage内に用意されています。アセットストアからBakeryをUnityプロジェクトへインポートし、Editorフォルダ内にあるBakeryフォルダ(Assets/Editor/x64/Bakery)をftServerを使用するPCへコピーします。

Assets/Editor/x64/Bakery
ftServerの実行
コピーしたBakeryフォルダ内にあるftServer.exeを実行すると、ftServerが起動します。

ftServer.exe
コマンドライン上でftServerが起動し、Waiting for connection...と表示されたらftServerの準備は完了です。

準備が完了すると、Waiting for connection...と表示される
Bakery側の設定
Network bakingを使用するには、Bakeryでも設定が必要です。
BakeryのCreate lightmapウィンドウを開き、Settings modeをExperimentalに設定します。

これにより多くの拡張設定が表示されるので、Netowrk bakingの折り畳みを開いてBake on remote serverを有効にします。
IP addressにはftServerを実行しているPCのIPアドレスを入力して、Connect to serverボタンをクリックします。

ftServerと正常に接続されると、InfoBox内にServer: Idleと表示されます。

Network bakingを実行する
ftServerと接続されてInfoBox内にServer: Idleと表示されていることを確認したら、Renderボタンをクリックしてライトベイクを開始します。
ライトベイクはftServer上で行われ、Unityでは継続して作業を行うことができます。
Network bakingの結果をシーンに反映する
ftServer上でベイクが終わっても、Unity側には自動で反映されません。ベイクが完了したらCreate lightmapウィンドウのNetowrk baking折り畳み内にあるGet dataボタンをクリックして、ftServerからベイク結果を取得して、シーンに反映します。

Discussion