SceneEnvironment QML Type

Ermöglicht die Konfiguration des Rendering einer Szene. Mehr...

Import Statement: import QtQuick3D
Inherits:

Object3D

Inherited By:

ExtendedSceneEnvironment

Eigenschaften

Detaillierte Beschreibung

SceneEnvironment definiert einen Satz globaler Eigenschaften für die Art und Weise, wie eine Szene gerendert werden soll.

Hinweis: Das QtQuick3D.Helpers Modul bietet einen ExtendedSceneEnvironment Typ, der von SceneEnvironment erbt und eine Reihe von eingebauten Effekten hinzufügt.

Um SceneEnvironment oder ExtendedSceneEnvironment zu verwenden, assoziieren Sie die environment property eines View3D mit einer Instanz dieser Typen. Das Objekt kann inline deklariert werden, z.B. wie hier:

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

Alternativ kann das Umgebungsobjekt auch separat definiert werden. Es kann dann von einem oder mehreren View3D Objekten referenziert werden. Ein Beispielcodeausschnitt, diesmal unter Verwendung von ExtendedSceneEnvironment:

ExtendedSceneEnvironment {
    id: myEnv
    vignetteEnabled: true
}

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

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

Funktionsübersicht

Siehe auch ExtendedSceneEnvironment.

Eigenschaft Dokumentation

antialiasingMode : enumeration

Diese Eigenschaft steuert den Antialiasing-Modus, der beim Rendern der Szene angewendet wird.

Mögliche Werte sind:

KonstantBeschreibung
SceneEnvironment.NoAAEs wird kein Antialiasing angewandt.
SceneEnvironment.SSAASupersample-Antialiasing wird angewendet.
SceneEnvironment.MSAAMultisample-Antialiasing wird angewandt.
SceneEnvironment.ProgressiveAAEs wird progressives Antialiasing angewendet.

Der Standardwert ist SceneEnvironment.NoAA.

Supersampling

Die Szene wird in einer höheren Auflösung gerendert und dann auf die tatsächliche Auflösung herunterskaliert.

Vorteile: Hohe Qualität. Antialiases alle Szene Inhalt und nicht nur Geometrie Silhouetten.

Nachteile: In der Regel teurer als MSAA. Erhöht die Nutzung des Videospeichers. Unterstützt mit View3D Elementen mit allen RenderModes außer Inline, aber da die Technik voraussetzt, dass zuerst auf eine Textur gerendert wird, führt die Aktivierung von SSAA mit einem RenderMode von Underlay oder Overlay dazu, dass eine Zwischentextur und ein Renderpass verwendet werden, die normalerweise nicht erforderlich wären, was bedeutet, dass die Leistungskosten spürbarer sein können. Es wird empfohlen, SSAA nur zu verwenden, wenn der RenderMode der Standard Offscreen ist.

Multisampling

Die Kanten der Geometrie werden superabgetastet, was zu glatteren Silhouetten führt. Diese Technik hat jedoch keine Auswirkungen auf die Materialien innerhalb der Geometrie.

Vorteile: Funktioniert mit jedem View3D Element, unabhängig vom RenderMode. Gute Ergebnisse bei Geometriesilhouetten, wo Aliasing oft am auffälligsten ist; funktioniert bei schnellen Animationen ohne Probleme. Die Leistung hängt ausschließlich von den Fähigkeiten des Systems (GPU) ab.

Nachteile: Hilft nicht bei Textur- oder Reflexionsproblemen. Erhöht die Nutzung des Videospeichers. Kann auf weniger leistungsstarker Grafikhardware teuer sein. Kann je nach RenderMode pro Fenster oder für einzelne View3D Elemente gesteuert werden. Bei der Verwendung von Underlay/Overlay mit einem angewandten Effekt oder Offscreen kann MSAA für jedes Element von View3D gesteuert werden. Bei der Verwendung von Underlay/Overlay ohne Effekt oder Inline wird MSAA dagegen pro Fenster gesteuert.

Hinweis: Für View3D Elemente mit einem renderMode, das nicht Underlay/Overlay mit Effekten oder Offscreen ist, kann Multisampling nur über die QSurfaceFormat des QQuickWindow oder QQuickView aktiviert werden. Dies wirkt sich dann auf alle Inhalte, sowohl 2D als auch 3D, in diesem Fenster aus.

