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

这篇具有很好参考价值的文章主要介绍了十一、PBR材质金属度、粗糙度以及环境贴图的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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);

测试图片
十一、PBR材质金属度、粗糙度以及环境贴图的使用,Vue3,ThreeJS,材质,贴图,javascript

实际效果如下:
十一、PBR材质金属度、粗糙度以及环境贴图的使用,Vue3,ThreeJS,材质,贴图,javascript

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等。不同的编码方式适用于不同的场景和需求。在使用纹理时,需要根据实际情况选择合适的编码方式。文章来源地址https://www.toymoban.com/news/detail-570030.html

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

到了这里,关于十一、PBR材质金属度、粗糙度以及环境贴图的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PBR材质理解整理

    草履虫都能看懂的PBR讲解(迫真) 先前看了很多遍类似的了,结合《Unity Shader 入门精要》中的内容整理了下便于以后理解,以后有补充再添加。 光与材质相交会发生 散射和吸收 ,散射改变光的方向,吸收改变光的能量。 在均匀介质中,光沿直线传播。传播过程中材质的折

    2024年02月13日
    浏览(44)
  • 7.PBR材质与纹理贴图

    友情链接:threejs 中文文档 目录 1. PBR材质简介 光照模型 网格模型材质整体回顾 2. PBR材质金属度和粗糙度 金属度metalness 粗糙度roughness  3. 环境贴图.enMap 环境贴图反射率.envMapIntensity 场景环境属性.environment 4. MeshPhysicalMaterial清漆层 清漆层属性.clearcoat 清漆层粗糙度.clearcoatRo

    2024年02月12日
    浏览(36)
  • PBR材质背光面太暗优化

    图形学中漫反射光照遵循 兰伯特光照模型 ,它的公式如下 其中:          :漫反射光颜色          :入射光颜色          :材质的漫反射系数          :法线方向          :光源方向 由于背光面的法线方向和光源方向的点积为负数,因此光线无法

    2024年01月18日
    浏览(37)
  • Unity材质调节-金属、塑料、透明玻璃。​​

    大家好,我是雪下的新火,本文 以默认渲染管线为例简谈一下金属、塑料、玻璃三种材质效果。 1.1.单个材质 金属度调为0.85,光泽度调为0.65。 将灯光 强度增加至3,给全局一个亮度。 1.2.金属度贴图 金属度贴图我选择在QuixelBridge下载。 导入_Metalness后缀的贴图; 添加在Met

    2024年04月14日
    浏览(41)
  • 3Ds max材质制作教程:创建金、银、铜金属材质

    推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 如果您不想完成本教程中的所有步骤,可以通过本教程底部的链接下载 3D Studio Max 的 matlib (.mat) 文件。 注意:单击每个步骤中的缩略图可查看更大的屏幕截图,其中包括视口和用户界面的相关部分。 步骤 1 创建

    2024年02月16日
    浏览(56)
  • 【Overload游戏引擎细节分析】PBR材质Shader---完结篇

    PBR基于物理的渲染可以实现更加真实的效果,其Shader值得分析一下。但PBR需要较多的基础知识,不适合不会OpenGL的朋友。 一、PBR理论 PBR指基于物理的渲染,其理论较多,需要的基础知识也较多,我在这就不再写一遍了,具体可以参看: LearnOpenGL PBR理论-英文 或者 LearnOpenGL

    2024年02月08日
    浏览(45)
  • DirectX12(D3D12)基础教程(二十一)—— PBR:IBL 的数学原理(1/5)

      2023年来了,令人闹心伤身的疫情也暂告一段落了。感慨之余,其实我也挺惆怅,这个系列教程还能继续下去吗?或者我自己还能坚持多久,我不知道。因为我也天天徘徊在失业的边缘,年纪大了被人嫌弃,学历低被人嫌弃,身体稍差也被人嫌弃,忽然发现我已不是当初那

    2023年04月08日
    浏览(58)
  • OpenGL(十一)——材质

    目录 一、前言 二、物体材质 三、光源材质 OpenGL材质是模拟现实世界中不同材质物体表面,如木制箱子和钢制箱子对光的反射程度不同。物体材质对接受光散射程度不同,较少散射产生较小高光点,较多散射则会产生较大高光点。前面章节定义了物体颜色、环境光照、漫反射

    2024年02月03日
    浏览(25)
  • DirectX12(D3D12)基础教程(二十一)—— PBR:IBL 的数学原理(5/5)镜面反射积分项2及光照合成

    3.5.4、根据 Epic 近似假设进一步拆分积分项为两部分之积   通过之前的步骤,实际上以及得到了我们想要的镜面反射项的蒙特卡洛积分重要性采样的形式,并且根据我们的假设认为视方向等于法线方向,实际上以及可以编码实现这个积分计算过程,而且依据假设我们不再需

    2023年04月08日
    浏览(50)
  • Unity HDRP 粉色材质一键修复,以及无法自动修复的材质的处理方式

    在Untiy的制作中,如果从商店导入到已经配备好HDRP的工程文件时,往往会出现粉色材质的现象。 这件事情的原因呢,就是因为HDRP环境中的材质需要有一套全新的渲染方式,它们的材质在inspector中的shader预设并非HDRP环境下可以被渲染的选择,所以我们需要对其进行一番修改。

    2024年02月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包