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


本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。