Progressives Antialiasing

Diese Eigenschaft aktiviert und legt den Grad des progressiven Antialiasing fest, der auf die Szene angewendet wird.

Wenn sich der gesamte Inhalt der Szene nicht mehr bewegt, wird die Kamera zwischen den Einzelbildern leicht verwackelt, und das Ergebnis jedes neuen Einzelbildes wird mit den vorherigen Einzelbildern gemischt. Je mehr Bilder Sie anhäufen, desto besser sieht das Ergebnis aus.

Vorteile: Erzielt großartige Ergebnisse, wenn der gesamte Inhalt der Szene stillsteht.

Nachteile: Wird nicht wirksam, wenn visuelle Veränderungen stattfinden. Teuer, da die Bilder akkumuliert und gemischt werden müssen. Erhöht die Nutzung des Videospeichers.

Hinweis: Progressive Antialiasing wird derzeit nicht mit Multiview-Rendering unterstützt und sollte nicht in VR/AR-Anwendungen verwendet werden.

Weitere Informationen zu Anti-Aliasing-Methoden finden Sie unter Best Practices für Anti-Aliasing.


antialiasingQuality : enumeration

Diese Eigenschaft legt den Grad des Antialiasing fest, der auf die Szene angewendet wird. Das Verhalten hängt von der verwendeten antialiasingMode ab. Wenn die Eigenschaft antialiasingMode auf NoAA eingestellt ist, hat diese Eigenschaft keine Auswirkung.

Mögliche Werte sind:

KonstantBeschreibung
SceneEnvironment.MediumSSAA: Antialiasing verwendet 1,2fache Supersampling-Auflösung.
MSAA: Antialiasing verwendet 2 Samples pro Pixel.
ProgressiveAA: Antialiasing verwendet 2 Bilder für das endgültige Bild.
SceneEnvironment.HighSSAA: Antialiasing verwendet eine 1,5-fache Überabtastungsauflösung.
MSAA: Antialiasing verwendet 4 Samples pro Pixel.
ProgressiveAA: Antialiasing verwendet 4 Bilder für das endgültige Bild.
SceneEnvironment.VeryHighSSAA: Antialiasing verwendet eine 2,0fache Überabtastungsauflösung.
MSAA: Antialiasing verwendet 8 Samples pro Pixel.
ProgressiveAA: Antialiasing verwendet 8 Bilder für das endgültige Bild.

Der Standardwert ist SceneEnvironment.High


aoBias : real

Diese Eigenschaft legt einen Grenzabstand fest, der verhindert, dass Objekte bei geringen Entfernungen eine Umgebungsunschärfe aufweisen. Höhere Werte erhöhen den erforderlichen Abstand zwischen den Objekten, bevor eine Umgebungsokklusion auftritt.

Hinweis: Wenn Sie Umgebungsschatten auf Objekten sehen, auf denen kein Schatten zu sehen sein sollte, erhöhen Sie den Wert geringfügig, um nahe Ergebnisse abzuschneiden.

Der Standardwert ist 0,0.


aoDistance : real

Diese Eigenschaft legt fest, wie weit sich der Umgebungsschatten von den Objekten entfernt ausbreitet. Größere Abstände wirken sich zunehmend auf die Leistung aus.

Der Standardwert ist 5,0.

Hier abgebildet mit dem Standardwert aoSoftness und dem Maximalwert aoStrength:

aoDistance von 5aoDistance von 1

Hinweis: Um eine visuell gut aussehende Umgebungsokklusion auf dem Bildschirm zu erreichen, muss eine Reihe von verwandten Parametern sorgfältig eingestellt werden, wie aoStrength, aoSoftness, aoDistance, aoDither, aoBias und aoSampleRate.

Siehe auch aoStrength und aoSoftness.


aoDither : bool

Wenn diese Eigenschaft aktiviert ist, werden die Kanten der Schattenbänder der Umgebungsokklusion gestreut, um die Glättung zu verbessern (auch auf die Gefahr hin, dass manchmal offensichtliche gemusterte Artefakte entstehen).

