Sur cette page

WavefrontMesh QML Type

Le WavefrontMesh fournit un maillage basé sur un fichier .obj de Wavefront. Plus d'informations...

Import Statement: import Qt.labs.wavefrontmesh 1.11

Propriétés

Description détaillée

WavefrontMesh lit la géométrie d'un fichier .obj de Wavefront et génère un geometry bidimensionnel à partir de celui-ci. Si le fichier .obj contient une forme tridimensionnelle, celle-ci sera projetée orthographiquement sur un plan. S'il est défini, il est donné 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 et utilisés.

Le maillage peut être utilisé dans un site ShaderEffect pour définir la géométrie ombrée. La géométrie sera normalisée avant d'être utilisée, de sorte que la position et l'échelle des objets d'entrée n'ont aucun impact 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 sont pas conformes à vos attentes, essayez de vérifier les paramètres d'exportation et la documentation de l'outil d'édition pour voir si c'est le cas.

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

Forme de tore avec coordonnées de texture en gradient

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 : étant donné que l'entrée est un tore 3D, nous devons définir le plan de projection. Cela n'est pas nécessaire lorsqu'une forme 2D est utilisée en entrée. Dans ce cas, nous utilisons le plan XY en raison de l'orientation de l'entrée.

Documentation sur les 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 construction 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 source est trop grande. Seuls les index de 16 bits sont pris en charge.
  • WavefrontMesh.FileNotFoundError Le fichier source n'a pas été trouvé.
  • WavefrontMesh.MissingPositionAttributeError L'attribut 'qt_Vertex' est absent des shaders.
  • WavefrontMesh.MissingTextureCoordinateAttributeError L'attribut de coordonnées de texture dans les shaders est mal nommé. Utilisez 'qt_MultiTexCoord0'.
  • WavefrontMesh.MissingPositionAndTextureCoordinateAttributesError Les attributs 'qt_Vertex' et 'qt_MultiTexCoord0' sont absents des shaders.
  • WavefrontMeshTooManyAttributesError Les shaders attendent trop d'attributs (le maximum est de deux : Position, 'qt_Vertex', et coordonnées de texture, 'qt_MultiTexCoord0').
  • WavefrontMeshInvalidPlaneDefinitionError Les vecteurs V et W du plan ne peuvent pas être nuls, ni parallèles l'un à l'autre.

projectionPlaneV : vector3d

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

Cela se fera dans WavefrontMesh par une projection orthographique sur un plan approprié.

Le plan de projectionV est l'un des deux vecteurs du plan dans l'espace 3D. Si cette valeur ou celle de projectionPlaneW est fixée à (0, 0, 0) (valeur par défaut), le plan sera détecté sur la base 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

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

Cela se fera dans WavefrontMesh par une projection orthographique sur un plan approprié.

Le plan de projectionW est l'un des deux vecteurs du plan dans l'espace 3D. Si cette valeur ou celle de projectionPlaneV est fixée à (0, 0, 0) (valeur par défaut), le plan sera détecté sur la base 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 d'un fichier local ou d'un fichier qrc. La source sera lue comme un fichier .obj de 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.