WavefrontMesh QML 类型
WavefrontMesh 提供了基于 Wavefront .obj 文件的网格。 更多...
导入声明 | import Qt.labs.wavefrontmesh 1.7 |
属性
- lastError : 枚举
- projectionPlaneV : 矢量3d
- projectionPlaneW : 矢量3d
- source : url
详细说明
WavefrontMesh 从 Wavefront .obj 文件中读取几何形状,并由此生成二维 几何形状。如果 .obj 文件包含三维形状,它将被正投影到一个平面上。如果已定义,这将由 projectionPlaneV 和 projectionPlaneW 给出。否则,将使用数据中遇到的第一个面来确定投影平面。
如果文件包含纹理坐标,也将使用这些坐标。否则,将使用对象的顶点进行归一化并使用。
网格可用于在 ShaderEffect 中定义着色几何。在使用之前将进行归一化,因此输入对象的位子和比例不会影响结果。
注意:一些 Wavefront 导出器将在导出之前改变源场景的坐标系。这可能导致 Qt 应用投影时出现意外的结果。如果视觉效果与预期不符,请尝试检查导出参数和编辑器工具的文档,以确定是否如此。
例如,以下示例取一个包含标准圆环的 .obj 文件,并可视化自动生成的纹理坐标。
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); }" } |
注意:由于输入是 3D 圆环,我们需要定义投影平面。当使用二维形状作为输入时,这就不是必要的。在这个例子中,我们使用 XY 平面,因为输入的方向。
属性说明
lastError : 枚举 |
此属性包含在解析源或构建网格过程中发生的最后一个错误(如果有)。
- WavefrontMesh.NoError 没有发生错误。
- WavefrontMesh.InvalidSourceError 源不是有效的 .obj 文件。
- WavefrontMesh.UnsupportedFaceShapeError 源中的面是不受支持的类型。《WavefrontMesh》仅支持三角形和凸四边形。
- WavefrontMesh.UnsupportedIndexSizeError 源形状太大。仅支持 16 位索引。
- WavefrontMesh.FileNotFoundError 文件未找到。
- WavefrontMesh.MissingPositionAttributeError 着色器中缺少 'qt_Vertex' 属性。
- WavefrontMesh.MissingTextureCoordinateAttributeError 着色器中纹理坐标属性命名错误。请使用 'qt_MultiTexCoord0'。
- WavefrontMesh.MissingPositionAndTextureCoordinateAttributesError 着色器中缺少 'qt_Vertex' 和 'qt_MultiTexCoord0' 属性。
- WavefrontMesh.TooManyAttributesError 着色器期望过多的属性(最大两个:位置,'qt_Vertex' 和纹理坐标,'qt_MultiTexCoord0')。
- WavefrontMesh.InvalidPlaneDefinitionError 平面中的 V 向量和 W 向量不能为空,也不能彼此平行。
projectionPlaneV : vector3d |
由于 Wavefront .obj 格式描述的是 3D 空间中的对象,在 Qt Quick 中显示之前,坐标必须投影到 2D。
这将在 WavefrontMesh 中通过将正交投影到一个合适的平面上来完成。
projectionPlaneV 是 3D 空间中平面上的两个向量之一。如果这个或者 projectionPlaneW 被设置为 (0, 0, 0)(默认值),则将根据数据集中遇到的第一张脸检测到平面。
注意:projectionPlaneV 和 projectionPlaneW 不能是平行向量。
projectionPlaneW : vector3d |
由于 Wavefront .obj 格式描述的是 3D 空间中的对象,在 Qt Quick 中显示之前,坐标必须投影到 2D。
这将在 WavefrontMesh 中通过将正交投影到一个合适的平面上来完成。
projectionPlaneW 是 3D 空间中平面上的两个向量之一。如果这个或者 projectionPlaneV 被设置为 (0, 0, 0)(默认值),则将根据数据集中遇到的第一张脸检测到平面。
注意:projectionPlaneV 和 projectionPlaneW 不能是平行向量。
source : url |
这个属性保存了源 URL。这必须是本地文件或 qrc。源将被读取为 Wavefront .obj 文件,并将更新几何形状。
© 2024 The Qt Company Ltd. 本文档贡献的版权归其各自的所有者。本提供的文档是根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款许可的。Qt 及其相应的标志是 The Qt Company Ltd. 在芬兰和/或世界其他国家的注册商标。所有其他商标都是其各自所有者的财产。