Hinweis: Sehr große Abstände zwischen den Clipping-Ebenen Ihrer Kamera können zu Problemen mit der Umgebungsokklusion führen. Wenn Sie seltsame Streifen in der Umgebungsokklusion sehen, versuchen Sie, die Eigenschaft clipFar Ihrer Kamera so einzustellen, dass sie näher an Ihrem Inhalt liegt.

Der Standardwert ist false.

Siehe auch PerspectiveCamera.clipFar und OrthographicCamera.clipFar.


aoEnabled : bool [since 6.5]

Aktivieren oder deaktivieren Sie die Umgebungsokklusion.

Der Standardwert ist false, was bedeutet, dass die Umgebungsokklusion deaktiviert ist.

Hinweis: Wenn aoStrength oder aoDistance den Wert 0 hat, werden durch die Einstellung dieser Eigenschaft auf true auch diese Werte entsprechend gesetzt, damit die Umgebungsunterdrückung wirksam wird.

Hinweis: Um eine visuell gut aussehende Ambient Occlusion auf dem Bildschirm zu erreichen, muss eine Reihe von verwandten Parametern sorgfältig eingestellt werden, wie aoStrength, aoSoftness, aoDistance, aoDither, aoBias und aoSampleRate.

Diese Eigenschaft wurde in Qt 6.5 eingeführt.

Siehe auch aoStrength und aoDistance.


aoSampleRate : int

Diese Eigenschaft definiert die Qualität der Umgebungsokklusion (mehr Graustufen) auf Kosten der Leistung.

Der Wert muss 2, 3 oder 4 sein. Der Standardwert ist 2.


aoSoftness : real

Diese Eigenschaft legt fest, wie glatt die Kanten der Umgebungsschattierung sind.

Der Wert muss zwischen 0,0 und 50,0 liegen. Der Standardwert ist 50,0.

Hier abgebildet mit dem Standardwert aoDistance und dem Maximalwert aoStrength:

aWeichheit von 50aWeichheit von 25

Hinweis: Um eine visuell gut aussehende Umgebungsokklusion auf dem Bildschirm zu erreichen, muss eine Reihe von Parametern sorgfältig eingestellt werden, wie aoStrength, aoSoftness, aoDistance, aoDither, aoBias und aoSampleRate.

Siehe auch aoStrength und aoDistance.


aoStrength : real

Diese Eigenschaft definiert die Stärke der Umgebungsokkusation. Ambient Occulusion ist eine Form der approximierten globalen Beleuchtung, die bei nahe beieinander liegenden Objekten eine ungerichtete Selbstabschattung bewirkt. Ein Wert von 100 bewirkt, dass die Schatten vollständig dunkel sind; niedrigere Werte lassen die Schatten heller erscheinen. Ein Wert von 0 deaktiviert die Umgebungshelligkeit vollständig und verbessert die Leistung auf Kosten des visuellen Realismus der in der Szene gerenderten 3D-Objekte.

Alle anderen Werte als 0 haben die gleichen Auswirkungen auf die Leistung.

Der Standardwert ist 0,0. Der Höchstwert ist 100,0.

Ein Wert von 0 ist gleichbedeutend mit der Einstellung aoEnabled auf false.

Hier abgebildet mit den Standardwerten aoSoftness und aoDistance:

aoStrength von 0 (AO deaktiviert)aoStrength von 100aoStrength von 50

Hinweis: Um eine visuell gut aussehende Umgebungsokklusion auf dem Bildschirm zu erreichen, muss eine Reihe von Parametern sorgfältig eingestellt werden, wie z. B. aoStrength, aoSoftness, aoDistance, aoDither, aoBias und aoSampleRate.

Siehe auch aoEnabled, aoDistance und aoSoftness.


backgroundMode : enumeration

Diese Eigenschaft steuert, ob und wie der Hintergrund der Szene geleert werden soll.

Hinweis: Das Löschen des Farbpuffers, der die 3D-Ansicht unterstützt, geschieht nicht immer: Abhängig von der Eigenschaft renderMode kann es sein, dass View3D von sich aus keine Löschung vornimmt, in diesem Fall haben SceneEnvironment.Transparent und SceneEnvironment.Color keine Wirkung. Nur die Standardeinstellung Offscreen render mode (Rendering in eine Textur) unterstützt alle Clearing-Modi. Im Modus Underlay verwenden Sie QQuickWindow::setColor() oder Window.color, um die Clear-Farbe für die Szene Qt Quick zu steuern. SkyBox wird anders gehandhabt, da es das Zeichnen tatsächlicher Geometrie impliziert, was in allen Rendermodi identisch funktioniert.

