Sur cette page

Qt Quick 3D - Exemple de lightmap cuite

Illustre l'utilisation de lightmaps précalculées dans une scène 3D.

Boîte Cornell avec deux boîtes et un plafonnier illustrant un éclairage par lightmap cuite

Cet exemple illustre l'utilisation d'un éclairage entièrement précalculé dans une scène. La scène rendue paraît ainsi beaucoup plus réaliste, principalement grâce à l'ajout d'un éclairage indirect. Une case à cocher permet également de désactiver le lightmapping, ce qui permet de comparer les résultats de rendu entre l'approche en temps réel et celle avec éclairage entièrement précalculé.

Configuration de la lumière

La scène comporte une seule source lumineuse ponctuelle. Lorsque la case à cocher est activée, la propriété ` bakeMode ` de la source lumineuse 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é sur une valeur autre que Light.BakeModeDisabled a un double objectif : au moment de la cuisson de la carte d’éclairage, cela indique que la lumière fait partie de la scène avec carte d’éclairage et y contribue. Au moment de l’exécution, lors du rendu normal de la scène, cela indique que la lumière est entièrement ou partiellement cuite, ce qui entraîne la désactivation de certains calculs en temps réel dans les matériaux des modèles avec carte d’éclairage. C’est pourquoi la case à cocher active ou désactive la propriété ` both ` de la propriété `bakeMode` de la lumière, ainsi que la propriété `enabled` de l’ BakedLightmap e associée aux objets `Model`.

Configuration du modèle

La boîte de Cornell est un modèle comportant 8 sous-maillages. Elle est encapsulée sous la forme du type « Box », dont une instance est créé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 avec lightmap et dispose d’une lightmap cuite qui lui est dédiée. La première condition est indiquée par la propriété ` usedInBakedLighting `. Cela ne garantit pas à lui seul que notre mini-scène « boîte » dispose d’une carte d’éclairage cuite, 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’éclairage indirect).

Pour que la carte d’éclairage soit entièrement générée puis stockée lors du processus de cuisson, un objet ` BakedLightmap ` dont la propriété ` enabled ` est définie sur ` true ` est également configuré. La propriété ` key ` spécifie un identifiant unique.

Pour faciliter le déploiement, l’application peut intégrer les lightmaps générées (fichier `lightmaps.bin `) dans l’exécutable via le système de ressources Qt. Lors de la nouvelle cuisson de la lightmap, l’application doit être recompilée afin que le fichier modifié soit pris en compte. L’emplacement source du fichier de lightmaps est défini dans ` Lightmapper ` via la propriété ` source `.

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