Three.js贴图加载与环境遮蔽贴图强度设置(五)

embedded/2025/1/19 17:10:17/

在Three.js中,贴图加载与环境遮蔽贴图强度设置是创建逼真3D视觉效果的关键步骤。通过利用Three.js的TextureLoader,开发者可以轻松加载各种纹理贴图,如颜色贴图、透明度贴图以及环境遮蔽(Ambient Occlusion, AO)贴图,从而增强模型的细节和真实感。环境遮蔽贴图特别重要,因为它能够模拟物体表面因光照不足而产生的阴影效果,进而提升场景的深度和立体感。

在加载贴图后,调整环境遮蔽贴图的强度是一个至关重要的环节。这一设置允许开发者根据场景需求,精细调控AO贴图对最终渲染效果的影响程度。通过合理设置AO贴图的强度,可以在不增加额外光照计算负担的前提下,显著提升3D模型的视觉质量。本篇文章中主要讲述如何实现贴图加载及环境遮蔽贴图强度设置功能,同时提前说明在开始实现该功能之前,需要具备创建场景知识,具体内容请详看:Three.js+Vue3+Vite创建第一个场景(一)

一、贴图要素

在操作之前我们先来了解下需要使用到的一些基本要素

PlaneGeometry

平面缓冲几何体,一个用于生成平面几何体的类

TextureLoader

加载texture的一个类。 内部使用ImageLoader来加载文件

load

加载纹理文件

二、实现贴图

1.创建平面缓冲几何体

//创建一个平面缓冲几何体const planeGeometry = new THREE.PlaneGeometry(1, 1)

2.创建平面材质

//创建平面材质const planeMaterial = new THREE.MeshBasicMaterial({color: 0xffffff})

 3.创建平面网格

//创建平面网格const plane = new THREE.Mesh(planeGeometry, planeMaterial)
//添加平面网格到场景中scene.add(plane)

添加完以上代码后我们可以在界面中看到一个白色的平面几何体

4.创建纹理加载器

接下来才是实现贴图的关键

//创建纹理加载器const textureLoader = new THREE.TextureLoader()

5.加载纹理

//加载纹理--这里我随便添加了一个图片const texture = textureLoader.load('./public/textures/blue-img.jpg')

6.设置纹理贴图

我们在刚刚穿件的材质中设置纹理贴图

const planeMaterial = new THREE.MeshBasicMaterial({color: 0xffffff,//设置纹理贴图map: texture,//允许透明度transparent: true})

7.加载ao贴图 

在上述的基础上,我们继续添加环境贴图,即使用aoMap属性,

//加载ao贴图--也是随便使用的一张图片const aoMap = textureLoader.load('./public/textures/sprites/ball.png')

8.设置ao贴图 

  const planeMaterial = new THREE.MeshBasicMaterial({color: 0xffffff,//设置纹理贴图map: texture,//允许透明度transparent: true,//设置ao贴图aoMap: aoMap})

 9.添加gui控制器

由于上述添加的ao贴图在界面中显示的不是和明显,所以这里添加了GUI

//创建guiconst gui = new GUI()
//添加aoMapIntensity属性gui.add(planeMaterial, 'aoMapIntensity').min(0).max(1).name('ao强度')


http://www.ppmy.cn/embedded/155275.html

相关文章

神经网络中的“池化”是什么意思?

目录 一、为什么叫“池化”? 二、池化的作用 三、常见的池化方法 四、为什么不叫“过滤”或“压缩”? 池化(Pooling)之所以叫作“池化”,是因为它的操作过程和结果类似于从一个“池子”中提取或汇总信息的过程。这…

Java List过滤 Stream API filter() 应用

Java 8 前用 for-each 循环或 Iterator 处理集合,引入 Stream API 后可更简洁、声明式地处理集合,在复杂数据处理时更便捷 1. Stream与Filter基础 Stream 是从支持数据源获取数据的序列,有强大 API 可执行中间和最终操作,能内部…

如何发布自己的第一个Chrome扩展程序

如何发布自己的Chrome扩展程序 只需要六步即可完成Chrome扩展程序的发布 (1)首先打开google chrome 应用商城注册开发者账号的页面 (2)现在进行一个绑卡支付5美元的一次性注册费用即可。【不知道如何绑卡的支付的,文…

单片机数码管动态显示

在学习 51 单片机的过程中,数码管动态显示是一个非常基础且重要的知识点。通过数码管,我们可以直观地展示数字、字符等信息,在很多电子设备中都有广泛应用,比如电子时钟、数字万用表等。本文将详细介绍 51 单片机数码管动态显示的…

国产编辑器EverEdit - 复制为RTF

1 复制为RTF 1.1 应用背景 在写产品手册或者其他文档时,可能会用到要将产品代码以样例的形式放到文档中,一般的文本编辑器拷贝粘贴到Word中也就是普通文本,没有语法着色,这样感观上不是太好,为了让读者的感观更好一点…

Redis 性能优化:多维度技术解析与实战策略

文章目录 1 基准性能2 使用 slowlog 优化耗时命令3 big key 优化4 使用 lazy free 特性5 缩短键值对的存储长度6 设置键值的过期时间7 禁用耗时长的查询命令8 使用 Pipeline 批量操作数据9 避免大量数据同时失效10 客户端使用优化11 限制 Redis 内存大小12 使用物理机而非虚拟机…

Spring Boot 集成 MongoDB:启动即注入的便捷实践

引言 在现代后端开发中,Spring Boot 凭借其快速开发、自动配置等特性深受开发者喜爱,而 MongoDB 以其灵活的文档存储结构和出色的扩展性,成为处理非结构化数据的首选数据库之一。将两者结合,利用 Spring Boot 的自动配置功能&…

半导体、芯片、人工智能、智能驾驶汽车的趋势

1. 市场增长与需求 汽车半导体市场:预计到2025年,中国汽车半导体市场仍将保持稳健增长态势,AI和能源将成为未来最重要的两大变革因素。2023年中国汽车电子芯片行业市场规模约为820.8亿元,预计2024年有望增至905.4亿元左右。随着新…