KonstanteBeschreibung
SceneEnvironment.TransparentDie Szene wird auf transparent gesetzt. Dies ist nützlich, um 3D-Inhalte über einem anderen Element zu rendern. Dieser Modus hat keine Auswirkungen, wenn View3D einen RenderMode von Underlay oder Overlay ohne aktivierte Nachbearbeitung verwendet.
SceneEnvironment.ColorDie Szene wird mit der durch die Eigenschaft clearColor angegebenen Farbe geleert. Dieser Modus hat keine Auswirkung, wenn View3D einen RenderMode von Underlay oder Overlay verwendet, ohne dass eine Nachbearbeitung aktiviert ist.
SceneEnvironment.SkyBoxDie Szene wird nicht gelöscht, sondern stattdessen wird eine SkyBox oder ein Skydome gerendert. Die SkyBox wird mit der HDRI-Karte definiert, die in der Eigenschaft lightProbe festgelegt ist.
SceneEnvironment.SkyBoxCubeMapDie Szene wird nicht gelöscht, stattdessen wird eine SkyBox oder ein Skydome gerendert. Die SkyBox wird mit Hilfe der Cubemap definiert, die in der Eigenschaft skyBoxCubeMap festgelegt ist.

Der Standardwert ist SceneEnvironment.Transparent

Nehmen Sie das folgende Beispiel. Es wird erwartet, dass das Suzanne-Modell mit dem Tool balsam vorverarbeitet wurde und aus dem glTF Sample Models Repository stammt.

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
        }
    }
}

Die Verwendung von bildbasierter Beleuchtung zusätzlich zu DirectionalLight und die Verwendung der Lichtsondentextur als Skybox führt zu folgendem Ergebnis:

Was passiert, wenn es keine Lichtsonde gibt?

backgroundMode: SceneEnvironment.Transparent

Hier wird der Hintergrund nicht von View3D, sondern von QQuickWindow oder QQuickView bereitgestellt, die die 2D- und 3D-Szene enthalten. Die Beleuchtung basiert nur auf der DirectionalLight.

Es wird eine feste klare Farbe verwendet:

backgroundMode: SceneEnvironment.Color
clearColor: "green"

Siehe auch lightProbe, QQuickWindow::setColor(), Window::color, und View3D.


clearColor : color

Diese Eigenschaft definiert, welche Farbe verwendet wird, um das Ansichtsfenster zu löschen, wenn SceneEnvironment.Color für die Eigenschaft backgroundMode verwendet wird.

Der Standardwert ist Qt::black

Siehe auch backgroundMode.


debugSettings : QtQuick3D::DebugSettings [since 6.5]

Diese Eigenschaft spezifiziert ein DebugSettings Objekt, das verwendet wird, um die Debugging-Tools des Renderers zu konfigurieren. Während der Erstellung erstellt SceneEnvironment automatisch ein DebugSettings Objekt, das mit sich selbst verknüpft ist, und daher ist die Einstellung eines benutzerdefinierten DebugSettings normalerweise nicht erforderlich.

Ein Beispiel für das Rendern der Szene mit aktiviertem Drahtgittermodus:

Visualisierung der Normalenvektoren der Meshes:

Visualisierung des spiegelnden Beleuchtungsbeitrags:

Diese Eigenschaft wurde in Qt 6.5 eingeführt.

Siehe auch DebugSettings.


depthPrePassEnabled : bool

Wenn diese Eigenschaft aktiviert ist, führt der Renderer einen Z-Prepass für opake Objekte durch, d.h. er rendert sie mit einem einfachen Shader und deaktiviertem Farbschreiben, um den Tiefenpuffer vorzufüllen, bevor er Zeichenaufrufe für die Haupt-Rendering-Passes ausgibt.

Dies kann die Leistung je nach Inhalt der Szene verbessern. In der Regel sind es Szenen mit vielen überlappenden Objekten und teurem Fragment-Shading, die hiervon profitieren. Gleichzeitig ist anzumerken, dass der Renderer bei undurchsichtigen Objekten eine Sortierung von vorne nach hinten vorn vornimmt, was an sich schon dazu beiträgt, unnötiges Fragment-Shading zu reduzieren, so dass der Z-Prepass nicht immer erhebliche Verbesserungen bringt.

