SceneEnvironment QML Type
Ermöglicht die Konfiguration des Rendering einer Szene. Mehr...
Import Statement: | import QtQuick3D |
Inherits: | |
Inherited By: |
Eigenschaften
- antialiasingMode : enumeration
- antialiasingQuality : enumeration
- aoBias : real
- aoDistance : real
- aoDither : bool
- aoEnabled : bool
(since 6.5)
- aoSampleRate : int
- aoSoftness : real
- aoStrength : real
- backgroundMode : enumeration
- clearColor : color
- debugSettings : QtQuick3D::DebugSettings
(since 6.5)
- depthPrePassEnabled : bool
- depthTestEnabled : bool
- effects : List<QtQuick3D::Effect>
- fog : QtQuick3D::Fog
(since 6.5)
- lightProbe : QtQuick3D::Texture
- lightmapper : Lightmapper
- probeExposure : real
- probeHorizon : real
- probeOrientation : vector3d
- scissorRect : rect
(since 6.5)
- skyBoxCubeMap : QtQuick3D::CubeMapTexture
(since 6.4)
- skyboxBlurAmount : real
(since 6.4)
- specularAAEnabled : bool
(since 6.4)
- temporalAAEnabled : bool
- temporalAAStrength : real
- tonemapMode : enumeration
(since 6.0)
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
- Anti-Aliasing-Einstellungen. Siehe Anti-Aliasing Best Practices für einen Überblick über dieses Thema. Die relevanten Eigenschaften sind antialiasingMode, antialiasingQuality, specularAAEnabled, temporalAAEnabled, temporalAAStrength. Wenn ExtendedSceneEnvironment verwendet wird, ist außerdem eine weitere Methode über fxaaEnabled verfügbar.
- Umgebungsokklusion im Bildschirmbereich. Die relevanten Eigenschaften sind aoEnabled, aoStrength, aoBias, aoDistance, aoDither, aoSampleRate, aoSoftness.
- Klare Farbe, Skybox, bildbasierte Beleuchtung. Weitere Informationen zu IBL finden Sie unter Verwenden von bildbasierter Beleuchtung. Die relevanten Eigenschaften sind backgroundMode, clearColor, lightProbe, probeExposure, probeHorizon, probeOrientation, skyboxBlurAmount, skyBoxCubeMap.
- Tonemapping. tonemapMode konfiguriert die Tonemapping-Methode, die verwendet wird, um die Farbwerte mit hohem Dynamikbereich am Ende der Grafikpipeline in den Bereich 0-1 zu konvertieren. ExtendedSceneEnvironment bietet einige zusätzliche Eigenschaften, wie whitePoint und sharpnessAmount, die verwendet werden können, um die Tonemapping-Berechnungen einzustellen.
- Einstellungen für den Tiefenpuffer. Die relevanten Eigenschaften sind depthPrePassEnabled, depthTestEnabled.
- Nachbearbeitungseffekte. Zusätzlich zu den integrierten Nachbearbeitungseffekten, die von ExtendedSceneEnvironment bereitgestellt werden, können Anwendungen ihre eigenen benutzerdefinierten Effekte über den Typ Effect bereitstellen. Die Eigenschaft effects ist eine Liste von Effect Instanzen.
- Debug-Visualisierungseinstellungen, wie z. B. der Drahtgittermodus oder das Rendern nur bestimmter Farbbeiträge für die Materialien. Dies wird durch das DebugSettings Objekt gesteuert, das von der debugSettings Eigenschaft referenziert wird. Die meisten dieser Einstellungen können auch interaktiv gesteuert werden, wenn ein DebugView Objekt zur Szene hinzugefügt wird.
- Nebeleinstellungen. Um Nebel zu aktivieren, setzen Sie ein entsprechend konfiguriertes Fog Objekt in der fog Eigenschaft.
- Einstellungen für das Backen von Lichtkarten. Wenn vorgebackene Lichtkarten für einige Modelle in der Szene verwendet werden, definiert das Lightmapper Objekt, das in der lightmapper Eigenschaft eingestellt ist, die Einstellungen, die während des Backvorgangs verwendet werden.
- Einstellungen für die Schere. Um eine andere Schere als die des Ansichtsfensters anzuwenden, setzen Sie die Eigenschaft scissorRect.
Siehe auch ExtendedSceneEnvironment.
Eigenschaft Dokumentation
antialiasingMode : enumeration |
Diese Eigenschaft steuert den Antialiasing-Modus, der beim Rendern der Szene angewendet wird.
Mögliche Werte sind:
Konstant | Beschreibung |
---|---|
SceneEnvironment.NoAA | Es wird kein Antialiasing angewandt. |
SceneEnvironment.SSAA | Supersample-Antialiasing wird angewendet. |
SceneEnvironment.MSAA | Multisample-Antialiasing wird angewandt. |
SceneEnvironment.ProgressiveAA | Es 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:
Konstant | Beschreibung |
---|---|
SceneEnvironment.Medium | SSAA: 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.High | SSAA: 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.VeryHigh | SSAA: 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 5 | aoDistance 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 |
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 50 | aWeichheit 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 100 | aoStrength 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.
Konstante | Beschreibung |
---|---|
SceneEnvironment.Transparent | Die 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.Color | Die 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.SkyBox | Die 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.SkyBoxCubeMap | Die 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 |
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 |
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 |
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 |
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 |
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 |
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 deaktiviert | Specular AA aktiviert |
---|---|
Diese Eigenschaft wurde in Qt 6.4 eingeführt.
temporalAAEnabled : bool |
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 |
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 |
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
Konstante | Beschreibung |
---|---|
SceneEnvironment.TonemapModeNone | Das gesamte Tonemapping wird umgangen. Dieser Modus ist nützlich, wenn Nachbearbeitungseffekte durchgeführt werden. |
SceneEnvironment.TonemapModeLinear | Lineares Tonemapping wird angewendet. Die Farben werden gamma-korrigiert und im sRGB-Farbraum zurückgegeben. |
SceneEnvironment.TonemapModeAces | Academy Color Encoding System Tonemapping wird angewendet. |
SceneEnvironment.TonemapModeHejlDawson | Hejl-Dawson-Tonemapping wird angewandt. |
SceneEnvironment.TonemapModeFilmic | Filmisches 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.