three.js环境贴图hdr格式

参考资料:threejs中文网

threejs qq交流群:814702116

three.js环境贴图hdr格式

有时候,美术也会提供hdr格式图片作为环境贴图使用。

下面给大家说下,怎么加载解析hdr格式的图像作为网格模型Mesh材质的环境贴图.envMap

扩展库RGBELoader.js

文件node_modules,**three/examples/jsm/loaders/**目录,你可以找到一个文件RGBELoader.js

import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader.js';

加载hdr图像

加载hdr图像,设置为环境贴图

const rgbeLoader = new RGBELoader();
rgbeLoader.load('./envMap.hdr', function (envMap) {
    scene.environment = envMap;
    // hdr作为环境贴图生效,设置.mapping为EquirectangularReflectionMapping
    envMap.mapping = THREE.EquirectangularReflectionMapping;
})
  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
加载HDR贴图,首先需要确保three.js的版本大于等于r84。 接下来,我们需要使用THREE.RGBELoader来加载hdr贴图。在加载完成后,我们需要将其转换为THREE.DataTexture并将其用作环境贴图。 以下是完整的示例代码,它将加载一个hdr贴图并将其用作环境贴图: ```javascript const renderer = new THREE.WebGLRenderer(); const scene = new THREE.Scene(); const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); camera.position.z = 5; // 加载hdr贴图 const loader = new THREE.RGBELoader(); loader.load('path/to/hdr.hdr', (texture) => { // 将hdr贴图转换为DataTexture const pmremGenerator = new THREE.PMREMGenerator(renderer); pmremGenerator.compileEquirectangularShader(); const envMap = pmremGenerator.fromEquirectangular(texture).texture; scene.background = envMap; scene.environment = envMap; texture.dispose(); pmremGenerator.dispose(); }); // 添加一个球体 const geometry = new THREE.SphereGeometry(1, 32, 32); const material = new THREE.MeshStandardMaterial({ metalness: 1, roughness: 0 }); const sphere = new THREE.Mesh(geometry, material); scene.add(sphere); // 渲染场景 renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); function animate() { requestAnimationFrame(animate); renderer.render(scene, camera); } animate(); ``` 在这里,我们加载了一个hdr贴图,并将其用作场景的背景和环境贴图。然后,我们添加了一个球体,并使用标准材质将其渲染出来。 最后,我们设置了渲染器的大小并将其添加到页面中,然后启动了一个循环,以在场景中渲染球体。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Threejs可视化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值