Sur cette page

SceneEnvironment QML Type

Vous permet de configurer le rendu d'une scène. En savoir plus...

Import Statement: import QtQuick3D
Inherits:

Object3D

Inherited By:

ExtendedSceneEnvironment

Propriétés

Description détaillée

SceneEnvironment définit un ensemble de propriétés globales régissant la manière dont une scène doit être rendue.

Remarque : le module QtQuick3D.Helpers propose un type « ExtendedSceneEnvironment » qui hérite de SceneEnvironment et ajoute un certain nombre d'effets intégrés.

Pour utiliser SceneEnvironment ou ExtendedSceneEnvironment, associez l'environment property d'un View3D à une instance de ces types. L'objet peut être déclaré en ligne, par exemple comme ceci :

View3D {
    environment: SceneEnvironment {
        antialiasingMode: SceneEnvironment.MSAA
        tonemapMode: SceneEnvironment.TonemapModeFilmic
        backgroundMode: SceneEnvironment.SkyBox
        lightProbe: Texture {
            source: "panoramic_hdri_background.hdr"
        }
    }
}

Il est également possible de définir l'objet d'environnement séparément. Il peut alors être référencé par un ou plusieurs objets ` View3D `. Voici un exemple de fragment de code, utilisant cette fois-ci ` ExtendedSceneEnvironment ` :

ExtendedSceneEnvironment {
    id: myEnv
    vignetteEnabled: true
}

View3D {
    width: parent.width / 2
    environment: myEnv
}

View3D {
    width: parent.width / 2
    x: parent.width / 2
    environment: myEnv
}

Présentation des fonctionnalités

Voir également ExtendedSceneEnvironment.

Documentation sur les propriétés

antialiasingMode : enumeration

Cette propriété contrôle le mode d'anticrénelage appliqué lors du rendu de la scène.

Les valeurs possibles sont :

ConstanteDescription
SceneEnvironment.NoAAAucun anticrénelage n'est appliqué.
SceneEnvironment.SSAAL'anticrénelage par suréchantillonnage est appliqué.
SceneEnvironment.MSAAL'anticrénelage multisample est appliqué.
SceneEnvironment.ProgressiveAAL'anticrénelage progressif est appliqué.

La valeur par défaut est « SceneEnvironment.NoAA ».

Suréchantillonnage

La scène est rendue dans une résolution supérieure, puis redimensionnée à la résolution réelle.

Avantages: haute qualité. Anticrénelage de l'ensemble du contenu de la scène, et pas seulement des silhouettes géométriques.

Inconvénients: généralement plus gourmand en ressources que le MSAA. Augmente l’utilisation de la mémoire vidéo. Pris en charge avec les éléments View3D pour tous les modes de rendu (renderMode) sauf « Inline », mais comme cette technique implique de rendre d’abord sur une texture, l’activation du SSAA avec un mode de rendu « Underlay » ou « Overlay » entraînera l’utilisation d’une texture intermédiaire et d’un passage de rendu qui ne seraient normalement pas nécessaires, ce qui signifie que les pertes de performances pourraient être plus perceptibles. Il est recommandé de n'utiliser le SSAA que lorsque le renderMode est réglé par défaut sur « Offscreen ».

Multisampling

Les arêtes de la géométrie sont suréchantillonnées, ce qui donne des silhouettes plus lisses. Cette technique n’a toutefois aucun effet sur les matériaux à l’intérieur de la géométrie.

Avantages: fonctionne avec n’importe quel élément « View3D », quel que soit le `renderMode`. Donne de bons résultats sur les contours de la géométrie, là où l’aliasing est souvent le plus visible ; fonctionne sans problème avec des animations rapides. Les performances dépendent uniquement des capacités du système (GPU).

Inconvénients: ne résout pas les problèmes liés aux textures ou aux reflets. Augmente l’utilisation de la mémoire vidéo. Son utilisation peut s’avérer coûteuse sur du matériel graphique moins puissant. Peut être contrôlé au cas par cas pour chaque fenêtre ou pour des éléments d’ View3D individuels, selon le mode de rendu (renderMode). Lorsque l’on utilise les modes « Underlay »/« Overlay » avec un effet appliqué ou le mode « Offscreen », le MSAA peut être contrôlé pour chaque élément d’ View3D. En revanche, l’utilisation d’Underlay/Overlay sans aucun effet ou du mode Inline entraînera un contrôle du MSAA au niveau de chaque fenêtre.

Remarque : pour les éléments d’ View3D dont le mode d’ renderMode est différent de « Underlay/Overlay » avec effets ou « Offscreen », le multisampling ne peut être activé que via l’ QSurfaceFormat de la propriété QQuickWindow ou QQuickView. Cela affectera alors tout le contenu, tant 2D que 3D, de cette fenêtre.

Anticrénelage progressif

Cette propriété active et définit le niveau d’anticrénelage progressif appliqué à la scène.

