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

【ThreeJs】【材质Material】核心材质参数解析手册

Three.js 核心材质参数解析手册

以下材质按「常用优先级」排序,参数分为「通用基础参数」和「材质专属参数」,方便按需查找。

一、MeshBasicMaterial(基础材质)

核心特点:完全不受光照影响,仅显示纯色/纹理,性能最优。
适用场景:2D效果、线框调试、不需要光照的简单图形(如UI元素、纯色块)。

1. 通用基础参数

参数名类型取值范围/示例作用说明
colorColor/Number/String0xff0000"#ff0000"new THREE.Color('red')材质基础颜色,会覆盖纹理的色相(若同时用map)。
transparentBooleantrue/false(默认false是否启用透明度。必须设为trueopacity才生效
opacityNumber0~1(默认1)整体透明度,0=完全透明,1=完全不透明。
wireframeBooleantrue/false(默认false是否将几何体渲染为线框(仅显示顶点连线),适合调试模型结构。
sideNumberTHREE.FrontSide(默认)
THREE.BackSide
THREE.DoubleSide
控制渲染几何体的「面」:
- FrontSide:只渲染正面(节省性能)
- DoubleSide:正反面都渲染(如透明物体)
mapTexturenew THREE.TextureLoader().load('img.png')纹理贴图,会覆盖color的纯色显示,适合给物体贴图片(如贴纸、花纹)。
alphaMapTexturemap透明度贴图(灰度图):白色区域不透明,黑色区域透明,适合精细透明效果(如镂空花纹)。
visibleBooleantrue/false(默认true控制材质是否可见(隐藏时不渲染,比删除物体更高效)。

2. 专属参数(无)

因完全不受光照影响,无光照相关参数,参数体系最简单。

二、MeshStandardMaterial(标准PBR材质)

核心特点:基于物理的渲染(PBR),模拟真实世界材质(金属、塑料等),必须配合光源使用(否则显示黑色)。
适用场景:绝大多数3D场景(如产品模型、角色、场景道具),追求真实质感。

1. 通用基础参数

同「MeshBasicMaterial」的color/transparent/opacity/wireframe/side/map/alphaMap/visible,作用完全一致。

2. 专属PBR参数(核心)

参数名类型取值范围/示例作用说明
roughnessNumber0~1(默认0.5)控制材质的「粗糙程度」:
- 0:完全光滑(镜面反射,如玻璃、金属)
- 1:完全粗糙(漫反射,如墙面、布料)
metalnessNumber0~1(默认0.5)控制材质的「金属质感」:
- 0:非金属(如塑料、石头,反射弱且颜色受color影响)
- 1:纯金属(反射强,color仅影响反射色调)
roughnessMapTexturemap粗糙度贴图(灰度图):白色区域更粗糙,黑色区域更光滑,实现局部质感差异(如金属上的划痕)。
metalnessMapTexturemap金属度贴图(灰度图):白色区域为金属,黑色区域为非金属,实现混合材质(如带金属边框的塑料壳)。
normalMapTexturemap法线贴图:通过RGB值模拟表面凹凸(无需修改几何体),提升细节(如木纹、皮革纹理)。
emissiveColor/Number/Stringcolor(默认0x000000自发光颜色:不受光源影响,模拟发光效果(如LED灯、屏幕),亮度可通过emissiveIntensity调节。
emissiveIntensityNumber0~∞(默认1)自发光强度,值越大发光越亮(避免过大导致过曝)。
aoMapTexturemap环境光遮蔽贴图(灰度图):黑色区域模拟阴影(如物体缝隙、凹陷),增强立体感。

三、MeshLambertMaterial(漫反射材质)

核心特点:支持基础漫反射(受光源影响),无高光效果,计算量小(性能优于MeshStandardMaterial)。
适用场景:低端设备、不需要高光的场景(如卡通背景、简单几何体)。

1. 通用基础参数

同「MeshBasicMaterial」的color/transparent/opacity/wireframe/side/map/alphaMap/visible

2. 专属光照参数

参数名类型取值范围/示例作用说明
ambientColor/Number/Stringcolor(默认0xffffff环境光反射颜色:控制材质在环境光下的亮度(已逐步被color替代,建议直接用color)。
emissiveColor/Number/Stringcolor(默认0x000000自发光颜色:同MeshStandardMaterial,不受光源影响。
emissiveIntensityNumber0~∞(默认1)自发光强度:同MeshStandardMaterial。
lightMapTexturemap光照贴图:预计算的光照效果(如烘焙的阴影),直接叠加到材质上,减少实时光照计算。

四、MeshPhongMaterial(高光材质)

核心特点:支持漫反射+镜面高光(非PBR),高光效果生硬但计算快,适合卡通/复古风格。
适用场景:卡通角色、玩具模型、需要明显高光但不追求真实物理效果的场景。

1. 通用基础参数

同「MeshBasicMaterial」的color/transparent/opacity/wireframe/side/map/alphaMap/visible

2. 专属高光参数

参数名类型取值范围/示例作用说明
specularColor/Number/String0xffffff(默认)、0xffcc00高光颜色:控制高光区域的色调(如金色高光设为0xffcc00)。
shininessNumber0~1000(默认30)高光「锐利度」:
- 小值(如10):高光范围大、模糊(如塑料)
- 大值(如500):高光范围小、锐利(如金属)
specularMapTexturemap高光贴图(灰度图):白色区域显示高光,黑色区域无高光,实现局部高光(如角色的眼睛高光)。
emissiveColor/Number/Stringcolor(默认0x000000自发光颜色:同前两种材质。

五、MeshToonMaterial(卡通材质)

核心特点:模拟卡通渲染效果,明暗过渡有明显「分割线」(无渐变),自带卡通质感。
适用场景:2D卡通角色、动漫场景、低多边形(Low Poly)风格。

1. 通用基础参数

同「MeshBasicMaterial」的color/transparent/opacity/wireframe/side/map/alphaMap/visible

2. 专属卡通参数

参数名类型取值范围/示例作用说明
gradientMapTexturenew THREE.CanvasTexture(canvas)卡通渐变贴图:控制明暗分割的层级(默认2级,可自定义多级渐变)。例如:用10级灰度图实现更细腻的卡通过渡。
specularColor/Number/String0xffffff(默认)高光颜色:同MeshPhongMaterial,但高光范围更窄,更符合卡通风格。
shininessNumber0~1000(默认30)高光锐利度:同MeshPhongMaterial,大值适合卡通金属质感。

关键参数使用对比表(快速选型)

需求场景推荐材质核心参数组合
纯色块/线框调试MeshBasicMaterialcolor + wireframe
真实金属/塑料质感MeshStandardMaterialroughness + metalness + normalMap
低端设备/无高光场景MeshLambertMaterialcolor + emissive
卡通高光(如玩具)MeshPhongMaterialspecular + shininess
动漫角色/低多边形风格MeshToonMaterialgradientMap + specular

通过以上参数解析,你可以根据场景精准控制材质效果:比如用MeshStandardMaterialroughness: 0.1+metalness: 0.9模拟不锈钢,用MeshToonMaterialgradientMap实现3级卡通明暗过渡。

http://www.dtcms.com/a/391053.html

相关文章:

  • 无人机桨叶的材质与工艺对飞行速度的影响
  • PMBOK第六版项目沟通管理总结
  • fatal: Need to specify how to reconcile divergent branches.原因及解决方案
  • 二叉树与二叉搜索树(BST):从基础到应用
  • 【一天一个Web3概念】区块链分叉(Fork)全面解析:类型、案例与影响
  • PHP低代码工作流创新,为企业数字化转型添翼
  • 低代码+AI生态:企业数字化起步阶段的“核聚变”冲击波
  • 【Linux基础知识系列:第一百三十四篇】理解Linux的进程调度策略
  • 主机windows虚拟机centos的hadoop调试mapreduce访问hdfs文件
  • 嵌入式Linux C语言程序设计
  • 【开题答辩全过程】以 基于Python的电影数据爬取及可视化分析为例,包含答辩的问题和答案
  • 推荐一些适合新手的Java项目教程
  • 探索PV操作:并发编程的核心钥匙
  • 一计算机网络基本概念-体系结构-思考题
  • Teslasuit动捕服的实际应用,系统利用电肌肉刺激为用户在VR中提供逼真的感觉和触觉
  • 【DMA】深入解析DMA控制器架构与运作原理
  • wayland 下 带特殊权限的 Qt GUI 程序 部署为 开机自启+守护进程
  • 无事随笔——mp踩坑
  • 根据后端给定的swagger文档生成对应的ts接口
  • 《黑天鹅》
  • docker编写java的jar步骤
  • HDR简介
  • 视觉Slam14讲笔记第4讲李群李代数【更新中】
  • 【无人机】ardupilot事项笔记
  • 大端模式与小端模式
  • Openwrt 平台下移植rk3568 rknn_yolov5_demo 应用程序问题分析
  • Dioxus后端代码
  • 概念篇:ReactJS + AppSync + DynamoDB 性能优化核心概念
  • 实践篇:ReactJS + AppSync + DynamoDB 性能优化实践
  • GPS 定位:守护财产安全的 “隐形防盗锁”