Qt Quick 3D - ベイクドライトマップの例
3Dシーンでのベイクドライトマップの使用をデモします。
この例では、シーンで完全にベイクされた照明を使用しています。その結果、レンダリングされたシーンは、主に間接照明が追加されたため、よりリアルに見えます。チェックボックスの助けを借りて、ライトマップを無効にすることもできるので、リアルタイムとフルベイクドアプローチのレンダリング結果を比較することができます。
ライトの設定
シーンには1つのポイントライトがあります。チェックボックスをオンにすると、ライトのbakeMode 、Light.BakeModeAllに設定されます。
PointLight { bakeMode: root.lightBakeMode y: 190 brightness: brightnessSlider.value castsShadow: true shadowFactor: 75 shadowBias: 20 }
このプロパティをLight.BakeModeDisabled 以外の値に設定すると、二重の目的があります。ライトマップのベイク時に、ライトがライトマップされたシーンの一部であり、シーンに貢献していることを示します。実行時、シーンを普通にレンダリングするとき、ライトは完全にまたは部分的にベイクされたライトであることを示し、ライトマップされたモデルのマテリアルにおける特定のリアルタイム計算を無効にします。このため、チェックボックスは、both
LightのbakeModeプロパティと、Modelオブジェクトに関連付けられたBakedLightmap のenabledプロパティを切り替えます。
モデルのセットアップ
コーネルボックスは、8つのサブメッシュを持つModelです。これはBoxタイプとしてカプセル化され、そのインスタンスがメインシーンでインスタンス化されます。
Box { usedInBakedLighting: true bakedLightmap: BakedLightmap { enabled: root.lmEnabled key: "box" } scale: Qt.vector3d(100, 100, 100) }
このモデルは、ライトマップされたシーンに参加し、ライトマップがベイクされます。前者は、usedInBakedLighting プロパティで示されます。これだけでは、ボックスのミニシーンにライトマップがベイクされるわけではなく、ライトマップに参加する(つまり、間接照明を計算するときに光線がモデルからバウンスされる)だけです。
ライトマップを完全に生成し、ベイク処理中に保存するために、enabled にtrue
を設定したBakedLightmap オブジェクトも設定します。key は一意の識別子を指定します。
簡単なデプロイのために、アプリケーションは生成されたライトマップ(lightmaps.bin
ファイル)をQtリソースシステム経由でエクゼキュータブルにパックすることができます。ライトマップをリベイクするときは、変更されたファイルがピックアップされるように、アプリケーションを再度ビルドする必要があります。ライトマップファイルのソースはsource プロパティを通してLightmapper に設定されます。
© 2025 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.