Sur cette page

Qt Quick 3D - Exemple de matériel de base

Démontre l'utilisation de Principled Material.

Aperçu des matériaux avec panneau de contrôle et curseurs de propriétés

Cet exemple sert de documentation interactive pour l'utilisation de PrincipledMaterial. Chaque propriété de PrincipledMaterial est accompagnée d'une explication de son utilisation ainsi que d'un moyen d'expérimenter l'ajustement de chaque propriété.

Utilisation

Cet exemple est divisé en deux vues, la documentation interactive et les contrôles sur la gauche, et la visionneuse 3D sur la droite. La visionneuse 3D est interactive et permet à la caméra de tourner autour du modèle cible. Pour rétablir la mise au point sur un modèle particulier, il suffit de toucher ou de cliquer sur le modèle à mettre au point. La séparation entre les deux vues est redimensionnable en faisant glisser la barre entre les vues.

L'exemple est divisé en plusieurs sections qui regroupent les différentes fonctionnalités de PrincipledMaterial en morceaux faciles à gérer. Chaque section est accessible en cliquant sur les onglets situés en haut de la zone d'explication.

Matériau spéculaire et brillant

Outre la démonstration du flux de travail PBR Metalness/Roughness fourni par PrincipledMaterial, il est possible de passer à l'utilisation du flux de travail Specular/Glossy qui utilise SpecularGlossyMaterial. Cela peut être fait par un commutateur dans la section Basics.

Chargeur de ressources

La nature plus complexe de cet exemple permet également de démontrer l'utilisation du composant ResourceLoader. Lorsqu'un modèle n'est plus visible dans la scène, toutes les ressources associées au modèle sont libérées par Qt Quick 3D (en supposant qu'aucune des ressources n'est utilisée par d'autres modèles dans la scène). Dans cet exemple, il est possible de cacher le modèle du rideau et, ce faisant, 2 maillages et 2 textures sont libérés de la mémoire du GPU. La prochaine fois que le rideau sera visible, ces ressources devront être rechargées sur le GPU. Sur certains matériels, ce téléchargement peut entraîner une baisse momentanée du taux de rafraîchissement. Pour atténuer ce problème, un composant ResourceLoader est utilisé à l'intérieur du composant BackgroundCurtain.

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

Ici, les fichiers de maillage et les textures sont enregistrés sur ResourceLoader. ResourceLoader garantit que toutes les ressources enregistrées seront toujours prêtes à être utilisées dans la mémoire du GPU, de sorte que, quelle que soit la visibilité du BackgroundCurtain, ses ressources seront préservées.

ResouceLoaded peut également être utilisé pour précharger des ressources, comme le montrent les maillages de points et de lignes sous l'onglet "Special".

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

Ici, les QUrl des fichiers de maillage sont listés directement. Les ressources ne doivent pas nécessairement être associées à un modèle pour être utilisées par un ResourceLoader.

Exemple de projet @ code.qt.io

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