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