BLOGブログ

2017.10.06UE4

[UE4] ライトビルドをコマンドから実行しよう!

こんにちは!今回は、いつもエディタ内で手動で行っているライトビルドをコンソールコマンド上で行う方法をご紹介します。

プロジェクトが大きくなっていくと次第にライトの数とそれを配置しているマップが増えていき、ライトビルドの時間もばかになりません。そんな作業はJenkinsおじさんにお昼や深夜にやってもらっちゃいましょう。

 

■コマンド

UE4Editor-Cmd.exe [uprojectパス] -run=resavepackages -buildlighting -allowcommandletrendering -map=[マップ名] -quallity=[各種クオリティ] [他コマンド]

UE4Editor-Cmd.exe コマンドレット用実行ファイル。”Engine\Binaries\Win64″に入っています。
[uprojectパス] .uprojectのパス。(例:D:\SampleProject\SampleProject.uproject)
-run=resavepackages メインコマンドその1。-run=[コマンド]が実行する内容。”resavepackages”はライトビルドやテクスチャストリーミングができます。ちなみに、”-run=cook”にするとクックできたりします。
-buildlighting メインコマンドその2。ライトビルドします。
-allowcommandletrendering メインコマンドその3。このコマンドで何かするわけではないですが、これがないとライトビルド実行時にアサーションに引っかかり実行されません。絶対入れましょう。
-map=[マップ名] ライトビルドを行いたいマップを入れます。パーシスタントレベルを指定するとサブレベルもライトビルドされます。パスに関しては、

/Content/SampleMap → /Game/SampleMap とContent部分をGameに置き換えて記述します。複数ある場合は、

[パス]/SampleMap+[パス]/SampleMap1+[パス]/SampleMap2+[パス]/SampleMap3 と+で繋げるように記述します。

ちなみに、コマンドに”-map=[マップ名]”を入れない場合はプロジェクトに紐づいている全アセットを見て、その中のマップがすべて対象になります。

-quality=[各種クオリティ] ライトビルドのクオリティを設定します。[“Preview”,”Medium”,”High”,”Production”]があります。

このコマンドがないと”Production”になります。

[他コマンド] ResavePackagesには、上記以外のコマンドが存在しています。使いそうなのを3つ紹介します。

-buildtexturestreaming : テクスチャストリーミングします。

-AutoCheckOut : 指定ファイルをバージョン管理上で作業状態にします。指定ファイルはライトビルドだと”-map”で指定したファイルになります。(※Perforceの場合は自動的にデフォルトチェンジリストになります。)

-AutoCheckIn or -AutoSubmit : 作業状態のファイルをバージョン管理上にアップします。”-AutoCheckOut”コマンドがないと実行されません。説明文は指定できません。ライトビルドの場合は”Rebuild lightmaps.”になります。(※Peforceの場合はデフォルトチェンジリストの中身がサブミットされます。)

他のコマンドについては、“ContentCommandlets.cpp”をご覧ください。

ざっとコマンドを説明してみました。今回はライトビルドということなので“ResavePackages”コマンドを紹介しましたが、UE4には他にもいくつかのコマンドが存在しています。どれも“UCommandlet”クラスを継承しているので探してみると面白いと思います。

また、ライトビルドに関してはパッケージ作成などをしてくれる“AutomationTool”でも“RebuildLightMaps”コマンドが存在していますが、Perforceに接続されていないと使用できないという仕様なので基本的にはコマンドレットで問題ないと思います。(※コマンドレットでもバージョン管理へのチェックアウト、サブミットはできます。)気になる方は、“Engine\Source\Programs\AutomationTool\Scripts”に”RebuildLightMapsCommand.Automation.cs”があるので見てみてください。

 

今回は、ライトビルドのコマンドを紹介しました!でもまだまだ、自動化に便利なコマンドはコマンドレットにもAutomationToolにも多そうです。なかなかドキュメントも少ない内容なのでこれから他のコマンドも紹介出来たらと思います!(まだほぼ知らない…)