本文主要记录了一次通过结合环境光与HDR贴图来实现3D场景的渲染。(Threejs版本 r0.118.0)

  • 依赖包的导入
import {Scene,PerspectiveCamera,Color,WebGLRenderer,LinearToneMapping,AmbientLight,Vector3,Group,PMREMGenerator,UnsignedByteType,HemisphereLight,
} from 'three';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'; // 控制器
import { GLTFLoader, GLTF } from 'three/examples/jsm/loaders/GLTFLoader'; // gltf文件加载
import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader';
  • 添加环境光
// this.scene = ...
this.scene.add(new AmbientLight(0xffffff, 1));const hemiLight = new HemisphereLight(0xffffff, 0x000000, 1);
hemiLight.position.set(0, 100, 0);
this.scene.add(hemiLight);
  • 设置WebGLRenderer
// this.threeContainer = document.getElementById(
//            'xxxx'
//        ) as HTMLElement;
this.renderer = new WebGLRenderer({ antialias: true, alpha: true });
this.renderer.context.getShaderInfoLog = () => '';
this.renderer.setSize(this.threeContainer.scrollWidth,this.threeContainer.scrollHeight
);
this.renderer.setPixelRatio(devicePixelRatio);
this.renderer.toneMapping = LinearToneMapping;
this.renderer.toneMappingExposure = 1; // 曝光系数
  • 加载HDR贴图

// import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader';
const pmremGenerator = new PMREMGenerator(this.renderer); // 使用hdr作为背景色
pmremGenerator.compileEquirectangularShader();const scene = this.scene;
new RGBELoader().setDataType(UnsignedByteType).load('/env/railway_bridge_02_1k.hdr', function (texture) {const envMap = pmremGenerator.fromEquirectangular(texture).texture;// envMap.isPmremTexture = true;pmremGenerator.dispose();scene.environment = envMap; // 给场景添加环境光效果scene.background = envMap; // 给场景添加背景图});
  • 加载GLTF模型
// ...
this.loader = new GLTFLoader();
this.loader.load('/model/haballoon.glb', (obj: GLTF) => {obj.scene.name = 'haballoon';obj.scene.scale.set(10, 10, 10);this.scene.add(obj.scene);
});
  • 渲染效果

    资源文件参考:
  • 模型: https://sketchfab.com/3d-models/hot-air-balloon-0ac634b7c45b4269ab6c570283b9617c
  • HDRI: https://hdrihaven.com/hdri/?h=railway_bridge_02

[Threejs]环境光与HDR贴图相关推荐

  1. threejs基础下:贴图资源加载与光照

    优先更新个人博客,求关注~~ 个人博客:https://jinglecjy.github.io/ 加载器Loaders 加载器是threejs中很重要的一个步骤,可以用于加载纹理/图片/模型/音频等资 ...

  2. vue + threejs 实现场景环境贴图,模型高光显示效果

    <template><div class="modelsBox"><div class="modelsBox_wrapper"&g ...

  3. threejs 粒子系统和材质贴图

    例子系统 <!DOCTYPE html> <html lang="en"><head><title>three.js webgl - ...

  4. Threejs使用白底贴图时,显示出来的图片为灰底

    使用texture加载白色底图片作为MeshBasicMaterial的map,显示出来的图片则变为灰底,还未找到原因,但是是 this.renderer.toneMapping = THREE.AC ...

  5. threejs正方体六面贴图

    给正方体六面贴上不同纹理 最终效果 目录结构 index.html <!DOCTYPE html> <html lang="en"> <head> ...

  6. threejs -- 文本制成精灵贴图(弹幕效果)

    效果: 代码: 注:input标签不能与OrbitControls.js共同使用 <html lang="en"><head><title>th ...

  7. threejs学习网址记录

    14.thingJS:https://www.thingjs.com/guide/city2/?campaign_id=636109562&utm_campaign=ThingJS&u ...

  8. 李翔C4D案例教程笔记(未完)

    闹钟 建模: 铃铛: 球体 >> 半球体 对称方法: 用对称生成器 用Ctrl复制后,更改坐标,先将对象坐标改为世界坐标,关于X轴对称,就将X轴的值相反,将相应旋转值相反 金属提手细节: ...

  9. 元宇宙 3D 开荒场 - 探味奇遇记

    项目概览及开发设计 这次尝鲜的业务伙伴是食品部门,最终落地项目是"探味奇遇记":用户使用左边"joystick"操作 IP 人物,前往自己感兴趣的美食馆.调整当 ...

  10. threejs视频教程学习(4):贴图、材质、光线

    获取材质贴图(3d模型) https://www.poliigon.com/ https://www.textures.com/ https://www.qingmo.com/ https://pix ...

最新文章

  1. 安卓手机也能跑YOLOv5了!
  2. python对文件的读操作有哪些方法-Python中文件的读取和写入操作
  3. Drawable 详解
  4. python打包成apk界面设计_Stephen的SEM博客
  5. ActiveReports 9 新功能:借助目录(TOC)控件为报表添加目录功能
  6. C# 的未来:主构造函数
  7. 工作179:接口对接
  8. chrome调试、移动端调试
  9. python小例子之8 -- decorator的使用
  10. 安装计算机的更新每次更新失败,win7电脑自动更新失败怎么办,电脑自动更新失败解决方法...
  11. cmd查看mysql版本_mysql安装-必会
  12. Txt格式的电子书解析
  13. MATLAB绘制散点图
  14. web自动化(Python版)之百度登录
  15. 18个最受欢迎的低代码开发平台【开源】
  16. cadence常用软件模块介绍
  17. sc-RNA seq与Illumina测序
  18. Rust学习笔记(14)——struct、Option和Box组合应用实现单向链表之二
  19. php 实现店铺装修6
  20. 智慧校园总体规划方案

热门文章

  1. 工作流引擎厂商有哪些_国内主要工作流厂商分析
  2. 图像测试环境软件,Digimizer(图像测量分析软件)
  3. 测试游戏帧率电脑温度的软件,游戏中显示帧数和温度方法_游戏画面中实时显示FPS帧数温度技巧...
  4. 二叉链表存储的二叉C语言,C语言实现二叉链表存储
  5. 适用于Chrome类浏览器的喜马拉雅音频下载插件
  6. 怎样在公式编辑器中输入空格?
  7. mt65xx android phone win10驱动,mt65xx android phone驱动
  8. python控制浏览器最小化_如何启动最小化的Selenium Firefox web浏览器?
  9. 华为NP课程笔记24-BFD
  10. DevExpress WinForms v20.2版本亮点放送——PDF Viewer功能加强