.emissiveMap
在Three.js材质中,和颜色贴图属性.map
对应的是颜色属性.color
,和高光贴图属性.specularMap
对应的是高光颜色属性.specular
,与粗糙度贴图属性.roughnessMap
对应是粗糙度属性roughness
....
本文说到的自发光贴图属性.emissiveMap
对应的是自发光属性.emissive
。html
我的技术博客code
.emissive
自发光属性.emissive
的属性值和颜色贴图属性.map
的属性值相同都是Three.js的颜色对象THREE.Color
。自发光属性.emissive
默认值是黑色0x000000
。也就是模型默认是不发光的,若是一个模型是发光的,好比电源上一个电源灯,你能够把电源灯的材质设置为对应的发光颜色。
你们应该都知道,支持光照的Three.js材质颜色是受光照影响的,不过材质的自发光颜色.emissive
是不受光照影响的。htm
.emissiveMap
若是一个网格模型Mesh
总体上是同一种颜色,直接设置颜色属性.color
就能够,若是一个充电宝使用了一个网格模型Mesh
来表示,这时候整个充电宝Mesh
不一样区域的颜色是不同的,那就须要使用颜色贴图属性.map
。对象
一样道理,一个充电宝Mesh
不一样区域有的发光,有的不发光,这时候不能使用自发光属性.emissive
总体设置一样发光效果,能够经过自发光贴图属性.emissiveMap
来解决。若是充电宝发光的电源灯单独使用一个Mesh
表示,这种状况下能够设置.emissive
便可,不须要美术导出自发光贴图,通常美术出图的时候可能会把多个零件合并为一个网格模型Mesh
。ip
THree.js系统渲染的时候,颜色贴图属性.map
和颜色属性.color
的RGB份量会分别进行乘法运算,颜色属性.color
默认值是白色0xffffff
,通常设置了.map
,不去要去更改.color
,不过你能够尝试更改.color
,好比设置为红色,你会发现模型的颜色在map的基础上会有颜色变化。get
自发光贴图属性.emissiveMap
相似颜色贴图属性.map
,Threejs计算材质的发光效果,会把自发光贴图属性.emissiveMap
和.emissive
的RGB份量分别进行乘法运算。博客
.emissiveMap
无效若是你设置了Three.js模型材质的自发光贴图属性.emissiveMap
,渲染结果中没有显示,这种状况下,你要注意下材质的自发光属性.emissive
是否设置,由于Threejs渲染的时候,着色器会从自发光贴图.emissiveMap
提取像素值RGB,而后和自发光.emissive
的属性值相乘,而Three.js中.emissive
的默认值是黑色,也就是0x000000
,这种状况下,不管.emissiveMap
产生的任何自发光都至关于没有。class
有一点要注意,若是没有自发光贴图.emissiveMap
,千万不能把.emissive
设置为白色,这样的话整个模型都会发白光,.emissiveMap
通常局部是发光颜色,其它区域是黑色。局部发光颜色对应模型的某个位置,好比充电宝的电源灯。基础
var mat = new THREE.MeshPhysicalMaterial({ emissive:0xffffff,// emissive默认黑色,设置为白色 emissiveMap: texLoader.load("./模型/emissiveMap.png"), })