Utilisation de l'éclairage basé sur l'image
Introduction
Qt Quick 3D prend en charge l'éclairage basé sur l'image (IBL) pour éclairer des scènes ou des matériaux individuels.
L'IBL est une technique d'éclairage qui permet d'éclairer des scènes à l'aide d'images. Cette technique est particulièrement utile lorsque vous souhaitez créer un éclairage et des reflets réalistes dans des scènes d'intérieur ou d'extérieur.
Vous pouvez utiliser n'importe quel fichier image pour l'IBL, mais il est recommandé d'utiliser des images HDR (High Dynamic Range) à 360º. Les images HDR ont une plage dynamique beaucoup plus élevée que les images JPEG ou PNG, par exemple. Une plage dynamique plus élevée permet d'obtenir un éclairage plus réaliste grâce à une large gamme de niveaux de luminance allant de très clair à très sombre.
L'exemple suivant illustre l'effet d'éclairage sur un objet à l'aide d'une image HDR par rapport à une lumière directionnelle unique :
| Lumière | Matériau diélectrique lisse | Matériau diélectrique rugueux | Matériau métallique lisse | Matériau métallique rugueux |
|---|---|---|---|---|
| Lumière unidirectionnelle |
|
|
|
|
| Lumière basée sur l'image |
|
|
|
|
Éclairage de scène
Pour éclairer un site scene à l'aide d'une image, vous devez ajouter l'image en tant que Texture à la propriété lightProbe.
lightProbe: Texture {
source: "maps/OpenfootageNET_garage-1024.hdr"
}Une fois que vous avez sélectionné une image, l'IBL est configuré pour votre scène. Par défaut, tous les modèles de la scène sont éclairés par la sonde lumineuse.
Remarque : vous pouvez également combiner l'IBL avec une autre source de lumière pour compléter l'effet d'éclairage sur un objet.
Maintenant que vous avez configuré l'IBL pour votre scène, examinons les différentes propriétés de la sonde. Dans de nombreux cas, les valeurs par défaut donnent un résultat satisfaisant, mais vous pouvez modifier les valeurs des propriétés suivantes en fonction de l'image et du résultat souhaité :
- Exposure La quantité de lumière émise par la sonde lumineuse.
- Horizon Cut-Off L'augmentation de la valeur ajoute de l'obscurité (noir) à la moitié inférieure de l'environnement, forçant l'éclairage à provenir principalement du haut de l'image (et supprimant les réflexions spécifiques de la moitié inférieure).
- Orientation Cette propriété définit l'orientation de la sonde lumineuse. L'orientation est définie en termes d'angles d'Euler en degrés sur les axes x, y et z.
| Propriété | Matériau métallique | Matériau diélectrique |
|---|---|---|
| Paramètres par défaut |
|
|
| Exposition |
|
|
| Horizon Découpe |
|
|
| Orientation |
|
|
Éclairage du matériau
Pour utiliser l'éclairage basé sur l'image uniquement sur un matériau au lieu d'une scène entière, ou pour utiliser une sonde lumineuse distincte pour un modèle déjà éclairé par l'éclairage basé sur l'image, définissez l'image comme light probe pour le matériau.
Une fois que vous avez suivi les étapes ci-dessus, vous disposez d'une sonde lumineuse distincte pour le matériau. Cette sonde de lumière remplace la sonde de lumière de la scène s'il y en a une de spécifiée.
Pré-génération du cubemap IBL
Lorsque l'IBL est utilisé, un cubemap pour l'image IBL doit être généré par l'application. Par défaut, cela se produit au démarrage de l'application et peut être assez lent, en particulier sur les appareils embarqués et mobiles. Il est donc possible de pré-générer ce cubemap à l'aide de Balsam. Il suffit d'exécuter Balsam avec le fichier .hdr en entrée pour obtenir un fichier cubemap portant le même nom que l'entrée, mais avec une extension de fichier ktx. On peut alors faire référence à ce fichier dans la propriété lightProbe associée à Texture, et Qt chargera alors le cubemap prégénéré sans aucun traitement coûteux au moment de l'exécution.
Cuisson manuelle
A titre d'exemple, supposons que l'application utilise une image .hdr pour ses sondes de lumière ou la boîte à ciel :
View3D {
environment: SceneEnvironment {
backgroundMode: SceneEnvironment.SkyBox
lightProbe: Texture {
source: "environment.hdr"
}
probeOrientation: Qt.vector3d(0, -90, 0)
}
// ...
}Cela fonctionne parfaitement, à condition que le fichier environment.hdr soit disponible au moment de l'exécution. Cependant, le chargement de l'image .hdr implique un prétraitement coûteux. Cela peut être évité en exécutant :
balsam environment.hdr
Le résultat est un nouveau fichier environment.ktx. L'envoi de ce fichier au lieu du fichier .hdr et la modification de la source de la texture permettent d'obtenir des temps de chargement nettement plus rapides.
lightProbe: Texture {
source: "environment.ktx"
}Construction du temps de construction via CMake
L'exécution manuelle de balsam sur les actifs n'est pas toujours idéale. Par conséquent, il est recommandé aux applications de s'appuyer sur CMake pour effectuer automatiquement la même tâche au moment de la création de l'application.
Cela se fait en utilisant la fonction CMake qt6_add_lightprobe_images fournie par le composant Quick3D du paquetage Qt6 :
...
find_package(Qt6 COMPONENTS Quick3D)
...
qt6_add_lightprobe_images(application_target "ibl_assets"
PREFIX
"/ibl"
FILES
"environment.hdr"
)Remplacez application_target par la cible appropriée. Ici, il n'est plus nécessaire d'exécuter balsam manuellement sur environment.hdr, et le fichier .hdr n'a pas besoin d'être livré avec l'application. Au contraire, pendant la construction, balsam sera invoqué automatiquement et un environment.ktx sera ajouté aux ressources de l'application à l'adresse :/ibl/environment.ktx. Le site Texture de lightProbe doit alors faire référence à ce fichier.
lightProbe: Texture {
source: "qrc:/ibl/environment.ktx"
}Remarque : le fait de définir PREFIX de manière à ce que le nom final dans le système de ressources ait un chemin correspondant à l'emplacement du fichier .qml permet d'utiliser un chemin source relatif au lieu d'avoir à fournir un chemin absolu avec le schéma qrc.
En plus de PREFIX, le mot-clé BASE est également disponible. Le comportement suit celui de qt6_add_resources. Par exemple, ce qui suit conduit à générer :/ibl/maps/environment.ktx:
qt6_add_lightprobe_images(application_target "ibl_assets"
PREFIX
"/ibl"
BASE
"../data/shared"
FILES
"../data/shared/maps/environment.hdr"
)Comme dans qt6_add_shaders, le mot-clé OUTPUTS est disponible pour permettre de spécifier un nom complètement personnalisé pour le fichier dans le système de ressources. Par exemple, l'exemple suivant génère également :/ibl/maps/environment.ktx:
qt6_add_lightprobe_images(application_target "ibl_assets"
PREFIX
"/ibl"
FILES
"../data/shared/maps/environment.hdr"
OUTPUTS
"maps/environment.ktx"
)Remarque : pour chaque entrée de la liste FILES, il doit y avoir une entrée correspondante dans OUTPUTS.
© 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.













