En este punto, la plataforma y el lenguaje de programación no importan. Me gustaría saber si existe algo para esto. Cualquier ayuda es apreciada.
En este punto, la plataforma y el lenguaje de programación no importan. Me gustaría saber si existe algo para esto. Cualquier ayuda es apreciada.
Respuestas:
Mira lo que Q-Games usó para Pixeljunk Shooter. Es un juego 2D con una física de fluidos bastante complicada. No estoy seguro de si usaron un motor de física interno o de middleware, pero la información probablemente esté disponible en alguna parte.
Bueno, no he investigado esto, pero sé con certeza que casi cualquier motor de física puede emular la idea. Box2D, etc.
Básicamente, las partículas rebotan alrededor de las superficies y entre sí (más rápido para los gases), pero también les dan un efecto de gravedad constante (todos los líquidos tendrían lo mismo, pero algunos gases podrían elevarse lentamente).
Si une las partículas externas obtendrá una forma poligonal que representa la masa
O
Si simplemente dibujas un gráfico de píxeles o partículas sobre cada partícula, puedes lograr un efecto de nube para la masa.
La única biblioteca que se me ocurrió que trata específicamente sobre fluidos es Fluidic . Sin embargo, es bastante alfa y solo tiene una versión. La biblioteca de física Bullet admite la 'hidrodinámica de partículas suavizadas', una técnica utilizada para modelar fluidos. Aunque la biblioteca está orientada hacia 3D, puede aplicar restricciones a un eje para que funcione en 2D.
Mi recomendación sería, como ya mencioné en algunos comentarios sobre otras respuestas, usar un motor de física estándar como Box2D o Chipmunk y usar varios círculos para modelar el agua (con gravedad) o el gas (sin gravedad) y combinarlos juntos en un cuerpo de agua o gas. Puede aplicar algunas restricciones en los cuerpos individuales para que se agrupen y simular la viscosidad. Eche un vistazo a este video para ver cómo los cuerpos individuales (modelados como cuadrados en el video) trabajan juntos. Sin embargo, tenga en cuenta que la técnica utilizada en este video no es la misma que se menciona en este párrafo. Puede usar el video para tener una idea de cómo los círculos interactúan entre sí e intentar imitar esto con las restricciones presentes en la biblioteca de física utilizada.
La parte interesante viene cuando quieres combinar múltiples círculos en un cuerpo de agua. La solución más sencilla que se me ocurre es dibujar cada círculo como una metabola para que aparezcan como parte de un cuerpo más grande. Puede encontrar las matemáticas y un código de ejemplo detrás de estos cuerpos aquí .
Han pasado algunos años desde que se publicó esta pregunta, pero la encontré mientras buscaba, así que pensé en actualizarla.
Google lanzó LiquidFun (código abierto) para el sistema Box2D. Tiene algunas limitaciones, pero es una forma rápida de comenzar con partículas líquidas, de arena, etc. con un rendimiento bastante decente.
https://github.com/google/liquidfun
PixelJunk tiene un gran enfoque, pero es una biblioteca privada. Compartieron un sorprendente nivel de detalles en su charla en GCD 2010.