PBR材质介绍
PBR 材质,全称是 Physically Based Rendering(基于物理的渲染) 材质,是一种更加真实模拟光照与材质交互的渲染方式。它广泛用于现代 3D 引擎(如 Three.js、Unity、Unreal)中,以提升图像的真实感。上述常用材质中的MeshStandardMaterial 和MeshPhysicalMaterial属于PBR材质。
1、核心理念
PBR 不是某种具体的材质,而是一种渲染方法论,它基于物理原理模拟光的行为,让材质在不同光照环境下具有一致且真实的外观。
2、常见属性
PBR 材质通常使用以下几种贴图或参数:
| 属性 | 含义说明 |
|---|---|
| Albedo / Base Color | 材质的基础颜色,不包含阴影、光照或高光。 |
| Metallic(金属度) | 控制表面是否为金属,非金属为 0,纯金属为 1。 |
| Roughness(粗糙度) | 控制表面光滑或粗糙程度,0 是非常光滑(有清晰高光),1 是完全粗糙(无高光)。 |
| Normal Map | 模拟表面细节纹理(如凹凸),不改变几何形状。 |
| AO(Ambient Occlusion)环境光遮蔽 | 模拟角落等区域的阴影,增加空间感。 |
| Height / Displacement | 提供表面凹凸的实际位移效果(可选,用于高级效果)。 |
3、属性示例
(1)roughness(粗糙度)从0-1的变化,图中从左到右的值依次为:0, 0.25, 0.5, 0.75, 1.0。

javascript
for (let i = 0; i < 5; i++) {
const roughness = i / 4; // 0, 0.25, 0.5, 0.75, 1.0
const material = new THREE.MeshStandardMaterial({
color: 0x00ff00, // 绿色
roughness: roughness,
metalness: 0.0, // 非金属
});
const mesh = new THREE.Mesh(sphereGeometry, material);
mesh.castShadow = true;
mesh.position.set(i * 3 - 6, 2, 6);
scene.add(mesh);
}(2)metalness(金属度)从0-1的变化,图中从左到右的值依次为:0, 0.25, 0.5, 0.75, 1.0。

javascript
for (let i = 0; i < 5; i++) {
const metalness = i / 4; // 0, 0.25, 0.5, 0.75, 1.0
const material = new THREE.MeshStandardMaterial({
color: 0xff6600, // 橙色
roughness: 0.1, // 保持较低粗糙度以突出金属效果
metalness: metalness,
});
const mesh = new THREE.Mesh(sphereGeometry, material);
mesh.position.set(i * 3 - 6, 2, 2);
mesh.castShadow = true;
scene.add(mesh);
}