lightMap / specularMap /使用meshBasicMaterial着色

时间:2014-04-19 01:59:23

标签: three.js

我目前正在为一个插件添加另一个程序来添加3D功能,所以我试图将所有功能从three.js添加到其中,增加了目标这是第一手学习three.js所有功能的好方法。

我现在遇到一个问题,因为我使用网格基本材料实现纹理和材质,设置主要的threejs.org网站上的文档显示的功能,实际上并没有做任何事情。

当我为specularmap或lightmap设置纹理时,实际上并没有显示任何内容。我很确定这不是一个错误,因为设置地图的纹理是有效的,但试图为specularMap或lightMap设置相同的纹理是什么都不做。常规纹理是否适合这些,或者我必须做一些不同的事情吗?

我也想知道着色属性对于网格基本是做什么的,因为据我所知,将其设置为smoothshading / flatshading / noshading也没有做任何事情。

1 个答案:

答案 0 :(得分:2)

MeshBasicMaterial没有响应灯光。例如,将您的素材更改为MeshLamberMaterialMeshPhongMaterial

对于MeshBasicMaterialMeshLambertMaterialspecularMap仅用于在使用环境地图时调制反射。

对于任何材质,光照贴图需要第二组UV。 geometry.faceVertexUvs[ 0 ]包含通常的一组UV;对于光照贴图,您需要添加geometry.faceVertexUvs[ 1 ],第二组UV。

对于MeshBasicMaterialshading属性仅在使用环境贴图时适用。 SmoothShading会产生平滑的反射; FlatShading会产生分面的反思。

three.js r.66