2 puntos por GN⁺ 2023-12-20 | 1 comentarios | Compartir por WhatsApp
  • Notas y código fuente (GitHub) sobre las matemáticas, algoritmos y métodos relacionados con la simulación en tiempo real de fluidos como el fuego y el humo

1. Simulación de fluidos

  • Antes de simular el fuego, primero hay que simular el fluido
  • Si suponemos que el fluido es incompresible y no viscoso, el problema se simplifica enormemente

1.1 Dinámica de fluidos básica

  • Un fluido llena una región DDD del espacio, y para el tiempo ttt la velocidad del fluido es u(x,t)
  • El campo de velocidad 2D u puede representarse con una cuadrícula de N×N
  • ¿Qué pasa si dejamos caer una gota de tinte en el fluido?
  • Definimos un campo escalar ψ(x,t) que representa la densidad del tinte, y al movimiento causado por la velocidad del fluido se le llama advection
  • El Naive Method para calcular la advection consiste en mover cada punto de la cuadrícula y actualizar el punto de cuadrícula más cercano, pero es difícil de paralelizar e inestable

Ecuación diferencial parcial para la advection

  • Para derivar la advection de forma estable, se necesita una expresión explícita en forma de PDE
  • La masa total de tinte en una región espacial fija WWW es ∫WψdV, y el cambio de masa en el tiempo es ddt∫Wψ(x,t)dV
  • Según la ley de conservación de la masa, ddt∫WψdV=−∫Sψu⋅ndA
  • Aplicando el teorema de la divergencia, obtenemos ∫W[∂ψ∂t+∇⋅(ψu)]dV=0 y, para una subregión unitaria W=dV, ∂ψ∂t+∇⋅(ψu)=0
  • Esto proporciona la PDE explícita que debemos resolver

Método estable para la advection

  • Si observamos en detalle la ec. (1), el término del lado derecho es la derivada direccional en dirección −u
  • Este método, llamado Semi-Lagrangian advection, fue inventado por Jos Stam en 1999
  • Como cada punto de la cuadrícula se actualiza solo una vez, es muy fácil de paralelizar y es incondicionalmente estable

1.2 Ecuaciones de Navier-Stokes

  • Ya encontramos un modelo de cómo evolucionan en el tiempo las propiedades escalares de un fluido, pero ¿qué ocurre con el flujo del fluido en sí?
  • Las ecuaciones de Navier-Stokes definen cómo cambia en el tiempo el campo de velocidad u en cualquier punto del fluido
  • Como asumimos que el fluido no es viscoso, μ=0, y por ahora también podemos ignorar las fuerzas externas
  • Por lo tanto, solo quedan dos términos: la auto-advección (self-advection) y la presión (pressure)
  • Si calculamos numéricamente y sumamos estos términos en cada paso de tiempo, podemos simular el fluido

Resolución de la presión

  • Como no sabemos si el nuevo campo de velocidad cumple la restricción de incompresibilidad, el término de presión p debe corregirlo
  • Para ello, hay que resolver la ecuación de Poisson
  • Para resolver la ecuación de Poisson, podemos usar algoritmos iterativos como el método de Jacobi
  • El método de Jacobi puede ejecutarse en paralelo en la GPU, por lo que su implementación es muy sencilla

Resumen: simulación de Navier-Stokes

  • Las matemáticas de Navier-Stokes pueden ser algo complejas, pero simular un fluido resolviendo las ecuaciones puede resumirse en unos pocos procedimientos de actualización clave

1.3 Confinamiento de vorticidad (Vorticity Confinement)

  • Usar una cuadrícula para almacenar el campo de velocidad es muy conveniente, pero al interpolar valores entre puntos de la cuadrícula aparece un suavizado numérico no deseado
  • Esto hace que se disipen los remolinos turbulentos del flujo y, en general, produce un movimiento de fluido excesivamente suave y “aburrido”
  • El confinamiento de vorticidad es un proceso para amplificar esa vorticidad perdida
  • El confinamiento de vorticidad fue ideado para resolver campos de flujo muy complejos, como los de las aspas de un helicóptero
  • La vorticidad se calcula en cada punto tomando el curl de u, y para amplificarla se añade flujo circular en cada punto

Turbulencia con Curl-Noise

  • El curl noise es un método similar al confinamiento de vorticidad, pero en lugar de medir y amplificar la vorticidad del campo de velocidad, usa una función de ruido para crear desde cero un campo escalar de vorticidad
  • Los fluidos que se mueven rápido y son muy turbulentos son los que más se benefician del confinamiento de vorticidad y del curl noise