Auf GPUs, die eine gekachelte Rendering-Architektur verwenden, was bei mobilen und eingebetteten Systemen üblich ist, wird empfohlen, dies auf false zu setzen.

Der Standardwert ist false.

Hinweis: Diese Eigenschaft hat keine Auswirkungen, wenn die Tiefenprüfung deaktiviert ist.


depthTestEnabled : bool

Der Standardwert ist true. Standardmäßig klassifiziert der Renderer die Objekte in der Szene entweder als opaque oder als semi-transparent. Die Objekte (Submeshes mit dem zugehörigen Material) in der Liste opaque werden zuerst gerendert, wobei die Tiefenprüfung und das Schreiben in die Tiefe aktiviert sind, was ein optimales Z-Culling für typische 3D-Objekte ermöglicht, die keine halbtransparenten Bereiche aufweisen. Die Objekte in der Liste semi-transparent werden mit deaktivierter Tiefenschreibefunktion gerendert, aber immer noch mit aktivierter Tiefenprüfung (um gegen die undurchsichtigen Objekte zu testen), und zwar in der Reihenfolge von hinten nach vorne (sortiert nach dem Abstand ihres Mittelpunkts von der Kamera). Dies ermöglicht eine korrekte Überblendung ("Durchsicht") für 3D-Objekte, die halbtransparente Bereiche auf ihrer Oberfläche aufweisen, entweder aufgrund der node opacity oder aufgrund einer Farb- oder Texturkarte im Material.

Wenn diese Eigenschaft auf false gesetzt ist, wird der Z-Puffer nicht geschrieben und getestet, der Tiefentest wird übersprungen, und alle Objekte, auch die völlig undurchsichtigen, werden in einem Durchgang gerendert, von hinten nach vorne sortiert.

Die Einstellung dieser Eigenschaft auf false sollte selten benötigt werden. Sie kann in Szenen nützlich sein, bei denen bekannt ist, dass der Zwei-Runden-Ansatz kaum Vorteile bringt, weil es entweder nur sehr wenige undurchsichtige Objekte gibt oder diese so transformiert sind, dass ein einzelner, von hinten nach vorne sortierter Durchgang besser funktioniert.

Hinweis: Die Einstellung dieser Eigenschaft auf false kann in bestimmten Szenen zu Rendering-Fehlern führen. Darüber hinaus verhalten sich einige Funktionen wie Schatten, Ambient Occlusion, SCREEN_TEXTURE und DEPTH_TEXTURE in benutzerdefinierten Materialien und Effekten nicht korrekt, wenn die Verwendung des Tiefenpuffers nicht aktiviert ist.

Hinweis: Dieses Flag hat keinen Einfluss auf das Vorhandensein eines Tiefen- oder Tiefenschablonenpuffers. Solche Puffer können auch dann noch zugewiesen werden, wenn dieses Flag auf false gesetzt ist.


effects : List<QtQuick3D::Effect>

Diese Eigenschaft enthält eine Liste von Nachbearbeitungseffekten, die auf das gesamte Ansichtsfenster angewendet werden. Das Ergebnis eines jeden Effekts wird an den nächsten weitergegeben, so dass die Reihenfolge von Bedeutung ist.

Hinweis: Aus technischen Gründen wird das mehrfache Hinzufügen desselben Effect Knotens in die Liste nicht unterstützt und führt zu unerwarteten Ergebnissen.


fog : QtQuick3D::Fog [since 6.5]

Wenn diese Eigenschaft auf ein gültiges Fog Objekt gesetzt ist, wird sie verwendet, um die eingebaute Nebelunterstützung des Renderers zu konfigurieren.

Der Standardwert ist null, was keinen Nebel bedeutet. Dies ist gleichbedeutend mit dem Setzen eines Fog-Objekts mit der Einstellung enabled auf false.

Diese Eigenschaft wurde in Qt 6.5 eingeführt.

Siehe auch Fog.


lightProbe : QtQuick3D::Texture

Diese Eigenschaft definiert ein Bild, das zur Beleuchtung der Szene verwendet wird, entweder anstelle von oder zusätzlich zu den Standardlichtern.

