位置: IT常识 - 正文

Three.js-设置环境纹理及加载hdr环境贴图(threejs环境搭建)

编辑:rootadmin
Three.js-设置环境纹理及加载hdr环境贴图

目录

1.hdr

2.环境纹理(全景)

3.CubeTextureLoader加载立方体环境纹理

4.RGBELoader环境纹理加载


1.hdr

推荐整理分享Three.js-设置环境纹理及加载hdr环境贴图(threejs环境搭建),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:three.js怎么用,three.js怎么用,threejs document,three.js webgl,three.js dispose,three.js bim,three.js bim,three.js怎么样,内容如对您有帮助,希望把文章链接给更多的朋友!

HDR全称High-Dynamic Range(高动态光照渲染),通过HDR,显示器或相机可以很好的表现超出其亮度范围的图像,也可以简单理解为HDR能大幅提高画面细节的明暗对比度。直白点讲,HDR是指一个图像中最亮处和最暗处之间的比值,能够让图像明亮的地方更亮,而黑色的地方更黑暗深邃。

HDR由两部分组成,动态曝光控制和光晕效果。先说动态曝光控制,通常,显示器能够显示R、G、B分量在[0,255]之间的像素值。而256个不同的亮度级别显然不能表示自然界中光线的亮度情况。举个例子,太阳的亮度是白炽灯亮度的几千倍或者被漫反射照亮的室内亮度的几万倍,这远远超出了显示器的亮度表示能力。HDR技术所要解决的问题就是在有限的亮度范围内表示出宽广的亮度范围。原理类似于照相机的曝光功能,通过算法调整光线亮度,将光线从高动态范围映射到低动态范围,从而得到得到令人信服的光照效果。

HDR的另一部分是光晕效果。人从暗处走到光亮的地方,瞳孔由于来不及收缩,眼睛会自己眯起来,以保护视网膜上的感光细胞。HDR通过对原始图像进行调整,可以模拟这种人眼自动适应光线变化的生理反应,产生类似于光晕的效果。

图像经HDR处理后的理想结果是亮处足够耀眼,暗处能够分辨物体的轮廓与深度,而非原图的一团漆黑。

2.环境纹理(全景)

在Three中,环境纹理的实现一方面借助hdr材质的加载,另一方面借助于环境纹理实现的算法,其主要包括两种模式,一种是球面环境纹理,另一种是立方体环境纹理模式。两种实现方式原理上与地图学中的投影相似。

1)球形全景是将球形的经度和纬度坐标,直接到水平和垂直坐标的一格,这个网格的高度大约宽的两倍。因此从赤道到两极,横向拉伸不断加剧,南北两个极点被拉伸成了扁平的网格在整个上部和下部边缘。球形全景可以现实整个水平和竖直的360全景。

Three.js-设置环境纹理及加载hdr环境贴图(threejs环境搭建)

 2)立方体全景是将全景图分成了前后左右上下六个面,浏览的时候将六个面结合成一个密闭空间来现实整个水平和竖直的360全景。

Web全景图的原理及实现 - 知乎全景图的基本原理全景图是一种广角图。通过全景播放器可以让观看者身临其境地进入到全景图所记录的场景中去。比如像是 这个。这种看起来很高大上的效果其实背后的原理并不复杂。通常标准的全景图是一张2:1的图像…https://zhuanlan.zhihu.com/p/30601155

3.CubeTextureLoader加载立方体环境纹理

加载CubeTexture的一个类。 内部使用ImageLoader来加载文件。px/nx/py/ny/pz/nz:该六个配置项分别表示盒模型六个贴面在坐标系中不同方向的贴图地址,如下图所示。手动输入贴图的URL地址,可设置盒模型样式。

 示例:

import * as THREE from "three";// 导入轨道控制器import { OrbitControls } from "three/examples/jsm/controls/OrbitControls";// 1、创建场景const scene = new THREE.Scene();// 2、创建相机const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000);// 设置相机位置camera.position.set(0, 0, 10);scene.add(camera);// 设置cube纹理加载器const cubeTextureLoader = new THREE.CubeTextureLoader();const envMapTexture = cubeTextureLoader.load([ "textures/environmentMaps/1/px.jpg", "textures/environmentMaps/1/nx.jpg", "textures/environmentMaps/1/py.jpg", "textures/environmentMaps/1/ny.jpg", "textures/environmentMaps/1/pz.jpg", "textures/environmentMaps/1/nz.jpg",]);// 给场景添加背景scene.background = envMapTexture;// 给场景所有的物体添加默认的环境贴图scene.environment = envMapTexture;// 灯光// 环境光const light = new THREE.AmbientLight(0xffffff, 0.5); // soft white lightscene.add(light);//直线光源const directionalLight = new THREE.DirectionalLight(0xffffff, 0.5);directionalLight.position.set(10, 10, 10);scene.add(directionalLight);// 初始化渲染器const renderer = new THREE.WebGLRenderer();// 设置渲染的尺寸大小renderer.setSize(window.innerWidth, window.innerHeight);// console.log(renderer);// 将webgl渲染的canvas内容添加到bodydocument.body.appendChild(renderer.domElement);// // 使用渲染器,通过相机将场景渲染进来// renderer.render(scene, camera);// 创建轨道控制器const controls = new OrbitControls(camera, renderer.domElement);// 设置控制器阻尼,让控制器更有真实效果,必须在动画循环里调用.update()。controls.enableDamping = true;// 添加坐标轴辅助器const axesHelper = new THREE.AxesHelper(5);scene.add(axesHelper);// 设置时钟const clock = new THREE.Clock();function render() { controls.update(); renderer.render(scene, camera); // 渲染下一帧的时候就会调用render函数 requestAnimationFrame(render);}render();// 监听画面变化,更新渲染画面window.addEventListener("resize", () => { // console.log("画面变化了"); // 更新摄像头 camera.aspect = window.innerWidth / window.innerHeight; // 更新摄像机的投影矩阵 camera.updateProjectionMatrix(); // 更新渲染器 renderer.setSize(window.innerWidth, window.innerHeight); // 设置渲染器的像素比 renderer.setPixelRatio(window.devicePixelRatio);});

实现效果:

4.RGBELoader环境纹理加载

通过threejs扩展库RGBELoader.js可以加载.hdr格式图像,hdr图像加载器RGBELoader.js。

1)导入hdr图像加载器

//导入hdr图像加载器import { RGBELoader } from "three/examples/jsm/loaders/RGBELoader";//rebe加载器

 2)加载hdr环境贴图

// 加载hdr环境图const rgbeLoader = new RGBELoader();//资源较大,使用异步加载rgbeLoader.loadAsync("textures/hdr/002.hdr").then((texture) => { texture.mapping = THREE.EquirectangularReflectionMapping;//将加载的材质texture设置给背景和环境 scene.background = texture; scene.environment = texture;});

 实现效果:

本文链接地址:https://www.jiuchutong.com/zhishi/283170.html 转载请保留说明!

上一篇:Win10提示音响个不停怎么办?Win10提示音响个不停的解决方法(windows 10音响没有声音)