Lorsque tout le contenu de la scène a cessé de bouger, la caméra est très légèrement agitée d'une image à l'autre, et le résultat de chaque nouvelle image est fusionné avec les images précédentes. Plus vous accumulez d'images, plus le résultat est esthétique.

Avantages: offre d’excellents résultats lorsque tout le contenu de la scène est immobile.

Inconvénients: ne fonctionne pas si des changements visuels se produisent. Coûteux en ressources, car il nécessite une accumulation et un mélange des images. Augmente l’utilisation de la mémoire vidéo.

Remarque : l’anticrénelageprogressif n’est actuellement pas pris en charge avec le rendu multivue et ne doit pas être utilisé dans les applications de réalité virtuelle (VR) ou de réalité augmentée (AR).

Consultez les « Bonnes pratiques en matière d’anticrénelage » pour plus d’informations sur les méthodes d’anticrénelage.

antialiasingQuality : enumeration

Cette propriété définit le niveau d'anticrénelage appliqué à la scène. Son comportement dépend de la valeur attribuée à la propriété « antialiasingMode ». Lorsque la propriété « antialiasingMode » est définie sur « NoAA », cette propriété n'a aucun effet.

Les valeurs possibles sont :

ConstanteDescription
SceneEnvironment.MediumSSAA : l'anticrénelage utilise une résolution de suréchantillonnage de 1,2x.
MSAA : l'anticrénelage utilise 2 échantillons par pixel.
ProgressiveAA : l'anticrénelage utilise 2 images pour l'image finale.
SceneEnvironment.HighSSAA : l’anticrénelage utilise une résolution de suréchantillonnage de 1,5x.
MSAA : l’anticrénelage utilise 4 échantillons par pixel.
ProgressiveAA : l’anticrénelage utilise 4 images pour l’image finale.
SceneEnvironment.VeryHighSSAA : l'anticrénelage utilise une résolution de suréchantillonnage de 2,0x.
MSAA : l'anticrénelage utilise 8 échantillons par pixel.
ProgressiveAA : l'anticrénelage utilise 8 images pour l'image finale.

La valeur par défaut est SceneEnvironment.High

aoBias : real

Cette propriété définit une distance de coupure empêchant les objets de présenter un effet d'occlusion ambiante à courte distance. Des valeurs plus élevées augmentent la distance nécessaire entre les objets avant que l'occlusion ambiante ne soit visible.

Remarque : si vous constatez des ombres d'occlusion ambiante sur des objets où il ne devrait pas y en avoir, augmentez légèrement la valeur pour supprimer les résultats trop proches.

La valeur par défaut est 0,0.

aoDistance : real

Cette propriété définit approximativement la distance à laquelle les ombres d'occlusion ambiante s'étendent à partir des objets. Plus cette distance est grande, plus l'impact sur les performances est important.

La valeur par défaut est 5,0.

Illustration ci-contre avec la valeur par défaut « aoSoftness » et la valeur maximale « aoStrength » :

aoDistance de 5valeur « aoDistance » de 1

Scène avec une distance d'occlusion ambiante de 5

Scène avec une distance d'occlusion ambiante de 1

Remarque : pour obtenir un résultat visuellement satisfaisant avec l’occlusion ambiante dans l’espace écran, il est nécessaire de régler avec soin un certain nombre de paramètres associés, tels que aoStrength, aoSoftness, aoDistance, aoDither, aoBias et aoSampleRate.

Voir également aoStrength et aoSoftness.

aoDither : bool

Lorsque cette propriété est activée, elle diffuse les contours des bandes d'ombre de l'occlusion ambiante afin d'améliorer la fluidité (au risque de produire parfois des artefacts à motifs visibles).

Remarque : des distancestrès importantes entre les plans de découpe de votre caméra peuvent entraîner des problèmes d'occlusion ambiante. Si vous constatez l'apparition de bandes inhabituelles dans votre occlusion ambiante, essayez de régler la propriété « clipFar » de votre caméra pour qu'elle soit plus proche de votre contenu.

La valeur par défaut est « false ».

Voir également « PerspectiveCamera.clipFar » et « OrthographicCamera.clipFar ».

aoEnabled : bool [since 6.5]

Activer ou désactiver l'occlusion ambiante.

La valeur par défaut est « false », ce qui signifie que l'occlusion ambiante est désactivée.

Remarque : si aoStrength ou aoDistance est égal à 0, le fait de définir cette propriété sur true entraînera également la modification de ces valeurs en conséquence afin que l'occlusion ambiante soit effective.

Remarque : pour obtenir une occlusion ambiante dans l’espace écran visuellement satisfaisante, il est nécessaire de régler avec soin un certain nombre de paramètres associés, tels que aoStrength, aoSoftness, aoDistance, aoDither, aoBias et aoSampleRate.

Cette propriété a été introduite dans Qt 6.5.

Voir également aoStrength et aoDistance.

aoSampleRate : int

Cette propriété définit la qualité de l'occlusion ambiante (davantage de nuances de gris) au détriment des performances.

La valeur doit être 2, 3 ou 4. La valeur par défaut est 2.

