当前位置: 首页 > article >正文

62. 环境贴图2

环境贴图作用测试

实际生活中光源照射到一个物体上,这个物体反射出去的光线也会影响其他的物体,环境贴图就是用一种简单方式,近似模拟一个物体周边环境对物体表面的影响。

测试:对于PBR材质,如果threejs三维场景不添加任何光源,物体就是完全黑色的,你可以不添加任何光源,尝试只使用环境贴图,你会发现物体表面的颜色也能看到,这说明环境贴图其实相当于提供了物体周围环境发射或反射的光线。

测试:更换不同明暗的环境贴图,你会发现场景中模型的明暗也有变化。

场景环境属性.environment

网格模型可以通过材质的.envMap属性设置环境贴图,如果一个gltf模型中所有的Mesh都要设置环境贴图就需要递归遍历gltf模型,给里面每个Mesh的材质设置.envMap

loader.load("../工厂.glb", function (gltf) {
    // 递归遍历批量设置环境贴图
    gltf.scene.traverse(function (obj) {
        if (obj.isMesh) { //判断是否是网格模型
            obj.material.envMap = textureCube; //设置环境贴图
        }
    });
})

如果你希望环境贴图影响场景中scene所有Mesh,可以通过Scene的场景环境属性.environment实现,把环境贴图对应纹理对象设置为.environment的属性值即可。

// 环境贴图纹理对象textureCube作为.environment属性值,影响所有模型
scene.environment = textureCube;

环境贴图色彩空间编码.encoding

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

http://www.kler.cn/news/331831.html

相关文章:

  • 【openwrt-21.02】T750 openwrt switch划分VLAN之后网口插拔状态异常问题分析及解决方案
  • 【分布式微服务云原生】如何在ActiveMQ中优雅处理提前支付的延时订单
  • netty之Netty请求响应同步通信
  • mybatis-plus使用总结
  • YOLO11改进|注意力机制篇|引入注意力与卷积混合的ACmix
  • C语言 | Leetcode C语言题解之第455题分发饼干
  • 云原生数据库 PolarDB
  • 【AIGC】ChatGPT开发者必备:如何获取 OpenAI 的 API Key
  • 异常场景分析
  • 读数据湖仓06数据集成
  • 深度学习----------------------------编码器、解码器架构
  • 如何让服务器自动封禁低质量ip
  • 程序猿成长之路之设计模式篇——设计模式简介
  • C++——定义个一个结构体变量(包括年、月、日),编写程序,要求输入年、月、日,程序计算并输出该日在本年中是第几天。(提示:需要考虑闰年)
  • 酒店新科技,飞睿智能毫米波雷达人体存在感应器,智能照明创新节能新风尚
  • 掌握 C# 中的委托与事件机制
  • 微信小程序攻略:如何验证Token是否即将失效并自动刷新
  • 70.【C语言】动态内存管理(重点)(3)
  • 【Echarts】折线图和柱状图如何从后端动态获取数据?
  • C++实现单例模式