下一篇:gcASCleaner.exe是什么进程 有什么作用 gcASCleaner进程查询(gws.exe是啥)

  • 腾讯会议怎么设置静态头像(腾讯会议怎么设置时间)

    腾讯会议怎么设置静态头像(腾讯会议怎么设置时间)

  • 腾讯会议切出去会有记录吗(腾讯会议切出去还能语音吗)

    腾讯会议切出去会有记录吗(腾讯会议切出去还能语音吗)

  • 苹果录屏功能在哪里(苹果录屏功能在哪)

    苹果录屏功能在哪里(苹果录屏功能在哪)

  • 微信不能抢红包怎么解封(微信不能抢红包出现账户异常)

    微信不能抢红包怎么解封(微信不能抢红包出现账户异常)

  • raw和jpg有什么区别(raw和raw+jpeg的区别)

    raw和jpg有什么区别(raw和raw+jpeg的区别)

  • 开通svip恢复火花(开通超级vip恢复火花)

    开通svip恢复火花(开通超级vip恢复火花)

  • 启用宏是什么意思(启用宏功能是什么意思)

    启用宏是什么意思(启用宏功能是什么意思)

  • 为什么国际版抖音会显示网络出错(为什么国际版抖音登录不了)

    为什么国际版抖音会显示网络出错(为什么国际版抖音登录不了)

  • 浏览别人的微信朋友圈会有记录吗(浏览别人的微信视频号别人知道吗)

    浏览别人的微信朋友圈会有记录吗(浏览别人的微信视频号别人知道吗)

  • 手机突然无法横屏(手机没办法横屏怎么办)

    手机突然无法横屏(手机没办法横屏怎么办)

  • 电脑摄像头像素一般是多少(电脑摄像头像素在哪看)

    电脑摄像头像素一般是多少(电脑摄像头像素在哪看)

  • 电话暂时无人接听是什么意思(电话暂时无人接听请稍后再拨是什么意思)

    电话暂时无人接听是什么意思(电话暂时无人接听请稍后再拨是什么意思)

  • cache是什么存储器(cache是什么内存)

    cache是什么存储器(cache是什么内存)

  • 爱思能够检测华强北组装机吗(爱思能够检测华为耳机吗)

    爱思能够检测华强北组装机吗(爱思能够检测华为耳机吗)

  • 免拼成功是什么意思(免拼成功就是可以退款了么)

    免拼成功是什么意思(免拼成功就是可以退款了么)

  • 13寸多大(13寸多大长宽cm)

    13寸多大(13寸多大长宽cm)

  • 华为手机路况怎么回事(华为手机路况是什么意思)

    华为手机路况怎么回事(华为手机路况是什么意思)

  • qq消息免打扰是不是拒收(qq消息免打扰是什么样子的)

    qq消息免打扰是不是拒收(qq消息免打扰是什么样子的)

  • airpods右边耳机出现红色的感叹号怎么办(airpods右边耳机老是断开)

    airpods右边耳机出现红色的感叹号怎么办(airpods右边耳机老是断开)

  • 苹果8plus怎么分屏(苹果8plus怎么分身)

    苹果8plus怎么分屏(苹果8plus怎么分身)

  • 拍照滤镜怎么调出来(拍照滤镜怎么调整)

    拍照滤镜怎么调出来(拍照滤镜怎么调整)

  • 微信加密码怎么解除(微信加密码怎么改密码)

    微信加密码怎么解除(微信加密码怎么改密码)

  • 为什么微信朋友圈发的文字只显示一行(为什么微信朋友圈没有屏蔽却看不到)

    为什么微信朋友圈发的文字只显示一行(为什么微信朋友圈没有屏蔽却看不到)

  • vue中devTools插件安装教程(vue.js devtools插件下载)

    vue中devTools插件安装教程(vue.js devtools插件下载)

  • sysctl命令  配置系统内核参数(sysctl命令配置主机名)

    sysctl命令 配置系统内核参数(sysctl命令配置主机名)

  • 稽查局和税务局的关系
  • 留抵税额是什么意思啊
  • 个人开具发票需要税号吗
  • 个人如何开现金账户
  • 高铁票抵扣增值税
  • 林业局会计咋样做账
  • 一般纳税人建账建几本帐
  • 单位投资非盈利性组织怎样核算
  • 生物性资产折旧吗
  • 已计提的固定资产减值准备累计金额
  • 增值税认证逾期怎么处理
  • 金税三期个人所得税税率
  • 收购其他公司有什么好处
  • 工程成本哪些可以抵扣
  • 开具的增值税发票丢失最新处理办法
  • 普票开票开给个人怎么开
  • 对子公司进行增资
  • 收到银行承兑汇票计入什么科目
  • 序列号不可用怎么办
  • 代扣代缴的社保需要计提吗
  • 固定资产装修费用计入房产税吗
  • 离退休人员福利
  • 个税申报需要补税是什么情况
  • 服务业结转成本怎么算
  • 公司开13个点增值税交多少钱
  • 京东预付卡怎么做账
  • 公司不给钱打那个电话
  • 冲红的会计分录
  • 期间费用在会计期末要转入
  • 总部资产减值测试例题
  • 外汇差额核销条件
  • 布拉塞龙图片
  • php自定义变量的方法是
  • thinkphp案例
  • php扫一扫识别代码
  • 小糖是谁
  • tracetcp命令
  • tcpreplay命令详解
  • 固定资产多少钱以上才要计提折旧
  • Python运算符的优先级别
  • 商贸公司会计成本核算
  • 纳税调整项目明细表30行怎么填写
  • 银行查询余额
  • 非贸备案什么意思
  • javascript 箭头
  • 暂估入库成本处理
  • union ll
  • vue+ele
  • 固定资产年限折旧方法
  • 跨省市提供建筑服务
  • 可以直接在企业所得税税前扣除的是
  • 公司保障措施
  • 计提固定资产折旧借方科目包括
  • 母公司与子公司内部合作协议
  • 销售额大于营业收入吗
  • 预付款在会计里属于什么
  • 合并财务报表为什么要抵消子公司所有者权益
  • 物流公司驾驶员安全教育培训
  • 银行账和实际金额对不上
  • sql server错误和使用情况报告
  • mysql的行转列
  • services.exe修改注册表
  • linux 添加ipv6路由
  • win7 64位系统无法清空回收站的故障原因及解决方法
  • w8系统文件夹怎么设置密码
  • Win10计算机管理该文件没有与之关联的应用
  • linux日志数据种类
  • linux git管理工具
  • cocos2dx-3.x(三)、场景切换及可能产生的错误
  • 可以生成选区的方式是使用
  • unity控制相机旋转
  • unity协程的工作原理
  • js菜鸟编程
  • jQuery插件下载
  • python openfoam
  • 辽宁省视同缴费标准?
  • 社保逾期未申报会造成什么影响,要怎么处理
  • 江苏国税电子国税局
  • 丰田威驰2023款1.5自动挡新车报价
  • 内蒙民生认证系统
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设