aoSoftness : real

Cette propriété définit le degré de lissage des contours de l'ombrage par occlusion ambiante.

La valeur doit être comprise entre 0,0 et 50,0. La valeur par défaut est 50,0.

Illustration ci-contre avec la valeur par défaut « aoDistance » et la valeur maximale « aoStrength » :

« aoSoftness » de 50valeur « aoSoftness » de 25

Scène avec un niveau de douceur de l'occlusion ambiante de 50

Scène avec un niveau de douceur de l'occlusion ambiante de 25

Remarque : pour obtenir un rendu visuellement satisfaisant de l’occlusion ambiante dans l’espace écran, il est nécessaire de régler avec soin un certain nombre de paramètres associés, tels que « aoStrength », « aoSoftness », « aoDistance », « aoDither », « aoBias » et « aoSampleRate ».

Voir également aoStrength et aoDistance.

aoStrength : real

Cette propriété définit l'intensité de l'occlusion ambiante appliquée. L'occlusion ambiante est une forme d'éclairage global approximatif qui génère des auto-ombres non directionnelles lorsque les objets sont proches les uns des autres. Une valeur de 100 produit des ombres totalement sombres ; des valeurs plus faibles rendent les ombres plus claires. Une valeur de 0 désactive complètement l'occlusion ambiante, ce qui améliore les performances au détriment du réalisme visuel des objets 3D rendus dans la scène.

Toutes les valeurs autres que 0 ont le même impact sur les performances.

La valeur par défaut est 0,0. La valeur maximale est 100,0.

Une valeur de 0 équivaut à définir « aoEnabled » sur « false ».

Illustration ci-contre avec les paramètres par défaut de l’ aoSoftness et de l’ aoDistance:

aoStrength égal à 0 (AO désactivé)valeur « aoStrength » de 100valeur « aoStrength » de 50

Scène avec un niveau d'occlusion ambiante égal à 0

Scène avec un niveau d'occlusion ambiante de 100

Scène avec un niveau d'occlusion ambiante de 50

Remarque : pour obtenir un résultat visuel satisfaisant avec l’occlusion ambiante dans l’espace écran, il est nécessaire de régler avec soin un certain nombre de paramètres associés, tels que « aoStrength », « aoSoftness », « aoDistance », « aoDither », « aoBias » et « aoSampleRate ».

Voir également aoEnabled, aoDistance et aoSoftness.

backgroundMode : enumeration

Cette propriété détermine si et comment l'arrière-plan de la scène doit être effacé.

Remarque : l'effacement du tampon de couleur sous-jacent à la vue 3D n'a pas toujours lieu : en fonction de la propriété « renderMode », la fonction « View3D » peut ne pas effectuer d'effacement de son propre chef, auquel cas les fonctions « SceneEnvironment.Transparent » et « SceneEnvironment.Color » n'ont aucun effet. Seul le mode par défaut « Offscreen » render mode (rendu dans une texture) prend en charge tous les modes d'effacement. Avec le mode « Underlay », utilisez « QQuickWindow::setColor() » ou « Window.color » pour contrôler la couleur d'effacement de la scène « Qt Quick ». Le traitement du SkyBox est différent, car il implique le dessin d’une géométrie réelle ; il fonctionne donc de manière identique dans tous les modes de rendu.

ConstanteDescription
SceneEnvironment.TransparentLa scène est effacée pour devenir transparente. Cela est utile pour afficher du contenu 3D par-dessus un autre élément. Ce mode n’a aucun effet lorsque la propriété ` View3D ` utilise un mode de rendu (`renderMode`) de type « Underlay » ou « Overlay » sans qu’aucun post-traitement ne soit activé.
SceneEnvironment.ColorLa scène est effacée avec la couleur spécifiée par la propriété ` clearColor `. Ce mode n’a aucun effet lorsque l’ View3D utilise un `renderMode` de type « Underlay » ou « Overlay » sans aucun post-traitement activé.
SceneEnvironment.SkyBoxLa scène ne sera pas effacée, mais un SkyBox ou un Skydome sera rendu à la place. Le SkyBox est défini à l’aide de la carte HDRI spécifiée dans la propriété « lightProbe ».
SceneEnvironment.SkyBoxCubeMapLa scène ne sera pas effacée ; à la place, une SkyBox ou un Skydome sera rendu. La SkyBox est définie à l’aide de la carte cubique (cubemap) définie dans la propriété « skyBoxCubeMap ».
SceneEnvironment.SkyMaterialLa scène ne sera pas effacée, mais un SkyBox ou un Skydome sera rendu à la place. Le SkyBox est échantillonné à partir de la carte cubique générée par l’ SkyMaterial définie dans la propriété skyMaterial. (Depuis Qt 6.12)

La valeur par défaut est SceneEnvironment.Transparent

Prenons l’exemple suivant. Le modèle Suzanne est censé avoir été pré-traité avec l’outil balsam et provient du référentiel glTF Sample Models.

