Sur cette page

Qt Quick 3D - Exemple de sous-maille

Démontre comment assigner des matériaux à des sous-mailles.

Deux cubes avec des matériaux à sous-mailles

Cet exemple montre comment les matériaux et les sous-mailles sont mis en correspondance.

Sous-mailles et matériaux

Lorsqu'un site Model est constitué de deux ou plusieurs mailles, ces dernières sont appelées sous-mailles. Chaque sous-maille peut avoir son propre matériau, mais il n'est pas nécessaire de fournir plus d'un matériau par modèle. S'il y a plus de sous-mailles que de matériaux, le dernier matériau de la liste materials est utilisé pour toutes les sous-mailles. Lorsqu'un modèle est fourni avec un matériau par sous-maille, ceux-ci sont mis en correspondance un à un, ce qui signifie que le premier matériau de la liste est appliqué à la première sous-maille, le deuxième matériau à la deuxième sous-maille, et ainsi de suite. L'ordre des sous-mailles dans un modèle dépend de la manière dont le modèle a été créé et exporté par l'outil de modélisation 3D utilisé pour le créer.

L'exemple suivant montre deux cubes distordues dont chaque côté est une sous-maille distincte.

Si nous regardons le cube de gauche, nous pouvons voir qu'il y a un côté coloré en rouge alors que les autres côtés sont verts, la raison en est bien sûr que le matériau n'a que deux matériaux, à savoir un rouge et un vert. Dans notre modèle, la première sous-maille se trouve être la face "supérieure" du cube distordu, et comme le matériau rouge est placé en premier dans la liste des matériaux, il reçoit une couleur rouge comme prévu. Le deuxième matériau de la liste est le matériau vert qui est mappé sur la deuxième sous-maille, qui est la face "avant" du cube distordu, et comme c'est le dernier matériau de la liste, il sera également le matériau utilisé pour toutes les faces restantes du cube distordu.

Cube déformé avec dos rouge et faces avant et latérales vertes

DistortedCube {
    x: -4
    scale: Qt.vector3d(2, 2, 2)
    materials: [ PrincipledMaterial {
        baseColor: "red"
        lighting: PrincipledMaterial.NoLighting
    },
    PrincipledMaterial {
                    baseColor: "green"
                    lighting: PrincipledMaterial.NoLighting
                } ]

En regardant le cube à droite, nous pouvons voir qu'il a reçu quelques couleurs supplémentaires, bien sûr parce que nous avons fourni un matériau pour chacun des six sous-mailles, chacun avec une couleur différente.

Cube déformé avec six faces de couleurs différentes

Model {
    source: "qrc:/meshes/distortedcube.mesh"

    PrincipledMaterial {
        id: frontTop_material
        baseColor: "red"
        cullMode: Material.NoCulling
        lighting: PrincipledMaterial.NoLighting
    }

    PrincipledMaterial {
        id: frontBottom_material
        baseColor: "green"
        cullMode: Material.NoCulling
        lighting: PrincipledMaterial.NoLighting
    }

    PrincipledMaterial {
        id: leftSide_material
        baseColor: "blue"
        cullMode: Material.NoCulling
        lighting: PrincipledMaterial.NoLighting
    }

    PrincipledMaterial {
        id: rightSide_material
        baseColor: "pink"
        cullMode: Material.NoCulling
        lighting: PrincipledMaterial.NoLighting
    }

    PrincipledMaterial {
        id: backSide_material
        baseColor: "orange"
        cullMode: Material.NoCulling
        lighting: PrincipledMaterial.NoLighting
    }

    PrincipledMaterial {
        id: bottomSide_material
        baseColor: "navy"
        cullMode: Material.NoCulling
        lighting: PrincipledMaterial.NoLighting
    }

    materials: [
        frontTop_material,
        frontBottom_material,
        leftSide_material,
        backSide_material,
        rightSide_material,
        bottomSide_material
    ]
}

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.