2017-10-21 34 views
0

J'ai une image png (16x16) que je veux utiliser comme texture de carte alpha, dans un matériau personnalisé THREE.ShaderMaterial. Ceci est l'image:Comment utiliser les textures de carte alpha avec ShaderMaterial dans Three.js?

Alpha Map

Ceci est la configuration de mon pré-chargé objet Texture:

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

Dans les propriétés du ShaderMaterial j'ajouté:

transparent: true 

ensuite ajouté defines :

USE_ALPHAMAP: true, 
ALPHATEST: 0.5 

Et enfin le uniform:

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

Je ne reçois pas d'erreur, mais le maillage est pas visible. Si je le définis comme diffuseColor.rgb le maillage est tout noir. Qu'est-ce qui manque ou qui ne va pas?

Répondre

0

solution à ce problème (non documenté) était:

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

Faire cela ne fonctionnera pas:

alphaMap.needsUpdate = true 

Il devrait probablement ajouter ici: How to update things (la nécessité de needsUpdate drapeau pour les textures sont réellement là, mais il n'est pas clair comment traiter ShaderMaterial et les uniformes).