Qt 3D ジオメトリのレンダリング

Qt 3D Render は、ジオメトリデータを保存し、レンダラで読み込む方法を指定する汎用的な方法を提供します。

バッファ

Qt3DCore::QBuffer クラスは生データを保存します。これは純粋にメモリの配列として機能します。ほとんどの場合、Qt3DCore::QBuffer は、1つ以上の Qt3DRender::QAttributes によって参照されることで、間接的に使用されます。しかし、Uniform Buffer Objects (UBO)やShader Storage Buffer Objects (SSBO)を扱う際に、QBuffer がQParameterの値プロパティとして直接使用される場合があります。

Buffer {
    id: vertexBuffer
    type: Buffer.VertexBuffer
    data: buildVertexBufferData()
}

属性

Qt3DCore::QAttribute は、参照されるバッファに含まれるデータがどのように抽出され、頂点シェーダの入力に渡されるべきかを指定します。 を参照し、頂点サイズ、データタイプ、2 つの頂点間のストライド、および開始オフセットを定義することによって、アトリビュートのレイアウトを指定できます。また、アトリビュートのタイプによって、頂点バッファとして使用するのか、インデッ クスバッファとして使用するのかを定義します。これにより、バッファ内のデータ構造を柔軟に変更できます。各頂点アトリビュートに個別のバッファを使用することも、すべてのアトリビュートのデータを含むインターリーブバッファを使用することも、個別のバッファとインターリーブバッファを組み合わせて使用することも可能です。Qt3DCore::QBuffer

Attribute {
    attributeType: Attribute.VertexAttribute
    vertexBaseType: Attribute.Float
    vertexSize: 3
    byteOffset: 0
    byteStride: 9 * 4
    count: 4
    name: defaultPositionAttributeName()
    buffer: vertexBuffer
}

ジオメトリ

Qt3DCore::QGeometry は、さまざまなアトリビュートを集約してジオメトリの一部を形成します。通常、適切なジオメトリは、頂点位置のアトリビュート、頂点法線のアトリビュート、テクスチャ座標のアトリビュートを提供します。ジオメトリを法線マップされたマテリアルでも使用したい場合は、頂点の接線ベクトルの一貫したセットも提供する必要があります。

Geometry {
    Attribute {
        attributeType: Attribute.VertexAttribute
        vertexBaseType: Attribute.Float
        vertexSize: 3
        byteOffset: 0
        byteStride: 9 * 4
        count: 4
        name: defaultPositionAttributeName()
        buffer: vertexBuffer
    }

    Attribute {
        attributeType: Attribute.VertexAttribute
        vertexBaseType: Attribute.Float
        vertexSize: 3
        byteOffset: 3 * 4
        byteStride: 9 * 4
        count: 4
        name: defaultNormalAttributeName()
        buffer: vertexBuffer
}

ジオメトリビュー

Qt3DCore::QGeometryViewQt3DCore::QGeometry を取ります。描画するインスタンスの数、開始インスタンス、使用するQt3DCore::QGeometryView::PrimitiveType のタイプなど、描画コールを制御するプロパティを提供します。

メッシュの詳細を完全に定義するので、バウンディングボリュームの計算やピッキングなどの操作を、レンダリングすることなくメッシュ上で行うことができます。

GeometryView {
    instanceCount: 1
    indexOffset: 0
    firstInstance: 0
    primitiveType: GeometryRenderer.Triangles
    geometry: Geometry { ... }
}

ジオメトリレンダラ

Qt3DRender::QGeometryRenderer は QComponent で、QEntity に集約されると、参照する を描画できるようになります。 は、基礎となるグラフィックス API への描画呼び出しに変換されます。Qt3DCore::QGeometryView Qt3DRender::QGeometryRenderer

GeometryRenderer {
    view: GeometryView { ... }
}

注: Qt 6 より前のバージョンでは、Qt3DRender::QGeometryRenderer に、現在ではビューインスタンスによって提供されることが意図されている詳細が含まれていました。このプロパティは Qt 6 でも残っていますが、Qt 7 では非推奨となり、削除される予定です。

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