位置: 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是啥)

  • 拼多多如何换账号登录(拼多多如何换账户)

    拼多多如何换账号登录(拼多多如何换账户)

  • 荣耀20青春版有红外遥控功能吗(荣耀20青春版有指纹解锁吗)

    荣耀20青春版有红外遥控功能吗(荣耀20青春版有指纹解锁吗)

  • oppofindx2pro屏幕尺寸是多大(oppofindx2pro屏幕分辨率是多少)

    oppofindx2pro屏幕尺寸是多大(oppofindx2pro屏幕分辨率是多少)

  • 华为怎么关闭省电模式(华为怎么关闭省电模式提示)

    华为怎么关闭省电模式(华为怎么关闭省电模式提示)

  • 优酷会员怎么买一个月(优酷会员怎么买便宜)

    优酷会员怎么买一个月(优酷会员怎么买便宜)

  • 苹果11有什么特别的功能吗(苹果11有什么特别)

    苹果11有什么特别的功能吗(苹果11有什么特别)

  • 手机能拍证件照片吗(手机能拍证件照不)

    手机能拍证件照片吗(手机能拍证件照不)

  • 手机潜望镜头和长焦镜头区别(手机潜望镜头和什么相似)

    手机潜望镜头和长焦镜头区别(手机潜望镜头和什么相似)

  • 蓝牙耳机延迟多少正常(蓝牙耳机延迟多少ms适合打吃鸡)

    蓝牙耳机延迟多少正常(蓝牙耳机延迟多少ms适合打吃鸡)

  • 手机网络突然就特别慢了,是咋回事(手机网络突然就不好了什么原因)

    手机网络突然就特别慢了,是咋回事(手机网络突然就不好了什么原因)

  • 苹果7忘记id密码了怎么办(苹果7忘记id密码怎么重新设置)

    苹果7忘记id密码了怎么办(苹果7忘记id密码怎么重新设置)

  • 模拟信号电流输出信号采用什么制(什么是模拟信号输入电路)

    模拟信号电流输出信号采用什么制(什么是模拟信号输入电路)

  • 微信为什么要上传身份证照片(微信为什么要上传照片)

    微信为什么要上传身份证照片(微信为什么要上传照片)

  • wifi已停用是什么意思(wifi已停用是什么鬼)

    wifi已停用是什么意思(wifi已停用是什么鬼)

  • ipad激活锁是什么(ipad的激活锁是什么)

    ipad激活锁是什么(ipad的激活锁是什么)

  • soul举报对方看得到吗(soul举报成功对方能收到消息不)

    soul举报对方看得到吗(soul举报成功对方能收到消息不)

  • 为什么快手改不了昵称(为什么快手改不了名字)

    为什么快手改不了昵称(为什么快手改不了名字)

  • 微信账单删了能查到吗(微信账单删了能找回来吗)

    微信账单删了能查到吗(微信账单删了能找回来吗)

  • 苹果x忘记锁屏密码怎么办(苹果X忘记锁屏密码怎么办)

    苹果x忘记锁屏密码怎么办(苹果X忘记锁屏密码怎么办)

  • 苹果7p运行内存哪里看(苹果7p运行内存是多少GB)

    苹果7p运行内存哪里看(苹果7p运行内存是多少GB)

  • mate20辅助圆点在哪设置(mate20pro辅助圆点)

    mate20辅助圆点在哪设置(mate20pro辅助圆点)

  • 什么是蜜蜡(什么是蜜蜡海漂料)

    什么是蜜蜡(什么是蜜蜡海漂料)

  • 如何用pr批量制作字幕(pr中如何批量裁剪视频)

    如何用pr批量制作字幕(pr中如何批量裁剪视频)

  • vivoy85分辨率怎么调(vivo y85屏幕分辨率)

    vivoy85分辨率怎么调(vivo y85屏幕分辨率)

  • 苹果xr发热怎么回事(平果xr发热)

    苹果xr发热怎么回事(平果xr发热)

  • 抖音直播pk怎么弄(抖音直播pk怎么设置时间)

    抖音直播pk怎么弄(抖音直播pk怎么设置时间)

  • 苹果手机为什么id不能用怎么办(苹果手机为什么没信号无服务)

    苹果手机为什么id不能用怎么办(苹果手机为什么没信号无服务)

  • 个人所得税全年一次性奖金优惠政策
  • 小规模纳税人零申报逾期未申报
  • 研发支出指的是什么
  • 车船税和保险在一起怎么报销
  • 增值税专票怎么抵税
  • 土地增值所得需交什么税
  • 转正后个税增加
  • 银行存款没有期初余额的总账怎么填
  • 土地使用税怎么终止
  • 企业职工遣散费标准
  • 个人劳务发票怎么交税
  • 个人所得税中的股息红利应纳税额
  • 追加的固定资产当月计提折旧吗
  • 采购商品验收入库流程
  • 开票系统服务费全额抵扣会计分录怎么做
  • 一般纳税人确认收入含税吗
  • 营改增行业注释
  • 最新房产税消息2020
  • 个人所得税法规定可减征个税的情形有
  • 已抵扣发票如何查询开票明细
  • 会计所得税和税法所得税
  • 公司预付的货款怎么做账
  • 1697508560
  • 销售商品现金流量表项目
  • 付货款时从货款中扣除的返利怎样做账?
  • 资产负债表的编制方法
  • 旅游服务业账务处理办法
  • 家装行业如何确认收入
  • 获取当前位置被拒怎么办
  • 公司出售已经提完折旧的机器
  • 冲往年管理费用的账务处理是否涉及所得税
  • kindle屏幕黑斑
  • 报销差旅费会计科目怎么写
  • mcshield.exe是什么进程
  • 前端必会
  • 个体工商户和个人独资企业的区别
  • 专用发票货物名称开错可以吗
  • 研发支出什么时候转管理费用
  • ps中如何使用切片工具
  • phpcms怎么修改模板风格
  • springbootredis密码加密
  • 政府补贴流程
  • 还款利息
  • 其他收益算主营业务收入吗
  • 残保金滞纳金免征吗
  • 小规模纳税人都报什么税
  • access untagged
  • 在Windows平台上不属于命令ar-d的作用是
  • sqlserver实现离散组合算法
  • 注册资金只能增加不能减少吗
  • Windows下MySQL 5.6安装及配置详细图解(大图版)
  • 备用金支出没有发票怎么办
  • 持有至到期投资减值准备可以转回吗
  • 员工工资怎么计提
  • 运输公司赔偿账务处理
  • 没有计提坏账准备的情况下,应收账款的计税基础
  • 企业所得税留抵税额
  • 业务招待费礼品要扣个税吗
  • 预付卡销售和充值怎么做账
  • win7键盘没反应是怎么回事
  • 如何解决焦虑的心理
  • mac怎么打开macintosh
  • ngwatch.exe
  • glCopyBufferSubData
  • 使用jquery操作dom
  • [置顶] 混合、反走样、雾效、多边形偏移
  • activity的生命周期有哪些状态
  • Node.js中的什么模块是用于处理文件和目录的
  • 编写注册表文件
  • vue父子组件传值props
  • javascript 编译原理
  • JavaScript SweetAlert插件实现超酷消息警告框
  • jquery基本知识
  • 应税消费品通过什么科目核算
  • 国家税务局广东省电子税务局下载
  • 四川4050社保补贴政策什么时候发放
  • 开票项目信息分类查询
  • 湖北省电子税务局登录入口
  • 连云港税务局网站
  • 硅矿的合法开采方法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设