If you're seeing this message, it means we're having trouble loading external resources on our website.

Si estás detrás de un filtro de páginas web, por favor asegúrate de que los dominios *.kastatic.org y *.kasandbox.org estén desbloqueados.

Contenido principal

Introducción a sistemas de partículas

En 1982, William T. Reeves, un investigador de Lucasfilm Ltd., trabajaba en la película Viaje a las estrellas II: la ira de Khan. Gran parte de la película gira en torno al dispositivo Génesis, un torpedo que cuando se dispara a un planeta árido y sin vida, tiene la capacidad de reorganizar la materia y crear un mundo habitable para la colonización. Durante la secuencia, una pared de fuego hace ondas sobre el planeta mientras se está “terraformando":
Contenedor video de Khan Academy
El término sistema de partículas, una técnica increíblemente común y útil en computación gráfica, fue acuñado en la creación de este efecto en particular.
“Un sistema de partículas es una colección de muchas muchas partículas diminutas que juntas representan un objeto difuso. Durante un periodo de tiempo, las partículas se generan en un sistema, se mueven y cambian dentro del sistema y mueren desde el sistema”. (William Reeves, "Particle Systems—A Technique for Modeling a Class of Fuzzy Objects," ACM Transactions on Graphics 2:2 (April 1983), 92.
Desde principios de los años ochenta, los sistemas de partículas han sido utilizados en innumerables juegos de video, animaciones, obras de arte digitales e instalaciones para modelar varios tipos irregulares de fenómenos naturales, tales como fuego, humo, cascadas, niebla, hierba, burbujas, etcétera.
Esta sección estará dedicada a ver las estrategias de implementación para programar un sistema de partículas. ¿Cómo organizamos nuestro código? ¿Dónde almacenamos la información relacionada con las partículas individuales frente a la información relacionada con el sistema como un todo? Los ejemplos que vamos a ver se centrarán en gestionar los datos asociados a un sistema de partículas. Utilizarán formas sencillas para las partículas y aplicarán solo los comportamientos más básicos (por ejemplo, la gravedad). Sin embargo, al usar este marco de trabajo y construir formas más interesantes para desplegar las partículas y calcular comportamientos, puedes lograr una variedad de efectos.
Como la cita descrita anteriormente, un sistema de partículas es una colección de objetos sencillos. Ya tratamos antes con la programación de colecciones de objetos, como arreglos de Movers que simulan pelotas rebotando. Pero para sistemas de partículas, nuestras colecciones son más complejas. Las colecciones variarán en tamaño: a veces habrá cero partículas, a veces diez, a veces diez mil.  Las colecciones tendrán comportamiento y propiedades en sí mismas, no solo las partículas de las cuales están conformadas. Nuestro objetivo es ser capaces de escribir un programa que se vea así:
var ps = new ParticleSystem();

draw = function() {
    background(255, 255, 255);
    ps.run();
};
Ni una sola partícula está referenciada en ese código, pero el resultado estará lleno de partículas volando por toda la pantalla. Crearemos programas con múltiples tipos de objetos, y objetos que seguirán la pista de otras colecciones de objetos, que nos ayudará a crear sistemas de partículas poderosos, pero también nos prepararán para escribir programas más poderosos en general.
Para averiguar cómo programar sistemas de partículas, usaremos dos técnicas avanzadas de programación orientada a objetos: herencia y polimorfismo. Con los ejemplos que hemos visto hasta ahora, siempre hemos tenido un arreglo de un solo tipo de objeto, como "movers"" u “osciladores”. Con la herencia (y el polimorfismo), aprenderemos una manera conveniente para almacenar un solo arreglo que contenga objetos de diferentes tipos. De esta manera, un sistema de partículas no necesita ser un sistema de un solo tipo de partícula.
En esta sección veremos los usos más típicos de los sistemas de partículas, pero el hecho de que las partículas en este capítulo se vean o comporten de cierta manera no debe limitar tu imaginación. Solo porque estos sistemas de partículas tiendan a parecer brillantes, volar hacia adelante, y caer con la gravedad no significa que esas sean las características que los tuyos deben tener. En realidad, el objetivo aquí es solo cómo hacer un seguimiento de un sistema de muchos elementos. Qué hacen y cómo se ven esos elementos depende de ti.

¿Quieres unirte a la conversación?

¿Sabes inglés? Haz clic aquí para ver más discusiones en el sitio en inglés de Khan Academy.