WavefrontMesh QML Type

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

Import Statement: import Qt.labs.wavefrontmesh 1.8

プロパティ

詳細説明

WavefrontMesh は、Wavefront .obj ファイルからジオメトリを読み取り、2 次元のgeometry を生成します。.objファイルに3次元形状が含まれている場合、それは平面に正射投影されます。定義されている場合、これはprojectionPlaneVprojectionPlaneW で与えられる。そうでない場合は、投影平面を決定するために、データ内で最初に出会った面が使用されます。

ファイルにテクスチャ座標が含まれていれば、それも使用されます。そうでない場合は、オブジェクトの頂点が正規化されて使用されます。

メッシュは、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);
            }"

}

Note: 入力が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 ファイルとして読み込まれ、ジオメトリが更新されます。


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