Auf dieser Seite

Verwendung bildbasierter Beleuchtung

Einführung

Qt Quick 3D unterstützt IBL (Image-Based Lighting) zur Beleuchtung von Szenen oder einzelnen Materialien.

IBL ist eine Beleuchtungstechnik, mit der Szenen mithilfe von Bildern beleuchtet werden können. Dies ist besonders nützlich, wenn Sie realistische Beleuchtung und Reflexionen in Innen- und Außenszenen erzeugen möchten.

Sie können beliebige Bilddateien für IBL verwenden, es wird jedoch empfohlen, 360°-HDR-Bilder (High Dynamic Range) zu nutzen. HDR-Bilder verfügen über einen deutlich höheren Dynamikbereich als beispielsweise JPEG- oder PNG-Bilder. Ein höherer Dynamikbereich sorgt für realistischere Beleuchtung durch eine große Bandbreite an Helligkeitsstufen – von sehr hell bis sehr dunkel.

Das folgende Beispiel veranschaulicht den Beleuchtungseffekt auf ein Objekt bei Verwendung eines HDR-Bildes im Vergleich zu einer einzelnen gerichteten Lichtquelle:

LichtGlatte dielektrische MaterialienRaues dielektrisches MaterialGlattes metallisches MaterialRaues metallisches Material
Unidirektionales Licht

Glatte Kugel mit einem Lichtstrahl aus einer Richtung

Raue Kugel mit einseitiger Lichtquelle

Glatte Kugel aus Metall mit unidirektionalem Licht

Metallische, raue Kugel mit unidirektionalem Licht

Bildbasiertes Licht

Glatte Kugel mit bildbasierter Umgebungsbeleuchtung

Grobe Kugel mit bildbasierter Umgebungsbeleuchtung

Glatte metallische Kugel mit bildbasierter Umgebungsbeleuchtung

Metallische, raue Kugel mit bildbasierter Umgebungsbeleuchtung

Szenenbeleuchtung

Um eine „ scene “ mithilfe eines Bildes zu beleuchten, fügen Sie das Bild als „ Texture “ zur Eigenschaft „ lightProbe “ hinzu.

lightProbe: Texture {
    source: "maps/OpenfootageNET_garage-1024.hdr"
}

Sobald Sie ein Bild ausgewählt haben, ist IBL für Ihre Szene eingerichtet. Standardmäßig werden alle Modelle in der Szene von der Lichtprobe beleuchtet.

Hinweis: Sie können IBL auch mit jeder anderen Lichtquelle kombinieren, um den Beleuchtungseffekt auf einem Objekt zu ergänzen.

Nachdem Sie IBL nun für Ihre Szene eingerichtet haben, werfen wir einen Blick auf die verschiedenen Eigenschaften der Probe. In vielen Fällen liefern die Standardwerte ein zufriedenstellendes Ergebnis, aber Sie können die folgenden Eigenschaftswerte je nach Bild und gewünschtem Ergebnis anpassen:

  • Exposure Die Lichtmenge, die von der Lichtprobe abgegeben wird.
  • Horizon Cut-Off Durch Erhöhen des Werts wird die untere Hälfte der Umgebung dunkler (schwarz), wodurch die Beleuchtung überwiegend von der Oberseite des Bildes kommt (und bestimmte Reflexionen aus der unteren Hälfte entfernt werden).
  • Orientation Diese Eigenschaft definiert die Ausrichtung der Licht-Sonde. Die Ausrichtung wird anhand von Euler-Winkeln in Grad um die x-, y- und z-Achse angegeben.
EigenschaftMetallisches MaterialDielektrisches Material
Standardeinstellungen

Glatte metallische Kugel mit bildbasierter Umgebungsbeleuchtung

Glatte Kugel mit bildbasierter Umgebungsbeleuchtung

Belichtung

Glatte Metallkugel zur Demonstration der Belichtungsanpassung bei der Lichtsonde

Glatte Kugel zur Veranschaulichung der Belichtungsanpassung der Lichtsonde

Horizont-Abschneidepunkt

Glatte Metallkugel, die die horizontale Ausrichtung der Lichtsonde veranschaulicht

Glatte Kugel, die die Anpassung des Licht-Sonden-Horizonts veranschaulicht

Ausrichtung

Glatte Metallkugel, die die Ausrichtung der Lichtsonde anzeigt

Glatte Kugel, die die Ausrichtung der Lichtsonde zeigt

Materialbeleuchtung

Um die bildbasierte Beleuchtung nur auf ein Material statt auf die gesamte Szene anzuwenden oder eine separate Lichtprobe für ein Modell zu verwenden, das bereits durch bildbasierte Beleuchtung beleuchtet wird, legen Sie das Bild als „ light probe “ für das Material fest.

