ProyectosExperimentos
Fuegos artificiales
Fuegos artificiales en tiempo real con React Three Fiber. Cada cohete sube con su estela y estalla en una esfera de 2.000 partículas; un vertex shader anima la explosión, la caída y el parpadeo.
- Estado
- Finalizado
- Periodo
- 2024.08 — 2024.11
- Tipo
- Shader / efecto visual
- Rol
- Proyecto individual, Desarrollo 3D
- Tecnologías
- Three.js
- React
- React Three Fiber
- GLSL
- Enlaces
Contexto y objetivo
Experimento para animar partículas por GPU. Toda la animación vive en el vertex shader, y JavaScript solo avanza un valor de progreso entre 0 y 1 con GSAP.
Demo
Hacé clic en la plataforma naranja o pulsá F para lanzar un cohete. Cada uno sale con uno de cuatro colores al azar desde un punto distinto del área de lanzamiento. La cámara gira sola y podés orbitar con el mouse.
Descripción técnica
- Cohete: un solo vértice con 10 puntos de estela. Cada punto se detiene un poco antes que el anterior, interpolado con
mix(inicio, fin, 1 − (1 − p)³)durante un segundo. - Estallido: 200 partículas repartidas de forma uniforme sobre una esfera
(acos(2r − 1)), cada una con 10 puntos de estela de tamaño decreciente. Las posiciones, tamaños, multiplicadores de tiempo y desfases de estela se calculan una sola vez como atributos delBufferGeometry. - Vertex shader: con
remapdivide el progreso en tramos:- explosión rápida con salida cúbica
- curva de gravedad
- caída lenta
- tamaño que abre y cierra
- parpadeo con
sin.
Los puntos de menos de un píxel se sacan de pantalla.
float explodingProgress = remap(progress, 0.0, 0.3, 0.0, 1.0);
explodingProgress = clamp(explodingProgress, 0.0, 1.0);
explodingProgress = 1.0 - pow(1.0 - explodingProgress, 3.0);
newPosition *= explodingProgress;
- Fragment shader: usa la textura de la partícula como alfa, con mezcla aditiva.
Escena / detalles
Al estallar, cada cohete deja una nube de humo de su color (Cloud de Drei) que dura diez segundos.
El suelo es un plano reflectante con cuadrícula infinita.
El área de lanzamiento es un shader que dibuja solo el borde.
Resultados y limitaciones
Cada fuego crea su geometría y su material y los libera al terminar, así que se pueden lanzar muchos seguidos. El parpadeo es solo de tamaño, sin cambio de brillo. Los colores son una paleta fija de cuatro. En móvil no hay teclado: se lanza tocando la plataforma.

