Paso 68: PC Software: efecto 3, fuegos artificiales
Para hacer este efecto, hemos tenido realmente sentarse y pensar en cómo funcionan los fuegos artificiales, y que fuerzas influyen en las partículas de fuegos artificiales.
Llegamos a un modelo teórico de cómo funcionan los fuegos artificiales:
1) un cohete es disparado a una posición aleatoria, origin_x, origin_y, origin_z.
2) el cohete explota y lanza ardientes partículas hacia fuera en direcciones aleatorias a velocidades al azar.
3) las partículas son frenadas por la resistencia del aire y tiradas hacia abajo por gravedad.
Con este modelo en mente, hemos creado un efecto de fuegos artificiales con un resultado bastante convincente. Aquí es cómo funciona:
1) se elige una posición de origen aleatorio. (dentro de ciertos límites, x y y entre 2 y 5 para mantener los fuegos artificiales más o menos en el centro del cubo. z entre 5 y 6. Fuegos artificiales explotan cerca de la tierra pueden ser peligrosos! : p).
2) el cohete, en este caso que un único voxel se mueve el eje de Z a la x y y coordina hasta llegar a origin_z.
3) un conjunto de números partículas es creado. Cada partícula tiene una x, y y z coordinan así como una velocidad para cada eje, dx, dy y DZ.
4) bucle for() a través de 25 pasos de animación de partículas:
5) se calcula un slowrate, esto es la resistencia del aire. La slowrate se calcula usando cos() que devolverá un número exponencialmente creciente, frenar las partículas más rápidas y más rápidas.
6) se calcula una variable de gravedad. Utilizando también cos(). El efecto de la gravedad también es exponencial. Esto probablemente no es la forma matemáticamente correcta de calcular el efecto de la gravedad sobre un objeto, pero se ve buena.
7) para cada partícula, se incrementan las coordenadas x, y y z por sus velocidades dx, dy y dz, divididos por el slowrate. Esto hará que las partículas de movimiento más lento y más lento.
8) la coordenada z es disminuida por la variable de gravedad.
9) la partícula se dibuja en el cubo.
10) demora un rato, luego hacer la siguiente iteración de la animación de explosión.
Estamos muy satisfechos con el resultado.