Unity シーン切り替え時の暗さ問題を解決するライトマップベイク技術資料

Unityでシーンを切り替える際に画面が暗くなる問題は、ライティング設定やライトマップの不整合が原因で発生することがあります。本資料では、ライトマップベイクを活用してこの問題を解決する方法について、詳細な手順と設定ポイントを技術資料としてまとめています。

前提条件

  • Unityの最新バージョンがインストールされていること。
  • プロジェクト内でシーン切り替え時に暗くなる問題が発生していること。
  • 基本的なUnityの操作方法に慣れていること。

ライトマップベイクの基本手順

ライトマップベイクは、シーンの静的なライティング情報を事前に計算し、テクスチャとして保存するプロセスです。これにより、パフォーマンスの向上と一貫したライティングを実現できます。

1. オブジェクトを静的(Static)に設定する

ライトマップベイクの対象となるオブジェクトを静的としてマークする必要があります。

オブジェクトの選択

  • シーン内でライトマップに含めたいオブジェクト(例:建物、地面、家具など)を選択します。

Staticの設定

  • インスペクターウィンドウで、選択したオブジェクトの上部にある「Static」チェックボックスをオンにします。
  • ドロップダウンメニューから「Lightmap Static」を選択します。

2. ライトの設定を調整する

ライトマップベイクに使用するライトの設定を適切に行います。

ライトの種類

  • Directional Light: 太陽光のような全方向からの光に使用します。通常、シーンの主要な光源として設定します。
  • Point LightSpot Light: 局所的な照明に使用します。

ライトのモード設定

  • ライトコンポーネントを選択し、Modeを以下のいずれかに設定します。
    • Baked: 完全にライトマップに依存する静的なライティング。
    • Mixed: 静的な部分はライトマップに、動的な部分はリアルタイムライティングに。
    • Realtime: 完全にリアルタイムライティング(ライトマップには影響しません)。

ライトの強度と色

  • ライトのIntensity(強度)やColor(色)を調整し、シーン全体の明るさを適切に設定します。

3. Lightingウィンドウでライトマップ設定を行う

ライトマップベイクの主要な設定はLightingウィンドウで行います。

Lightingウィンドウの開き方

  1. メニューから Window > Rendering > Lighting を選択して、Lightingウィンドウを開きます。

シンプルなライトマップベイク手順

  • オブジェクトの静的設定を確認
    • ベイク対象のオブジェクトが正しく「Static」に設定されていることを確認します。
  • ライトマップ設定の確認
    • Environment Lighting
      • Skybox Material: シーンの背景として使用するSkyboxマテリアルを設定します。
      • Ambient Source: 環境光のソースを設定します(例:Skybox、Color)。
      • Ambient Intensity: 環境光の強度を調整します。
  • ライトマップベイクの実行
    • Lightingウィンドウ内の「Scene」タブを確認します。
    • 右下にある「Generate Lighting」ボタンをクリックしてベイクを開始します。
    • ベイクが完了するまで待ちます。

4. ライトマップのベイクを実行する

Generate Lighting ボタンのクリック

  • Lightingウィンドウの右下にある Generate Lighting ボタンをクリックします。
  • ベイクプロセスが開始され、進行状況が表示されます。

ベイクの進行状況確認

  • ベイク中は、進捗バーやステータスが表示されます。シーンの複雑さやライトマップ設定によって時間がかかる場合があります。

5. ベイク後の確認と調整

シーンのプレビュー

  • シーンビューとゲームビューでライティングが正しく適用されているか確認します。
  • 光の反射、影の落ち方、環境光のバランスなどをチェックします。

シーン切り替えのテスト

  • シーン間を切り替えて、明るさが一貫しているか確認します。

問題点の修正

  • ディテールの欠如: ライトマップの解像度が低い場合、Lightmap Resolutionを上げて再ベイクします。
  • アーティファクト(ノイズ、ムラ): Lightmap Paddingを調整したり、Ambient Occlusionの設定を見直します。
  • ライティングの不一致: ライトの強度や色、環境光設定を再調整します。

