Three.js会提供一些的光照模型计算物体表面的光照变化,MeshStandardMaterial和MeshPhongMaterial一样都是渲染网格模型的材质,本质上都是顶点着色器和片元着色器代码,只是光照模型不同,反映到着色器代码就是光照计算算法不同。
基于物理的材质MeshStandardMaterial相比较基于Phong光照模型的高光网格材质MeshPhongMaterial能够更加真实的描述物体表面的光照变化,简单说就是渲染效果更好,比如通过MeshStandardMaterial设置一个金属材质效果,比MeshPhongMaterial效果更逼真,但是会更加耗费资源.
高光网格材质MeshPhongMaterial
高光网格材质MeshPhongMaterial支持定义高光颜色属性.specular和高光贴图属性.specularMap,主要用来表达网格表面的镜面反射效果,如果一个网格模型表面镜面反射效果是一样的,可以直接定义高光颜色属性.specular,如果一个网格模型表面不同位置的镜面反射程度不一样,也就是高光颜色值不同,可以通过一张高光贴图去表示,赋值给材质的高光贴图属性.specularMap即可。
高光
MeshPhongMaterial的各种属性
color 漫射颜色,默认初始化为0xffffff,白色
ambient 环境色 ,默认初始化为0xffffff, 白色, 乘以环境光对象的颜色
emissive自发光
specular 高光
shininess 高光强度
metal是否是金属
wrapAround 是否遮罩
wrapRGB通过设置wrapRGB的数值,根据上面注释中的公式,对材质颜色进行线性混合.
map 普通贴图
lightMa