Pregunta

Tengo una idea de juego que requiere una simulación semi-realista de un fluido que fluye alrededor de varios objetos. Piense en un charco de mercurio en una superficie irregular que se inclina en varias direcciones.

Esto es para un juego, por lo que no es necesario un 100% de realismo físico. Lo más importante es que los cálculos se pueden hacer en tiempo real en un dispositivo con la potencia de un iPhone.

Estoy pensando que algún tipo de autómata celular o sistema de partículas es el camino a seguir, pero no sé por dónde empezar.

¿Alguna sugerencia?

¿Fue útil?

Solución

Esta no es mi área de investigación, pero creo que se considera el trabajo canónico:

Simulación de fluidos para gráficos de computadora

http://www.akpeters.com/product.asp?ProdCode=3260

Además, mire el Grupo de modelado y animación de Berkeley

http://www.cs.berkeley.edu/b-cam/

También recomiendo una herramienta como Google Scholar o Citeseer y persigo la literatura académica.

Otros consejos

Los métodos Lattice-Boltzmann son una forma bastante común de simular fluidos en un autómata celular discretizado de manera similar.

Sin embargo, en aras del rendimiento en tiempo real en un iPhone, puede ser más efectivo simular el fluido como un sistema de partículas y luego encontrar una forma de procesar las partículas como una masa volumétrica. Sospecho que este es el enfoque adoptado por juegos como Aqua Forest .

Probablemente un sistema de partículas es un buen lugar para comenzar. En este sentido, puede ver el SPH (hidrodinámica de partículas suavizadas) como un enfoque algo más físico para la simulación de fluidos que aún se basa en partículas.

El trabajo de Ron Fedkiw es bastante impresionante en esta área.

Un comentario más: las simulaciones de fluidos son cosas de programación paralela numérica y supercomputadoras, o al menos, escritorios de varios núcleos de alta potencia. Un iPhone probablemente no lo cortará.

SPH con partículas es probablemente el más rápido en ponerse en marcha con una ventaja inicial en la capacidad de extensión en viscoelásticos y otras cosas. Mañana publicaré una guía en mi blog que he estado escribiendo durante los últimos días sobre este mismo tema. ( http: //blog.brandonpelfrey. com )

Me pregunto si estás pensando en algo como Archer Maclean's Mercury o Mercury Meltdown para la PSP.

Hasta donde yo sé en el juego De Blob un color" blob " se mueve alrededor de un entorno blanco, coloreando objetos con los que choca. Esto se activó de alguna manera en mi mente cuando leí tu descripción de lo que pareces querer hacer. (En realidad no he jugado el juego, así que no tengo idea de qué tan bien se ajusta).

Habiendo dicho eso, me parece recordar que la fluidez de la burbuja es principalmente artificial en ese juego: básicamente es una esfera, algunas pequeñas transformaciones de tamaño / forma, algunas señales de movimiento y `` sonidos fuidy '' agregados. que dan al jugador la impresión de que algo no bastante sólido es el personaje principal del juego. No se incluyó programación real de física o simulación.

Suena como una buena opción para un software ejecutable de iPhone, eso. ¿Sería eso suficiente para ti?

¿Es tan escaso que tienes que modelar partículas?

Si es así, recomiendo echar un vistazo a Autómatas celulares de celosía de gas (LGCA, ver ejemplo video aquí ).

En resumen, LGCA es una subclase de autómatas celulares donde los estados de la celda son tuplas de valores binarios, cada uno representa un canal entre una celda y uno de sus vecinos, y a través del cual las partículas pueden viajar (el canal es 1 si contiene una partícula, 0 de lo contrario).

El esquema de actualización es entonces una función sincronizada paralela de dos pasos que reorganiza las partículas entre los canales dentro de cada celda (colisión) y luego propaga estas partículas al canal correspondiente del vecino objetivo (propagación).

La solución Navier-Stokes basada en la cuadrícula es siempre más rápida y la velocidad de cálculo es constante.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top