2. Simulación de fuego

  • Para simular fuego y humo, hay que añadir canales que representen el combustible y la temperatura, y modelar la combustión del combustible para generar calor
  • También hay que manejar el ascenso de las partes más calientes del fluido según un modelo de flotabilidad térmica, y renderizar correctamente las llamas

2.1 Modelo básico de combustión

  • Químicamente, el fuego se produce por una reacción de oxidación del material combustible, que libera calor y luz
  • Definimos un campo escalar ρ que representa la densidad del combustible y un campo escalar T que representa la temperatura
  • El combustible se quema y añade temperatura al sistema, y la temperatura se difunde de las zonas calientes a las frías
  • La convección térmica se define como la combinación de estos dos procesos, y ya contamos con un modelo matemático para representarla: ¡advection!

Opinión de GN⁺:

  1. Este artículo explica el complejo proceso de simular en tiempo real fluidos como el fuego y el humo, un tema muy importante en gráficos por computadora y desarrollo de videojuegos.
  2. Con los avances recientes de las GPU, ahora es posible procesar simulaciones de fluidos complejas en tiempo real, lo que contribuye a crear juegos visualmente atractivos y efectos especiales para cine.
  3. El artículo aborda conceptos matemáticos avanzados como las ecuaciones de Navier-Stokes y el confinamiento de vorticidad, por lo que ofrece información útil para ingenieros de software principiantes interesados en este campo.

1 comentarios

 
GN⁺ 2023-12-20
Comentarios de Hacker News
  • Como alguien con un doctorado en CFD (dinámica de fluidos computacional), admite que nunca había oído hablar del método de confinamiento de vorticidad ni de la turbulencia con ruido curl. Realmente le hace sentir que aprende algo nuevo todos los días.
    • En el CFD industrial, se trabaja con números de Reynolds altos, por lo que no es deseable aplicar ruido para compensar la disipación artificial de los métodos numéricos. De hecho, mucha gente quiere disipación artificial para estabilizar simulaciones con números de Reynolds altos. Los requisitos en gráficos por computadora se enfocan más en que se vea correcto que en la precisión física.
  • Se menciona la simulación de fuego y humo para juegos y la simulación de fluidos en la GPU. Si estos efectos tienen que ejecutarse dentro del juego, surge la duda de si la GPU ya no está lo suficientemente ocupada. Resolver un problema de CFD y renderizar al mismo tiempo parece ser mucho trabajo.
    • Existe la duda de si estas simulaciones podrían ejecutarse en una iGPU para que la dGPU pueda encargarse de más trabajo relacionado con el renderizado, o si la iGPU es demasiado débil y sería mejor pasarlo al CPU.
  • Otra persona llamada "10 Minute Physics" explica muy bien estos temas.
  • Hay una opinión de alguien que pasó de estudiar matemáticas a ser ingeniero de software, que está interesado en las simulaciones de CFD y quiere aprender sobre esta área, aunque tiene las matemáticas algo oxidadas por no haber trabajado con cálculo vectorial o ecuaciones diferenciales parciales desde hace mucho tiempo.
  • Recientemente vio un video sobre cómo implementar una simulación de fluidos sencilla y le pareció muy interesante.
  • EmberGen es un software impresionante que hace simulaciones en tiempo real de fuego y humo en GPUs de consumo, y admite un flujo de trabajo basado en nodos que facilita crear efectos nuevos.
    • El flujo de trabajo mejoró al punto de que tareas que antes tomaban varias horas ahora pueden completarse en minutos.
    • Expresa cierta decepción porque EmberGen no haya recibido tanta atención en Hacker News. (Opinión de un cliente satisfecho sin relación con EmberGen/JangaFX)
  • Aunque no es el punto principal del artículo, hay una opinión de que la introducción, que plantea que al elegir simulación se renuncia al control artístico y hay que negociar dolorosamente con una cantidad de controles que a menudo resulta abrumadora, es algo equivocada.
    • En una escena clave como la del Balrog, no dejaría que la simulación decidiera y preferiría tener control total sobre cada cuadro.
    • Como ejemplo de fantasía tolkieniana, una toma de paisaje donde un río da muchas curvas, hay algunas rocas y de vez en cuando salta un pez sería más adecuada para simulación.
  • A pesar de tener 64GB de RAM, experimenta el problema de que esa página hace que la pestaña se cierre por completo.
  • Hay un enlace a un video que ofrece una buena explicación de por qué las explosiones en gráficos por computadora suelen verse mal.
  • Quedó muy impresionado con la plantilla de distill.pub y con el resultado de su sistema de construcción de páginas, y le parece una lástima que se haya descontinuado en 2021 y ya no reciba mantenimiento.