2017-10-21 323 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和制服)。