MeshStandardNodeMaterial
MeshStandardNodeMaterial
一种标准的物理基础渲染(PBR)节点材质,它使用金属度(metalness)和粗糙度(roughness)工作流来创建各种逼真的材质。它是 Three.js 中用于实现照片级真实感效果的通用首选材质。 [1, 2] 它是 MeshStandardMaterial 的节点版本。
核心优势
其核心优势在于直观的“金属度-粗糙度”工作流,极大地简化了真实感材质的创作。 [1] 开发者只需定义表面是金属(metalness=1)还是非金属(metalness=0),并控制其光滑程度(roughness),即可高效地模拟绝大多数现实世界中的材质,实现了真实感与性能的绝佳平衡。 [1, 2]
常见用途
渲染常见的金属,如铬、金、钢 [2]
模拟电介质(非金属)材料,如塑料、木材、混凝土和陶瓷 [2]
作为标准 PBR 工作流(例如,从 glTF 文件加载的模型)的默认材质 [1]
创建具有不同光滑度的表面,例如抛光的地板与哑光的墙壁
如何调整
主要通过 `metalness` 和 `roughness` 属性进行调整。对于金属表面,将 `metalness` 设为 1(此时 `color` 属性定义反射颜色);对于非金属表面,设为 0(此时 `color` 定义漫反射颜色)。`roughness` 控制表面的光滑度,从 0(镜面反射)到 1(完全漫反射)。你可以使用 `metalnessNode` 和 `roughnessNode` 连接纹理节点(如 `metalnessMap` 或 `roughnessMap`)来逐像素控制这些值。其他重要输入包括用于添加表面细节的 `normalMap` 和用于自发光的 `emissiveNode`。
代码示例
1<mesh>
2 <sphereGeometry />
3 {/* 一个标准的 PBR 材质 */}
4 <meshStandardNodeMaterial
5 color=\"gold\"
6 metalness={0.9} // 金属度,越接近 1 越像金属
7 roughness={0.2} // 粗糙度,值越低表面越光滑
8 />
9</mesh>