WavefrontMesh QML Type
Das WavefrontMesh bietet ein Netz, das auf einer Wavefront .obj-Datei basiert. Mehr...
Import Statement: | import Qt.labs.wavefrontmesh 1.8 |
Eigenschaften
- lastError : enumeration
- projectionPlaneV : vector3d
- projectionPlaneW : vector3d
- source : url
Detaillierte Beschreibung
WavefrontMesh liest die Geometrie aus einer Wavefront .obj-Datei und erzeugt daraus ein zweidimensionales geometry. Wenn die .obj-Datei eine dreidimensionale Form enthält, wird diese orthografisch auf eine Ebene projiziert. Falls definiert, ist diese durch projectionPlaneV und projectionPlaneW gegeben. Andernfalls wird die erste Fläche, die in den Daten vorkommt, zur Bestimmung der Projektionsebene verwendet.
Wenn die Datei Texturkoordinaten enthält, werden diese ebenfalls verwendet. Andernfalls werden die Scheitelpunkte des Objekts normalisiert und verwendet.
Das Netz kann in einer ShaderEffect verwendet werden, um die schattierte Geometrie zu definieren. Die Geometrie wird vor der Verwendung normalisiert, so dass die Position und der Maßstab der Eingabeobjekte keinen Einfluss auf das Ergebnis haben.
Hinweis: Einige Wavefront-Exportprogramme ändern das Koordinatensystem der Ausgangsszene vor dem Exportieren. Dies kann zu unerwarteten Ergebnissen führen, wenn Qt die Projektion anwendet. Wenn die visuellen Ergebnisse nicht Ihren Erwartungen entsprechen, versuchen Sie, die Exportparameter und die Dokumentation des Editor-Tools zu überprüfen, um festzustellen, ob dies der Fall ist.
Das folgende Beispiel nimmt eine .obj-Datei, die einen Standard-Torus enthält, und visualisiert die automatisch generierten Texturkoordinaten.
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); }" } |
Hinweis: Da die Eingabe ein 3D-Torus ist, müssen wir die Projektionsebene definieren. Bei der Verwendung einer 2D-Form als Eingabe wäre dies nicht erforderlich. In diesem Fall wird wegen der Ausrichtung der Eingabe die XY-Ebene verwendet.
Eigenschaft Dokumentation
lastError : enumeration |
Diese Eigenschaft enthält den letzten Fehler, der gegebenenfalls beim Parsen der Quelle oder beim Erstellen des Netzes aufgetreten ist.
- WavefrontMesh.NoError Es ist kein Fehler aufgetreten.
- WavefrontMesh.InvalidSourceError Die Quelle wurde nicht als gültige .obj-Datei erkannt.
- WavefrontMesh.UnsupportedFaceShapeError Die Flächen in der Quelle sind von einem nicht unterstützten Typ. WavefrontMesh unterstützt nur Dreiecke und konvexe Quader.
- WavefrontMesh.UnsupportedIndexSizeError Die Quellform ist zu groß. Es werden nur 16-Bit-Indizes unterstützt.
- WavefrontMesh.FileNotFoundError Die Quelldatei wurde nicht gefunden.
- WavefrontMesh.MissingPositionAttributeError Das Attribut 'qt_Vertex' fehlt in den Shadern.
- WavefrontMesh.MissingTextureCoordinateAttributeError Das Texturkoordinatenattribut in den Shadern ist falsch benannt. Verwenden Sie 'qt_MultiTexCoord0'.
- WavefrontMesh.MissingPositionAndTextureCoordinateAttributesError Sowohl die Attribute 'qt_Vertex' als auch 'qt_MultiTexCoord0' fehlen in den Shadern.
- WavefrontMesh.TooManyAttributesError Die Shader erwarten zu viele Attribute (Maximum sind zwei: Position, 'qt_Vertex', und Texturkoordinate, 'qt_MultiTexCoord0').
- WavefrontMesh.InvalidPlaneDefinitionError Die V- und W-Vektoren in der Ebene können weder null noch parallel zueinander sein.
projectionPlaneV : vector3d |
Da das Wavefront .obj-Format ein Objekt im 3D-Raum beschreibt, müssen die Koordinaten in 2D projiziert werden, bevor sie in Qt Quick angezeigt werden können.
Dies geschieht in WavefrontMesh durch eine orthographische Projektion auf eine geeignete Ebene.
Die ProjektionEbeneV ist einer von zwei Vektoren in der Ebene im 3D-Raum. Wenn entweder dieser oder projectionPlaneW auf (0, 0, 0) gesetzt ist (Standardeinstellung), wird die Ebene auf der Grundlage der ersten im Datensatz gefundenen Fläche erkannt.
Hinweis: projectionPlaneV und projectionPlaneW können keine parallelen Vektoren sein.
projectionPlaneW : vector3d |
Da das Wavefront .obj-Format ein Objekt im 3D-Raum beschreibt, müssen die Koordinaten in 2D projiziert werden, bevor sie in Qt Quick angezeigt werden können.
Dies geschieht in WavefrontMesh durch eine orthographische Projektion auf eine geeignete Ebene.
Die ProjektionEbeneW ist einer von zwei Vektoren in der Ebene im 3D-Raum. Wenn entweder dieser oder projectionPlaneV auf (0, 0, 0) gesetzt ist (Standardeinstellung), wird die Ebene auf der Grundlage der ersten im Datensatz gefundenen Fläche erkannt.
Hinweis: projectionPlaneV und projectionPlaneW können keine parallelen Vektoren sein.
source : url |
Diese Eigenschaft enthält die URL der Quelle. Diese muss entweder eine lokale Datei oder in qrc sein. Die Quelle wird als Wavefront .obj-Datei gelesen und die Geometrie wird aktualisiert.
© 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.