import QtQuick
import QtQuick3D
import QtQuick3D.Helpers

Item {
    width: 1280
    height: 720

    View3D {
        id: v3d
        anchors.fill: parent

        environment: ExtendedSceneEnvironment {
            backgroundMode: SceneEnvironment.SkyBox
            lightProbe: Texture { source: "00455_OpenfootageNET_field_low.hdr" }

            glowEnabled: true
            glowStrength: 1.25
            glowBloom: 0.25
            glowBlendMode: ExtendedSceneEnvironment.GlowBlendMode.Additive
        }

        DirectionalLight {
        }

        Suzanne {
            scale: Qt.vector3d(50, 50, 50)
            z: -500
        }

        PerspectiveCamera {
            id: camera
        }

        WasdController {
            controlledObject: camera
        }
    }
}

L'utilisation d'un éclairage basé sur des images en plus de l'DirectionalLight, ainsi que l'utilisation de la texture de sonde de lumière comme skybox, donne le résultat suivant :

Objet en 3D avec arrière-plan d'environnement

Que se passe-t-il s’il n’y a pas de sonde de lumière ?

backgroundMode: SceneEnvironment.Transparent

Ici, l’arrière-plan n’est pas fourni par View3D, mais par QQuickWindow ou QQuickView, qui hébergent la scène 2D et 3D. L’éclairage repose uniquement sur DirectionalLight.

Objet 3D sur fond transparent

Utilisation d’une couleur transparente fixe :

backgroundMode: SceneEnvironment.Color
clearColor: "green"

Objet en 3D sur fond vert

Voir également lightProbe, QQuickWindow::setColor(), Window::color et View3D.

clearColor : color

Cette propriété définit la couleur qui sera utilisée pour effacer la fenêtre d'affichage lorsque l'on utilise « SceneEnvironment.Color » pour la propriété « backgroundMode ».

La valeur par défaut est Qt::black

Voir également backgroundMode.

debugSettings : QtQuick3D::DebugSettings [since 6.5]

Cette propriété spécifie un objet ` DebugSettings ` utilisé pour configurer les outils de débogage du moteur de rendu. Lors de sa création, l’ SceneEnvironment crée automatiquement un objet ` DebugSettings ` qui lui est associé ; il n’est donc généralement pas nécessaire de définir un objet ` DebugSettings ` personnalisé.

Exemple de rendu de la scène avec le mode filaire activé :

Scène Sponza en mode filaire

Visualisation des vecteurs normaux des maillages :

Scène Sponza illustrant les normales de surface

Visualisation de la contribution de l’éclairage spéculaire :

Scène Sponza montrant des reflets spéculaires

Cette propriété a été introduite dans Qt 6.5.

Voir également DebugSettings.

depthPrePassEnabled : bool

Lorsqu'elle est activée, la moteur de rendu effectue un « Z-prepass » pour les objets opaques, ce qui signifie qu'il les rend à l'aide d'un shader simple, avec l'écriture de couleur désactivée, afin de préremplir le tampon de profondeur avant d'émettre les appels de dessin pour les passes de rendu principales.

Cela peut améliorer les performances en fonction du contenu de la scène. Ce sont généralement les scènes comportant de nombreux objets qui se chevauchent et un shading de fragments coûteux qui en tirent profit. Par ailleurs, il convient de noter que le moteur de rendu effectue un tri de l'avant vers l'arrière pour les objets opaques, ce qui contribue en soi à réduire le shading de fragments inutile ; par conséquent, le pré-pass Z n'apporte pas toujours des améliorations significatives.

Sur les GPU utilisant une architecture de rendu en mosaïque, courante dans les systèmes mobiles et embarqués, il est recommandé de définir cette option sur ` false`.

La valeur par défaut est « false ».

Remarque : cette propriété n’a aucun effet lorsque le test de profondeur est désactivé.

depthTestEnabled : bool

La valeur par défaut est true. Par défaut, le moteur de rendu classe les objets de la scène soit dans la liste « opaque », soit dans la liste « semi-transparent ». Les objets (sous-maillages avec le matériau associé) figurant dans la liste « opaque » sont rendus en premier, avec le test de profondeur et l'écriture de profondeur activés, ce qui permet un culling Z optimal pour les objets 3D classiques ne comportant pas de zones semi-transparentes. Les objets de la liste semi-transparent sont rendus avec l’écriture de profondeur désactivée, mais toujours avec le test de profondeur activé (pour effectuer une comparaison avec les objets opaques), dans l’ordre de l’arrière vers l’avant (triés en fonction de la distance entre leur point central et la caméra). Cela permet un mélange correct (« transparence ») pour les objets 3D comportant des zones semi-transparentes à leur surface, que ce soit en raison de l’ node opacity, ou d’une carte de couleur ou de texture dans le matériau.

Lorsque cette propriété est définie sur « false », le tampon Z n’est ni écrit ni utilisé pour le test de profondeur, le test de profondeur est ignoré, et tous les objets, y compris ceux qui sont entièrement opaques, sont rendus en une seule fois, triés de l’arrière vers l’avant.

