このページでは

WavefrontMesh QML Type

WavefrontMeshは、Wavefrontの.objファイルに基づいたメッシュを提供します。詳細...

Import Statement: import Qt.labs.wavefrontmesh 1.12

プロパティ

詳細な説明

WavefrontMeshは、Wavefrontの.objファイルからジオメトリを読み込み、そこから2次元のgeometry を生成します。.objファイルに3次元の形状が含まれている場合、それは平面上に正投影されます。 定義されている場合、投影平面は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トーラスであるため 、投影平面を定義する必要があります。2D形状を入力として使用する場合、これは必要ありません。この例では、入力の向きを考慮してXY平面を使用しています。

プロパティのドキュメント

lastError : enumeration

このプロパティには、ソースの解析またはメッシュの構築中に発生した最後のエラー(ある場合)が格納されます。

  • 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 シェーダーで指定されている属性が多すぎます(最大は 2 つ:位置「qt_Vertex」とテクスチャ座標「qt_MultiTexCoord0」)。
  • WavefrontMesh.InvalidPlaneDefinitionError 平面内の V ベクトルと W ベクトルは、null であることも、互いに平行であることもできません。

projectionPlaneV : vector3d

Wavefront .obj 形式は 3D 空間内のオブジェクトを記述しているため、Qt Quick で表示するには、座標を 2D へ投影する必要があります。

WavefrontMesh では、適切な平面への正射影によってこれが行われます。

projectionPlaneV は、3D 空間内の平面を構成する 2 つのベクトルの 1 つです。これ、またはprojectionPlaneW のいずれかが (0, 0, 0) (デフォルト)に設定されている場合、データセット内で最初に検出された面に基づいて平面が検出されます。

注:projectionPlaneV とprojectionPlaneW は平行なベクトルであってはなりません。

projectionPlaneW : vector3d

Wavefront .obj 形式は 3D 空間内のオブジェクトを記述しているため、Qt Quick で表示するには、座標を 2D へ投影する必要があります。

WavefrontMesh では、適切な平面への正投影を行うことでこれを実現します。

projectionPlaneW は、3D 空間内の平面を構成する 2 つのベクトルのうちの 1 つです。これ、またはprojectionPlaneV のいずれかが (0, 0, 0) (デフォルト) に設定されている場合、データセット内で最初に検出された面に基づいて平面が検出されます。

注: projectionPlaneV と projectionPlaneW は平行なベクトルであってはなりません。

source : url

このプロパティには、ソースのURLが格納されます。これはローカルファイルか、qrc内のいずれかでなければなりません。ソースはWavefront .objファイルとして読み込まれ、ジオメトリが更新されます。

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