追加設定と最適化

プロジェクトやシーンが複雑になる場合、以下の追加設定を行うことで、より高品質なライトマップや最適なパフォーマンスを実現できます。

1. ライトマップの解像度とパディング

  • Lightmap Resolution
    • 各オブジェクトのライトマップ解像度を決定します。デフォルトは1ですが、詳細が必要な場合は値を上げます(例:2~4)。
    • 高解像度に設定するとディテールが向上しますが、ビルドサイズが増加します。
  • Lightmap Padding
    • ライトマップテクスチャ内でオブジェクト間の余白を設定します。デフォルトの2で問題がなければそのままでも良いですが、アーティファクトが出る場合は増減させます。

2. グローバルイルミネーションの設定

  • Indirect Intensity
    • 間接光の強度を設定します。高く設定すると、光がオブジェクト間でより多く反射します。
  • Bounce Boost
    • 間接光のバウンス効果を強調します。

3. ポストプロセッシングの確認

  • ポストプロセッシングエフェクト(例:露出調整、カラーグレーディング)がシーンの明るさに影響を与えていないか確認します。
  • 必要に応じて設定を調整します。

4. UVマップの確認

  • ライトマップ用のUVマップが正しく設定されているか確認します。オブジェクトのUVが重複していないこと、適切に展開されていることが重要です。

5. ライトマップの最適化

  • ライトマップの圧縮
    • ライトマップテクスチャの圧縮設定を調整します。Lighting ウィンドウの Lightmap ParametersCompression を設定できます。
  • 不要なライトの削除
    • 使用していないライトを削除することで、ベイク時間とビルドサイズを削減します。
  • ライトマップの共有
    • 複数のオブジェクトで同じライトマップを共有することで、ライトマップテクスチャの数を減らします。ただし、オブジェクト間の配置やサイズに注意が必要です。

注意点

静的オブジェクトの範囲

  • ベイクは静的なオブジェクトに対してのみ有効です。動的に動くオブジェクトにはリアルタイムライティングが必要になります。

ライトマップの解像度

  • 解像度が低すぎるとディテールが失われ、暗く見えることがあります。必要に応じて解像度を上げてください。

シーンのスケール

  • シーンのスケールが適切でないと、ライトマップの解像度や照明効果に影響を与えることがあります。シーンのスケールを統一し、適切に設定します。

UVマップの重複とオーバーラップ

  • 同一ライトマップテクスチャ内でオブジェクトのUVが重複しないように注意します。Lightmap Paddingを適切に設定することで、アーティファクトを防ぎます。

ベイク時間の最適化

  • 複雑なシーンや高解像度のライトマップ設定はベイク時間を延長します。必要に応じて設定を調整し、効率的なベイクを心がけます。

まとめ

ライトマップのベイクは、Unityにおけるシーンのライティングを安定させ、一貫した明るさを提供する強力な手段です。以下のポイントを押さえて設定を行いましょう。

オブジェクトの静的設定

  • ライトマップベイクの対象となるオブジェクトを正しく静的に設定すること。

ライトの適切な設定

  • シーンに必要なライトが適切に配置され、設定されていること。

Lightingウィンドウの詳細設定

  • 環境光、間接光、ライトマップ解像度などを調整すること。

ライトマップのベイク実行

  • 設定後、ライトマップをベイクし、結果を確認すること。

結果の確認と最適化

  • ベイク結果を確認し、必要に応じて設定を再調整すること。

これらの手順を踏むことで、シーン切り替え時の暗さの問題を効果的に解決できるはずです。もしライトマップのベイク後も問題が解決しない場合、具体的な設定やエラーメッセージなどの詳細情報を提供していただければ、さらに具体的なサポートを提供いたします。


参考リンク

Unity

Posted by hidepon