【threejs】每天一个小案例讲解:常见材质

  代码仓

GitHub - TiffanyHoo/three_practices: Learning three.js together!

可自行clone,无需安装依赖,直接liver-server运行/直接打开chapter01中的html文件

运行效果图

知识要点

1. MeshBasicMaterial(基础网格材质)

• 特点:不响应光照,仅显示颜色或纹理,性能消耗低。

• 适用场景:静态背景、2D界面元素、不需要光影效果的模型(如线框模型)。

• 关键参数:

◦ color:设置基础颜色(如0xff0000为红色)。

◦ wireframe:是否以线框模式显示(true/false)。

2. MeshStandardMaterial(标准网格材质)

r71版本开始引入

• 特点:基于物理渲染(PBR),支持金属度、粗糙度等物理属性,响应环境光和直射光,效果更真实。

• 适用场景:大多数需要真实光影效果的模型(如金属、石材、塑料等)。

• 关键参数:

◦ metalness:金属度(0为非金属,1为金属)。

◦ roughness:粗糙度(0为光滑,1为粗糙)。

◦ map:纹理贴图(如木纹、石纹)。

3. MeshPhongMaterial(冯氏材质)

• 特点:经典光照模型,高光效果明显,计算速度比标准材质快,但真实感稍弱。

• 适用场景:需要高光效果的非金属物体(如车漆、光滑塑料)。

• 关键参数:

◦ specular:高光颜色。

◦ shininess:高光强度(值越大,高光点越小越亮)。

4. MeshLambertMaterial(兰伯特材质)

• 特点:响应光照,但无高光效果,表面呈哑光质感,光线均匀漫反射。

• 适用场景:布料、纸张、泥土等无光泽物体。

• 关键参数:

◦ color:基础颜色,受光照影响会变化。

5. SpriteMaterial(精灵材质)

• 特点:用于2D精灵对象(始终面向相机),常作为粒子效果或广告牌。

• 适用场景:烟雾、火焰、草丛等需要快速渲染的2D元素。

• 关键参数:

◦ map:精灵纹理(如火焰贴图)。

◦ sizeAttenuation:是否随距离缩放大小(true/false)。

6. ShaderMaterial(着色器材质)

• 特点:自定义GLSL着色器代码,灵活性极高,可实现复杂视觉效果(如动态流体、发光效果)。

• 适用场景:特效、动画、个性化渲染需求。

• 使用要点:需编写vertexShader(顶点着色器)和fragmentShader(片元着色器),并通过uniforms传递参数。

材质选择建议

• 追求真实感:优先用MeshStandardMaterial(PBR)。

• 性能优先或无光照需求:用MeshBasicMaterial或MeshLambertMaterial。

• 快速实现高光效果:选MeshPhongMaterial。

• 2D粒子或广告牌:用SpriteMaterial。

• 自定义特效:使用ShaderMaterial。

核心运行代码

// create a frame
var frameGeometry = new THREE.BoxGeometry(4, 4, 4);
var frameMaterial = new THREE.MeshBasicMaterial({color: 0xff0000, wireframe: true});
var frame = new THREE.Mesh(frameGeometry, frameMaterial);// position the frame
frame.position.x = 10;
frame.position.y = 2;
frame.position.z = 0;// add the frame to the scene
scene.add(frame);

参考官网:https://threejs.org/docs/#api/en/materials

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/84597.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot后端与鸿蒙的结合

软件:鸿蒙devceo3.1,springboot项目采用IDEA 目的: 1、结合springboot后端与鸿蒙的结合运用。 2、Log日志查看console语句的信息。 3、引入 import http from ohos.net.http。 4、调用springboot后端提供的链接发送post 5、TextInput的…

minio集群通过mc mirror命令进行定时备份,支持X86和arm两种架构

文章目录 前言一、思路二、使用步骤1.下载mc二进制文件2.手动测试备份命令3.配置定时任务4.成功截图 总结 前言 通过mc mirror命令对minio集群进行定时备份。 一、思路 通过mc mirror命令配合crond定时任务进行周期性的备份 二、使用步骤 1.下载mc二进制文件 wget https:…

三大能力升级,为老项目重构开辟新路径

在软件技术飞速迭代的今天,老项目重构是开发者们绕不开的难题。接口实现缺失、业务逻辑矛盾、架构规划偏离等问题如同拦路虎,让重构工作举步维艰。而传统的 AI 辅助方式,因未充分关联项目实际情况,犹如 “空中造楼”,难…

AES加密

AES加密算法详解 AES(Advanced Encryption Standard)是一种对称密钥分组加密算法,用于保护电子数据的安全性。其核心特点是通过相同的密钥进行加密和解密,属于对称加密体系。。以下从核心特性、加密流程及安全性三方面展开说明&a…

关于联咏(Novatek )自动曝光中Lv值的计算方式实现猜想

目录 一、常见Lv对应的实际场景 二、常见光圈值 三、最小二乘法计算SV中的系数K

[docker]镜像操作:关于docker pull、save、load一些疑惑解答

