初めに
レベルのライティングビルドを実施すると「マテリアル名 was missing the usage flag bUsedWithStaticLighting.」のエラーが出たことはないでしょうか。そしてパッケージ化するとマテリアルがデフォルトのマテリアルになってしまうなんて現象にあわれた方もいるかと思います。今回はこのメッセージが表示された際の対処方法とそもそもなぜこのメッセージがでるのか解説していこうと思います。
環境情報
Windows 11
UE 5.6.1
問題の修正方法
まずは問題の修正方法を説明します。
といっても警告メッセージを最後まで読んでいくと一番右側に「Fix」のボタンがあるのでこのボタンを押したら解決したという方がほとんどなのではないかと思います。
一番簡単なのはメッセージと一緒に表示される「Fix」ボタンを押してしまうことです。
Fixボタンを押すと何が起きる?
Fixボタンを押すと結局何が起きたか分からないという方もいると思います。
「マテリアル名 was missing the usage flag bUsedWithStaticLighting.」というようにマテリアルのDetailタブの中身を見ると「Usage」の項目の中に「Used with Static Lighting」という項目があります。
Fixボタンを押すとこの設定が有効になります。
Used With Static Lightingの設定はマテリアルのエミッシブが静的ライティングに影響を与えるための設定になっており、間接光の反射計算で品質を向上させることができます。
さてこの設定ですが実はライティングビルドをして以下の条件があると自動で有効になります。
①マテリアルのDetailsタブのUsage項目の中にある「Automatically Set Usage in Editor」が有効になっている
②Ligtmap用のUVチャネルを持っているStaticMeshをレベル上に配置している
ライティングビルドを実行すると自動で有効になり、ライティングビルドの結果としてマテリアルがUsed with Static Lightingを使っていると記録されます。Gitで管理しているような場合だとここで他のブランチからプルした内容で上書きしたりマテリアルファイルをリバートした際にマテリアルの設定でUsed with Static Lightingが有効になっていないとライティングビルド結果と異なるためこのような警告が出るようになります。また、厄介なことにこの警告が出ているとパッケージ化した時にマテリアルが正しく描画されません。
なのでプロジェクトをGitなどで管理していない場合は「マテリアル名 was missing the usage flag bUsedWithStaticLighting.」という警告が出るようなケースは少ないかと思います。
注意するべきケース
先ほどライティングビルドをした際に自動でUsed With Static Lightingの設定が有効になる条件を説明しましたが、実はもう一つ重要な設定があります。
StaticMeshのDetailsタブの中にある「Build Settings」の「UE4 Compatible UVs」の設定が無効になっている必要があります。
エンジンに元々用意されているCubeやPlaneなどはここの設定が有効になっています。UE4時代から同じプロジェクトをアップデートし続けている場合も昔のStaticMeshはここの設定が有効になっている可能性が高いのでご注意ください。

