如何在Three.js中使用ShaderMaterial的alpha贴图纹理?

时间:2017-10-21 01:40:47

标签: javascript three.js glsl textures shader

我想在自定义材质THREE.ShaderMaterial中使用png图像(16x16)作为alpha贴图纹理。这是图像:

Alpha Map

这是我预加载的Texture对象的设置:

alphaMap.magFilter = THREE.NearestFilter
alphaMap.wrapT = THREE.RepeatWrapping
alphaMap.repeat.y = 10
alphaMap.needsUpdate = true

在ShaderMaterial的属性中,我添加了:

transparent: true

然后添加了defines

USE_ALPHAMAP: true,
ALPHATEST: 0.5

最后是uniform

alphaMap: { type: 't', value: alphaMap }

我没有得到任何错误,但网格不可见。如果我将其设置为diffuseColor.rgb,则网格全部为黑色。缺少什么或错了什么?

1 个答案:

答案 0 :(得分:0)

此问题的解决方案(未记录)是:

uniforms['alphaMap'].value.needsUpdate = true

这样做不起作用:

alphaMap.needsUpdate = true

它应该在这里添加:How to update things(纹理的needsUpdate标志的实际需要,但是不清楚如何处理ShaderMaterial和制服)。