我在自定义材质THREE.ShaderMaterial
中有一个要用作alpha贴图纹理的png图像(16x16)。这是图像:
这是我预加载的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
,则网格全为黑色。遗漏或错了什么? 最佳答案
解决此问题(未记录)的方法是:
uniforms['alphaMap'].value.needsUpdate = true
这样做是行不通的:
alphaMap.needsUpdate = true
可能应该在这里添加它:How to update things(实际上存在
needsUpdate
标志需要纹理,但尚不清楚如何处理ShaderMaterial和制服)。关于javascript - 如何在Three.js中的ShaderMaterial中使用Alpha贴图纹理?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46859276/