Qt Quick 3D - プリンシプルマテリアルの使用例

Principled Material の使用例を示します。

この作例は、PrincipledMaterial の使用方法に関するインタラクティブなドキュメントの役割を果たします。PrincipledMaterial の各プロパティには、その使用方法に関する説明と、各プロパティの調整を試す方法が付属しています。

使い方

このサンプルは、左側のインタラクティブなドキュメントとコントロール、右側の3Dビューアの2つのビューに分かれています。3Dビューアはインタラクティブで、カメラをターゲットモデルの周りを周回させることができます。特定のモデルへのフォーカスをリセットするには、フォーカスするモデルをタッチまたはクリックするだけです。2つのビューの間の分割は、ビューの間でバーをドラッグすることでサイズを変更できます。

サンプルは、PrincipledMaterial の様々な機能を管理しやすい塊にまとめた複数のセクションに分かれています。各セクションには、説明エリアの上部にあるタブをクリックすることでアクセスできます。

SpecularGlossyMaterial

PrincipledMaterial が提供する Metalness/Roughness PBR ワークフローのデモに加え、SpecularGlossyMaterial を使用する Specular/Glossy ワークフローの使用に切り替えることが可能です。これは、Basics セクションのスイッチで実行できます。

リソースローダー

この例はより複雑なため、ResourceLoader コンポーネントの使い方を示す機会にもなります。Qt Quick この例では、カーテンモデルを隠すことができ、そうすることで2つのメッシュと2つのテクスチャがGPUメモリから解放されます。しかし、次にカーテンを見えるようにするときは、これらのリソースを GPU に再アップロードする必要があります。ハードウェアによっては、このアップロードによってフレームレートが一瞬低下することがあるため、これを軽減するためにBackgroundCurtainコンポーネントの内部でResourceLoader コンポーネントが使用されています。

ResourceLoader {
    meshSources: [
        frame.source,
        curtain.source
    ]
    textures: [
        tilePatternTexture,
        curtainNormalTexture
    ]
}

Model {
    id: frame
    z: -1.95
    source: "meshes/frame.mesh"

    PrincipledMaterial {
        id: frame_material
        baseColor: "#ffcccccc"
        metalness: 1
        roughness: 0.259091
        alphaMode: PrincipledMaterial.Opaque
    }
    materials: [
        frame_material
    ]
}
Model {
    id: curtain
    y: 3.02413
    z: 2.04922
    source: "meshes/curtain.mesh"

    PrincipledMaterial {
        id: curtain_material
        baseColorMap: Texture {
            id: tilePatternTexture
            source: "maps/tilepattern.png"
            generateMipmaps: true
            mipFilter: Texture.Linear
        }
        opacityChannel: Material.A
        roughness: 0.5
        normalMap: Texture {
            id: curtainNormalTexture
            source: "maps/curtain_normal.jpg"
            generateMipmaps: true
            mipFilter: Texture.Linear
        }
        cullMode: Material.NoCulling
        alphaMode: PrincipledMaterial.Opaque
    }
    materials: [
        curtain_material
    ]
}

ここでメッシュファイルとテクスチャの両方がResourceLoader に登録されます。ResourceLoader は登録されたリソースが常に GPU メモリで使用できるようにするため、BackgroundCurtain の可視性に関係なく、そのリソースは保持されます。

ResouceLoadedは、"Special "タブの下のメッシュとメッシュで示されているように、リソースをプリロードするために使用することもできます。

ResourceLoader {
    meshSources: [
        "meshes/logo_lines.mesh",
        "meshes/logo_points.mesh"
    ]
}

ここでは、メッシュファイルのQUrl'が直接リストされています。リソースは、ResourceLoader で使用するために、モデルに関連付けられている必要はありません。

プロジェクト例 @ code.qt.io

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