ライトを焼きたいオブジェクトを選択し、Lightmap Staticにチェックを入れます。
しかし、必ずしもすべてのオブジェクトをベイクする必要はありません。
ライティングの影響の少ないオブジェクトまで焼いてしまうと、ライトマップの容量を圧迫してしまいます。
今回はライトマップサイズは512を1枚に抑える必要があるため、キレイに焼く為にもなるべく節約しましょう。
光や影を焼きたい場合はライティングをBakeします。焼かれたデータはライトマップとして保存されます。
焼かないオブジェクトは主にLightProbeによるProbeLightingを使用します。
LightProbeは配置した位置における周囲の光を取り込み、オブジェクトに反映します。(つまり周囲の光の影響になじむ) 焼かれていないオブジェクトはデフォルトでLightProbeの影響が有効になっています。
ProbeLightingをするオブジェクトの注意点としては、複数のオブジェクトを結合している場合には一つのオブジェクトとしてLightProbeの影響を受けてしまいます。
明らかに違うライトの影響を受ける場合はオブジェクトの分離をおすすめします。
※オブジェクト数が増えてしまうことになるので処理負荷とのトレードオフではあります。まとめられるオブジェクトはまとめるのを推奨です
(ライトプローブの配置については後述)
Blenderなどのモデリングソフトで作成し、Unityに読み込んだFBXなどのモデルの多くは、ライトマップ用のUV展開がされていません。
このままライトを焼いた場合、UVが重なってしまっているところはライトが2重に焼かれてしまい、おかしな光や影が入ってしまいます。
Unity側で自動的にライトマップ用のUVを展開してくれる機能があります。デフォルトでは有効になっていないため、新しくモデルを取り込んだときには [Generate Lightmap UVs] にチェックを入れて、ライトマップ用のUVを自動展開してあげる必要があります。
自動展開を使う方法では、暗い場所などライトの影響が強い環境下で細かいライトマップのエラーが出てしまうことが多く、完璧な方法とは言い難いです。
しかし、ライトマップは展開されているのでライトベイクをすることは可能にはなります。 ライトを焼いてみて、ライトマップエラーが目立たない、許容できる場合はこちらの方法でも良いかと思います。
ライトマップエラーが出てしまうが、簡易的に解決したいという場合はPack Marginの値を調節してあげることで、ある程度解決する場合があります。
※ただし、UV同士の間隔が開くためにライトマップが無駄になってしまう領域が広くなってしまいます。
モデリングソフト上でライトマップUVを手動で展開する方法です。
Unityに取り込んだモデルで、2つ目のUVを作成してあり、[Generate Lightmap UVs]のチェックがついていない場合、**2つ目のUVがライトマップとして使用されます。
ライトマップ用のUVを作る比較的簡単な方法の一つとしては、事前に展開してある1つ目のUVを複製し、[UV2]などの名前にし、その複製されたUVを、オーバーラップがないように、かつある程度のpaddingを空けて島を梱包することで、ライトマップUVとして使うことができます。
この際、裏面や見えにくいところ、光の影響が少ないところなどのUVの大きさを調整して、無駄を少なくし、全体のライトマップを調整することを推奨します。
ライトを焼きたいオブジェクトを選択し、Lightmap Staticにチェックを入れます。
配布用シーンのライティング設定はBakedLighting用に調整してあるため、ライトの設置などができたらまずはそのまま焼いてみましょう。
ライトがなくても環境光(スカイボックスからの光)やグローバルイルミネーション(間接光を表現する仕組み)というものが焼かれるため、多くの場合ライティングのベイクは必要です。
Lightmap StaticかつStandard ShaderのEmissiveのオブジェクトは、ベイク用の照明として使うこともできます。マテリアルのパラメーターからEmissiveの設定を[Baked]にしてください。
準備ができたらLightingパネルの一番下にある [Generate Lighting] のボタンを押します。(PC環境によっては5分から10分かかることがあります)
ライトマップはサイズ512×512px/1枚に収める必要があります。
ライトベイクが完了したあとであれば、ライトマップが何枚使われているかを確認することができます。
Lightingパネルの下のところに [1 Directional Lightmap: 512×512px] となっていれば問題ありません。
オブジェクトごとのライトマップ解像度を下げる必要があります。
まず、現状のライトマップ解像度を可視化するために、ビューを切り替えましょう。
Scene Viewの左上のところから[Baked Lightmap]を選択し、ライトマップがどのように焼かれているかを確認しましょう。
このチェッカー模様がライトマップの解像度です。
オブジェクトごとのMesh RendererのLightmap Settings から、[Scales In Lightmap]のパラメーターを調整します。
この数字を調整すると、チェッカー模様の大きさが変わっていくはずです。
では、[Scales In Lightmap]の値を変更して、ライトマップが1枚に収まるように調整しましょう。
ライトマップがどのように使われるかを確認するためにはライトマップを焼きながら確認するのが一番早いです。
ライトマップの枚数を確認するためだけに5分10分と待ちたくないため、一時的にベイクのサンプル数を極端に落とします。
(あとで戻してください)
Direct SamplesとIndirect Samplesの値を極端に下げてみてください。あっという間に確認できるはずです。
なお、[Lightmap Indices]のビューに切り替えることで、現在ライトマップがどのように使われているかを確認することができます。
これを [1 Directional Lightmap: 512×512px] 以下になるまで続けてください。
配布シーンには最初から推奨設定のライトプローブが配置してあります。
しかし、ブースのメッシュがライトプローブの点を完全に覆い尽くす場合、その影響は真っ黒なものになってしまいます。
そうした点がある場合、ライトプローブの点を削除するか、移動する必要があります。
編集ボタンを押すと、各点を移動できるようになるので、これを編集してください。
▼ライトプローブの参考リンク
https://docs.unity3d.com/ja/2017.4/Manual/class-LightProbeGroup.html
リフレクションプローブを置きたい場合は「custom設定」のリフレクションプローブを使用して下さい。(カスタム設定であれば解像度の制限などはありません)
リフレクションプローブを配置し、Generate Lightingで通常のベイクを実行すると、『ReflectionProbe-0』などのリフレクション用のキューブマップがScene名と同じ名前のフォルダ内に作成されます。
そのキューブマップを「複製」し、わかりやすい名前をつけてください。
リフレクションプローブの「Type」をCustomに変更し、Cubemapに先程作成したキューブマップを格納します。