2017-10-21 480 views
0

我有一张PNG图像(16x16),我想用它作为alpha贴图纹理,在自定义素材THREE.ShaderMaterial中。这是图像:如何在Three.js中使用ShaderMaterial的alpha贴图纹理?

Alpha Map

这是我的预载纹理对象设置:

transparent: true 

然后加入defines:我添加

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

在ShaderMaterial的属性:

USE_ALPHAMAP: true, 
ALPHATEST: 0.5 

最后的uniform

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

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

回答

0

解决这个问题(没有记录)是:

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

这样做是行不通的:

alphaMap.needsUpdate = true 

它也许应该在这里补充说:How to update thingsneedsUpdate标志的需要纹理实际上存在,但不清楚如何处理ShaderMaterial和制服)。