Qt Quick 3D - Prinzipielles Material Beispiel

Demonstriert die Verwendung von Principled Material.

Dieses Beispiel dient als interaktive Dokumentation für die Verwendung von PrincipledMaterial. Zu jeder Eigenschaft von PrincipledMaterial gibt es eine Erklärung, wie sie verwendet wird, sowie eine Möglichkeit, mit der Anpassung jeder Eigenschaft zu experimentieren.

Verwendung

Dieses Beispiel ist in zwei Ansichten aufgeteilt: die interaktive Dokumentation und die Steuerelemente auf der linken Seite und der 3D-Viewer auf der rechten Seite. Der 3D-Viewer ist interaktiv und ermöglicht es, die Kamera um das Zielmodell kreisen zu lassen. Um den Fokus auf ein bestimmtes Modell zu setzen, berühren oder klicken Sie einfach das Modell, auf das Sie den Fokus setzen möchten. Die Größe der beiden Ansichten lässt sich durch Ziehen der Leiste zwischen den Ansichten ändern.

Das Beispiel ist in mehrere Abschnitte unterteilt, in denen die verschiedenen Funktionen von PrincipledMaterial in überschaubaren Abschnitten zusammengefasst sind. Jeder Abschnitt kann durch Klicken auf die Registerkarten oben im Erklärungsbereich aufgerufen werden.

SpecularGlossyMaterial

Zusätzlich zur Demonstration des von PrincipledMaterial bereitgestellten PBR-Workflows "Metallizität/Rauheit" ist es möglich, zum Workflow "Specular/Glossy" zu wechseln, der SpecularGlossyMaterial verwendet. Dies kann durch einen Schalter im Abschnitt "Grundlagen" erfolgen.

Ressourcen-Lader

Die komplexere Natur dieses Beispiels bietet auch die Möglichkeit, die Verwendung der Komponente ResourceLoader zu demonstrieren. Wenn ein Modell nicht mehr in der Szene sichtbar ist, werden alle mit dem Modell verbundenen Ressourcen von Qt Quick 3D freigegeben (vorausgesetzt, dass keine der Ressourcen von anderen Modellen in der Szene verwendet werden). In diesem Beispiel ist es möglich, das Vorhangmodell auszublenden, wodurch 2 Meshes und 2 Texturen aus dem GPU-Speicher freigegeben werden. Wenn der Vorhang jedoch das nächste Mal sichtbar gemacht wird, müssen diese Ressourcen erneut in den Grafikprozessor geladen werden. Auf mancher Hardware kann dieses Hochladen zu einem kurzzeitigen Einbruch der Bildrate führen. Um dies abzumildern, wird eine ResourceLoader Komponente innerhalb der BackgroundCurtain Komponente verwendet.

ResourceLoader {
    meshSources: [
        frame.source,
        curtain.source
    ]
    textures: [
        tilePatternTexture,
        curtainNormalTexture
    ]
}

Model {
    id: frame
    z: -1.95
    source: "meshes/frame.mesh"

    PrincipledMaterial {
        id: frame_material
        baseColor: "#ffcccccc"
        metalness: 1
        roughness: 0.259091
        alphaMode: PrincipledMaterial.Opaque
    }
    materials: [
        frame_material
    ]
}
Model {
    id: curtain
    y: 3.02413
    z: 2.04922
    source: "meshes/curtain.mesh"

    PrincipledMaterial {
        id: curtain_material
        baseColorMap: Texture {
            id: tilePatternTexture
            source: "maps/tilepattern.png"
            generateMipmaps: true
            mipFilter: Texture.Linear
        }
        opacityChannel: Material.A
        roughness: 0.5
        normalMap: Texture {
            id: curtainNormalTexture
            source: "maps/curtain_normal.jpg"
            generateMipmaps: true
            mipFilter: Texture.Linear
        }
        cullMode: Material.NoCulling
        alphaMode: PrincipledMaterial.Opaque
    }
    materials: [
        curtain_material
    ]
}

Hier werden sowohl die Mesh-Dateien als auch die Texturen mit einer ResourceLoader registriert. ResourceLoader stellt sicher, dass alle registrierten Ressourcen immer für die Verwendung im GPU-Speicher bereit sind, so dass jetzt unabhängig von der Sichtbarkeit des BackgroundCurtain seine Ressourcen erhalten bleiben.

ResouceLoaded kann auch zum Vorladen von Ressourcen verwendet werden, wie bei den Punkt- und Liniennetzen unter der Registerkarte "Spezial" gezeigt.

ResourceLoader {
    meshSources: [
        "meshes/logo_lines.mesh",
        "meshes/logo_points.mesh"
    ]
}

Hier werden die QUrl's der Mesh-Dateien direkt aufgelistet. Ressourcen müssen nicht mit einem Modell verknüpft sein, um von einem ResourceLoader verwendet werden zu können.

Beispielprojekt @ code.qt.io

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