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

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

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

使い方

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

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

SpecularGlossyMaterial

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

リソースローダー

この例はより複雑なため、ResourceLoader コンポーネントの使い方を示す機会にもなります。この例では、カーテンモデルを隠すことができ、そうすることで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

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