Il est rarement nécessaire de définir cette propriété sur « false ». Cela peut s’avérer utile dans des scènes où l’on sait que l’approche en deux passes n’apporte que peu d’avantages, soit parce qu’il y a très peu d’objets opaques, soit parce qu’ils sont transformés de telle manière qu’un seul passage trié de l’arrière vers l’avant offre de meilleures performances.

Remarque : définir cette propriété sur « false » peut entraîner des erreurs de rendu dans certaines scènes. De plus, certaines fonctionnalités, telles que les ombres, l’occlusion ambiante, l’ SCREEN_TEXTURE et l’ DEPTH_TEXTURE dans les matériaux et effets personnalisés, ne fonctionneront pas correctement sans l’activation de l’utilisation du tampon de profondeur.

Remarque : cet indicateur n’a aucune incidence sur la présence d’un tampon de profondeur ou d’un tampon de profondeur-stencil. Ces tampons peuvent toujours être alloués même lorsque cette option est définie sur « false ».

effects : List<QtQuick3D::Effect>

Cette propriété contient une liste d'effets de post-traitement qui seront appliqués à l'ensemble de la fenêtre d'affichage. Le résultat de chaque effet est transmis à l'effet suivant ; l'ordre dans lequel ils sont définis est donc important.

Remarque : pour des raisons techniques, l'ajout répété d'un même nœud « Effect » à la liste n'est pas pris en charge et peut entraîner des résultats inattendus.

fog : QtQuick3D::Fog [since 6.5]

Lorsque cette propriété est définie sur un objet ` Fog ` valide, elle sert à configurer la prise en charge intégrée du brouillard par le moteur de rendu.

La valeur par défaut est null, ce qui signifie qu’il n’y a pas de brouillard. Cela revient à définir un objet Fog dont la propriété enabled est définie sur false.

Scène avec effet de brouillard

Cette propriété a été introduite dans Qt 6.5.

Voir également Fog.

lightProbe : QtQuick3D::Texture

Cette propriété définit une image utilisée pour éclairer la scène, soit à la place des lumières standard, soit en complément de celles-ci.

L'image est de préférence une image à plage dynamique élevée (HDR) ou une carte cubique (cubemap) pré-générée. Le pré-calcul (pre-baking) apporte des gains de performances significatifs lors de l'exécution, car il n'y a pas de temps consacré au filtrage et à la génération de mipmaps. Si la source est un fichier .hdr ou une autre image, le prétraitement par le GPU s'effectue au moment de l'exécution après le chargement du fichier image, ce qui peut s'avérer chronophage, en particulier sur du matériel embarqué et mobile. Il est donc fortement recommandé que les applications prétraitent les images .hdr au plus tard au moment de la compilation, comme décrit ici.

Remarque : l’utilisation d’une texture avec l’option « sourceItem » n’est pas prise en charge en combinaison avec cette propriété. Le préfiltrage de tous les niveaux de mipmap pour le contenu d’ Qt Quick s dynamiques n’est généralement pas raisonnable en pratique en raison de son impact sur les performances.

Pour plus d’informations sur l’éclairage basé sur des images, consultez la section « Utilisation de l’éclairage basé sur des images ».

Remarque : lorsque la propriété est définie sur une texture valide,la texture de sonde d’éclairage est utilisée pour l’éclairage, quel que soit le paramètre « backgroundMode ». Cependant, lorsque « backgroundMode » est défini sur « SceneEnvironment.SkyBox », la texture est également utilisée pour rendre l’arrière-plan de la scène sous forme de skybox.

Les exemples ci-dessous ont été générés en faisant varier l'backgroundMode dans l'environnement de la scène suivante. La scène ne comporte ni DirectionLight, ni PointLight, ni SpotLight. Tout l'éclairage repose sur l'image HDRI panoramique.

import QtQuick
import QtQuick3D
import QtQuick3D.Helpers

Item {
    width: 1280
    height: 720

    View3D {
        id: v3d
        anchors.fill: parent

        environment: ExtendedSceneEnvironment {
            backgroundMode: SceneEnvironment.SkyBox
            lightProbe: Texture { source: "00455_OpenfootageNET_field_low.hdr" }

            tonemapMode: SceneEnvironment.TonemapModeFilmic
            sharpnessAmount: 0.4

            glowEnabled: true
            glowStrength: 1.25
            glowBloom: 0.25
            glowBlendMode: ExtendedSceneEnvironment.GlowBlendMode.Additive
        }

        Node {
            scale: Qt.vector3d(100, 100, 100)

            Sponza {
            }

            Suzanne {
                y: 1
                scale: Qt.vector3d(0.5, 0.5, 0.5)
                eulerRotation.y: -90
            }
        }

        PerspectiveCamera {
            id: camera
            y: 100
        }

        WasdController {
            controlledObject: camera
        }
    }
}

Résultats avec l’environnement ci-dessus :

