2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Unity]ライトベイクを試してみる

Last updated at Posted at 2023-09-17

概要

ライトのベイクをちょっと試してみたい人用の記事です。
DirectionalLightのベイクとEmissiveのベイクをやっていきます。

本文

サンプルとしてこのような環境を作ってみました。照明はDirectionalLight一つだけです。
スクリーンショット 2023-09-17 22.51.21.png
壁のオブジェクトはStaticのチェックを入れてCastShadowsはOn。StaticShadowCasterにチェックを入れておきます。今回の場合は全ての壁をまとめて選択していっぺんに設定しました。
スクリーンショット 2023-09-17 22.53.31.png
DirectionalLight等「ベイクされたライトマップとリアルタイム処理された影を合わせたい場合」はModeにMixedを選びます。間接照明などはBakedが良さそうです。
今回は動作確認のためにBakedを選択しました。
スクリーンショット 2023-09-17 22.58.05.png
Lighting設定画面を表示します。
Window > Rendering > Lighting
スクリーンショット 2023-09-17 23.17.40.png
Sceneタブが選ばれていることを確認して、一番下にあるGenerateLightingボタンを押すとライトのベイクが始まります。
スクリーンショット 2023-09-17 23.15.48.png

ベイク結果の確認

シーンフォルダの中にライトマップファイルが生成されたことが確認できました。
スクリーンショット 2023-09-17 23.28.50.png
ライトマップはテクスチャに直接影を描くわけではありません。テクスチャは元の画像のままでした。
Cube_BakeJob_0.png
試しにDirectionalLightをOFFにしてみます。光源が無くなってもオブジェクトの表面に光源情報が焼きついているので影は消えません。(空は暗くなります)
スクリーンショット 2023-09-17 23.32.33.png
さらに右側の壁を非表示にしてみると壁が作っていた影だけは残されていることが確認できます。市松模様のブロックは移動させても乗っている影はそのままなことも確認できました。
(LightのModeを今回はBakedにしたことによる現象です。ゲーム中に移動するキャラの影などリアルタイムに変化して欲しい時はMixedにすればこのようにはなりません)
スクリーンショット 2023-09-18 9.01.08.png

Global Illuminationのベイク

次はスクショのようにEmission付きMaterialを設定した箱を右側の壁に2つ付けました。
スクリーンショット 2023-09-19 21.02.07.png
スクリーンショット 2023-09-19 21.02.49.png
箱が発光している様には見えますが、その光は地面を照らしてる様には見えません。

箱オブジェクトのMeshRenderer > Lighting > Contribute Global Illuminationにチェックをつけて
スクリーンショット 2023-09-19 21.08.00.png
先ほどのGenerateLightingを押す前にRealtimeGlobalIlluminationにチェックをつけます。
スクリーンショット 2023-09-19 21.10.28.png
ベイクが完了すると箱の出す光が壁にも映し出されて表現が少しリッチになりました:raised_hands_tone2:
スクリーンショット 2023-09-19 21.16.38.png

補足1

Sceneビューの上にあるShadingモード切り替えボタンからShaded -> Baked Lightmapに切り替えると
スクリーンショット 2023-09-19 21.23.25.png
ベイクされたライトマップ情報だけを確認することもできます。
スクリーンショット 2023-09-19 21.24.37.png

補足2

生成されたライトマップはオブジェクトごとに作られるので規模が大きくなるとその数も膨大になってしまいます。アプリのデータサイズは膨大になりますが静的な情報なので処理負荷はある程度軽く済むようです。

今回は試していませんが、アセットの「Mesh Baker」を使えばこのライトマップも一つにまとめることができるようです!

おまけ

ベイクされたライトマップを利用すればいい感じの夜を表現することもできます。DirectionalLightのIntensityをゆっくり0に近づけると夜に切り替わります。
スクリーンショット 2023-09-19 22.13.28.png

参考サイト

(記事)
ライトベイクの基本を学ぼう
【Unity】ライトをベイクして軽量化しよう!ベイクのやり方
【Unity】グローバルイルミネーション(GI)基礎知識~STYLYへの反映方法
(動画)
ライトマップの基礎知識 #1 : リアルタイムライト | Unite Now 2020
ライトマップの基礎知識 #2 : ライトのベイク | Unite Now 2020
ライトマップの基礎知識 #3 : リアルタイムとベイクの合成 | Unite Now 2020
【Unity】照明の基本を勉強する【ベイクって何??】
Unity Lightmap:一緒に見てくと意外と簡単【Unity】

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?