Das Bild ist vorzugsweise ein High-Dynamic-Range-Bild oder eine vorgenerierte Cubemap. Das Vorbacken bietet erhebliche Leistungsverbesserungen zur Laufzeit, da keine Zeit für Filterung und Mipmap-Generierung aufgewendet werden muss. Handelt es sich bei der Quelle um ein .hdr- oder ein anderes Bild, erfolgt die GPU-basierte Vorverarbeitung zur Laufzeit nach dem Laden der Bilddatei, was insbesondere auf eingebetteter und mobiler Hardware zeitaufwändig sein kann. Daher wird dringend empfohlen, dass Anwendungen .hdr-Bilder spätestens zum Zeitpunkt der Erstellung vorverarbeiten, wie hier beschrieben.

Hinweis: Die Verwendung einer Textur mit sourceItem wird in Kombination mit dieser Eigenschaft nicht unterstützt. Das Vorfiltern aller Mip-Ebenen für dynamische Qt Quick Inhalte ist in der Praxis aufgrund von Leistungseinbußen nicht sinnvoll.

Weitere Informationen zur bildbasierten Beleuchtung finden Sie unter Verwendung bildbasierter Beleuchtung.

Hinweis: Die Lichtsondentextur wird, wenn die Eigenschaft auf eine gültige Textur gesetzt ist, unabhängig von backgroundMode für die Beleuchtung verwendet. Wenn backgroundMode jedoch auf SceneEnvironment.SkyBox gesetzt ist, wird die Textur auch zum Rendern des Szenenhintergrunds als Skybox verwendet.

Die folgenden Beispiele wurden unter Variation der backgroundMode in der Umgebung der folgenden Szene erzeugt. Die Szene hat kein DirectionLight, PointLight oder SpotLight. Die gesamte Beleuchtung basiert auf dem HDRI-Panoramabild.

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
        }
    }
}

Ergebnisse mit der obigen Umgebung:

Ein Wechsel von backgroundMode zu SceneEnvironment.Transparent würde zu diesem Ergebnis führen:

Hier ist die Beleuchtung der 3D-Szene dieselbe wie zuvor, d. h. die Materialien verwenden die Lichtsonde in den Beleuchtungsberechnungen auf dieselbe Weise wie zuvor, aber es wird keine Skybox gerendert. Der Hintergrund ist weiß, da dies die Standardfarbe der QQuickWindow ist, die die 2D- und 3D-Szene enthält.

Es ist sinnvoll, den Wert der Eigenschaft lightProbe wieder auf den Standardwert null zu setzen. Dadurch wird die Zuweisung der zuvor zugeordneten Textur aufgehoben. Verwenden Sie beispielsweise die Entf-Taste, um dynamisch zwischen einer bildbasierten Beleuchtung mit einer Skybox und keiner bildbasierten Beleuchtung mit einer festen klaren Farbe für den Hintergrund umzuschalten:

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;
    }
}

Das Drücken der Entf-Taste führt zu folgendem Ergebnis. Denken Sie daran, dass die hier verwendete Szene keine Beleuchtung hat, so dass alle 3D-Modelle komplett schwarz erscheinen.

Während lightProbe üblicherweise in Kombination mit Textur-Instanzen verwendet wird, die ihre Daten aus einer Bilddatei beziehen (typischerweise .hdr oder .ktx), kann es auch sinnvoll sein, sie mit einer Textur zu verknüpfen, die speicherintern procedurally generated image data verwendet. Ein Paradebeispiel hierfür ist eine Textur, bei der die Bilddaten von ProceduralSkyTextureData aus dem QtQuick3D.Helpers-Modul generiert werden:

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

So erhalten wir eine prozedural generierte HDR-Skybox-Textur, die nun sowohl als Skybox als auch für die bildbasierte Beleuchtung verwendet wird:

Siehe auch backgroundMode, Image-Based Lighting verwenden, IBL-Cubemap vorgenerieren, probeExposure, probeHorizon, probeOrientation und ProceduralSkyTextureData.


lightmapper : Lightmapper

Wenn diese Eigenschaft auf ein gültiges Lightmapper-Objekt gesetzt ist, werden die von diesem Objekt angegebenen Einstellungen beim Backen von Lightmaps berücksichtigt.

