Amazon10/19まで!プライム感謝祭開催中!セール会場へ

Unityでライトをベイクする方法|ライトマップの設定と暗くなる原因

Unityでライトをベイクする方法 ライトマップと暗くなる原因

Unityでライトをベイクすると、物の表面の明るさや影を前もって計算し、ライトマップというテクスチャに保存できます。

ゲーム中に光の計算をしない分、処理が軽くなります。

ベイクの手順は、次の4つです。

  1. ベイクする物のMesh Rendererで Contribute Global Illumination をオンにする
  2. ライトのModeを Baked か Mixed にする
  3. Window → Rendering → Lighting を開き、Lighting Settingsのアセットを割り当てる
  4. Lightingウィンドウの下にある Generate Lighting を押す

この記事では、この手順と、ベイクしても暗いときの原因を説明します。

Unityのエディタでの実機での再現は含まず、Unity 6.3 LTSの公式マニュアルの記載(2026年10月18日に確認)に基づきます。

画面の名前は英語版の表記です。

目次

ベイクで何が変わるか

公式マニュアルでは、ライトマップには直接光と、壁などに跳ね返った間接光の両方を入れられると説明されています。

一方で、ライトマップに焼き込んだ内容は、ゲーム中に変えられません。

マニュアルでは、ライトを動かせなくなる代わりに処理が軽くなり、スマートフォンなどの性能の低い機器に向くと説明されています。

Unityのライトマップは、Progressive Lightmapperで作られます。

ライトのModeを選ぶ

ライトをベイクするかどうかは、LightコンポーネントのModeで決めます。

Mode直接光間接光向いているもの
Bakedベイクベイク背景や環境の光
Mixedリアルタイムベイク動かないライト
Realtimeリアルタイムなし(Enlightenを使う場合を除く)動く・壊れる・点滅するライト
Unity 6.3 LTSの公式マニュアル「Choose a Light Mode」をもとに作成

ゲーム中の負荷は、Bakedがいちばん小さく、Realtimeがいちばん大きいとされています。

マニュアルでは、Bakedのライトは、ゲーム中に設定を変えられず、鏡面の反射(スペキュラー)に関わらず、動く物には光も影も与えないと説明されています。

動くキャラクターにも光を当てたいライトは、Mixedにします。

MixedのライトはLighting Modeで動きが変わる

Mixedのライトの動きは、Lighting Settingsのアセットの Lighting Mode で決まります。

Lighting Mode特徴
Distance Shadowmask遠くまで影を表現できるが、負荷がいちばん大きい
ShadowmaskDistance Shadowmaskに近いが、リアルタイムの影が少なく負荷も小さい
Baked Indirect間接光をベイクし、影はリアルタイムで描く
Subtractive簡単な光と影になるが、負荷が小さい
Unity 6.3 LTSの公式マニュアル「Lighting Mode」をもとに作成

どのLighting Modeが使えるかはレンダーパイプラインによって違い、マニュアルでは機能比較のページを確かめるよう案内されています。

ベイクの手順

1. ベイクする物をContribute GIにする

公式マニュアルでは、ライトマップに入るのは、Mesh RendererかTerrainを持ち、Contribute GIが付いている物だけとされています。

  1. 壁や床など、動かない物を選ぶ
  2. InspectorのMesh Rendererの Lighting にある Contribute Global Illumination をオンにする
  3. Receive Global Illumination が Lightmaps になっていることを確かめる

マニュアルでは、Contribute Global Illuminationをオンにすると、Receive Global Illuminationも自動でオンになると説明されています。

Receive Global Illuminationの Light Probes は、小さい物や動く物に使う選択肢で、ライトマップではなく近くのLight Probeから光を受け取ります。

マニュアルでは、ベイクには時間がかかるため、Contribute GIにするのは、くぼみや自分の影で明るさが大きく変わる大きな物に絞り、小さい物はLight Probeで照らすよう勧めています。

2. ライトマップ用のUVを用意する

ライトマップには、重ならないUVが必要です。

モデルを選び、InspectorのModelタブの Geometry にある Generate Lightmap UVs をオンにすると、Unityが自動でライトマップ用のUVを作ります。

自分でUVを作る場合は、ベイク用のUVを2番目のUVチャンネル(Mesh.uv2、UV1とも呼ばれる)に入れます。

3. Lighting Settingsのアセットを割り当てる

  1. Window → Rendering → Lighting を開く
  2. Sceneタブの Lighting Settings が空なら、New Lighting Settings を押す
  3. Baked Global Illumination がオンになっていることを確かめる
  4. Lightmapping Settings の Lightmap Resolution で、ライトマップの細かさを決める

