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

  • 华为手环6pro和6nfc的区别(华为手环6pro和6有什么区别)

    华为手环6pro和6nfc的区别(华为手环6pro和6有什么区别)

  • 电脑任务栏被锁死怎么解除(电脑任务栏被锁定怎么解除快捷键)

    电脑任务栏被锁死怎么解除(电脑任务栏被锁定怎么解除快捷键)

  • 抖音极速版如何邀请新用户赚红包(抖音极速版如何绑定支付宝)

    抖音极速版如何邀请新用户赚红包(抖音极速版如何绑定支付宝)

  • 钉钉重新提交作业老师会知道吗(钉钉重新提交作业老师知道吗)

    钉钉重新提交作业老师会知道吗(钉钉重新提交作业老师知道吗)

  • iPhone11苹果微信7.0.4怎么改提示音(苹果11微信新功能)

    iPhone11苹果微信7.0.4怎么改提示音(苹果11微信新功能)

  • 消息已发出但被对方拒收是拉黑还是删除(消息已发出但被对方拒收了是被删除好友了吗)

    消息已发出但被对方拒收是拉黑还是删除(消息已发出但被对方拒收了是被删除好友了吗)

  • 为什么酷狗铃声视频设置了还是不能用(为什么酷狗铃声不能拷贝到库乐队)

    为什么酷狗铃声视频设置了还是不能用(为什么酷狗铃声不能拷贝到库乐队)

  • 微信聊天记录怎么彻底删除永不恢复(微信聊天记录怎么转发)

    微信聊天记录怎么彻底删除永不恢复(微信聊天记录怎么转发)

  • 腾讯会议用流量多吗(腾讯会议用流量开视频半个小时要多少流量)

    腾讯会议用流量多吗(腾讯会议用流量开视频半个小时要多少流量)

  • 加密和解密密钥不同的密码体制称为(加密和解密密钥不同的加密体制)

    加密和解密密钥不同的密码体制称为(加密和解密密钥不同的加密体制)

  • 手机漏液换内屏还是外屏(手机漏液换内屏会好吗)

    手机漏液换内屏还是外屏(手机漏液换内屏会好吗)

  • soul举报人对方能看到吗(soul举报人对方会封号吗)

    soul举报人对方能看到吗(soul举报人对方会封号吗)

  • iphone11电池容量多大(Iphone11电池容量79%)

    iphone11电池容量多大(Iphone11电池容量79%)

  • word2007文档怎么打印双面(word2007文档怎么打印)

    word2007文档怎么打印双面(word2007文档怎么打印)

  • 淘宝实名制可以改吗(淘宝实名制可以注销吗)

    淘宝实名制可以改吗(淘宝实名制可以注销吗)

  • 多媒体数据压缩技术的三个主要指标(多媒体数据压缩编码方法可分为两大类)

    多媒体数据压缩技术的三个主要指标(多媒体数据压缩编码方法可分为两大类)

  • 拼多多旺旺号怎么查(拼多多的旺旺号)

    拼多多旺旺号怎么查(拼多多的旺旺号)

  • 苹果xs怎么广角镜头(苹果xs的广角)

    苹果xs怎么广角镜头(苹果xs的广角)

  • 华为matex屏幕是塑料的吗

    华为matex屏幕是塑料的吗

  • vivo手机散热在哪里(vivos7手机散热)

    vivo手机散热在哪里(vivos7手机散热)

  • 显示未接通是被挂断电话吗(未接通原因)

    显示未接通是被挂断电话吗(未接通原因)

  • 小米手机保修期内维修要钱吗(小米手机保修期内哪些免费)

    小米手机保修期内维修要钱吗(小米手机保修期内哪些免费)

  • 陌陌停车游戏在哪(陌陌停车游戏在哪里看帖了谁的车)

    陌陌停车游戏在哪(陌陌停车游戏在哪里看帖了谁的车)

  • 抖音怎么删除一小段(抖音怎么删除一段)

    抖音怎么删除一小段(抖音怎么删除一段)

  • windows11如何关闭和打开设备加密?win11关闭和打开设备加密的方法(windows11如何关闭病毒和威胁防护)

    windows11如何关闭和打开设备加密?win11关闭和打开设备加密的方法(windows11如何关闭病毒和威胁防护)

  • 二十场数学建模竞赛【详细思路+代码】总结(数学建模 比赛)

    二十场数学建模竞赛【详细思路+代码】总结(数学建模 比赛)

  • 受雇于两家公司个税怎么汇算清缴
  • 增值税无票收入可以抵扣
  • 小规模纳税人收到专票后如何处理
  • 公允价值变动损益属于当期损益吗
  • 个人所得税app是什么意思
  • 预付款项包括哪些项目
  • 施工单位奖金分配方案
  • 商贸公司购买的手提袋怎么入账
  • 股东用技术股出售股票
  • 银行利息的现金流量项目是什么
  • 房屋及建筑物原值计算
  • 房屋租赁合同样本书
  • 个人劳务费怎么开票
  • 2018年建筑增值税税率表
  • 未达起征点销售额和其他免税销售额
  • 普票冲红需要收回全部联次吗
  • 培训学校税收筹划
  • 采用审计软件有什么优缺点
  • 没有及时去做财务会计制度备案怎么办?
  • 个税免税收入和不征税收入
  • 一般纳税人企业所得税如何计算
  • 委托采购是什么意思
  • 建筑工地伙食费会计分录
  • 残疾小伙小强
  • 进项税转出补交的增值税和附加税可以税前扣除吗
  • 物业公司成本结转方案
  • 进项税额转出如何做账分录
  • 劳务费费用
  • PHP:pg_fetch_array()的用法_PostgreSQL函数
  • 无形资产的摊销年限不得低于多少年
  • vue数据实时更新
  • 三方债权债务抵消如何开发票
  • 好奇地看着我
  • 阿里前端做什么
  • 有限责任公司股东对公司债务承担
  • 车辆维修费怎么做分录
  • 朝圣者将风马旗扔向甘登寺上方的空中为新年祈福,中国西藏 (© Ian Cumming/plainpicture)
  • php中preg_replace_callback函数简单用法示例
  • 应收账款的平均余额怎么计算
  • 计提坏账准备会影响应收账款账面价值吗
  • wordpress jquery
  • 支付工程款的会计科目怎么写
  • 一般纳税人作废发票的流程
  • 零申报步骤
  • 私企固定资产报废程序
  • 实收资本需要明细科目吗
  • 建设单位支付给施工单位的民工工资
  • 发票冲红后税款一定会退回吗
  • 电脑配件入账
  • 账户外币转人民币
  • 外账需要计提存利息吗
  • 产品质量问题有赔偿吗
  • 虚增利润怎么调整
  • 会计为什么要计提费用
  • 承兑个人贴现如何操作
  • 建筑行业预收账款预缴税
  • 如何设计高效合理的未来课程
  • win10自定义壁纸在哪个文件夹里
  • ubuntu下mysql的常用命令
  • linux系统的
  • windowxp怎么取消开机密码
  • win7如何设置屏幕不黑屏
  • linux用户是什么意思
  • win10正版和盗版区别大吗
  • win7系统电脑怎么连接wifi
  • win7系统运行红警黑屏有声音
  • cocos2dx schedule
  • 教你怎样用竹子搭棚子
  • linux中vi命令是什么意思
  • jQuery基于xml格式数据实现模糊查询及分页功能的方法
  • linux释放cache
  • android 加载大量图片
  • jquery 使用
  • javascript下拉列表怎么做
  • 河南省地方税务局房产税管理办法
  • 消费税申报详细流程图
  • 滞留票税务局会罚款多少
  • 无锡第三税务分局
  • 税控盘如何查询季度统计
  • 吉林省税务局发票流向查询系统
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设