Un sistema de partículas es una técnica en física de juegos , gráficos en movimiento y gráficos de computadora que utiliza muchos sprites diminutos , modelos 3D u otros objetos gráficos para simular ciertos tipos de fenómenos "difusos", que de otro modo son muy difíciles de reproducir con técnicas de renderizado convencionales, generalmente sistemas altamente caóticos , fenómenos naturales o procesos causados por reacciones químicas.
Introducido en la película de 1982 Star Trek II: La ira de Khan para el ficticio "efecto Génesis", [1] otros ejemplos incluyen replicar los fenómenos de fuego , explosiones , humo , agua en movimiento (como una cascada), chispas , hojas que caen, desprendimientos de rocas, nubes , niebla , nieve , polvo , colas de meteoritos , estrellas y galaxias, o efectos visuales abstractos como rastros brillantes, hechizos mágicos , etc. - estos utilizan partículas que se desvanecen rápidamente y luego se vuelven a emitir desde la fuente del efecto. Otra técnica se puede utilizar para cosas que contienen muchas hebras, como piel, cabello y hierba, que implica representar la vida útil de una partícula completa a la vez, que luego se puede dibujar y manipular como una sola hebra del material en cuestión.
Los sistemas de partículas se definen como un grupo de puntos en el espacio, guiados por una colección de reglas que definen el comportamiento y la apariencia. Los sistemas de partículas modelan los fenómenos como una nube de partículas, utilizando procesos estocásticos para simplificar la definición de sistema dinámico y mecánica de fluidos que son difíciles de representar con transformaciones afines . [2]
Los sistemas de partículas normalmente implementan los siguientes módulos:
Un emisor implementa una tasa de generación (cuántas partículas se generan por unidad de tiempo) y el vector de velocidad inicial de las partículas (la dirección en la que se emiten al momento de su creación). Cuando se utiliza un objeto de malla como emisor, el vector de velocidad inicial suele configurarse para que sea normal a las caras individuales del objeto, lo que hace que las partículas parezcan "salpicarse" directamente desde cada cara, pero esto es opcional.
Durante la etapa de simulación , se calcula la cantidad de nuevas partículas que se deben crear en función de las tasas de generación y el intervalo entre actualizaciones, y cada una de ellas se genera en una posición específica en el espacio 3D en función de la posición del emisor y el área de generación especificada. Cada uno de los parámetros de la partícula (es decir, velocidad, color, etc.) se inicializa de acuerdo con los parámetros del emisor. En cada actualización, se verifican todas las partículas existentes para ver si han excedido su vida útil, en cuyo caso se eliminan de la simulación. De lo contrario, la posición de las partículas y otras características se avanzan en función de una simulación física, que puede ser tan simple como traducir su posición actual, o tan complicada como realizar cálculos de trayectoria físicamente precisos que tengan en cuenta fuerzas externas (gravedad, fricción, viento, etc.). Es común realizar la detección de colisiones entre partículas y objetos 3D específicos en la escena para hacer que las partículas reboten o interactúen de otra manera con obstáculos en el entorno. Las colisiones entre partículas rara vez se utilizan, ya que son computacionalmente costosas y no visualmente relevantes para la mayoría de las simulaciones.
Una vez completada la actualización, cada partícula se renderiza, normalmente en forma de un cuadrante texturizado con cartel publicitario (es decir, un cuadrilátero que siempre está de cara al espectador). Sin embargo, a veces esto no es necesario para los juegos; una partícula puede renderizarse como un único píxel en entornos de pequeña resolución/potencia de procesamiento limitada. Por el contrario, en los gráficos en movimiento las partículas tienden a ser modelos 3D completos pero de pequeña escala y fáciles de renderizar, para garantizar la fidelidad incluso a alta resolución. Las partículas se pueden renderizar como metabolas en la renderización fuera de línea; las isosuperficies calculadas a partir de metabolas de partículas forman líquidos bastante convincentes. Por último, los objetos de malla 3D pueden "reemplazar" a las partículas: una tormenta de nieve puede consistir en una única malla de copos de nieve 3D que se duplica y gira para que coincida con las posiciones de miles o millones de partículas. [3]
En 1983, Reeves definió únicamente puntos animados , creando simulaciones de partículas en movimiento (chispas, lluvia, fuego, etc.). En estas implementaciones, cada cuadro de la animación contiene cada partícula en una posición específica en su ciclo de vida, y cada partícula ocupa una única posición puntual en el espacio. Para efectos como el fuego o el humo que se disipan, a cada partícula se le asigna un tiempo de desvanecimiento o una duración fija; en cambio, los efectos como las tormentas de nieve o la lluvia suelen terminar la duración de la partícula una vez que sale de un campo de visión particular . [1]
En 1985, Reeves amplió el concepto para incluir la representación simultánea del ciclo de vida completo de cada partícula; el resultado transforma las partículas en hebras estáticas de material que muestran la trayectoria general, en lugar de puntos. Estas hebras se pueden utilizar para simular cabello, piel, hierba y materiales similares. Las hebras se pueden controlar con los mismos vectores de velocidad, campos de fuerza, tasas de generación y parámetros de deflexión que obedecen las partículas animadas. Además, se puede controlar el grosor renderizado de las hebras y, en algunas implementaciones, se puede variar a lo largo de la longitud de la hebra. Diferentes combinaciones de parámetros pueden impartir rigidez, flacidez, pesadez, erización o cualquier otra cantidad de propiedades. Las hebras también pueden utilizar el mapeo de texturas para variar el color, la longitud u otras propiedades de las hebras a lo largo de la superficie del emisor. [4]
En 1987, Reynolds introduce nociones de comportamiento de bandada , manada o formación de cardúmenes . El modelo de boids extiende la simulación de partículas para incluir interacciones de estados externos, como la búsqueda de objetivos, la evitación de colisiones, el centrado en bandada y la percepción limitada. [5]
En 2003, Müller extendió los sistemas de partículas a la fluídica simulando la viscosidad , la presión y la tensión superficial , y luego representó superficies interpolando las posiciones discretas con hidrodinámica de partículas suavizadas . [6]
El código de sistemas de partículas que se puede incluir en motores de juegos, sistemas de creación de contenido digital y aplicaciones de efectos se puede escribir desde cero o descargar. Havok proporciona múltiples API de sistemas de partículas. Su API Havok FX se centra especialmente en los efectos de sistemas de partículas. Ageia , ahora una subsidiaria de Nvidia , proporciona un sistema de partículas y otras API de física de juegos que se utilizan en muchos juegos, incluidos los juegos de Unreal Engine 3. Tanto GameMaker Studio como Unity proporcionan un sistema de partículas bidimensional que suelen utilizar los desarrolladores de juegos independientes , aficionados o estudiantes, aunque no se puede importar a otros motores. También existen muchas otras soluciones, y los sistemas de partículas se escriben con frecuencia desde cero si se desean efectos o comportamientos no estándar.
{{cite book}}
: Mantenimiento CS1: fecha y año ( enlace )