基于物理的渲染
简介
基于物理的渲染(PBR)是一种渲染技术,旨在精确模拟场景中材质和灯光的物理特性。它以物理学原理为基础,使用算法精确模拟光线与不同材质的交互方式。
基于物理原理的渲染会考虑光线被金属、玻璃和塑料等不同表面吸收、反射和散射的方式。这样就能更真实、更准确地渲染材料,以及更准确的照明效果,如反射、折射和阴影。
除了更好看之外,它还简化了艺术家的工作流程,因为材质是基于物理参数的,使用和调整起来更加直观。另一个好处是,使用 PBR 材质可以使导入资产的外观与设计更加一致。
有关 PBR 背后理论的更多详情,请参阅:https://learnopengl.com/PBR/Theory和 https://academy.substance3d.com/courses/the-pbr-guide-part-1,以获得深入解释。
材质和工作流程
为了利用基于物理的渲染技术,Qt Quick 3D 提供了三种内置材质:PrincipledMaterial、SpecularGlossyMaterial 和CustomMaterial 。每种材料都提供了不同的工作流程来定义材料属性。选择使用哪种工作流程和材料取决于您要创建的材料类型,或您用来创建材料的工具所定义的工作流程。
金属粗糙度工作流程
金属粗糙度工作流程是实现基于物理的渲染的一种方法,它使用两个主要参数来表示材质的外观:金属反射率和表面粗糙度。金属反射率是一个范围从 0(非金属)到 1(完全金属)的值,它决定了材料反射多少入射光,吸收多少入射光。表面粗糙度是一个从 0(光滑)到 1(粗糙)的值,决定了材料表面的粗糙或光滑程度。在 "金属/粗糙度 "工作流程中,材料的外观由其基色、金属反射率和表面粗糙度值决 定,这些值可以存储为纹理或常量值。
金属粗糙度工作流程中材料的基色包含非金属(电介质)的反射色和金属的反射率值。
主要材质
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 } ] } } }
该示例显示了两个球体,一个为非金属材料,另一个为金属材料,并显示了基色因金属度量的 不同而具有的不同含义。
在前面的示例中,金属粗糙度工作流程的所有相关属性都是通过常量值定义的,但它们也可以通过纹理来定义。下面的示例展示了如何使用纹理来定义材料的基色、金属度和粗糙度:
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" } } ] } } }
自定义材质
虽然PrincipledMaterial 是创建材质的一种非常灵活的方式,但有时您可能需要对材质属性进行更多控制。为此,Qt Quick 3D 提供了CustomMaterial ,通过调整材质使用的着色器代码,您可以增强金属粗糙度工作流程中使用的值。
有关使用自定义着色器代码增强材质和内置 PBR 照明系统的介绍,请参阅 "可编程材质、效果、几何体和纹理数据"。
镜面和光泽度工作流程
镜面反射/光泽度工作流程是实现基于物理的渲染的一种方法,它使用两个主要参数来表示材质的外观:镜面反射和光泽度。镜面反射率是一个颜色值,用于确定材质表面镜面高光的颜色和强度。光泽度是一个范围从 0(粗糙)到 1(光滑)的值,决定了材质表面的粗糙或光滑程度。在镜面反射/光泽度工作流程中,材质的外观由其反照率、镜面反射率和光泽度值决定,这些值可以存储为纹理或恒定值。镜面反射率高、光泽度低的材质看起来更有金属质感,镜面高光也更锐利,而镜面反射率低、光泽度高的材质看起来更漫反射,镜面高光也更柔和。
镜面光泽材质
SpecularGlossyMaterial 是在Qt Quick 3D 中启用镜面/光泽度的材质。
更多示例
© 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.