Sur cette page

Qt Quick 3D - Exemple de Lightmap cuite

Démontre l'utilisation de lightmaps cuites dans une scène 3D.

Cornell box avec deux boîtes et un plafonnier montrant l'éclairage par lightmap cuit

Cet exemple démontre l'utilisation d'un éclairage entièrement cuit dans une scène. Le résultat est une scène rendue beaucoup plus réaliste, principalement en raison de l'illumination indirecte ajoutée. Grâce à une case à cocher, il est également possible de désactiver le lightmapping, ce qui permet de comparer les résultats de l'approche en temps réel et de l'approche entièrement cuite.

Configuration de la lumière

La scène dispose d'une lumière ponctuelle. Lorsque la case est cochée, la propriété bakeMode de la lumière est définie sur Light.BakeModeAll.

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

Définir la propriété à une valeur autre que Light.BakeModeDisabled a un double objectif : au moment du lightmap baking, cela indique que la lumière fait partie de la scène lightmap, qu'elle y contribue. Au moment de l'exécution, lors du rendu normal de la scène, cela indique que la lumière est une lumière entièrement ou partiellement cuite, ce qui entraîne la désactivation de certains calculs en temps réel dans les matériaux pour les modèles en lightmap. C'est pourquoi la case à cocher bascule both sur la propriété bakeMode de la lumière et sur la propriété enabled des objets BakedLightmap associés aux objets Model.

Configuration du modèle

La boîte de Cornell est un modèle à 8 sous-mailles. Elle est encapsulée dans le type Box, dont une instance est instanciée dans la scène principale.

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

Ce modèle participe à la scène lumineuse et a une image lumineuse créée pour lui. Le premier est indiqué par la propriété usedInBakedLighting. Cette propriété ne garantit pas à elle seule que notre miniscène de boîte reçoive un lightmap cuit pour elle, mais seulement qu'elle participe au lightmapping (c'est-à-dire que les rayons lumineux peuvent rebondir sur le modèle lors du calcul de l'illumination indirecte).

Pour que la carte lumineuse soit entièrement générée puis stockée pendant le processus de cuisson, un objet BakedLightmap avec enabled défini sur true est également défini. L'objet key spécifie un identifiant unique.

Pour un déploiement simple, l'application peut intégrer les images lumineuses générées (fichierlightmaps.bin ) dans l'exécutable via le système de ressources Qt. Lors d'une nouvelle création de lightmaps, l'application doit être recréée pour que le fichier modifié soit pris en compte. La source du fichier lightmaps est définie dans Lightmapper par le biais de la propriété source.

Exemple de projet @ 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.