# 材质效果

前面案例中几何体对应网格模型材质只是设置了一个颜色,实际渲染的时候往往会设置其他的参数,比如实现玻璃效果要设置材质透明度,一些光亮的表面要添加高光效果。

# MeshLambertMaterial

  • 半透明效果
var sphereMaterial = new THREE.MeshLambertMaterial({
  color: 0xff0000,
  opacity: 0.7,
  transparent: true,
  wireframe: false
});
  • Lambert 材质常见属性

  • color: 材质颜色

  • wireframe: 是否渲染为线框,默认为 false

  • transparent: 是否开启透明,默认为 false

  • opacity: 不透明度,0 表示完全透明,1 表示完全不透明

# MeshPhongMaterial

  • 高光效果
var sphereMaterial = new THREE.MeshPhongMaterial({
  color: 0x0000ff,
  specular: 0x4488ee,
  shininess: 12
});

处在光照条件下的物体表面会发生光的反射现象,不同的表面粗糙度不同,宏观上来看对光的综合反射效果,可以使用 两个反射模型来概括,一个是漫反射,一个是镜面反射

  • Phong 材质常见属性

  • specular: 高光颜色

  • shininess: 反射系数

  • 总结

构造函数 MeshLambertMaterial()实现漫反射进行渲染,高光效果要通过构造函数 MeshPhongMaterial()模拟镜面反射实现

# 材质类型

  • MeshBasicMaterial 基础网格材质,不受光照影响的材质
  • MeshLambertMaterial Lambert 网格材质,与光照有反应,漫反射
  • MeshPhongMaterial 高光 Phong 材质,与光照有反应
  • MeshStandardMaterial PBR 物理标准材质,相比较高光 Phong 材质可以更好的模拟金属、玻璃等效果

# MeshStandardMaterial

  • 金属光泽
var sphereMaterial = new THREE.MeshStandardMaterial({
  color: 0xcccccc
});