Simulación de líquidos con Autómatas Celulares


Hace ya un tiempo escribí un post sobre los procesos de generación procedural de mapas, en el cual se centraba en el ámbito de los videojuegos, en el mencione los autómatas celulares como método para la generación de cuevas más realistas que usando ruido, pero hay otros sistemas que se pueden implementar o simular con los autómatas celulares y en este post nos vamos a centrar en la simulación de líquidos.


Motivación

Alguien serio, sin alma, con una mente que ha sido vaciada de toda imaginación podría hacer esta pregunta, para que podemos querer generar líquidos en un entorno virtual? Pues para lo mismo que podemos querer gráficos 3D fotorrealistas o motores de física compleja, para dotar a nuestras simulaciones y videojuegos de más realismo y complejidad.


Bases del Sistema

Para este post si que voy a detenerme a explicar como funcionan los autómatas celulares, para que se entienda mejor.

Los autómatas celulares, en este contexto al menos, se refiere al sistema formado con celdas que cambian su estado independientemente siguiendo unas reglas, estas celdas pueden tener diferentes dimensiones, desde el autómata celular de 1 dimensión que sería una lista, pasando por el de 2 dimensiones, que es con el que vamos a trabajar para aclararnos visualmente, el de 3 dimensiones que es el que utilizaríamos en un sistema realista de simulación. de líquidos, hasta las dimensiones que queramos definir.

Algo que define a los autómatas celulares es que el estado de cada célula solamente depende de su propio estado, hay versiones que pueden tener memoria de estados anteriores; y de los estados de sus vecinos, es decir las células que la rodean o están en contacto con esta, para saber si es una célula vecina o no, hay que comprobar el tipo de vecindario del sistema, el patrón para definir que células son vecinas, cuales no y como reaccionar ante los limites de la simulación, porque al ser un modelo simulado, no tenemos espacio infinito.

Las reglas pueden ser muy sencillas como con el caso del archiconocido juego de la vida, o tan complejas como se crea necesario, pero un comportamiento observado en este tipo de sistemas es la llamada complejidad emergente, un sistema con reglas sencillas interaccionando entre ellas termina mostrando comportamientos complejos, un ejemplo de la vida real de este efecto sería el funcionamiento de las proteínas que están formadas por aminoácidos que si cumplen reglas rencillas.


Sistema

Para esta simulación se van a usar reglas locales, definiendo un vecindario de 3x3+2, es decir las 8 casillas que la celda tiene contiguas y aquellas que se encuentran a 2 de distancia en la misma altura. Aún tiene algunos problemas con las normas, pero da un vistazo de los resultados esperables.

No funciono!

Otros Casos (mejores)


El mejor caso de uso que puedo mencionar respecto al uso de autómatas celulares para simular líquidos en un videojuego sería Noita, que tiene unas reglas mas trabajadas y más interacciones programadas que la simulación que use anteriormente, pero en esencia sería el mismo sistema.


Comentarios

0 Comentarios ¡Sé el primero!