Physikalisch basiertes Rendering

Einführung

Physically Based Rendering (PBR) ist eine Rendering-Technik, die darauf abzielt, die physikalischen Eigenschaften von Materialien und Licht in einer Szene genau zu simulieren. Es basiert auf den Prinzipien der Physik und verwendet Algorithmen, um die Art und Weise, wie Licht mit verschiedenen Materialien interagiert, genau zu modellieren.

Physically Based Rendering berücksichtigt die Art und Weise, wie Licht von verschiedenen Oberflächen wie Metall, Glas und Kunststoff absorbiert, reflektiert und gestreut wird. Dies ermöglicht eine realistischere und genauere Darstellung von Materialien sowie genauere Lichteffekte wie Reflexionen, Brechungen und Schatten.

Es sieht nicht nur besser aus, sondern vereinfacht auch den Arbeitsablauf von Künstlern, da die Materialien auf physikalischen Parametern basieren, die intuitiver zu verwenden und zu optimieren sind. Ein weiterer Vorteil ist, dass die Verwendung von PBR-Materialien dafür sorgt, dass das Aussehen importierter Assets besser mit ihrem Design übereinstimmt.

Weitere Details zur Theorie hinter PBR finden Sie unter: https://learnopengl.com/PBR/Theory und https://academy.substance3d.com/courses/the-pbr-guide-part-1 für eine ausführliche Erklärung.

Materialien und Arbeitsabläufe

Um die Vorteile von Physically Based Rendering zu nutzen, bietet Qt Quick 3D drei integrierte Materialien: PrincipledMaterial, SpecularGlossyMaterial, und CustomMaterial. Jedes dieser Materialien bietet einen anderen Arbeitsablauf für die Definition von Materialeigenschaften. Die Wahl des zu verwendenden Workflows und Materials hängt von der Art des Materials ab, das Sie erstellen möchten, oder von dem Workflow, der durch das Werkzeug definiert ist, das Sie zum Erstellen des Materials verwenden.

Arbeitsablauf Metallische Rauheit

Der Arbeitsablauf Metallische Rauheit ist eine Methode zur Implementierung des physikalisch basierten Renderings, die zwei Hauptparameter verwendet, um das Erscheinungsbild eines Materials darzustellen: metallische Reflexion und Oberflächenrauheit. Der Metallreflexionsgrad ist ein Wert, der von 0 (nicht metallisch) bis 1 (vollständig metallisch) reicht und bestimmt, wie viel des einfallenden Lichts vom Material reflektiert und wie viel absorbiert wird. Die Oberflächenrauhigkeit ist ein Wert zwischen 0 (glatt) und 1 (rau), der bestimmt, wie rau oder glatt die Oberfläche des Materials erscheint. Das Erscheinungsbild eines Materials im Arbeitsablauf Metallic/Rauheit wird durch seine Grundfarbe, den metallischen Reflexionsgrad und die Werte für die Oberflächenrauheit bestimmt, die als Texturen oder konstante Werte gespeichert werden können.

Die Grundfarbe des Materials für den Arbeitsablauf Metallische Rauheit enthält sowohl die reflektierte Farbe für Nicht-Metalle (Dielektrika) als auch den Reflexionswert für Metalle.

PrinzipiellesMaterial

PrincipledMaterial ist das primäre Material, das den Metallic Roughness-Workflow in Qt Quick 3D ermöglicht. Ein Beispiel für die Verwendung von PrincipledMaterial ist unten dargestellt:

import QtQuick
import QtQuick3D
import QtQuick3D.Helpers

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("PrincipledMaterial")

    View3D {
        anchors.fill: parent

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

        PerspectiveCamera {
            z: 150
            y: 40
            eulerRotation.x: -15
        }

        Model {
            x: -50
            source: "#Sphere"
            materials: [
                PrincipledMaterial {
                    baseColor: "red"
                    metalness: 0.0
                    roughness: 0.1
                }
            ]
        }
        Model {
            x: 50
            source: "#Sphere"
            materials: [
                PrincipledMaterial {
                    baseColor: "red"
                    metalness: 1.0
                    roughness: 0.1
                }
            ]
        }
    }
}

Dieses Beispiel zeigt zwei Kugeln, eine mit einem nicht-metallischen Material und eine mit einem metallischen Material, und verdeutlicht die unterschiedlichen Bedeutungen, die die Grundfarbe in Abhängigkeit vom Metallisierungsgrad hat.

Im vorangegangenen Beispiel wurden alle relevanten Eigenschaften des Metallic Roughness-Workflows über einen konstanten Wert definiert, sie können aber auch über Texturen definiert werden. Das folgende Beispiel zeigt, wie man Texturen verwendet, um die Grundfarbe, den Metallgehalt und die Rauheit eines Materials zu definieren:

import QtQuick
import QtQuick3D
import QtQuick3D.Helpers

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("PrincipledMaterial with Textures")

    View3D {
        anchors.fill: parent

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

        PerspectiveCamera {
            z: 150
            y: 40
            eulerRotation.x: -15
        }

        Model {
            source: "#Sphere"
            materials: [
                PrincipledMaterial {
                    baseColorMap: Texture {
                        source: "red.png"
                    }
                    metalnessMap: Texture {
                        source: "metalness.png"
                    }
                    roughnessMap: Texture {
                        source: "roughness.png"
                    }
                }
            ]
        }
    }
}

CustomMaterial

Obwohl PrincipledMaterial eine sehr flexible Methode zur Erstellung von Materialien ist, kann es vorkommen, dass Sie mehr Kontrolle über die Materialeigenschaften benötigen. Hierfür bietet Qt Quick 3D die Funktion CustomMaterial, mit der Sie die im Metallic Roughness-Workflow verwendeten Werte erweitern können, indem Sie den vom Material verwendeten Shader-Code anpassen.

Unter Programmierbare Materialien, Effekte, Geometrie und Texturdaten finden Sie eine Einführung in die Erweiterung von Materialien und des integrierten PBR-Beleuchtungssystems durch benutzerdefinierten Shader-Code.

Spiegelnder und glänzender Arbeitsablauf

Der Specular/Glossiness-Workflow ist eine Methode zur Implementierung von Physically Based Rendering, die zwei Hauptparameter verwendet, um das Erscheinungsbild eines Materials darzustellen: Spiegelreflexion und Glanz. Der Glanzreflexionsgrad ist ein Farbwert, der die Farbe und Intensität der Glanzlichter auf der Oberfläche des Materials bestimmt. Der Glanzgrad ist ein Wert, der von 0 (rau) bis 1 (glatt) reicht und bestimmt, wie rau oder glatt die Oberfläche des Materials erscheint. Im Arbeitsablauf Glanz/Glanz wird das Aussehen eines Materials durch seine Albedo-, Glanzreflexions- und Glanzwerte bestimmt, die als Texturen oder konstante Werte gespeichert werden können. Ein Material mit hohem Glanzgrad und niedrigem Glanz erscheint metallischer und hat scharfe Glanzlichter, während ein Material mit niedrigem Glanzgrad und hohem Glanzgrad diffuser erscheint und weiche Glanzlichter hat.

SpecularGlossyMaterial

SpecularGlossyMaterial ist das Material, das die Spiegelung/Glanz in Qt Quick 3D ermöglicht.

Weitere Beispiele

Weitere Beispiele finden Sie unter Qt Quick 3D - Principled Material Example und Qt Quick 3D - Custom Materials Example.

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