Der Standardwert ist null, was bedeutet, dass die Standardwerte für alle mit dem Baking verbundenen Einstellungen verwendet werden.

Weitere Informationen zum Backen von Lightmaps finden Sie in der Dokumentation Lightmapper.

Wenn Lightmaps für eine Anwendung nicht relevant sind und keine gebackene Beleuchtung erzeugt wird, haben die Eigenschaft und das zugehörige Objekt in der Praxis keinen Zweck.

Siehe auch Model::usedInBakedLighting, Model::bakedLightmap, Light::bakeMode, und Lightmapper.


probeExposure : real

Mit dieser Eigenschaft wird die von der Lichtsonde abgegebene Lichtmenge verändert. Ein Teil des Tonemappings ist das Belichtungsmapping, und diese Eigenschaft passt an, wie die Lichtwerte in den Lichtsonden tonemappt werden.

Standardmäßig ist die Belichtung auf 1,0 eingestellt.

Hinweis: Diese Eigenschaft hat keine Auswirkung, wenn tonemapMode auf SceneEnvironment.TonemapModeNone eingestellt ist.

Siehe auch lightProbe, probeHorizon, und probeOrientation.


probeHorizon : real

Diese Eigenschaft fügt der unteren Hälfte der Umgebung Dunkelheit (Schwarz) hinzu, wenn sie mit steigenden Werten definiert wird, und zwingt die Beleuchtung dazu, überwiegend von der oberen Hälfte des Bildes zu kommen (und entfernt bestimmte Reflexionen aus der unteren Hälfte). Diese Eigenschaft ist nützlich, um eine Bodenebene zu berücksichtigen, die die Reflexion der Lichtsonde am Boden verdecken würde. Dies ist notwendig, da die Beiträge der Lichtsonde direkt aus dem Bild stammen, ohne den Inhalt der Szene zu berücksichtigen.

Der erwartete Wertebereich für die Eigenschaft probeHorizon liegt zwischen 0,0 und 1,0. Jeder Wert, der außerhalb dieses Bereichs liegt, wird auf den erwarteten Bereich geklemmt.

Standardmäßig ist probeHorizon auf 0.0 eingestellt, was bedeutet, dass die gesamte Lichtsonde ohne Anpassung verwendet wird.

Hinweis: Die Eigenschaft probeHorizon wirkt sich nur auf die Materialbeleuchtung aus und hat keinen Einfluss auf das Rendering des Himmelskastens.

Siehe auch lightProbe, probeExposure, und probeOrientation.


probeOrientation : vector3d

Mit dieser Eigenschaft wird die Ausrichtung der Lichtsonde definiert. Die Ausrichtung wird in Form von Eulerwinkeln in Grad über die x-, y- und z-Achse definiert.

Hinweis: Dieser Wert ergänzt die Art und Weise, wie die lightProbe Textur in Kombination mit den für die lightProbe Textur festgelegten Texturdrehungen und Offsets abgetastet wird.

Siehe auch lightProbe, probeHorizon, und probeExposure.


scissorRect : rect [since 6.5]

Diese Eigenschaft definiert ein Scherenrechteck in Ansichtskoordinaten, mit der oberen linken Ecke bei [0, 0].

Diese Eigenschaft wurde in Qt 6.5 eingeführt.


skyBoxCubeMap : QtQuick3D::CubeMapTexture [since 6.4]

Diese Eigenschaft definiert eine Cubemap, die als Skybox verwendet wird, wenn der Hintergrundmodus SkyBoxCubeMap ist.

Diese Eigenschaft wurde in Qt 6.4 eingeführt.


skyboxBlurAmount : real [since 6.4]

Diese Eigenschaft bestimmt, wie stark die Skybox verschwommen sein soll, wenn SceneEnvironment.SkyBox für die Eigenschaft backgroundMode verwendet wird. Der Standardwert ist 0.0, was bedeutet, dass es keine Unschärfe gibt.

Akzeptable Werte liegen zwischen 0.0 und 1.0, alle anderen Werte werden auf diesen Bereich geklemmt.

Diese Eigenschaft wurde in Qt 6.4 eingeführt.


specularAAEnabled : bool [since 6.4]

