如何在Three.js中使用ShaderMaterial的alpha贴图纹理?
问题描述:
我有一张PNG图像(16x16),我想用它作为alpha贴图纹理,在自定义素材THREE.ShaderMaterial
中。这是图像:如何在Three.js中使用ShaderMaterial的alpha贴图纹理?
这是我的预载纹理对象设置:
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
,则网格全部为黑色。什么是缺失或错误?
答
解决这个问题(没有记录)是:
uniforms['alphaMap'].value.needsUpdate = true
这样做是行不通的:
alphaMap.needsUpdate = true
它也许应该在这里补充说:How to update things(needsUpdate
标志的需要纹理实际上存在,但不清楚如何处理ShaderMaterial和制服)。