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

  • 并不是所有企业都适合微信营销的,为什么?(并不是所有企业都需要f ssc)

    并不是所有企业都适合微信营销的,为什么?(并不是所有企业都需要f ssc)

  • iphone设置铃声的方法(苹果设置铃声音乐)

    iphone设置铃声的方法(苹果设置铃声音乐)

  • 咪咕特级会员功能费可以取消吗(咪咕特级会员功能费是什么)

    咪咕特级会员功能费可以取消吗(咪咕特级会员功能费是什么)

  • 华为手机怎么单手模式切换(华为手机怎么单独设置一个人响铃)

    华为手机怎么单手模式切换(华为手机怎么单独设置一个人响铃)

  • 打赏骑手他们能收到吗(打赏骑手他们能看到吗)

    打赏骑手他们能收到吗(打赏骑手他们能看到吗)

  • QQ默契问答怎么找(qq默契问答怎么删除)

    QQ默契问答怎么找(qq默契问答怎么删除)

  • 淘宝补差价链接怎么弄(淘宝补差价链接选什么类目)

    淘宝补差价链接怎么弄(淘宝补差价链接选什么类目)

  • .hex用什么软件打开(什么软件能打开hex文件)

    .hex用什么软件打开(什么软件能打开hex文件)

  • iphonexs面容id录入不了(苹果x面容录入)

    iphonexs面容id录入不了(苹果x面容录入)

  • 超广角摄像头有什么用(超广角摄像头有什么作用)

    超广角摄像头有什么用(超广角摄像头有什么作用)

  • 不属于硬件系统的是(不属于硬件系统的部件)

    不属于硬件系统的是(不属于硬件系统的部件)

  • 苹果7不能发语音不能打电话(苹果7不能发语音不能打电话没有免提)

    苹果7不能发语音不能打电话(苹果7不能发语音不能打电话没有免提)

  • ppt添加标题怎么去掉(ppt添加标题怎么添加)

    ppt添加标题怎么去掉(ppt添加标题怎么添加)

  • 苹果11没有指纹解锁方便吗(苹果11没有指纹锁吗)

    苹果11没有指纹解锁方便吗(苹果11没有指纹锁吗)

  • 华为flaal10啥型号(华为fla-tl10什么型号)

    华为flaal10啥型号(华为fla-tl10什么型号)

  • id和ip有什么区别(id和pid的区别)

    id和ip有什么区别(id和pid的区别)

  • 红米note7pro无故黑屏(红米note7pro无故关机)

    红米note7pro无故黑屏(红米note7pro无故关机)

  • 苹果怎么设置面容支付(苹果怎么设置面容下载app)

    苹果怎么设置面容支付(苹果怎么设置面容下载app)

  • 手机怎么剪辑视频片段并拼接(手机怎么剪辑视频做成小视频)

    手机怎么剪辑视频片段并拼接(手机怎么剪辑视频做成小视频)

  • 手机sn码代表什么意思(手机sn码是)

    手机sn码代表什么意思(手机sn码是)

  • 魔筷星选开通要收费吗(开通魔筷星选还用交保证金吗)

    魔筷星选开通要收费吗(开通魔筷星选还用交保证金吗)

  • 怎么注销立刷账号(如何取消立刷注册信息)

    怎么注销立刷账号(如何取消立刷注册信息)

  • md788ch/b是什么型号(md788ch/b是什么型号多少钱)

    md788ch/b是什么型号(md788ch/b是什么型号多少钱)

  • 如何调高vivo手机画质(如何调高vivo手机像素)

    如何调高vivo手机画质(如何调高vivo手机像素)

  • 共享单车怎么结束行程(共享单车怎么结算支付)

    共享单车怎么结束行程(共享单车怎么结算支付)

  • 闲鱼永久封号怎么办(闲鱼永久封号怎么可以解除)

    闲鱼永久封号怎么办(闲鱼永久封号怎么可以解除)

  • Matery主题自定义(一)黑夜模式(华为mate主题)

    Matery主题自定义(一)黑夜模式(华为mate主题)

  • 资源税征收原则
  • 对公账户余额和实际不符
  • 已经开了发票需要退款怎么处理
  • 个体注销了名下的车辆
  • 粗纤维测定仪使用方法
  • 企业所得税研发费用怎么填
  • 企业购入车辆会计分录
  • 事业单位库存物品
  • 计提企业年度所得税
  • 来料加工复出口增值税政策
  • 进口货物报关费可以计入制造费用
  • 增值税专票5%税率
  • 福利费的发票可以开什么内容
  • 营改增的案例分析
  • 个税系统中允许捐赠比例是多少?
  • 旅行社的税
  • 保证金利息收入怎么开票
  • 公司社保和公积金没有足额缴纳
  • 利润表适用执行小企业
  • 建筑公司异地预缴增值税
  • 预付账款收不回来摘要怎么写
  • 企业生产销售白酒取得的下列款项中,应并入
  • 销售价格调整
  • 开机默认开启数字键
  • 如何用home
  • pps影音怎么看电视直播
  • 普通发票红冲需要填信息表吗
  • php正则函数内容匹配
  • Chateau de Castelnaud in Perigord, France (© Peter Adams/Offset by Shutterstock)
  • 商业零售企业存货非正常损失
  • jetson nano nvidia-smi
  • php数组实现原理
  • 加计扣除减免政策
  • 外经交的个税如何计算
  • php常用字符串
  • mysql跨库join
  • php一个文件搞定两个文件
  • 自己的智能ai聊天怎么用
  • ai复制命令
  • css5个定位
  • .gp4
  • Laravel 5.3 学习笔记之 安装
  • 出口退税抵减应计入哪里
  • 小规模企业出售汽车如何交税
  • 如何关闭mysqld
  • mysql内存使用详解
  • 善意取得虚开发票罪认定
  • 跨年认证原材料是什么
  • 收到的现金折扣
  • 代金券抵帐怎么退款
  • 待抵扣进项税会计分录实操
  • 限定性净资产的例子有哪些
  • 契税为什么计入成本费用
  • 业务收入和营业收入关系
  • 事业单位可以报考事业单位吗
  • 报销单扣除金额什么意思
  • 企业进口外汇额度限制
  • 应收账款和坏账准备的解题思路
  • 投资回报怎么写
  • 日记账是否必须全部建立
  • 微软历代操作系统
  • xp系统怎么打开设置
  • ubuntu安装linux五笔输入法
  • vmware vnc连接
  • 怎么从win8装回win7
  • win10周年更新版是什么意思
  • 怎么打开windows移动中心
  • ES6 javascript中Class类继承用法实例详解
  • 修改安卓app权限教程
  • OKHttp源码解析-ConnectionPool对Connection重用机制&Http/Https/SPDY协议选择
  • js 模态对话框和对话框
  • 生成0-100的随机数,直到生成88为止,停止循环
  • unity数据结构和算法
  • android:Background线程池和UiThread线程池
  • js debounce实现
  • listview提高效率
  • android基础入门教程
  • 成都高新区税务局办税服务厅电话
  • 国税总局云南省税务局官网
  • 纳税服务理念创新不足
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设