Wenn diese Eigenschaft aktiviert ist, wird spiegelndes Aliasing abgeschwächt. Specular Aliasing ist oft in Form von hellen Punkten sichtbar, die möglicherweise flackern, wenn die Kamera bewegt wird.

Der Standardwert ist false.

Specular AA deaktiviertSpecular AA aktiviert

Diese Eigenschaft wurde in Qt 6.4 eingeführt.


temporalAAEnabled : bool [default: false]

Wenn diese Eigenschaft aktiviert ist, wird temporales Antialiasing verwendet.

Die Kamera wird zwischen den Frames leicht verwackelt, und das Ergebnis jedes neuen Frames wird mit dem vorherigen Frame gemischt.

Hinweis: Temporales Antialiasing hat keinen Effekt, wenn antialiasingMode MSAA ist.

Hinweis: In Kombination mit ProgressiveAA antialiasingMode wird temporalAA verwendet, wenn die Szene animiert wird, während ProgressiveAA verwendet wird, sobald die Animationen aufhören.

Vorteile: Durch die wackelnde Kamera werden echte Details gefunden, die sonst verloren gehen würden; geringe Auswirkungen auf die Leistung.

Nachteile: Sich schnell bewegende Objekte führen zu Geisterbildern in einem Bild.

Hinweis: Temporales Antialiasing wird derzeit nicht mit Multiview-Rendering unterstützt und sollte nicht in VR/AR-Anwendungen verwendet werden.


temporalAAStrength : real [default: 0.3]

Diese Eigenschaft ändert den Umfang der zeitlichen Bewegung (Antialiasing). Sie wirkt sich nur aus, wenn die Eigenschaft temporalAAEnabled wahr ist.

Siehe auch temporalAAEnabled.


tonemapMode : enumeration [since 6.0]

Diese Eigenschaft definiert, wie Farben vor dem Rendering tonemapped werden. Das gesamte Rendering in Qt Quick 3D wird im linearen Farbraum durchgeführt und kann in vielen Fällen dazu führen, dass Farbwerte erzeugt werden, die nicht darstellbar sind. Der tonemapMode bestimmt die Technik, die verwendet wird, um Farben in einen anzeigbaren Bereich umzuwandeln.

Der Standardwert ist SceneEnvironment.TonemapModeLinear

KonstanteBeschreibung
SceneEnvironment.TonemapModeNoneDas gesamte Tonemapping wird umgangen. Dieser Modus ist nützlich, wenn Nachbearbeitungseffekte durchgeführt werden.
SceneEnvironment.TonemapModeLinearLineares Tonemapping wird angewendet. Die Farben werden gamma-korrigiert und im sRGB-Farbraum zurückgegeben.
SceneEnvironment.TonemapModeAcesAcademy Color Encoding System Tonemapping wird angewendet.
SceneEnvironment.TonemapModeHejlDawsonHejl-Dawson-Tonemapping wird angewandt.
SceneEnvironment.TonemapModeFilmicFilmisches Tonemapping wird angewandt.

Unter ExtendedSceneEnvironment finden Sie ein Beispiel für diese verschiedenen Modi.

Hinweis: Bei der Verwendung von Nachbearbeitungseffekten erwarten die meisten Effekte nicht tongemappte lineare Farbdaten. Bei von der Anwendung bereitgestellten, benutzerdefinierten Effekten, die über den Typ Effect implementiert werden, ist es wichtig zu wissen, dass Effekte ab Qt 6.5 sicher davon ausgehen können, dass sie mit linearen Farbdaten arbeiten, und dass Tonemapping automatisch auf die Ausgabe des letzten Effekts in der Kette angewendet wird. Wenn Sie das Tonemapping vollständig anpassen möchten, sollten Sie den Wert SceneEnvironment.TonemapModeNone setzen, um den eingebauten Tonemapper zu deaktivieren, und stattdessen die entsprechenden Anpassungen am Farbwert des letzten Effekts in der Kette vornehmen. Dies gilt nicht für die eingebauten Effekte von ExtendedSceneEnvironment, da diese sich automatisch um das richtige Tonemapping kümmern, unabhängig davon, welche Kombination von eingebauten Effekten in der Umgebung aktiviert ist.

Diese Eigenschaft wurde in Qt 6.0 eingeführt.


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