WavefrontMesh QML Type
WavefrontMesh proporciona una malla basada en un archivo Wavefront .obj. Más...
| Import Statement: | import Qt.labs.wavefrontmesh 1.11 |
Propiedades
- lastError : enumeration
- projectionPlaneV : vector3d
- projectionPlaneW : vector3d
- source : url
Descripción detallada
WavefrontMesh lee la geometría de un archivo Wavefront .obj y genera un geometry bidimensional a partir de éste. Si el archivo .obj contiene una forma tridimensional, será proyectada ortográficamente, sobre un plano. Si está definido, viene dado por projectionPlaneV y projectionPlaneW. Si no, se utilizará la primera cara encontrada en los datos para determinar el plano de proyección.
Si el fichero contiene coordenadas de textura, también se utilizarán. En caso contrario, se normalizarán y utilizarán los vértices del objeto.
La malla puede utilizarse en ShaderEffect para definir la geometría sombreada. La geometría será normalizada antes de su uso, por lo que la posición y la escala de los objetos de entrada no tienen ningún impacto en el resultado.
Nota: Algunos exportadores Wavefront cambiarán el sistema de coordenadas de la escena de origen antes de exportarla. Esto puede causar resultados inesperados cuando Qt aplica la proyección. Si los resultados visuales no son los esperados, intente comprobar los parámetros de exportación y la documentación de la herramienta de edición para ver si este es el caso.
Por ejemplo, el siguiente ejemplo toma un archivo .obj que contiene un toroide estándar y visualiza las coordenadas de textura generadas automáticamente.
| 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);
}"
} |
Nota: Como la entrada es un toroide 3D, necesitamos definir el plano de proyección. Esto no sería necesario cuando se utiliza una forma 2D como entrada. En este caso utilizamos el plano XY, debido a la orientación de la entrada.
Documentación de propiedades
lastError : enumeration
Esta propiedad contiene el último error, si lo hubo, que se produjo al analizar el código fuente o al construir la malla.
- WavefrontMesh.NoError No se ha producido ningún error.
- WavefrontMeshInvalidSourceError La fuente no fue reconocida como un archivo .obj válido.
- WavefrontMesh.UnsupportedFaceShapeError Las caras de la fuente son de un tipo no admitido. WavefrontMesh sólo admite triángulos y cuadriláteros convexos.
- WavefrontMesh.UnsupportedIndexSizeError La forma fuente es demasiado grande. Sólo se admiten índices de 16 bits.
- WavefrontMeshFileNotFoundError No se ha encontrado el archivo fuente.
- WavefrontMeshMissingPositionAttributeError Falta el atributo 'qt_Vertex' en los shaders.
- WavefrontMeshMissingTextureCoordinateAttributeError El atributo de coordenadas de textura de los sombreadores tiene un nombre incorrecto. Utilice 'qt_MultiTexCoord0'.
- WavefrontMesh.MissingPositionAndTextureCoordinateAttributesError Faltan los atributos 'qt_Vertex' y 'qt_MultiTexCoord0' en los sombreadores.
- WavefrontMeshTooManyAttributesError Los sombreadores esperan demasiados atributos (el máximo es dos: Posición, 'qt_Vertex', y coordenada de textura, 'qt_MultiTexCoord0').
- WavefrontMesh.InvalidPlaneDefinitionError Los vectores V y W del plano no pueden ser nulos ni paralelos entre sí.
projectionPlaneV : vector3d
Dado que el formato Wavefront .obj describe un objeto en un espacio tridimensional, las coordenadas deben proyectarse en 2D antes de poder visualizarse en Qt Quick.
Esto se hará en WavefrontMesh mediante una proyección ortográfica sobre un plano apropiado.
El projectionPlaneV es uno de los dos vectores del plano en el espacio 3D. Si éste o projectionPlaneW se establecen en (0, 0, 0) (por defecto), el plano se detectará basándose en la primera cara encontrada en el conjunto de datos.
Nota: projectionPlaneV y projectionPlaneW no pueden ser vectores paralelos.
projectionPlaneW : vector3d
Dado que el formato Wavefront .obj describe un objeto en un espacio tridimensional, las coordenadas deben proyectarse en 2D antes de poder visualizarse en Qt Quick.
Esto se hará en WavefrontMesh mediante una proyección ortográfica sobre un plano apropiado.
El projectionPlaneW es uno de los dos vectores del plano en el espacio 3D. Si éste o projectionPlaneV se establecen en (0, 0, 0) (por defecto), el plano se detectará basándose en la primera cara encontrada en el conjunto de datos.
Nota: projectionPlaneV y projectionPlaneW no pueden ser vectores paralelos.
source : url
Esta propiedad contiene la URL de la fuente. Debe ser un archivo local o en qrc. La fuente se leerá como un archivo Wavefront .obj y se actualizará la geometría.
© 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.
