这是three.js学习基础部分的第12篇内容,这次要学习的是MeshPhongMaterial的内容,也是material(材质的)最后一部分内容,不过这一部分,我想偷个懒,希望能看到这里的人用MeshPhongMaterial
去实现一下three.js学习之基础网格材质MeshBasicMaterial和three.js学习之Lambert网格材质MeshLambertMaterial中的内容,然后对三者的异同点进行对比,本篇内容只学习一个新的内容。
MeshPhongMaterial
phong材质用来模范类似镜面反射的材料,也就是表面非常光滑的材料。比如做了抛光处理的钢材,镜面等。
在目前学过的三种材料中,MeshBasicMaterial
用来显示光线稳定,不随着光照发生变化的材料,也就是说不管是什么光,在MeshBasicMaterial
材质面前,都只能显示材质自身的光。MeshLambertMaterial
则是用来模仿日常生活中的常见物体。MeshPhongMaterial
用来模仿日常生活中有镜面属性的材料。
在MeshPhongMaterial
中,我们还需要学习一个属性,shininess
用来设置反射的强度,当shininess
为0的时候,MeshPhongMaterial
约等于MeshLambertMaterial
。MeshLambertMaterial
的emissive
色值等于color
且emissiveIntensity
等于1时,MeshLambertMaterial
约等于MeshBasicMaterial
。因此,这三个材质之间,都是可以逐渐降级使用,实现同一效果的。当然从MeshBasicMaterial到MeshLambertMaterial再到MeshPhongMaterial,对GPU功耗要求也是越来越高。
至此,three.js基础学习部分材质(material)部分就告一段落。