three.js学习之Phong网格材质MeshPhongMaterial

这是three.js学习基础部分的第12篇内容,这次要学习的是MeshPhongMaterial的内容,也是material(材质的)最后一部分内容,不过这一部分,我想偷个懒,希望能看到这里的人用MeshPhongMaterial去实现一下three.js学习之基础网格材质MeshBasicMaterialthree.js学习之Lambert网格材质MeshLambertMaterial中的内容,然后对三者的异同点进行对比,本篇内容只学习一个新的内容。

MeshPhongMaterialphong材质用来模范类似镜面反射的材料,也就是表面非常光滑的材料。比如做了抛光处理的钢材,镜面等。

在目前学过的三种材料中,MeshBasicMaterial用来显示光线稳定,不随着光照发生变化的材料,也就是说不管是什么光,在MeshBasicMaterial材质面前,都只能显示材质自身的光。MeshLambertMaterial则是用来模仿日常生活中的常见物体。MeshPhongMaterial用来模仿日常生活中有镜面属性的材料。

MeshPhongMaterial中,我们还需要学习一个属性,shininess用来设置反射的强度,当shininess为0的时候,MeshPhongMaterial约等于MeshLambertMaterialMeshLambertMaterialemissive色值等于coloremissiveIntensity等于1时,MeshLambertMaterial约等于MeshBasicMaterial。因此,这三个材质之间,都是可以逐渐降级使用,实现同一效果的。当然从MeshBasicMaterial到MeshLambertMaterial再到MeshPhongMaterial,对GPU功耗要求也是越来越高。

至此,three.js基础学习部分材质(material)部分就告一段落。