Scène avec sonde lumineuse

Scène avec une sonde lumineuse vue sous un angle différent

En remplaçant l’ backgroundMode par SceneEnvironment.Transparent, on obtient :

Scène dont le paramètre `backgroundMode` est défini sur « transparent »

Scène avec le paramètre « backgroundMode » défini sur « transparent », vue sous un angle différent

Ici, l'éclairage de la scène 3D est identique à celui de la scène précédente, ce qui signifie que les matériaux utilisent la sonde de lumière dans les calculs d'éclairage de la même manière qu’auparavant, mais qu’aucun skybox n’est rendu. L’arrière-plan est blanc, car il s’agit de la couleur de transparence par défaut de l’ QQuickWindow hébergeant les scènes 2D et 3D.

Il est possible de rétablir la valeur par défaut (null) de la propriété lightProbe. Cela désassigne la texture précédemment associée. Par exemple, utilisons la touche Suppr pour basculer dynamiquement entre un éclairage basé sur une image avec une skybox et l’absence d’éclairage basé sur une image avec une couleur de fond fixe :

environment: ExtendedSceneEnvironment {
    id: env

    backgroundMode: SceneEnvironment.SkyBox
    lightProbe: iblTex

    tonemapMode: SceneEnvironment.TonemapModeFilmic
    sharpnessAmount: 0.4

    glowEnabled: true
    glowStrength: 1.25
    glowBloom: 0.25
    glowBlendMode: ExtendedSceneEnvironment.GlowBlendMode.Additive
}

Texture {
    id: iblTex
    source: "00455_OpenfootageNET_field_low.hdr"
}

focus: true
Keys.onDeletePressed: {
    if (env.backgroundMode == SceneEnvironment.SkyBox) {
        env.backgroundMode = SceneEnvironment.Color;
        env.clearColor = "green";
        env.lightProbe = null;
    } else {
        env.backgroundMode = SceneEnvironment.SkyBox;
        env.lightProbe = iblTex;
    }
}

Appuyer sur la touche Suppr donne le résultat suivant. N’oubliez pas que la scène utilisée ici ne comporte aucune lumière ; tous les modèles 3D apparaissent donc entièrement noirs.

Objets 3D sans sonde lumineuse sur fond vert

Plan de masse sans sonde lumineuse sur fond vert

Bien que `lightProbe` soit couramment utilisé en combinaison avec des instances de texture qui tirent leurs données d’un fichier image (généralement .hdr ou .ktx), il peut également être pertinent de l’associer à une texture utilisant des données en mémoire, procedurally generated image data. Un excellent exemple en est une texture dont les données d’image sont générées par ProceduralSkyTextureData à partir du module QtQuick3D.Helpers :

backgroundMode: SceneEnvironment.SkyBox
lightProbe: Texture {
    textureData: ProceduralSkyTextureData {
    }
}

Cela nous donne une texture de skybox HDR générée de manière procédurale, qui est désormais utilisée à la fois comme skybox et pour l’éclairage basé sur l’image :

Scène architecturale éclairée par un ciel généré de manière procédurale, visible à l'arrière-plan

Voir également backgroundMode, « Using Image-Based Lighting », « Pre-generating IBL cubemap », probeExposure, probeHorizon, probeOrientation, et ProceduralSkyTextureData.

lightmapper : Lightmapper

Lorsque cette propriété est définie sur un objet Lightmapper valide, les paramètres spécifiés par cet objet seront pris en compte lors de la création des lightmaps.

La valeur par défaut est null, ce qui signifie que les valeurs par défaut seront utilisées pour tous les paramètres liés à la création des lightmaps.

Pour plus d’informations sur la création de lightmaps, consultez la documentation d’ Lightmapper.

Lorsque les lightmaps ne sont pas pertinentes pour une application et qu’aucun éclairage cuit n’est jamais généré, la propriété et l’objet associé n’ont aucune utilité dans la pratique.

Voir également Model::usedInBakedLighting, Model::bakedLightmap, Light::bakeMode et Lightmapper.

oitMethod : enumeration [since 6.11]

Cette propriété définit la méthode de transparence indépendante de l'ordre (OIT). En attribuant à cette propriété une méthode OIT valide, le moteur de rendu affiche les pixels transparents dans le bon ordre de profondeur.

Les valeurs possibles sont :

ConstanteDescription
SceneEnvironment.OITNoneLa méthode OIT est désactivée.
SceneEnvironment.OITWeightedBlendedTransparence approximative indépendante de l'ordre.
SceneEnvironment.OITLinkedListTransparence indépendante de l'ordre précise.

Par défaut, la transparence est de type « None » et la transparence indépendante de l'ordre est désactivée.

Mélangepondéré

