Three.js——十一、PBR材质金属度、粗糙度以及环境贴图的使用

article/2025/11/11 15:36:55

Three.js——十一、PBR材质金属度、粗糙度以及环境贴图的使用

metalness金属度

金属度属性.metalness表示材质像金属的程度, 非金属材料,如木材或石材,使用0.0,金属使用1.0。

new THREE.MeshStandardMaterial({metalness: 1.0,//金属度属性
})
// 或者
// mesh.material.metalness = 1.0;//金属度
    const geometry = new THREE.BoxGeometry(10, 10, 10);// 材质const material = new THREE.MeshStandardMaterial({color: 0x51efe4, metalness: 1,});const mesh = new THREE.Mesh(geometry, material);mesh.position.set(0, 0, 0);scene.add(mesh);// mesh.material.metalness = 1;gui = new GUI();gui.add(material, "metalness", 0, 1);

roughness粗糙度

粗糙度roughness表示模型表面的光滑或者说粗糙程度,越光滑镜面反射能力越强,越粗糙,表面镜面反射能力越弱,更多地表现为漫反射。
粗糙度roughness,0.0表示平滑的镜面反射,1.0表示完全漫反射,默认0.5。

    const geometry = new THREE.BoxGeometry(10, 10, 10);// 材质textureCube = new THREE.CubeTextureLoader().setPath(new URL("@/assets/", import.meta.url).href).load(["/02.png", "/02.png", "/02.png", "/02.png", "/02.png", "/02.png"]);const material = new THREE.MeshStandardMaterial({color: 0x51efe4, //0x51efe4设置材质颜色metalness: 1,roughness: 0.5,envMap: textureCube,});const mesh = new THREE.Mesh(geometry, material);mesh.position.set(0, 0, 0);scene.add(mesh);// mesh.material.metalness = 1;gui = new GUI();gui.add(material, "metalness", 0, 1);gui.add(material, "roughness", 0, 1);

测试图片
请添加图片描述

实际效果如下:
请添加图片描述

envMapIntensity环境贴图反射率

用于设置环境贴图的强度。它控制着环境贴图对物体表面的反射程度,数值越大反射越强烈,数值越小反射越弱。该属性的取值范围为0到1之间,默认值为1。

总结:粗糙度越小,反射效果越强,如果设置为0,那么他将完全镜面反射,等同于镜子。
当然在实际开发中,环境贴图的不同也会对渲染效果造成影响,也需要选择合适的贴图,往往这种贴图可以让美术提供即可。

纹理和渲染器颜色空间一致

textureCube.encoding = THREE.sRGBEncoding; 

关于模型的环境贴图environment

loader.load(new URL(`../assets/model.glb`, import.meta.url).href, function (gltf) {// 递归遍历批量设置环境贴图gltf.scene.traverse(function (obj) {if (obj.isMesh) { //判断是否是网格模型obj.material.envMap = textureCube; //设置环境贴图}});
})

如果想使用环境贴图对scene所有Mesh添加贴图材质,可以通过Scene的场景环境属性.environment实现,把环境贴图对应纹理对象设置为.environment的属性值即可。

scene.environment = textureCube;

encoding设置纹理的编码方式

