🥖

Bakeryでベイク中にUnityで作業ができないのは、ネットワークベイクで解決できる

2024/12/30に公開

UnityのBakeryを使ってライトベイクをするとき、ベイク中はUnityで一切の作業ができなくなるの不便ですよね...特に処理に時間がかかるライトベイクをしているときに、他の作業をしていたいものです。
そんな時に使える機能が、Network Bakingです。
https://geom.io/bakery/wiki/index.php?title=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 modeExperimentalに設定します。

これにより多くの拡張設定が表示されるので、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