An dieser Stelle spielen die Plattform und die Programmiersprache keine Rolle. Ich möchte nur wissen, ob es dafür etwas gibt. Jede Hilfe wird geschätzt.
An dieser Stelle spielen die Plattform und die Programmiersprache keine Rolle. Ich möchte nur wissen, ob es dafür etwas gibt. Jede Hilfe wird geschätzt.
Antworten:
Schauen Sie sich an, welche Q-Games für Pixeljunk Shooter verwendet wurden. Es ist ein 2D-Spiel mit ziemlich komplexer Fluidphysik. Ich bin mir nicht sicher, ob sie eine hausgemachte oder Middleware-Physik-Engine verwendet haben, aber die Informationen sind wahrscheinlich irgendwo da draußen.
Nun, ich habe nicht darüber nachgedacht, aber ich weiß, dass fast jede Physik-Engine die Idee emulieren kann. Box2D usw.
Grundsätzlich können Partikel von Oberflächen und von einander abprallen (schneller für Gase), aber auch eine konstante Wirkung wie bei der Schwerkraft haben (Flüssigkeiten haben alle die gleiche Wirkung, aber einige Gase möchten Sie möglicherweise langsam aufsteigen).
Wenn Sie die äußeren Partikel verbinden, erhalten Sie eine polygonale Form, die die Masse darstellt
ODER
Wenn Sie einfach eine Pixel- oder Partikelgrafik über jedes Partikel zeichnen, können Sie stattdessen einen Wolkeneffekt für die Masse erzielen.
Die einzige Bibliothek, die ich mir vorstellen könnte, die sich speziell mit Flüssigkeiten befasst, ist Fluidic . Es ist ziemlich alpha und hat nur eine Veröffentlichung. Die Physikbibliothek Bullet unterstützt die "Hydrodynamik geglätteter Teilchen", eine Technik zur Modellierung von Flüssigkeiten. Obwohl die Bibliothek auf 3D ausgerichtet ist, können Sie Einschränkungen auf eine Achse anwenden, damit sie in 2D funktioniert.
Meine Empfehlung wäre, wie ich bereits in einigen Kommentaren zu anderen Antworten erwähnt habe, eine Standard-Physik-Engine wie Box2D oder Chipmunk zu verwenden und eine Reihe von Kreisen zu verwenden, um das Wasser (mit Schwerkraft) oder das Gas (ohne Schwerkraft) zu modellieren und diese zu kombinieren in einen Wasser- oder Gaskörper. Sie können den einzelnen Körpern einige Einschränkungen auferlegen, um sie zusammenzuklumpen, sodass Sie die Viskosität simulieren können. Schauen Sie sich dieses Video an, um zu sehen, wie die einzelnen Körper (im Video als Quadrate modelliert) zusammenarbeiten. Beachten Sie jedoch, dass die in diesem Video verwendete Technik nicht mit der in diesem Absatz beschriebenen übereinstimmt. Sie können das Video verwenden, um ein Gefühl dafür zu bekommen, wie die Kreise miteinander interagieren, und versuchen, dies mit den Einschränkungen zu imitieren, die in der verwendeten Physikbibliothek vorhanden sind.
Der interessante Teil kommt, wenn Sie mehrere Kreise in Gewässer kombinieren möchten. Die einfachste Lösung, die ich finden kann, ist, jeden Kreis als Metaball zu zeichnen, damit er als Teil eines größeren Körpers erscheint. Sie finden die Mathematik und einige Beispielcodes hinter diesen Körpern hier .
Es ist ein paar Jahre her, dass diese Frage veröffentlicht wurde, aber ich bin darauf gestoßen, als ich gesucht habe, und dachte, ich würde sie aktualisieren.
Google hat LiquidFun (Open Source) für das Box2D-System veröffentlicht. Es gibt einige Einschränkungen, aber es ist ein schneller Weg, um mit Flüssigkeiten, Sand usw. Partikeln mit einer recht anständigen Leistung zu beginnen.
https://github.com/google/liquidfun
PixelJunk hat einen großartigen Ansatz, aber es ist eine private Bibliothek. In ihrem Vortrag auf der GCD 2010 teilten sie ein erstaunliches Maß an Details.