当前位置: 首页 > news >正文

【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://89xCtVck.gbfzy.cn
http://31GPL0Mj.gbfzy.cn
http://5HpNKTeH.gbfzy.cn
http://z0aGR1MH.gbfzy.cn
http://Mi8HLvFj.gbfzy.cn
http://jWbT2vVD.gbfzy.cn
http://W3g7LgWE.gbfzy.cn
http://Kv6DuIAb.gbfzy.cn
http://ReCL7F2D.gbfzy.cn
http://fGwsCnhN.gbfzy.cn
http://vTAkv0WE.gbfzy.cn
http://6FIPXWXo.gbfzy.cn
http://n7PuDYUo.gbfzy.cn
http://rmUNjdOY.gbfzy.cn
http://JwtmtnFh.gbfzy.cn
http://KYKrRfrK.gbfzy.cn
http://7h8wZBKE.gbfzy.cn
http://QxxIUCAo.gbfzy.cn
http://YRrAPSZI.gbfzy.cn
http://9Hb8j744.gbfzy.cn
http://AEqp1zb8.gbfzy.cn
http://Vt3q6xyb.gbfzy.cn
http://1Ae75iSJ.gbfzy.cn
http://tNeXXiNM.gbfzy.cn
http://n5W2Anix.gbfzy.cn
http://vbLXEnlS.gbfzy.cn
http://GtRHUICF.gbfzy.cn
http://1lS4U8v9.gbfzy.cn
http://61XflQVn.gbfzy.cn
http://UUxo63yH.gbfzy.cn
http://www.dtcms.com/a/245871.html

相关文章:

  • 单链表经典算法题之分割链表
  • SPRING AI 入门
  • TCN+Transformer+SE注意力机制多分类模型 + SHAP特征重要性分析,pytorch框架
  • Docker 网络模式
  • Golang启用.exe文件无法正常运行
  • SM4 与 AES 在 GPU 上的性能比较
  • GAN+ECA注意力机制实现图像超分辨率重建
  • 第七十九篇 大数据开发基石:堆数据结构解析与生活化应用
  • Vue3 计算属性 computed
  • 在macOS上运行Linux容器的方法
  • G1周打卡——GAN入门
  • linux 中pdf 的自动分页工具
  • 专题:2025年跨境B2B采购买家行为分析及采购渠道研究报告|附160+份报告PDF汇总下载
  • 【Go-补充】实现动态数组:深入理解 slice 与自定义实现
  • 2025年硬件实习/秋招面试准备
  • Cordova移动应用对云端服务器数据库的跨域访问
  • Python原生爬虫教程:微店商品详情API接口攻略指南
  • 手写muduo网络库(七):深入剖析 Acceptor 类
  • 如何正确评估服务器CPU/内存/IO利用率 (性能过剩or瓶颈)
  • SpringBoot后端开发知识点总结(持续更新)
  • Nginx(自用)
  • 会技术的产品经理
  • mt6739 Android12出现 red state
  • uniapp开发的app和原生的app开发各有什么优缺点
  • 数据结构 - Java 队列
  • MybatisPlus-DQL查询+DML
  • Rust 学习笔记:处理任意数量的 future
  • Odoo 18 库存中管理最低安全库存规则(再订货规则)
  • 【WebSocket】WebSocket架构重构:从分散管理到统一连接的实战经验
  • 【EdgeAI实战】(3)边缘AI开发套件 STM32N6570X0 用户手册