Three.js环境贴图(.envMap)

编程入门 行业动态 更新时间:2024-10-21 16:04:37

Three.js<a href=https://www.elefans.com/category/jswz/34/1771403.html style=环境贴图(.envMap)"/>

Three.js环境贴图(.envMap)

Three.js环境贴图(.envMap)

本文是Three.js电子书的8.9节

Three.js环境贴图.envMap字面意思就是三维模型周边环境,比如你渲染一个立方体,立方体放在一个屋子里面,屋子里面的周边环境肯定影响立方体的渲染效果,目的是为了渲染该立方体而不是立方体周围环境,为了更方便所以没必要创建立方体周边环境所有物体的网格模型,可以通过图片来表达立方体周边的环境。

创建一个立方体盒子作为天空盒使用,然后把一个环境中上下左右前后六张视图图片作为立方体盒子的纹理贴图使用。

加环境贴图的6张纹理贴图,可以通过CubeTextureLoader类趋势线。

var geometry = new THREE.BoxGeometry(100, 100, 100); //立方体var loader = new THREE.CubeTextureLoader();
// 所有贴图在同一目录下,可以使用该方法设置共用路径
loader.setPath('环境贴图/');
// 立方体纹理加载器返回立方体纹理对象CubeTexture
var CubeTexture = loader.load(['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg']);
//材质对象Material
var material = new THREE.MeshPhongMaterial({//网格模型设置颜色,网格模型颜色和环境贴图会进行融合计算// color:0xff0000,envMap: CubeTexture, //设置环境贴图// 环境贴图反射率   控制环境贴图对被渲染三维模型影响程度// reflectivity: 0.1,
});
console.log(CubeTexture.image);
var mesh = new THREE.Mesh(geometry, material); //网格模型对象Mesh
scene.add(mesh); //网格模型添加到场景中

高光网格材质MeshPhongMaterial和物理PBR材质MeshStandardMaterial通常会使用环境贴图.envMap来实现更好的渲染效果。一个材质对应的是普通次时代模型,一个材质对应的是PBR模型。

一个用到环境贴图的案例(14.6节)。


loader.load('./heart/model.obj', function(obj) {// 控制台查看返回结构:包含一个网格模型Mesh的组Groupconsole.log(obj);scene.add(obj);mesh = obj.children[0]; //获得心脏网格模型mesh.scale.set(10, 10, 10); //网格模型缩放// 创建一个纹理加载器var textureLoader = new THREE.TextureLoader();// // 加载颜色纹理var texture = textureLoader.load('./heart/color.png');mesh.material.map = texture;// // 加载法线贴图,表面细节更丰富var textureNormal = textureLoader.load('./heart/normal.png');mesh.material.normalMap = textureNormal// 设置深浅程度mesh.material.normalScale.set(1.5, 1.5)// 设置高光贴图,一个网格模型不同的区域反射光线的能力不同var textureSpecular = textureLoader.load('./heart/Specular.png');mesh.material.specularMap = textureSpecular;mesh.material.specular.set(0xffffff);// 高光反射颜色mesh.material.shininess = 100;// 高光高亮程度,默认30// 设置环境贴图,反射周围环境,渲染更逼真var textureCube = new THREE.CubeTextureLoader().setPath('环境贴图/').load(['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg']);mesh.material.envMap = textureCube;
})

更多推荐

Three.js环境贴图(.envMap)

本文发布于:2024-03-09 05:52:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1724053.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:环境   贴图   js   envMap

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!