在使用 Docker 的过程中,镜像管理是极其重要的一环。无论是拉取、保存还是加载镜像,每一个步骤都可能遇到一些疑问或者误区。 本文将结合实际案例,对常见的 Docker 镜像操作问题进行系统性总结,帮你更好地理解 Docker 镜像的工作机…

SFTrack:面向警务无人机的自适应多目标跟踪算法——突破小尺度高速运动目标的追踪瓶颈

【导读】 本文针对无人机(UAV)视频中目标尺寸小、运动快导致的多目标跟踪难题,提出一种更简单高效的方法。核心创新在于从低置信度检测启动跟踪(贴合无人机场景特性),并改进传统外观匹配算法以关联此类检测…

什么是渗透测试,对网站安全有哪些帮助?

在网络安全的战场中,网站如同暴露在数字世界的堡垒,时刻面临着黑客攻击的威胁。而渗透测试,就像是为网站进行一场 “模拟攻防演练”,它以黑客的思维和手段,主动出击,探寻网站潜在的安全漏洞。究竟什么是渗透…

KU115LPE-V10型FPGA加速卡

KU115LPE-V10是一款基于PCI Express总线通信的FPGA加速类产品。 该产品基于Xilinx公司的的高性能Kintex Ultra-Scale FPGA设计,配置最大两组DDR4缓存单元,每组最大支持4GB容量,72bit(包含ECC,8bit)&#x…

【笔记】Blockchain

区块链Blockchain是一种分布式数据库技术,其核心特点在于去中心化、不可篡改和透明性。它通过一系列按照时间顺序排列的数据块(即“区块”)组成,每个数据块都包含了一定时间内的一系列信息交易,并通过密码学方法确保这…

GitHub Desktop Failure when receiving data from the peer

目录 安装Github Desktop简易省流助手 解决 Git 克隆时出现的 "Failure when receiving data from the peer" 错误1. 网络连接问题原因:解决办法: 2. Git 配置问题原因:解决办法: 3. GitHub 服务故障原因:解…

疏锦行Python打卡 DAY 27 函数专题2:装饰器

def logger(func):def wrapper(*args, **kwargs):print(f"开始执行函数 {func.__name__},参数: {args}, {kwargs}")result func(*args, **kwargs)print(f"函数 {func.__name__} 执行完毕,返回值: {result}")return resultreturn wr…

大模型布署如何选择GPU资源?

当前主流GPU型号及其显存大小(显存“大小”)的详细分类汇总,结合消费级、专业工作站级及数据中心级三大应用场景,数据综合自行业常用型号及最新产品信息(截至2025年6月): 🎮 一、消费…

目标检测——YOLOv12算法解读

论文:YOLOv12: Attention-Centric Real-Time Object Detectors (2025.2.18) 作者:Yunjie Tian, Qixiang Ye, David Doermann 链接:https://arxiv.org/abs/2502.12524 代码:https://github.com/sunsmarterjie/yolov12 YOLO系列算法…

JavaEE-Maven

maven Maven是⼀个项⽬管理⼯具, 通过pom.xml⽂件的配置获取jar包,⽽不⽤⼿动去添加jar包。 maven简单, ⽅便, 提⾼我们的开发效率, 减少我们的开发Bug。 IDEA本⾝已经集成了Maven, 我们可以直接使⽤, ⽆需安装。 创建maven项目 name是项目名 location是项目路径 …

使用 C/C++的OpenCV 实时播放火柴人爱心舞蹈动画

使用 C/OpenCV 实时播放火柴人爱心舞蹈动画 本文将介绍如何使用 C/OpenCV 库实时创建一个动画窗口:一个火柴人捧着爱心跳舞,同时另一个爱心从远处飞来并逐渐变大。动画会实时在 OpenCV 窗口中播放,直到用户按下按键退出。 准备工作 确保你…

复现论文报错解决

文章目录 一、 The detected CUDA version (12.9) mismatches the version that was used to compile PyTorch (11.8)二、error -- unsupported GNU version! gcc versions later than 11 are not supported!三、Unknown encoder libx264四、下载速度太慢、无法递归下载项目 一…

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …

MPMA:Preference Manipulation Attack Against Model Context Protocol

概要 MCP作为提供给LLM作为工具调用的标准化协议被广泛应用,但是MCP在安全方面还比较脆弱。本文提出了一种MPMA攻击方法通过在工具的名字或描述中插入具有操控性的文字、短语来操控LLM选择MCP server的过程。 不了解MCP的具体细节可以看看我写的这篇文章MCP 场景…

Vim 替换命令完整学习笔记

Vim 替换命令完整学习笔记 文章目录 Vim 替换命令完整学习笔记1. 核心概念2. 替换命令基本语法2.1 基本格式2.2 分隔符选择2.3 范围指定 3. 替换标志详解3.1 基础标志3.2 高级标志3.3 标志组合 4. 正则表达式在替换中的应用4.1 基础正则表达式4.2 字符类和量词4.3 分组和引用 5…