このページでは

物理ベースレンダリング

はじめに

物理ベースレンダリング(PBR)は、シーン内のマテリアルや光の物理的特性を正確にシミュレートすることを目的としたレンダリング技術です。これは物理学の原理に基づいており、アルゴリズムを用いて光がさまざまなマテリアルと相互作用する様子を正確にモデル化します。

物理ベースレンダリングでは、金属、ガラス、プラスチックなどのさまざまな表面による光の吸収、反射、散乱の仕組みが考慮されます。これにより、マテリアルのよりリアルで正確なレンダリングが可能になるだけでなく、反射、屈折、影などの照明効果もより正確に表現できます。

見た目が向上するだけでなく、マテリアルが物理パラメータに基づいているため、アーティストのワークフローも簡素化されます。物理パラメータは直感的に使用・調整できるためです。また、PBRマテリアルを使用することで、インポートされたアセットの外観が、設計時の意図により忠実に再現されるという利点もあります。

PBRの理論に関する詳細については、https://learnopengl.com/PBR/Theoryおよびhttps://academy.substance3d.com/courses/the-pbr-guide-part-1を参照してください。

マテリアルとワークフロー

フィジカルベースレンダリングの利点を最大限に活用するため、Qt Quick 3Dには、「PrincipledMaterial 」、「SpecularGlossyMaterial 」、「CustomMaterial 」という3つの組み込みマテリアルが用意されています。これらのマテリアルはそれぞれ、マテリアルプロパティを定義するための異なるワークフローを提供します。どのワークフローやマテリアルを使用するかは、作成したいマテリアルの種類や、マテリアル作成に使用するツールによって定義されたワークフローによって異なります。

メタリック粗さワークフロー

「メタリック粗さ」ワークフローは、物理ベースレンダリング(PBR)を実装するための手法であり、マテリアルの外観を表現するために「メタリック反射率」と「表面粗さ」という2つの主要なパラメータを使用します。 金属反射率は 0(非金属)から 1(完全金属)までの値であり、入射光のうちどれだけがマテリアルによって反射され、どれだけが吸収されるかを決定します。 表面粗さは、0(滑らか)から 1(粗い)までの範囲の値であり、マテリアルの表面がどれほど粗く、あるいは滑らかに見えるかを決定します。 「メタリック/ラフネス」ワークフローにおけるマテリアルの外観は、ベースカラー、メタリック反射率、および表面粗さの値によって決定され、これらはテクスチャまたは定数値として保存することができます。

「メタリック/ラフネス」ワークフローにおけるマテリアルのベースカラーには、非金属(誘電体)の反射色と、金属の反射率値の両方が含まれます。

PrincipledMaterial

PrincipledMaterial は、Qt Quick 3Dにおける「Metallic Roughness」ワークフローを可能にする主要なマテリアルです。PrincipledMaterial の使用例を以下に示します。

import QtQuick
import QtQuick3D
import QtQuick3D.Helpers

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("PrincipledMaterial")

    View3D {
        anchors.fill: parent

        environment.backgroundMode: SceneEnvironment.SkyBox
        environment.lightProbe: Texture {
            textureData: ProceduralSkyTextureData {}
        }

        PerspectiveCamera {
            z: 150
            y: 40
            eulerRotation.x: -15
        }

        Model {
            x: -50
            source: "#Sphere"
            materials: [
                PrincipledMaterial {
                    baseColor: "red"
                    metalness: 0.0
                    roughness: 0.1
                }
            ]
        }
        Model {
            x: 50
            source: "#Sphere"
            materials: [
                PrincipledMaterial {
                    baseColor: "red"
                    metalness: 1.0
                    roughness: 0.1
                }
            ]
        }
    }
}

この例では、非金属マテリアルを適用した球体と金属マテリアルを適用した球体の2つを示しており、メタリック度(metalness)の量に応じてベースカラーが持つ意味が異なることを示しています。

PBRのマテリアル特性を示す2つの赤い球体

前の例では、「Metallic Roughness」ワークフローの関連するすべてのプロパティが定数値で定義されていますが、テクスチャを使用して定義することも可能です。以下の例は、テクスチャを使用してマテリアルのベースカラー、メタリック度、およびラフネスを定義する方法を示しています:

import QtQuick
import QtQuick3D
import QtQuick3D.Helpers

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("PrincipledMaterial with Textures")

    View3D {
        anchors.fill: parent

        environment.backgroundMode: SceneEnvironment.SkyBox
        environment.lightProbe: Texture {
            textureData: ProceduralSkyTextureData {
            }
        }

        PerspectiveCamera {
            z: 150
            y: 40
            eulerRotation.x: -15
        }

        Model {
            source: "#Sphere"
            materials: [
                PrincipledMaterial {
                    baseColorMap: Texture {
                        source: "red.png"
                    }
                    metalnessMap: Texture {
                        source: "metalness.png"
                    }
                    roughnessMap: Texture {
                        source: "roughness.png"
                    }
                }
            ]
        }
    }
}

CustomMaterial

PrincipledMaterial はマテリアルを作成するための非常に柔軟な方法ですが、場合によってはマテリアルプロパティをより細かく制御する必要が生じることもあります。そのため、Qt Quick 3Dでは「CustomMaterial 」を提供しており、マテリアルで使用されるシェーダーコードを調整することで、「Metallic Roughness」ワークフローで使用される値を拡張することができます。

カスタムシェーダーコードを使用してマテリアルや組み込みのPBRライティングシステムを拡張する方法については、「プログラム可能なマテリアル、エフェクト、ジオメトリ、およびテクスチャデータ」を参照してください。

スペキュラーおよび光沢度ワークフロー

スペキュラー/光沢度ワークフローは、マテリアルの外観を表現するために、スペキュラー反射率と光沢度という 2 つの主要なパラメータを使用する、物理ベースレンダリング(PBR)を実装する方法です。 スペキュラー反射率は、マテリアルの表面におけるスペキュラーハイライトの色と強度を決定する色値です。光沢度は 0(粗い)から 1(滑らか)までの値で、マテリアルの表面がどれほど粗く、あるいは滑らかに見えるかを決定します。 スペキュラー/光沢度ワークフローでは、マテリアルの外観は、アルベド、スペキュラー反射率、および光沢度の値によって決定され、これらはテクスチャまたは定数値として保存することができます。 スペキュラー反射率が高く、グロスネスが低いマテリアルは、より金属的な外観となり、シャープなスペキュラーハイライトが現れます。一方、スペキュラー反射率が低く、グロスネスが高いマテリアルは、より拡散的な外観となり、ソフトなスペキュラーハイライトが現れます。

SpecularGlossyMaterial

SpecularGlossyMaterial は、Qt Quick 3Dにおいて「スペキュラー/グロスネス」機能を有効にするマテリアルです。

その他の例

その他の例については、「Qt Quick 3D - Principled Material の例」および「Qt Quick 3D - カスタムマテリアルの例」をご覧ください。

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