Sur cette page

WavefrontMesh QML Type

WavefrontMesh fournit un maillage basé sur un fichier .obj Wavefront. En savoir plus...

Import Statement: import Qt.labs.wavefrontmesh 1.12

Propriétés

Description détaillée

WavefrontMesh lit la géométrie à partir d’un fichier .obj Wavefront et génère à partir de celui-ci une « geometry » bidimensionnelle. Si le fichier .obj contient une forme tridimensionnelle, celle-ci sera projetée orthographiquement sur un plan. Si elles sont définies, celles-ci sont fournies par projectionPlaneV et projectionPlaneW. Sinon, la première face rencontrée dans les données sera utilisée pour déterminer le plan de projection.

Si le fichier contient des coordonnées de texture, celles-ci seront également utilisées. Sinon, les sommets de l’objet seront normalisés puis utilisés.

Le maillage peut être utilisé dans une fonction « ShaderEffect » pour définir la géométrie ombrée. La géométrie sera normalisée avant utilisation ; la position et l’échelle des objets d’entrée n’ont donc aucune incidence sur le résultat.

Remarque : certains exportateurs Wavefront modifient le système de coordonnées de la scène source avant de l’exporter. Cela peut entraîner des résultats inattendus lorsque Qt applique la projection. Si les résultats visuels ne correspondent pas à vos attentes, vérifiez les paramètres d’exportation et la documentation de l’éditeur pour voir si c’est le cas.

Par exemple, l'exemple suivant utilise un fichier .obj contenant un tore standard et visualise les coordonnées de texture générées automatiquement.

Forme de tore avec des coordonnées de texture en dégradé

import QtQuick 2.\1
import Qt.labs.wavefrontmesh 1.\1

ShaderEffect {
    width: 200
    height: 200
    mesh: WavefrontMesh {
        source: "torus.obj"
        projectionPlaneV: Qt.vector3d(0, 1, 0)
        projectionPlaneW: Qt.vector3d(1, 0, 0)
    }
    vertexShader: "
            uniform highp mat4 qt_Matrix;
            attribute highp vec4 qt_Vertex;
            attribute highp vec2 qt_MultiTexCoord0;
            varying highp vec2 coord;
            void main() {
                coord = qt_MultiTexCoord0;
                gl_Position = qt_Matrix * qt_Vertex;
            }"
    fragmentShader: "
            varying highp vec2 coord;
            uniform lowp float qt_Opacity;
            void main() {
                gl_FragColor = vec4(coord.x, coord.y, 0.0, 1.0);
            }"

}

Remarque : comme l’entrée est un tore 3D, nous devons définir le plan de projection. Cela ne serait pas nécessaire si l’on utilisait une forme 2D comme entrée. Nous utilisons le plan XY dans ce cas, en raison de l’orientation de l’entrée.

Documentation des propriétés

lastError : enumeration

Cette propriété contient la dernière erreur, le cas échéant, survenue lors de l'analyse de la source ou de la création du maillage.

  • WavefrontMesh.NoError Aucune erreur ne s'est produite.
  • WavefrontMesh.InvalidSourceError La source n'a pas été reconnue comme un fichier .obj valide.
  • WavefrontMesh.UnsupportedFaceShapeError Les faces de la source sont d’un type non pris en charge. WavefrontMesh ne prend en charge que les triangles et les quadrilatères convexes.
  • WavefrontMesh.UnsupportedIndexSizeError La forme de la source est trop grande. Seuls les index 16 bits sont pris en charge.
  • WavefrontMesh.FileNotFoundError Le fichier source est introuvable.
  • WavefrontMesh.MissingPositionAttributeError L'attribut « qt_Vertex » est manquant dans les shaders.
  • WavefrontMesh.MissingTextureCoordinateAttributeError L'attribut de coordonnées de texture dans les shaders porte un nom incorrect. Utilisez « qt_MultiTexCoord0 ».
  • WavefrontMesh.MissingPositionAndTextureCoordinateAttributesError Les attributs « qt_Vertex » et « qt_MultiTexCoord0 » sont tous deux absents des shaders.
  • WavefrontMesh.TooManyAttributesError Les shaders attendent trop d’attributs (le maximum est de deux : la position, « qt_Vertex », et les coordonnées de texture, « qt_MultiTexCoord0 »).
  • WavefrontMesh.InvalidPlaneDefinitionError Les vecteurs V et W du plan ne peuvent être ni nuls, ni parallèles l’un à l’autre.

projectionPlaneV : vector3d

Le format .obj de Wavefront décrivant un objet dans l'espace 3D, les coordonnées doivent être projetées en 2D avant de pouvoir être affichées dans Qt Quick.

Cette opération sera effectuée dans WavefrontMesh par une projection orthographique sur un plan approprié.

Le vecteur projectionPlaneV est l’un des deux vecteurs définissant ce plan dans l’espace 3D. Si ce vecteur ou le vecteur projectionPlaneW est défini sur (0, 0, 0) (valeur par défaut), le plan sera alors déterminé en fonction de la première face rencontrée dans l’ensemble de données.

Remarque : projectionPlaneV et projectionPlaneW ne peuvent pas être des vecteurs parallèles.

projectionPlaneW : vector3d

Le format .obj de Wavefront décrivant un objet dans l'espace 3D, les coordonnées doivent être projetées en 2D avant de pouvoir être affichées dans « Qt Quick ».

Cette opération sera effectuée dans WavefrontMesh par une projection orthographique sur un plan approprié.

Le vecteur projectionPlaneW est l’un des deux vecteurs définissant ce plan dans l’espace 3D. Si ce vecteur ou le vecteur projectionPlaneV est défini sur (0, 0, 0) (valeur par défaut), le plan sera alors déterminé en fonction de la première face rencontrée dans l’ensemble de données.

Remarque : « projectionPlaneV » et « projectionPlaneW » ne peuvent pas être des vecteurs parallèles.

source : url

Cette propriété contient l'URL de la source. Il doit s'agir soit d'un fichier local, soit d'un fichier au format qrc. La source sera lue sous la forme d'un fichier .obj Wavefront et la géométrie sera mise à jour.

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