Threejs入门之十二:认识Threejs中的材质

材质是描述对象的外观,Threejs中提供了很多材质的API,今天我们来了解几个常用的材质类API
1.Material
Material是所有材质的基类,所有继承自Material的材质都基础了Material的属性和方法,Material常用的属性有:
alphaTest:控制透明度的alpha值,默认值为0,如果设置不透明度(opacity)低于此值,则不会渲染材质。
depthTest:是否在渲染此材质时启用深度测试。默认为 true
depthWrite : 渲染此材质是否对深度缓冲区有任何影响。默认为true
id : 材质实例的唯一编号
needsUpdate:指定需要重新编译材质
opacity : 在0.0 - 1.0的范围内的浮点数,表明材质的透明度。值0.0表示完全透明,1.0表示完全不透明。如果材质的transparent属性未设置为true,则材质将保持完全不透明,此值仅影响其颜色。 默认值为1.0。
side:定义材质将要渲染哪一面 (正面,背面或两面)。 默认为THREE.FrontSide(正面)。另外两个选项为THREE.BackSide(背面)和THREE.DoubleSide(两面)
transparent :定义材质是否透明,默认为false
visible: 材质是否可见。默认为true
2.MeshBasicMaterial
MeshBasicMaterial,基础网格材质,我们在前面已经用过好多次了,这种材质不受光照的影响,没有阴影;但是可以给它设置颜色、不透明度

const material = new THREE.MeshBasicMaterial({
  color:0xff0000,//设置颜色
  transparent:true,//开启透明
  opacity:0.5//设置透明度
})

效果
在这里插入图片描述

3.MeshLambertMaterial
Lambert网格材质,一种非光泽表面的材质,没有镜面高光。受光照的影响,它可以很好地模拟一些表面(例如未经处理的木材或石材),但不能模拟具有镜面高光的光泽表面(例如涂漆木材),我们之前的例子中也使用过这种材质

const material = new THREE.MeshLambertMaterial({
  color:0x00ffff,//设置颜色  
})

效果
在这里插入图片描述
4.MeshNormalMaterial
MeshNormalMaterial:法线网格材质,一种把法向量映射到RGB颜色的材质。它会根据面的法线使用不同的颜色来渲染

const cubeGeom = new THREE.BoxGeometry(35,35,35)
const cubeMaterial = new THREE.MeshNormalMaterial( ) 
const cubeMesh = new THREE.Mesh(cubeGeom,cubeMaterial)
scene.add(cubeMesh)

效果
在这里插入图片描述
5.MeshPhongMaterial
MeshPhongMaterial:Phong网格材质,一种用于具有镜面高光的光泽表面的材质。与MeshLambertMaterial中使用的Lambertian模型不同,该材质可以模拟具有镜面高光的光泽表面(例如涂漆木材),其常用属性如下
emissive : 材质的放射(光)颜色,基本上是不受其他光照影响的固有颜色。默认为黑色。
specular : 材质的高光颜色。默认值为0x111111(深灰色)的颜色Color
shininess : .specular高亮的程度,越高的值越闪亮。默认值为 30
fog : 材质是否受雾影响。默认为true
combine : 如何将表面颜色的结果与环境贴图(如果有)结合起来
选项为THREE.MultiplyOperation(默认值),THREE.MixOperation, THREE.AddOperation。如果选择多个,则使用.reflectivity在两种颜色之间进行混合。
MultiplyOperation 它将环境贴图和物体表面颜色进行相乘
MixOperation 使用反射率来混和两种颜色
AddOperation 用于对两种颜色进行相加
reflectivity : 环境贴图对表面的影响程度;默认值为1,有效范围介于0(无反射)和1(完全反射)之间
refractionRatio : 空气的折射率(IOR)(约为1)除以材质的折射率。它与环境映射模式THREE.CubeRefractionMapping 和THREE.EquirectangularRefractionMapping一起使用,折射率不应超过1。默认值为0.98

const cubeMaterial = new THREE.MeshPhongMaterial( {
  color:0x049ef4, 
  shininess:85,
  fog:true,
  combine:THREE.MultiplyOperation,
  reflectivity:0.1,
  refractionRatio:0.98
}) 

效果
在这里插入图片描述
以上就是Threejs中常用材质的介绍,想了解更多材质,请参考官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九仞山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值