本页内容

基于物理的渲染

简介

基于物理的渲染(PBR)是一种旨在精确模拟场景中材质和光源物理特性的渲染技术。它基于物理原理,并利用算法精确建模光线与不同材质之间的相互作用。

基于物理的渲染考虑了光线被各种表面(如金属、玻璃和塑料)吸收、反射和散射的方式。这使得材质的渲染更加逼真准确,同时也产生了更精确的光照效果,例如反射、折射和阴影。

除了视觉效果更佳外,由于材质基于物理参数,使用和调整起来更加直观,这也简化了艺术家的工作流程。另一个好处是,使用 PBR 材质能使导入的资产外观与其原始设计更加一致。

有关 PBR 理论的更多细节,请参阅:https://learnopengl.com/PBR/Theory和https://academy.substance3d.com/courses/the-pbr-guide-part-1,其中提供了深入的解释。

材质与工作流程

为了充分利用基于物理的渲染,Qt Quick 3D 提供了三种内置材质:PrincipledMaterial 、SpecularGlossyMaterial 和CustomMaterial 。每种材质都提供了不同的工作流程来定义材质属性。选择使用哪种工作流程和材质,将取决于您想要创建的材质类型,或者您用于创建材质的工具所定义的工作流程。

金属粗糙度工作流

金属粗糙度工作流程是一种实现基于物理的渲染(PBR)的方法,它使用两个主要参数来表示材质的外观:金属反射率和表面粗糙度。 金属反射率是一个介于 0(非金属)到 1(完全金属)之间的数值,它决定了入射光中有多少被材质反射,有多少被吸收。 表面粗糙度是一个介于 0(光滑)到 1(粗糙)之间的值,用于决定材质表面看起来是粗糙还是光滑。 在“金属/粗糙度”工作流中,材质的视觉外观由其底色、金属反射率和表面粗糙度值决定,这些值可以存储为纹理或常量。

在“金属/粗糙度”工作流中,材质的基色既包含非金属(介电体)的反射颜色,也包含金属的反射率值。

PrincipledMaterial

PrincipledMaterial 是Qt Quick 3D 中启用“金属粗糙度”工作流的主要材质。下文展示了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
                }
            ]
        }
    }
}

该示例展示了两个球体,一个采用非金属材质,另一个采用金属材质,并展示了基础颜色随金属度数值变化而产生的不同效果。

两个展示PBR材质属性的红色球体

在前一个示例中,“金属粗糙度”工作流的所有相关属性均通过常量值定义,但也可以使用纹理进行定义。以下示例展示了如何使用纹理来定义材质的底色、金属度和粗糙度:

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 ”,它允许您通过调整材质使用的着色器代码,来增强“金属粗糙度”工作流中使用的数值。

请参阅《可编程材质、特效、几何体和纹理数据》,了解如何使用自定义着色器代码来增强材质以及内置的 PBR 照明系统。

镜面反射与光泽度工作流

镜面反射/光泽度工作流是一种实现基于物理的渲染(PBR)的方法,它使用两个主要参数来表示材质的视觉效果:镜面反射率和光泽度。 镜面反射率是一个颜色值,用于决定材质表面上镜面高光的颜色和强度。光泽度是一个介于 0(粗糙)到 1(光滑)之间的值,用于决定材质表面看起来是粗糙还是光滑。 在镜面反射/光泽度工作流中,材质的视觉外观由其反照率、镜面反射率和光泽度值决定,这些值可以存储为纹理或常量值。 镜面反射率高而光泽度低的材质会呈现更强的金属质感,并具有锐利的镜面高光;而镜面反射率低而光泽度高的材质则会呈现更强的漫反射效果,并具有柔和的镜面高光。

SpecularGlossyMaterial

SpecularGlossyMaterial 是Qt Quick 3D 中支持“镜面反射/光泽度”功能的材质。

更多示例

更多示例,请参见《Qt Quick 3D ——Principled材质示例》和《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.