Three.js 基础材质和高光材质

	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 普通贴图
lightMap 光照贴图
bumpMap 凹凸贴图
bumpScale凹凸贴图纹理大小
normalMap 法线贴图
normalScale= new THREE.Vector2( 1, 1 )法线缩放 指定一个数值 将法线和网格大小进行匹配
specularMap 高光贴图 默认为null 做水渍效果 部分反射
alphaMap 透明通道贴图
envMap环境贴图
reflectivity反射率 默认为1
refractionRatio 折射率
fog 雾
shading 着色方式
默认THREE.SmoothShading平滑着色 Ray-Traced(光线跟踪着色)
wireframe 线框模式
wireframeLinewidth 线框宽度
skinning 是否使用蒙皮
morphTargets 定义材质是否设定目标变形动画,默认为false
morphNormals = false; /定义是否反转(变换)法线,默认为false



PBR基础流程


MeshStandardMaterial

***color 默认new Color(0xffffff)
roughness 粗糙度 默认0.5
roughnessMap
metalness 金属度 默认0.5
metalnessMap
map 贴图
lightMap 光照贴图
lightMapIntensity 默认为1
aoMap ao贴图
aoMapIntensity 默认为1
emissive 自发光
emissiveIntensity 自发光强度
emissiveMap 自发光贴图
bumpMap 凹凸贴图
bumpScale 法线强度 默认为1
normalMap 法线贴图
normalMapType 法线贴图类型 TangentSpaceNormalMap
normalScale 法线贴图大小 默认 new Vector2( 1, 1 );
displacementMap
displacementScale
displacementBias
alphaMap a贴图
envMap 环境贴图
envMapIntensity 默认为1
refractionRatio 默认0.98
wireframe 默认false
wireframeLinewidth 默认为1
wireframeLinecap
wireframeLinejoin
skinning 是否使用蒙皮
morphTargets 定义材质是否设定目标变形动画,默认为false
morphNormals 定义是否反转(变换)法线,默认为false

你可能感兴趣的:(THREE)