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

  • 众多知名大V都热衷这个运营方法,妙不可言(众多知名大v都有谁)

    众多知名大V都热衷这个运营方法,妙不可言(众多知名大v都有谁)

  • iphone13安装软件需要按两下(iphone13安装软件每次都要输入密码)

    iphone13安装软件需要按两下(iphone13安装软件每次都要输入密码)

  • 荣耀play可以升级鸿蒙系统吗(荣耀play可以升级鸿蒙系统3.0吗)

    荣耀play可以升级鸿蒙系统吗(荣耀play可以升级鸿蒙系统3.0吗)

  • windows11安全中心怎么关闭(windows11安全中心实时保护关不了)

    windows11安全中心怎么关闭(windows11安全中心实时保护关不了)

  • 电脑怎么强行结束应用(电脑怎么强行结束一个任务)

    电脑怎么强行结束应用(电脑怎么强行结束一个任务)

  • 戴尔g3按开机没反应(戴尔g3无法正常开机)

    戴尔g3按开机没反应(戴尔g3无法正常开机)

  • 西瓜视频原创与非原创的区别(西瓜视频原创与原创)

    西瓜视频原创与非原创的区别(西瓜视频原创与原创)

  • 微信号打标什么意思(微信号打标了有影响吗)

    微信号打标什么意思(微信号打标了有影响吗)

  • 苹果11侧边关不了机(苹果11侧边开关)

    苹果11侧边关不了机(苹果11侧边开关)

  • 快手极速版怎么横屏播放(快手极速版怎么取消绑定手机号)

    快手极速版怎么横屏播放(快手极速版怎么取消绑定手机号)

  • 微信被解绑手机号,是否能正常使用(微信被解绑手机号怎么找回)

    微信被解绑手机号,是否能正常使用(微信被解绑手机号怎么找回)

  • 本地下载工具在电脑的哪里(本地下载文件)

    本地下载工具在电脑的哪里(本地下载文件)

  • appleid是什么(怎么看自己的apple id是什么)

    appleid是什么(怎么看自己的apple id是什么)

  • phone xr能无线充电吗(xr也能无线充电)

    phone xr能无线充电吗(xr也能无线充电)

  • oneplusa5010这什么手机(oneplusa5000)

    oneplusa5010这什么手机(oneplusa5000)

  • 无线鼠标不用的时候要关掉吗(无线鼠标不用的时候怎么关闭)

    无线鼠标不用的时候要关掉吗(无线鼠标不用的时候怎么关闭)

  • 小艺可以改名字吗(小艺改名字叫什么)

    小艺可以改名字吗(小艺改名字叫什么)

  • ipad air和mini区别(ipad mini和ipad air区别)

    ipad air和mini区别(ipad mini和ipad air区别)

  • 升级到ios13怎么退回(怎么把ios升级到13)

    升级到ios13怎么退回(怎么把ios升级到13)

  • 淘宝津贴是什么意思(淘宝津贴计算公式)

    淘宝津贴是什么意思(淘宝津贴计算公式)

  • 苹果xr怎么设置分屏(苹果xr怎么设置双卡双待)

    苹果xr怎么设置分屏(苹果xr怎么设置双卡双待)

  • 荣耀v20是华为手机吗(华为v20是华为荣耀v20吗)

    荣耀v20是华为手机吗(华为v20是华为荣耀v20吗)

  • Vant UI 中 van-collapse 下拉折叠面板如何默认展开第一项

    Vant UI 中 van-collapse 下拉折叠面板如何默认展开第一项

  • vue3如何实现使用SortableJs插件进行表格内的数据项拖拽排序

    vue3如何实现使用SortableJs插件进行表格内的数据项拖拽排序

  • 一文总结图像生成必备经典模型(一)(图像的生成原理)

    一文总结图像生成必备经典模型(一)(图像的生成原理)

  • JS类型转换(js如何转换为数值型)

    JS类型转换(js如何转换为数值型)

  • 小规模纳税人增值税起征点
  • 业务招待费可以进项抵扣吗
  • 企业所得税税前扣除吗
  • 税金及附加减半征收政策2022最新
  • 投资者减除费用和工资薪金减除费用
  • 工厂外包加工项目
  • 事业单位资产划转流程
  • 其他综合收益税后净额影响净利润吗
  • 从业人数和资产的关系
  • 如何在电子税务局开发票
  • 哪些科目需要计提资产减值损失
  • 总公司可以给分公司买车吗
  • 换货补差价怎么补给商家
  • 分包工程款税率
  • 研发加计扣除的标准
  • 营改增后的民办养老院收入是否含增值税收入?
  • 工程完工进项税税务局不给退,走那个科目销毁
  • 审核费用发票需要发票吗
  • 一般纳税人两费减免会计分录
  • 退休人员再任职个人所得税
  • 雇佣临时工发生意外能追房东赔偿吗
  • 如何界定企业所得税的不征税收入与应税收入
  • 进项税和销项税税率一样吗
  • 纸巾可以开专票吗
  • 以前年度多做了收入怎样调账
  • 小规模纳税人含500万吗
  • 福利费的支付范围
  • 收到电子银行承兑汇票怎么做账务处理
  • 苹果手机电池低于多少需要更换
  • PRISMSVR.EXE - PRISMSVR是什么进程 有什么用
  • mac怎么设置屏幕保护壁纸
  • 分公司可以向总公司缴纳管理费吗
  • 财务冲抵如何处理
  • 土地增值税预征的计征依据=预收款-应预缴增值税税款
  • 长期借款还款
  • 发包工程补付工程款分录
  • 货物运输业增值税发票样本
  • 用php做计算
  • php发送post
  • OpenCV之 BGR、GRAY、HSV色彩空间&色彩通道专题 【Open_CV系列(三)】
  • php支付接口开发
  • 关于公司预支工资制度
  • 企业在什么情况下可以不交税
  • 购买工程物资是什么费用
  • 电子章打印不来
  • 减值准备为什么不影响影响资产余额
  • 微信,支付宝等第三方支付对货币的影响
  • sqlserver数据库中进行查询所使用的语言为
  • 合伙企业年底如何做账
  • 发票收款人和复核人可以是一个人吗
  • 扣除未结话费是什么意思
  • 房地产开发的土地分割
  • 会计中制造费用包括哪些内容
  • 补缴的以前年度的税费怎么记账
  • 未开票收入如何申报
  • 商场联营扣点的合作方式
  • pe市盈率法
  • 营改增后工程结算的账务处理
  • 电子行程单如何下载
  • 试制流程
  • 基本户转账法人会知道吗
  • 会计借贷帐
  • 小规模纳税人是开专票还是普票
  • 工业企业外购材料采购成本包括
  • MySQL删除重复数据只保留一条
  • windows vista build
  • windows2003文件服务器
  • ubuntu左侧菜单不见了
  • 苹果电脑怎么关掉已经打开的页面
  • linux滚动更新是什么
  • win7旗舰版玩dnf总是未响应
  • win8怎么用
  • jquery删除当前元素
  • jquery控制滚动条位置
  • shell脚本实现文件重命名
  • bootstrap日期控件背景为白
  • 小规模纳税人收到增值税专用发票怎么办
  • 陕西省国家励志奖学金证书查询入口
  • 报企业增值税
  • 工会经费上缴地方工会15%的规定
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设