Three.js: Ajustar la opacidad / tamaño de partículas y líneas

Creado en 27 jun. 2011  ·  11Comentarios  ·  Fuente: mrdoob/three.js

Tengo un sistema de partículas y una línea. Puedo establecer fácilmente el color de cada vértice y borde en mi línea creando una matriz de colores y estableciendo VertexColors en verdadero. Mi pregunta es ¿Cómo puedo ajustar la a) opacidad b) el tamaño de cada vértice / borde individualmente en mi sistema / línea de partículas.

¡Gracias!

Zenna

Question

Comentario más útil

@WestLangley Ya veo. ¡Gracias por la info!

por otro lado, sería bueno si esto se pudiera hacer en JS, especialmente para las personas que no están familiarizadas con el lenguaje de sombreado, incluido yo. gracias de todos modos!

Todos 11 comentarios

Tambien me gustaria saber esto.

geometry.colors es una matriz que mapea 1 por 1 los vértices. Entonces, si desea cambiar el color de geometry.vertices[ 1 ] , debe modificar geometry.colors[ 1 ] .

Hola mrdoob.

geometry.colors [1] sería un Three.color. Felizmente puedo cambiar el color, pero hasta donde yo sé, el valor de opacidad no se almacena allí. Entonces, ¿cómo puedo cambiar la opacidad de vértices / líneas individuales?

UH oh...

No puede hacer esto fácilmente, la opacidad se especifica por material, no por elemento. Dejamos caer alfa de Color algún tiempo.

Una forma posible sería a través de atributos personalizados y MeshShaderMaterial donde tendrías colores de 4 componentes.

Lo mismo ocurre con los tamaños, actualmente no hay forma de cambiarlos por partícula o por línea con los atributos y materiales predeterminados. Necesitaría otro flujo de atributos para el tamaño y luego tendría material personalizado que lo usaría.

Ahora no puedo recordar por qué decidimos eliminar alpha de Color ...

Tampoco recuerdo, pude encontrar esto:

https://github.com/mrdoob/three.js/commit/dc6e335dc9f7f38f1c79a5a6c112019d6fcce69d

Parece que los colores hexadecimales con los alfas estaban causando problemas. Ahora, con más dependencias en la canalización de activos, supongo que sería aún más doloroso.

Ser capaz de especificar la opacidad por vértice sería muy útil para hacer sistemas de partículas.

¿Hay algún plan para respaldar esto en una versión futura?

No estoy seguro de cuál es la dificultad técnica aquí. intuitivamente, tener algo como geometry.opacityValues parece una forma no intrusiva y compatible con versiones anteriores de respaldar esto. también puede haber una bandera pointsMaterial.vertexOpacityValues global para deshabilitar este soporte si no es necesario o si causa problemas, como en el caso de los colores de vértice.

@quyin Puedes hacer lo que quieras con un ShaderMaterial . Consulte stackoverflow si necesita ayuda.

@WestLangley Ya veo. ¡Gracias por la info!

por otro lado, sería bueno si esto se pudiera hacer en JS, especialmente para las personas que no están familiarizadas con el lenguaje de sombreado, incluido yo. gracias de todos modos!

¿Fue útil esta página
0 / 5 - 0 calificaciones