我目前正在为一个插件添加另一个程序来添加3D功能,所以我试图将所有功能从three.js添加到其中,增加了目标这是第一手学习three.js所有功能的好方法。
我现在遇到一个问题,因为我使用网格基本材料实现纹理和材质,设置主要的threejs.org网站上的文档显示的功能,实际上并没有做任何事情。
当我为specularmap或lightmap设置纹理时,实际上并没有显示任何内容。我很确定这不是一个错误,因为设置地图的纹理是有效的,但试图为specularMap或lightMap设置相同的纹理是什么都不做。常规纹理是否适合这些,或者我必须做一些不同的事情吗?
我也想知道着色属性对于网格基本是做什么的,因为据我所知,将其设置为smoothshading / flatshading / noshading也没有做任何事情。
答案 0 :(得分:2)
MeshBasicMaterial
没有响应灯光。例如,将您的素材更改为MeshLamberMaterial
或MeshPhongMaterial
。
对于MeshBasicMaterial
和MeshLambertMaterial
,specularMap
仅用于在使用环境地图时调制反射。
对于任何材质,光照贴图需要第二组UV。 geometry.faceVertexUvs[ 0 ]
包含通常的一组UV;对于光照贴图,您需要添加geometry.faceVertexUvs[ 1 ]
,第二组UV。
对于MeshBasicMaterial
,shading
属性仅在使用环境贴图时适用。 SmoothShading
会产生平滑的反射; FlatShading
会产生分面的反思。
three.js r.66