マニュアルでは、Baked Global Illuminationをオフにすると、BakedとMixedのライトはすべてRealtimeとして扱われると説明されています。

このとき、LightコンポーネントのInspectorに警告が表示されます。

4. Generate Lightingを押す

Lightingウィンドウの下にある Generate Lighting を押すと、ベイクが始まります。

エディタの右下に進み具合が表示され、終わるとSceneビューとGameビューが更新されます。

できたライトマップは、Lightingウィンドウの Baked Lightmaps タブで確かめられます。

マニュアルでは、ベイクを始めた後に行った変更は、そのベイクの結果には入らないとされています。

Unity 6では自動のベイクが無くなった

Unity 6.0へのアップグレードガイドでは、Lightingウィンドウの Auto Generate の設定が削除されたと説明されています。

古い版で自動のベイクに頼っていたシーンは、Unity 6で開くとベイクした光が無くなるため、Generate Lightingで焼き直す必要があります。

同じガイドでは、環境光(Ambient Probe)と空の反射も、既定ではベイクされなくなったと説明されています。

新しいシーンには、既定の空に合わせた環境光のデータが割り当てられますが、環境光の設定を変えた場合は、Generate Lightingを押さないと反映されません。

Lightingウィンドウの Bake on Scene Load は、新しいUnity 6のプロジェクトでは Never が既定です。

If Missing Lighting Data にすると、ライトのデータが無いシーンを開いたときに自動でベイクされます。

ベイクせずに見た目を確かめたい場合は、Sceneビューの描画モードを選び、Lighting Visualizationのオーバーレイで Lighting Data を Preview にすると、一時的なライトマップで表示されます。

ベイクしても暗いときの原因

公式マニュアルのトラブルシューティングでは、ベイクした光が出ず、影や全体が暗くなる原因として、次のものが挙がっています。

確かめる場所見ること
Mesh RendererContribute Global Illumination がオンか
LightのModeBaked か Mixed か(Realtimeはベイクに入らない)
LightのColorとIntensity暗い色や弱い強さになっていないか
LightのIndirect Multiplier0になっていないか
Lighting Settingsのアセット割り当てられているか、Baked Global Illumination がオンか
Max Bounces と Indirect Intensity0になっていないか
シェーダー自作のシェーダーが原因でないか。標準のLitに替えてベイクできるか
URPの設定URPのアセットで Mixed Lighting が有効か
ライトの位置ライトが壁や床の中に埋まっていないか
Unity 6.3 LTSの公式マニュアル「Troubleshooting no baked global illumination in the scene」をもとに作成

同じページでは、GPUでのベイク(Progressive GPU)で失敗してCPU(Progressive CPU)で成功する場合は、GPUやドライバーの問題の可能性があるとされています。

その場合は、GPUのドライバーを更新します。

Preferencesの GI Cache にある Clean Cache でキャッシュを消す方法も案内されていますが、シーンのベイク済みのデータも消えるため、もう一度ベイクが必要です。

動くキャラクターだけが黒い

ライトマップは動かない物にしか使われないため、動く物はLight Probeから光を受け取ります。

マニュアルでは、Light Probeが無いと、動く物はシーン全体の環境光(Ambient Probe)だけで照らされ、黒っぽく見えることがあると説明されています。

  1. GameObject → Create Empty で空のゲームオブジェクトを作る
  2. Component → Rendering → Light Probe Group を追加する
  3. SceneビューのToolsのオーバーレイで Edit Light Probe Group を選び、動く物が通る範囲を囲むようにプローブを置く
  4. Generate Lighting でもう一度ベイクする

金属のように反射の強い物が黒い場合は、Reflection Probeを置くよう案内されています。

あわせて、その物のMesh Rendererの Probes で、Light ProbesとReflection Probesが Off になっていないかを確かめます。

シーンを読み込んだら暗い

マニュアルでは、複数のシーンを使う場合、ライトのデータを持つシーンがアクティブなシーンになっているかを確かめるよう案内されています。

Unityは、最初に読み込んだシーンをアクティブなシーンにします。

LoadSceneMode.Additiveでシーンを追加で読み込んだ場合は、Light Probeの計算に使うデータが自動では組み直されないため、読み込みが終わった後で LightProbes.Tetrahedralize を呼んで組み直す方法が案内されています。

シーンの読み込み方は、Unityでシーンを切り替える方法で説明しています。

参考にした公式ページ

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

Unityのおすすめ書籍

開発PCの選び方

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次