encoding`纹理的颜色值如何被编码和解码,以确保正确的颜色显示。常见的编码方式包括sRGB、Linear和RGBE等。不同的编码方式适用于不同的场景和需求。在使用纹理时,需要根据实际情况选择合适的编码方式。

//如果renderer.outputEncoding=THREE.sRGBEncoding;环境贴图需要保持一致
textureCube.encoding = THREE.sRGBEncoding;   

http://chatgpt.dhexx.cn/article/RpAFPwk6.shtml

相关文章

Unity URP 手撸一个自己的PBR材质

嘿嘿,你能认出哪个是官方的lit shader,哪个是我手撸的PBRshader吗 。 然后就可以魔改成风格化的PBR拉 先占个坑,后面有空的话会梳理一遍URP的pbr流程和相关公式 最后一定要注意自己的shader是否符合SRP Batcher!

unity再战PBR材质流程与材质制作实践

版权声明:本文为博主原创文章,未经博主允许不得转载。 这篇在上一篇的基础上增加了对PBR的认识,主要包括了金属度和粗糙度(光滑度)的测试 unity里PBR流程,PBR材质属性具体分析 传统模型到PBR的流程&#xf…

我的Substance Designer 学习笔记02-PBR材质学习理解

首先定义PBR:Physics-based rendering,基于物理的渲染。 由来。2012年迪士尼公司在技术论坛发布的文章,讲述自己作品的制作流程。 2014年被某大佬提出简化版本的制作流程。优化后只用5中材质通道。 BSDF:双向散射率分布函数(Blender) BRDF:双向反射率分布函数&a…

unity build-in管线中的PBR材质Shader分析研究

PBR分析 前言我理解的PBRPBR组成部分直接光漫反射直接光镜面反射(高光)间接光漫反射间接光镜面反射最终加和 结果 前言 近来,用到了几次Surface Shader,对于其封装好的PBR计算部分,如果不是复杂的效果其实是挺方便实用…

UE4 虚幻引擎,处理PBR材质

处理PBR(Physically Based Rendering基于物理的渲染)材质 虚幻引擎可以提供非常真实的基于物理的材质和渲染系统,基于物理的材质是一种以三种材质核心输入为基础的实时算法,十分方便美术师使用。这三种输入分别是Mtallic金属感&a…

【LearnOpenGL】-PBR材质

PBR,或者用更通俗一些的称呼是指基于物理的渲染(Physically Based Rendering),它指的是一些在不同程度上都基于与现实世界的物理原理更相符的基本理论所构成的渲染技术的集合。正因为基于物理的渲染目的便是为了使用一种更符合物理学规律的方式来模拟光线…

源码分析学习记录(9)——PBR材质

2021SCSDUSC Dust3D中的材质采用PBR模型。PBR就是Physically-Based Rendering的缩写,意为基于物理的渲染。它提供了一种光照和渲染方法,能够更精确的描绘光和表面之间的作用。由于PBR基于物理的渲染旨在以物理上合理的方式模拟光,因此与我们…

UE4 PBR材质使用记录

参考文章:https://www.bilibili.com/video/BV1Dv411w7x6 参考文章:https://www.bilibili.com/video/BV1TQ4y167sG 引擎:4.26 初试两种纹理混合 纹理来源于【初学者内容包】 首先,新建一个材质文件。 然后将纹理拖入材质中。 …

01_ue4进阶_PBR材质

PBR材质,在不同的角度,通过不同的图层,来虚拟出一些物理效果。 用一个砖墙的例子来演示一下不同的图层。 这些图共同组成一个材质。 建立两个文件夹 将这些图层导入 这是基本颜色图片。 法线图:给材质一种凹凸不平的立体感。 标…

PBR物理材质

本人笔记,不喜勿喷 PBR在英文里面是 Physically Based Rendering 翻译成中文就是基于物理的渲染。 反射 散射 生成diffuse 漫反射 反射 生成Specular 镜面反射 进入物体生成透射 实现pbr渲染,抽象出来了相应的渲染方程 BSDF 双向散射表面分布函数&…

UE4材质(二):PBR材质

摘自并整理自虚幻官方教程:https://learn.unrealengine.com/course/2449699 课程中的工程项目文件下载: 链接:https://pan.baidu.com/s/1o7m3pR7BvaCYAmlx57B9HQ 提取码:uenb 一、PBR材质介绍 Physical Based Rendering&#xf…

Unity PBR材质

unity两种pbr材质工作流 Standard材质(metallic工作流) 通过metallic参数(金属度)和smoothness(光滑度)影响反射率和强度 非金属sRGB[50-243]金属sRGB[186-255]metallic金属度(灰度图,R通道值)smoothness光滑度(金属…

【数学】Frobenius范数

Frobenius范数简称F范数,这个范数是针对矩阵而言的,具体定义可以类比向量的L2范数。 简单来说就是矩阵的每个元素的平方和的开方。

日志-Frobenius norm,共轭矩阵

Frobenius norm 就是矩阵各个元素平方和,然后开平方根。 如果这个算出来的difference太大,就说明backpropagation出现了错误。 可以使用numpy算出两个矩阵之间frobenius norm numpy.linalg.norm import numpy as np print(np.linalg.norm(np.array([1…

Perron-Frobenius定理和一些相关定理的证明

图片来源:非负矩阵之Perron–Frobenius定理 - 纯粹的文章 - 知乎 Oskar Perron 在1907年发表了关于正矩阵的一些基本发现称之为Perron定理,后来Frobenius将其推广到非负矩阵上,称为Perron-Frobenius定理。 下面先证明一些预备定理&#xff0…

基于Frobenius范数的标准NMF更新公式推导

目标函数 在标准非负矩阵分解中,其目标函数很简单,形式为,其中V为观测矩阵,W为基矩阵,H为系数矩阵, 这里假设V为mn维的,W为ml维的,H为ln维的。 更新公式推导 其更新公式是基于梯度下降法&…

线性代数笔记 Frobenius 范数和矩阵的迹之间的关系

线性代数笔记:Frobenius 范数_UQI-LIUWJ的博客-CSDN博客 先给出结论: 举个例子: 任取22的矩阵A 它的 Frobenius 范数为: 而 所以