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 lightmapBaseResolution: 256 bakedLightmap: BakedLightmap { enabled: root.lmEnabled key: "box" loadPrefix: "file:" } scale: Qt.vector3d(100, 100, 100) }
このモデルは、ライトマップされたシーンでparticipates
、ライトマップbaked for it
。前者はusedInBakedLighting プロパティで示されます。これだけでは、ボックスのミニシーンにライトマップがベイクされるわけではなく、ライトマップに参加するだけです(つまり、間接照明を計算するときに、光線がモデルから跳ね返ることができます)。
ライトマップを完全に生成し、ベイク処理中に保存するために、enabled にtrue
を設定したBakedLightmap オブジェクトも設定します。key は一意の識別子を指定します。
簡単なデプロイのために、アプリケーションは生成されたライトマップ(.exr
ファイル)を Qt リソースシステム経由で execuatble にパックします。CMakeLists.txtには、リソースとして追加するqlm_box.exr
。ライトマップをリベイクする際には、変更されたファイルを取り込むためにアプリケーションを再度ビルドする必要があります。エンジンが実行時にファイルを見つけられるように、loadPrefix 。
© 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.