2012-09-09 16 views
12

Estoy tratando de variar la opacidad de las partículas en función de su distancia desde un plano.three.js - Ajuste de la opacidad de las partículas individuales

This issue describe mi problema, y ​​la respuesta hace un año era esencialmente "no se puede". La opacidad es aparentemente un parámetro de un material, no un elemento, y por lo tanto la opacidad de partículas individuales no es posible.

Ha cambiado algo, ¿hay alguna manera de que pueda lograrlo? Si es posible colorear partículas individuales, imagino que esto no está fuera de su alcance.

Saludos

Respuesta

23

ParticleSystem ha sido renombrado a PointCloud y luego a Points.

Sí, puede crear una nube de puntos y variar dinámicamente el valor alfa del color de cada partícula.

En three.js, puede hacer esto configurando el material de Point Cloud como un ShaderMaterial que tenga un atributo igual al valor alfa deseado para cada partícula.

Si ShaderMaterials, sombreadores de vértices y sombreadores de fragmentos son nuevos para usted, aquí es un violín muy simple que implementa una nube de puntos con alfas dinámicos: http://jsfiddle.net/8mrH7/266/.

EDIT: violín Actualizado

three.js r.84

+1

Gracias! Mi material actual es la siguiente: \t \t pMaterial = new THREE.ParticleBasicMaterial ({ \t \t \t tamaño: 0,2, \t \t \t mapa: THREE.ImageUtils.loadTexture ( \t \t \t \t "images/particle.png " \t \t \t), \t \t \t mezcla: THREE.AdditiveBlending, \t \t \t vertexColors: true, \t \t \t transparentes: true, \t \t \t depthWrite: false, // necesitan? \t \t}); ¿Cómo puedo mantener la textura de mezcla aditiva con este enfoque? – user593062

+0

Alpha parece que ya no funciona en el ejemplo. Supongo que algo debe haber cambiado en three.js causando esto? –

+1

Está bien, lo arregló. Solo tuve que configurar "transparent: true" en ShaderMaterial. http://jsfiddle.net/yfSwK/27/ –

Cuestiones relacionadas