このページでは

Qt Quick 3D - ベイク済みライトマップの例

3Dシーンにおけるベイク済みライトマップの使用例を示します。

2つのボックスと天井照明を備えたコーネルボックス。ベイクされたライトマップによる照明が示されています。

この例では、シーン内で完全にベイクされたライティングを使用する方法を示します。その結果、主に間接照明が追加されたことで、レンダリングされたシーンははるかにリアルな仕上がりになります。また、チェックボックスを使用することでライトマッピングを無効にすることも可能であり、リアルタイム処理と完全にベイクされた処理のレンダリング結果を比較することができます。

ライトの設定

このシーンには単一のポイントライトがあります。チェックボックスがオンになっている場合、ライトのbakeMode はLight.BakeModeAllに設定されます。

PointLight {
    bakeMode: root.lightBakeMode
    y: 190
    brightness: brightnessSlider.value
    castsShadow: true
    shadowFactor: 75
    shadowBias: 20
}

このプロパティをLight.BakeModeDisabled 以外の値に設定すると、2つの目的があります。ライトマップのベイク時に、そのライトがライトマップ化されたシーンの一部であり、そのシーンに寄与していることを示します。 また、実行時にシーンを通常通りレンダリングする際、そのライトが完全または部分的にベイクされたライトであることを示し、これによりライトマップ化されたモデルのマテリアルにおける特定のリアルタイム計算が無効化されます。このため、このチェックボックスは、LightオブジェクトのbakeModeプロパティと、Modelオブジェクトに関連付けられたBakedLightmap のenabledプロパティを切り替えます。both

モデルのセットアップ

コーネルボックスは、8つのサブメッシュを持つモデルです。これは「Box」タイプとしてカプセル化されており、そのインスタンスがメインシーンにインスタンス化されています。

Box {
    usedInBakedLighting: true
    bakedLightmap: BakedLightmap {
        enabled: root.lmEnabled
        key: "box"
    }
    scale: Qt.vector3d(100, 100, 100)
}

このモデルは、ライトマップされたシーンに参加するだけでなく、それ用にベイクされたライトマップも持っています。 前者は、usedInBakedLighting プロパティによって示されます。これだけでは、ボックスミニシーン用にライトマップがベイクされることは保証されず、ライトマッピングに参加すること(つまり、間接照明を計算する際に光線がモデルで反射すること)のみが保証されます。

ライトマップを完全に生成し、ベイク処理中に保存するには、`enabled ` を `true ` に設定した `BakedLightmap ` オブジェクトも設定します。`key ` は一意の識別子を指定します。

デプロイを簡素化するため、アプリケーションはQtリソースシステムを介して、生成されたライトマップ(lightmaps.bin ファイル)を実行ファイルにパックすることができます。ライトマップを再ベイクする際は、変更されたファイルが反映されるよう、アプリケーションを再ビルドする必要があります。ライトマップファイルのソースは、Lightmapper 内のsource プロパティで設定されます。

サンプルプロジェクト @ code.qt.io

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.