Sobald Sie die oben genannten Schritte ausgeführt haben, verfügen Sie über eine separate Lichtprobe für das Material. Diese Lichtprobe hat Vorrang vor der Szenenlichtprobe, sofern eine solche festgelegt ist.

Vorabgenerierung der IBL-Cubemap

Bei Verwendung von IBL muss von der Anwendung eine Cubemap für das IBL-Bild generiert werden. Standardmäßig geschieht dies beim Start der Anwendung und kann insbesondere auf eingebetteten und mobilen Geräten recht langsam sein. Es ist daher möglich, diese Cubemap mit Balsam vorab zu generieren. Führen Sie Balsam einfach mit der .hdr-Datei als Eingabe aus, und es wird eine Cubemap-Datei mit demselben Namen wie die Eingabedatei, jedoch mit der Dateiendung „.ktx“, ausgegeben. Diese Datei kann dann in der zugeordneten „ Texture “-Eigenschaft der „lightProbe“-Eigenschaft referenziert werden, und Qt lädt die vorab generierte Cubemap dann ohne aufwendige Verarbeitung zur Laufzeit.

Manuelles Baking

Nehmen wir als Beispiel an, die Anwendung verwendet ein .hdr-Bild für ihre Light Probes oder die Skybox:

View3D {
    environment: SceneEnvironment {
        backgroundMode: SceneEnvironment.SkyBox
        lightProbe: Texture {
            source: "environment.hdr"
        }
        probeOrientation: Qt.vector3d(0, -90, 0)
    }
    // ...
}

Dies funktioniert einwandfrei, vorausgesetzt, „environment.hdr“ ist zur Laufzeit verfügbar. Das Laden des .hdr-Bildes ist jedoch mit aufwendiger Vorverarbeitung verbunden. Dies lässt sich vermeiden, indem man Folgendes ausführt:

balsam environment.hdr

Das Ergebnis ist eine neue Datei „ environment.ktx “. Wird diese anstelle der .hdr-Datei ausgeliefert und die Texturquelle entsprechend geändert, führt dies zu deutlich schnelleren Ladezeiten.

lightProbe: Texture {
    source: "environment.ktx"
}

Baking während der Build-Phase über CMake

Das manuelle Ausführen von „balsam“ auf Assets ist nicht immer ideal. Daher wird empfohlen, dass Anwendungen auf CMake zurückgreifen, um dieselbe Aufgabe automatisch während der Anwendungserstellung durchzuführen.

Dies geschieht mithilfe der CMake-Funktion ` qt_add_lightprobe_images() `, die von der Quick3D-Komponente des Qt6-Pakets bereitgestellt wird:

...
find_package(Qt6 COMPONENTS Quick3D)
...
qt_add_lightprobe_images(application_target "ibl_assets"
    PREFIX
        "/ibl"
    FILES
        "environment.hdr"
)

Ersetzen Sie „ application_target “ durch das entsprechende Ziel. Hier ist es nicht mehr erforderlich, „balsam“ manuell auf „environment.hdr“ auszuführen, und die .hdr-Datei muss nicht mit der Anwendung ausgeliefert werden. Stattdessen wird „balsam“ während des Builds automatisch aufgerufen, und eine „environment.ktx“-Datei wird den Anwendungsressourcen unter „ :/ibl/environment.ktx “ hinzugefügt. Die „ Texture “-Datei der LightProbe muss dann auf diese Datei verweisen.

lightProbe: Texture {
    source: "qrc:/ibl/environment.ktx"
}

Hinweis: Wenn PREFIX sogesetzt wird , dass der endgültige Name im Ressourcensystem einen Pfad aufweist, der mit dem Speicherort der .qml-Datei übereinstimmt, kann ein relativer Quellpfad verwendet werden, anstatt einen absoluten Pfad im qrc-Schema angeben zu müssen.

Neben PREFIX steht auch das Schlüsselwort BASE zur Verfügung. Das Verhalten entspricht dem von qt_add_resources(). Beispielsweise führt der folgende Code zur Generierung von :/ibl/maps/environment.ktx:

qt_add_lightprobe_images(application_target "ibl_assets"
    PREFIX
        "/ibl"
    BASE
        "../data/shared"
    FILES
        "../data/shared/maps/environment.hdr"
)

Wie bei `qt_add_shaders()` steht das Schlüsselwort `OUTPUTS` zur Verfügung, um einen vollständig benutzerdefinierten Namen für die Datei im Ressourcensystem festzulegen. Beispielsweise erzeugt auch der folgende Code ` :/ibl/maps/environment.ktx`:

qt_add_lightprobe_images(application_target "ibl_assets"
    PREFIX
        "/ibl"
    FILES
        "../data/shared/maps/environment.hdr"
    OUTPUTS
        "maps/environment.ktx"
)

Hinweis: Für jeden Eintrag in der Liste „FILES“ muss ein entsprechender Eintrag in „OUTPUTS“ vorhanden sein.

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