three.js里的材质分类

three.js里的材质分类

一、基本材质

MeshBasicMaterial

一个以简单着色(平面或线框)方式来绘制几何体的材质
不受光照的影响

.color : Color
材质的颜色(Color),默认值为白色 (0xffffff)。

MeshLambertMaterial

一种非光泽表面的材质,没有镜面高光
只在顶点计算光照

.color : Color
材质的颜色(Color),默认值为白色 (0xffffff)。
.emissive : Color
材质的放射(光)颜色,基本上是不受其他光照影响的固有颜色。默认为黑色。

MeshPhongMaterial

一种用于具有镜面高光的光泽表面的材质。
Blinn-Phong模型来计算反射率
在每个像素计算光照

.color : Color
材质的颜色(Color),默认值为白色 (0xffffff)。
.emissive : Color
材质的放射(光)颜色,基本上是不受其他光照影响的固有颜色。默认为黑色。
.specular : Color
材质的高光颜色。默认值为0x111111(深灰色)的颜色Color。
.shininess : Float
.specular高亮的程度,越高的值越闪亮。默认值为 30。光泽度

二、2种基于物理渲染(Physically Based Rendering)的材质。Physically Based Rendering通常简称为PBR。

MeshStandardMaterial

一种基于物理的标准材质,使用Metallic-Roughness工作流程。

.roughness : Float
材质的粗糙程度。0.0表示平滑的镜面反射,1.0表示完全漫反射。默认值为1.0。
如果还提供roughnessMap,则两个值相乘。
.metalness : Float
材质与金属的相似度。非金属材质,如木材或石材,使用0.0,金属使用1.0,通常没有中间值。 
默认值为0.0。0.0到1.0之间的值可用于生锈金属的外观。如果还提供了metalnessMap,则两个值相乘。

MeshPhysicalMaterial

提供了更高级的基于物理的渲染属性

.clearcoat : Float
表示clear coat层[清漆光亮层]的强度,范围从0.0到1.0m,
当需要在表面加一层薄薄的半透明材质的时候,可以使用与clear coat相关的属性,默认为0.0;
.clearcoatRoughness : Float
clear coat层的粗糙度,由0.0到1.0。 默认为0.0

三、3种材质有特殊用途

ShadowMaterial

用于获取阴影创建的数据

MeshDepthMaterial

一种按深度绘制几何体的材质。深度基于相机远近平面。白色最近,黑色最远。

MeshNormalMaterial

一种把法向量映射到RGB颜色的材质。
绘制视图空间法线(相对于摄像机的法线)。x 是红色, y 是绿色, 以及 z 是蓝色

四、自定义材质

ShaderMaterial

自定义材质

猜你喜欢

转载自blog.csdn.net/chen_227/article/details/129202593