À ce stade, la plate-forme et le langage de programmation n'ont pas d'importance. J'aimerais simplement savoir s'il existe quelque chose pour cela. Toute aide est appréciée.
À ce stade, la plate-forme et le langage de programmation n'ont pas d'importance. J'aimerais simplement savoir s'il existe quelque chose pour cela. Toute aide est appréciée.
Réponses:
Découvrez ce que Q-Games a utilisé pour Pixeljunk Shooter. C'est un jeu 2d avec une physique des fluides assez impliquée. Je ne sais pas s'ils ont utilisé un moteur physique local ou middleware, mais l'information est probablement là quelque part.
Eh bien, je n'ai pas examiné cela, mais je sais pertinemment que presque tous les moteurs physiques peuvent imiter l'idée. Box2D, etc.
Fondamentalement, les particules rebondissent sur les surfaces et les unes des autres (plus rapidement pour les gaz), mais leur donnent également un effet constant de gravité (les liquides auraient tous la même chose, mais certains gaz pourraient vouloir monter lentement).
Si vous reliez les particules externes, vous obtiendrez une forme polygonale représentant la masse
OU
si vous dessinez simplement un graphique de pixels ou de particules sur chaque particule, vous pouvez obtenir un effet de nuage pour la masse à la place.
La seule bibliothèque que je pourrais proposer qui traite spécifiquement des fluides est Fluidic . C'est plutôt alpha et n'a qu'une seule version, cependant. La bibliothèque de physique Bullet prend en charge «l'hydrodynamique des particules lissées», une technique utilisée pour modéliser les fluides. Bien que la bibliothèque soit orientée vers la 3D, vous pouvez appliquer des contraintes à un axe pour la faire fonctionner en 2D.
Ma recommandation serait, comme je l'ai déjà mentionné dans certains commentaires sur d'autres réponses, d'utiliser un moteur physique standard comme Box2D ou Chipmunk et d'utiliser un certain nombre de cercles pour modéliser l'eau (avec gravité) ou le gaz (sans gravité) et les combiner ensemble dans un seul corps d'eau ou de gaz. Vous pouvez appliquer certaines contraintes sur les corps individuels pour les faire «s'agglutiner» ensemble afin de pouvoir simuler la viscosité. Jetez un œil à cette vidéo pour voir comment les corps individuels (modélisés sous forme de carrés dans la vidéo) fonctionnent ensemble. Notez cependant que la technique utilisée dans cette vidéo n'est pas la même que celle mentionnée dans ce paragraphe. Vous pouvez utiliser la vidéo pour avoir une idée de la façon dont les cercles interagissent et essayer d'imiter cela avec les contraintes présentes dans la bibliothèque de physique utilisée.
La partie intéressante survient lorsque vous souhaitez combiner plusieurs cercles dans un plan d'eau. La solution la plus simple que je peux trouver consiste à dessiner chaque cercle comme une métabille afin qu'ils apparaissent comme faisant partie d'un corps plus grand. Vous pouvez trouver les mathématiques et un exemple de code derrière ces corps ici .
Cela fait quelques années que cette question n'a pas été publiée, mais je l'ai rencontrée lors de la recherche, j'ai donc pensé la mettre à jour.
Google a publié LiquidFun (open source) pour le système Box2D. Il a certaines limites, mais c'est un moyen rapide de commencer avec des particules de liquide, de sable, etc. avec des performances assez décentes.
https://github.com/google/liquidfun
PixelJunk a une excellente approche, mais c'est une bibliothèque privée. Ils ont partagé un niveau incroyable de détails dans leur discours à GCD 2010.