2D-Soft-Body-Physik-Engines?

9

Hallo, ich habe kürzlich die SFML-Grafikbibliothek gelernt und möchte ein 2D-Physiksystem mit nicht starrem Körper verwenden oder dafür verwenden. Ich habe drei Fragen:

Die Definition des starren Körpers in Box2d lautet

Ein Materiestück, das so stark ist, dass der Abstand zwischen zwei beliebigen Materieteilen auf dem Stück völlig konstant ist.

Und genau das möchte ich nicht, da ich elastische, verformbare, zerbrechliche und wieder verbundene Körper herstellen möchte. 1. Gibt es einfache 2D-Physik-Engines, aber mit solchen Eigenschaften? vorzugsweise kostenlos oder OpenSource?

2. Wenn nicht, könnte ich box2d verwenden und daran arbeiten, um es zu erstellen, selbst wenn es auf starren Körpern basiert?

3. Wenn es eine einfache Physik-Engine wie diese gibt, sollte ich dann den Prozess durchlaufen, trotzdem eine neue zu erstellen, nur um Erfahrung zu sammeln und die mathematischen Mathematikkenntnisse zu verbessern? Ich denke, es würde helfen, wenn ich jemals den Code einer vorhandenen Engine ändern oder ein Spiel mit wirklich einzigartiger Physik erstellen wollte.

Vielen Dank!

Greif
quelle
1
Es gab diese Engine namens JelloPhysics (C #), aber die Seite scheint ausgefallen zu sein. Es gibt ein Video hier: youtube.com/watch?v=SvqY_pgA6DU
bummzack

Antworten:

6

Sie können starre Körpersysteme verwenden, um eine weiche Körper- und Fluiddynamik zu erzeugen. Physischer Grund dahinter? Nun, Atome sind im Wesentlichen kleine starre Körper. Dies ist natürlich nicht ganz richtig, aber der Einfachheit halber können Sie sie als solche betrachten. Und weiche Körper bestehen offensichtlich aus Atomen.

Wie schafft man also "weiche Körper" mit einer Starrkörper-Engine wie Box2D?

Die wesentliche Technik besteht darin, Punkte in Ihrem Körper mithilfe von Gelenken miteinander zu verbinden. Wenn Sie beispielsweise die Enden einer Liste von Linien mithilfe von Abstandsfugen miteinander verbinden (dh der Abstand zwischen zwei Fugen muss konstant sein), verhält es sich ungefähr wie ein Stück Stoff.

Aber das ist nur eine grobe Beschreibung. Ewjordan, einer der Entwickler des Java-Ports von Box2D, hat viel "elementare Feldarbeit" mit Box2D geleistet. Hier ist ein guter Ausgangspunkt: http://www.box2d.org/forum/viewtopic.php?f=8&t=1978

TravisG
quelle
Eine Mischung aus Zug- / Druckfedern ist erforderlich, um die "Form" des weichen Körpers beizubehalten und das Volumen zu berechnen, um ihn ganz zu halten.
Jonathan Connell
Ja, aber all das geschieht tatsächlich über Gelenke, wenn es sich um Box2D handelt. Sicher, er muss ihr Verhalten manuell ändern, aber dort muss er anfangen. Für konstante Volumeneffekte in Gish-ähnlichen Blobs verfügt JBox2D beispielsweise über ConstantVolumeJoint.
TravisG
Ja, ich bin nicht so vertraut mit Box2D, ich weiß nur, wie einige Kollegen PhysX verwendet haben, um eine Blase zu simulieren ^^
Jonathan Connell
1

Der Begriff, den Sie suchen, ist Weichkörperphysik.

Wikipedia hat eine schöne Liste. Sie sind alle 3D AFAICS, sollten aber gut sein.

Schauen Sie sich auch diese SO-Frage an.

Ein großartiges Buch (es ist ein starrer Körper, aber alle Mathematik und Physik sind vorhanden; es ist auch 3D, aber es ist trivial, es auf 2D zu übertragen) ist Game Physics Engine Development . Es implementiert ein partikelbasiertes System, bevor es auf starre Körper übergeht und kollidiert.

Die kommunistische Ente
quelle
1

Eine einfache Möglichkeit, weiche Körper zu simulieren, besteht darin, kleine starre Körper mit elastischen Gelenken zu verbinden. Dann ist es schwierig, die Parameter Ihres Modells zu optimieren und die Textur dem zugrunde liegenden Modell zuzuordnen.

Der folgende Blog-Beitrag enthält eine Implementierung eines deformierbaren Balls mit cocos2d-Engine: http://2sa-studio.blogspot.com/2014/05/soft-bodies-with-cocos2d-v3.html

sdabet
quelle
Credits für cocos2d Debug Draw ;-)
SDAB