Il s’agit d’une approximation de la transparence indépendante de l’ordre. Les fragments transparents sont rendus dans un tampon hors écran tandis qu’une pondération est appliquée à chaque fragment en fonction de sa distance par rapport à la caméra. Ce tampon est ensuite fusionné avec le tampon arrière après suppression de la pondération de chaque pixel. Cette méthode ne respecte pas la règle de composition « source-over » pour tous les fragments et le résultat diffère du résultat correct ; toutefois, elle fonctionne également sur du matériel plus ancien et est plus rapide que les autres méthodes plus rigoureuses.

Listechaînée

Il s'agit d'une transparence indépendante de l'ordre précise. Les fragments transparents sont rendus dans une liste chaînée lors de la passe de rendu, triés en fonction de leur profondeur, puis fusionnés lors de la passe de composition.

Remarque : l’OIT peut ne pas fonctionner avec le MSAA sur les appareils équipés de GLES 3.1 ou d’une version antérieure. Il est recommandé de ne pas utiliser le MSAA si l’OIT est souhaité sur ces appareils.

Remarque : la transparence indépendantede l'ordre ne s'applique qu'au mode de fusion « source-over ». Si la scène contient des objets utilisant d'autres modes de fusion, l'OIT est désactivée.

Cette propriété a été introduite dans Qt 6.11.

probeExposure : real

Cette propriété modifie la quantité de lumière émise par la sonde lumineuse. Le mappage des tons comprend notamment le mappage de l'exposition, et cette propriété permet d'ajuster la manière dont les valeurs de lumière des sondes lumineuses sont mappées.

Par défaut, l'exposition est réglée sur 1,0

Remarque : cette propriété n'a aucun effet lorsque l'option « tonemapMode » est définie sur « SceneEnvironment.TonemapModeNone ».

Voir également « lightProbe », « probeHorizon » et « probeOrientation ».

probeHorizon : real

Lorsque cette propriété est définie avec des valeurs croissantes, elle assombrit (noircit) la moitié inférieure de l'environnement, ce qui oblige l'éclairage à provenir principalement du haut de l'image (et supprime certains reflets de la moitié inférieure). Cette propriété est utile pour tenir compte d'un plan de sol qui aurait pour effet d'occulter le reflet de la sonde lumineuse au niveau du sol. Cela est nécessaire car les contributions des sondes de lumière proviennent directement de l’image sans tenir compte du contenu de la scène.

La plage de valeurs attendue pour la propriété probeHorizon est comprise entre 0,0 et 1,0. Toute valeur en dehors de cette plage sera limitée à la plage attendue.

Par défaut, probeHorizon est défini sur 0,0, ce qui signifie que la sonde lumineuse est utilisée dans son intégralité, sans ajustement.

Remarque : la propriété `probeHorizon` n’affecte que l’éclairage des matériaux et n’a aucun effet sur le rendu de la « sky box ».

Voir également lightProbe, probeExposure et probeOrientation.

probeOrientation : vector3d

Cette propriété définit l'orientation de la sonde lumineuse. L'orientation est exprimée en angles d'Euler, en degrés, par rapport aux axes x, y et z.

Remarque : cette valeur influe sur la manière dont la texture « lightProbe » est échantillonnée, en combinaison avec les rotations et décalages de texture définis sur la texture « lightProbe ».

Voir également « lightProbe », « probeHorizon » et « probeExposure ».

scissorRect : rect [since 6.5]

Cette propriété définit un rectangle de découpe dans les coordonnées de la vue, dont le coin supérieur gauche se trouve en [0, 0]

Cette propriété a été introduite dans Qt 6.5.

skyBoxCubeMap : QtQuick3D::CubeMapTexture [since 6.4]

Cette propriété définit une carte cubique (cubemap) à utiliser comme skybox lorsque le mode d'arrière-plan est « SkyBoxCubeMap ».

Cette propriété a été introduite dans Qt 6.4.

skyMaterial : QtQuick3D::SkyMaterial [since 6.12]

Cette propriété définit un modèle de ciel procédural, généré par le GPU, utilisé pour l'IBL et comme arrière-plan de la scène.

Cette propriété a été introduite dans Qt 6.12.

Voir également backgroundMode et lightProbe.

skyboxBlurAmount : real [since 6.4]

Cette propriété détermine le degré de flou à appliquer à la skybox lorsque l'on utilise l'option « SceneEnvironment.SkyBox » pour la propriété « backgroundMode ». La valeur par défaut est « 0.0 », ce qui signifie qu'il n'y a pas de flou.

Les valeurs acceptables sont comprises entre 0,0 et 1,0 ; toutes les autres valeurs seront limitées à cette plage.

Cette propriété a été introduite dans Qt 6.4.

specularAAEnabled : bool [since 6.4]

Lorsque cette option est activée, l'aliasing spéculaire est atténué. L'aliasing spéculaire se manifeste souvent sous la forme de points lumineux, pouvant scintiller lorsque l'on déplace la caméra.

La valeur par défaut est « false ».

Antialiasing spéculaire désactivéAntialiasing spéculaire activé

Scène architecturale présentant des reflets spéculaires sans anticrénelage

Scène architecturale présentant des reflets spéculaires lissés grâce à l'anticrénelage

