我正在尝试使用 Three.js r.58 法线着色器来制作置换贴图。我让它正确位移,但即使我使用 computeTangents(),照明似乎也不尊重位移后的法线。
当我关闭置换时,我看到默认的法线肯定很有趣。这是一个球体的俯视图,从侧面照亮(白点标志着一个点光源):
这是一个演示页面: http: //meetar.github.io/three.js-normal-map-0/index0.html
这是什么原因造成的?是否有关于 Three.js 普通着色器的文档?
我正在尝试使用 Three.js r.58 法线着色器来制作置换贴图。我让它正确位移,但即使我使用 computeTangents(),照明似乎也不尊重位移后的法线。
当我关闭置换时,我看到默认的法线肯定很有趣。这是一个球体的俯视图,从侧面照亮(白点标志着一个点光源):
这是一个演示页面: http: //meetar.github.io/three.js-normal-map-0/index0.html
这是什么原因造成的?是否有关于 Three.js 普通着色器的文档?
您没有传入一个 normalMap,这是必需的。尝试通过一个平坦的。
ComputeTangents()
可以在具有不连续 UV 的顶点上做奇怪的事情——比如在北极。
代码是文档。:-)
“扭曲”法线是每个顶点法线被评估为 RGB 值的结果(255, 255, 255)
,它对应于切线空间 XYZ 坐标(1.0, 1.0, 1.0)
。当使用 three.js 法线贴图材质而不传递法线贴图时,这似乎是默认行为。如果你传递一个全白的法线贴图,你会看到同样的行为。
要将法线贴图传递给法线贴图着色器,请将此行添加到您的统一声明中:
uniforms[ "tNormal" ].value = new THREE.ImageUtils.loadTexture( 'normalmap.png' );
要传递“平面”法线贴图,请制作“normalmap.png”实心(128, 128, 255)
淡紫色,将其标准化为切线空间坐标(0.0, 0.0, 1.0)
。
有关包含大量示例的法线贴图的详细分类,请查看此链接:http ://wiki.polycount.com/NormalMap/