stringtranslate.com

Sístema de partículas

Un sistema de partículas utilizado para simular un incendio, creado en 3dengfx.
Sistema de partículas ad hoc utilizado para simular una galaxia, creado en 3dengfx
Un sistema de partículas utilizado para simular la explosión de una bomba, creado en ParticleIllusion.

Un sistema de partículas es una técnica en física de juegos , gráficos en movimiento y gráficos por computadora que utiliza muchos sprites diminutos , modelos 3D u otros objetos gráficos para simular ciertos tipos de fenómenos "borrosos", que de otro modo serían 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 por el ficticio "efecto Génesis", [1] otros ejemplos incluyen la replicación de los fenómenos de fuego , explosiones , humo , agua en movimiento (como una cascada), chispas y hojas que caen. , caídas de rocas, nubes , niebla , nieve , polvo , colas de meteoritos , estrellas y galaxias, o efectos visuales abstractos como senderos 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. . Se puede utilizar otra técnica para cosas que contienen muchas hebras (como pieles, cabello y hierba) que implica representar la vida útil de una partícula completa a la vez, que luego puede dibujarse y manipularse 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 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]

Implementación típica

Simulación dinámica de partículas de aire (Bifröst)

Los sistemas de partículas suelen implementar los siguientes módulos:

Etapa de emisión

Un emisor implementa una tasa de generación (cuántas partículas se generan por unidad de tiempo), el vector de velocidad inicial de las partículas (la dirección en la que se emiten en el momento de la creación). Cuando se utiliza un objeto de malla como emisor, el vector de velocidad inicial a menudo se establece como normal a las caras individuales del objeto, lo que hace que parezca que las partículas "rocían" directamente desde cada cara, pero esto es opcional.

Etapa de simulación

Durante la etapa de simulación , la cantidad de nuevas partículas que se deben crear se calcula 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 según 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 comprueban todas las partículas existentes para ver si han superado 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 basándose en una simulación física, que puede ser tan simple como traducir su posición actual, o tan complicado 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 con obstáculos en el entorno. Las colisiones entre partículas rara vez se utilizan, ya que son computacionalmente costosas y no son visualmente relevantes para la mayoría de las simulaciones.

Etapa de renderizado

Una vez completada la actualización, cada partícula se representa, normalmente en forma de un cuadrilátero texturizado con vallas publicitarias (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 se puede representar como un solo píxel en entornos de resolución pequeña o 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 en alta resolución. Las partículas se pueden representar como Metaballs en renderizado fuera de línea; Las isosuperficies calculadas a partir de metabolas de partículas producen líquidos bastante convincentes. Finalmente, los objetos de malla 3D pueden "sustituir" a las partículas: una tormenta de nieve podría consistir en una única malla de copo de nieve 3D que se duplica y gira para que coincida con las posiciones de miles o millones de partículas. [3]

Taxonomía del sistema de partículas

En 1983, Reeves definió solo 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 un único punto. posición en el espacio. Para efectos como fuego o humo que se disipan, a cada partícula se le asigna un tiempo de desvanecimiento o una vida útil fija; En cambio, efectos como tormentas de nieve o lluvia suelen poner fin a la vida útil 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 de todo el ciclo de vida 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. Estos mechones se pueden utilizar para simular cabello, pelaje, 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, el espesor de las hebras puede controlarse y, en algunas implementaciones, puede variarse a lo largo de la longitud de la hebra. Diferentes combinaciones de parámetros pueden impartir rigidez, flacidez, pesadez, erización o cualquier otra propiedad. Las hebras también pueden usar mapeo de textura 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 conductas de agrupamiento , pastoreo o escolarización . El modelo boids amplía la simulación de partículas para incluir interacciones de estados externos, incluida la búsqueda de objetivos, la evitación de colisiones, el centrado de bandadas y la percepción limitada. [5]

En 2003, Müller extendió los sistemas de partículas a los fluidos simulando viscosidad , presión y tensión superficial , y luego renderizó superficies interpolando las posiciones discretas con hidrodinámica de partículas suavizadas . [6]

Herramientas de sistemas de partículas fáciles de usar para desarrolladores

El código de los 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 del sistema 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 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 frecuentemente se escriben desde cero si se desean efectos o comportamientos no estándar.

Ver también

Referencias

  1. ^ ab Reeves, William (1983). "Sistemas de partículas: una técnica para modelar una clase de objetos difusos" (PDF) . Transacciones ACM sobre gráficos . 2 (2): 91–108. CiteSeerX  10.1.1.517.4835 . doi :10.1145/357318.357320. S2CID  181508 . Consultado el 13 de junio de 2018 .
  2. ^ Hastings EJ, Guha RK, Stanley KO (9 de diciembre de 2008). "Evolución interactiva de sistemas de partículas para animación y gráficos por computadora". Transacciones IEEE sobre computación evolutiva . 13 (2): 418–32. CiteSeerX 10.1.1.365.5720 . doi :10.1109/TEVC.2008.2004261. S2CID  11390585. 
  3. ^ Sims K (1 de septiembre de 1990). "Animación y renderizado de partículas mediante cálculo paralelo de datos" (PDF) . Actas de la 17ª conferencia anual sobre gráficos por computadora y técnicas interactivas . págs. 405–413. doi :10.1145/97879.97923. ISBN 0897913442. S2CID  2791741 . Consultado el 17 de enero de 2022 .
  4. ^ Reeves, William T.; Blau, Ricki (julio de 1985). "Algoritmos aproximados y probabilísticos para sombrear y renderizar sistemas de partículas estructuradas". Gráficos por computadora ACM SIGGRAPH . 19 (3): 313–322. doi :10.1145/325165.325250.
  5. ^ Reynolds, Craig (1987). "Rebaños, rebaños y escuelas: un modelo de comportamiento distribuido". Actas de la 14ª conferencia anual sobre gráficos por computadora y técnicas interactivas . Asociación para Maquinaria de Computación . págs. 25–34. CiteSeerX 10.1.1.103.7187 . doi :10.1145/37401.37406. ISBN  978-0-89791-227-3. S2CID  546350.{{cite book}}: Mantenimiento CS1: fecha y año ( enlace )
  6. ^ Müller M, Charypar D, Gross M. "Simulación de fluidos basada en partículas para aplicaciones interactivas" (PDF) . Simposio SIGGRAPH sobre animación por ordenador . Consultado el 18 de enero de 2022 .

enlaces externos