Cette propriété a été introduite dans Qt 6.4.

temporalAAEnabled : bool [default: false]

Lorsque cette option est activée, l'anticrénelage temporel sera utilisé.

La caméra est très légèrement déplacée d'une image à l'autre, et le résultat de chaque nouvelle image est fusionné avec celui de l'image précédente.

Remarque : l'anticrénelagetemporel n'a aucun effet lorsque l'option « antialiasingMode » est réglée sur MSAA.

Remarque : lorsque vous utilisez ProgressiveAA, l’antialiasing temporel est appliqué pendant l’animation de la scène. Une fois que la scène devient statique, ProgressiveAA prend le relais — mais uniquement lorsque l’ temporalAAMode est défini sur SceneEnvironment.TAADefault. En d’autres termes : ProgressiveAA n’a aucun effet lorsque l’ temporalAAMode est défini sur SceneEnvironment.TAAMotionVector.

Avantages: grâce au mouvement saccadé de la caméra, il permet de révéler des détails qui auraient autrement été perdus ; faible impact sur les performances.

Inconvénients: les objets se déplaçant rapidement provoquent un effet de fantôme sur une image.

Remarque : l’anticrénelagetemporel n’est actuellement pas pris en charge avec le rendu multivue et ne doit pas être utilisé dans les applications de réalité virtuelle (VR) ou de réalité augmentée (AR).

temporalAAMode : enumeration [since 6.11]

Permet de contrôler le mode d'anti-aliasing temporel. L'anti-aliasing temporel réduit le scintillement et l'aliasing en fusionnant les informations de plusieurs images.

ConstanteDescription
SceneEnvironment.TAADefaultFusionne l'image actuelle et la précédente pour un filtrage temporel de base.
SceneEnvironment.TAAMotionVectorUtilise des vecteurs de mouvement pour suivre le déplacement des pixels d’une image à l’autre, offrant ainsi une qualité supérieure pour les scènes animées.

La valeur par défaut est « SceneEnvironment.TAADefault ».

Remarque : l'anti-aliasingtemporel peut provoquer des artefacts de « ghosting » avec des objets se déplaçant rapidement ou des mouvements rapides de la caméra.

Remarque : fonctionne mieux avec des fréquences d’images constantes. Les variations de fréquence d’images réduisent son efficacité.

Cette propriété a été introduite dans Qt 6.11.

temporalAAStrength : real [default: 0.3]

Cette propriété modifie l'amplitude du mouvement temporel (anticrénelage). Elle n'a d'effet que lorsque la propriété ` temporalAAEnabled ` est définie sur `true`.

Voir également temporalAAEnabled.

tonemapMode : enumeration [since 6.0]

Cette propriété définit la manière dont les couleurs sont soumises à un mappage de tons avant le rendu. Tous les rendus dans Qt Quick 3D sont effectués dans un espace colorimétrique linéaire, ce qui peut souvent entraîner la génération de valeurs de couleur non affichables. Le paramètre `tonemapMode` détermine la technique utilisée pour remapper les couleurs dans une plage affichable.

La valeur par défaut est SceneEnvironment.TonemapModeLinear

ConstantDescription
SceneEnvironment.TonemapModeNoneTout le mappage de tons est contourné. Ce mode est utile lors de l’application d’effets de post-traitement.
SceneEnvironment.TonemapModeLinearUn mappage de tons linéaire est appliqué. Les couleurs sont corrigées en gamma et restituées dans l’espace colorimétrique sRGB.
SceneEnvironment.TonemapModeAcesLe tonemapping du système de codage des couleurs de l’Académie (Academy Color Encoding System) est appliqué.
SceneEnvironment.TonemapModeHejlDawsonLe tonemapping Hejl-Dawson est appliqué.
SceneEnvironment.TonemapModeFilmicLe tonemapping « Filmic » est appliqué.

Consultez ExtendedSceneEnvironment pour voir un exemple de ces différents modes.

Remarque : lors de l'utilisation d'effets de post-traitement, la plupart des effets s'attendent à recevoir des données de couleur linéaires non soumises à un mappage de tons. Avec les effets personnalisés fournis par l’application et implémentés via le type ` Effect `, il est important de savoir qu’à partir de Qt 6.5, les effets peuvent supposer sans risque qu’ils fonctionnent avec des données de couleur linéaires, et que le mappage de tons est effectué automatiquement sur la sortie du dernier effet de la chaîne. S’il est nécessaire de personnaliser entièrement le mappage de tons, envisagez de définir la valeur ` SceneEnvironment.TonemapModeNone ` pour désactiver le mapeur de tons intégré, et effectuez plutôt les ajustements appropriés sur la valeur de couleur dans le dernier effet de la chaîne. Cela ne s’applique pas aux effets intégrés de ExtendedSceneEnvironment, car ceux-ci se chargent automatiquement d’un mappage de tons correct, quelle que soit la combinaison d’effets intégrés activés dans l’environnement.

Cette propriété a été introduite dans Qt 6.0.

© 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.