Simulation eines auf dem Wasser schwimmenden Objekts

9

Ich arbeite an einem Top-Down-Angelspiel. Ich möchte etwas Physik und Kollisionserkennung in Bezug auf das Boot implementieren, das sich um den See bewegt. Ich möchte in der Lage sein, den Schub entweder vom Hauptmotor oder vom Trolling-Motor, die Wirkung des Windes auf das Objekt und den Widerstand des Wassers auf das Objekt umzusetzen.

Ich habe mir die Farseer-Physik-Engine angesehen, habe aber keine Erfahrung mit einer Physik-Engine. Ich bin mir nicht ganz sicher, ob Farseer für diese Art von Dingen geeignet ist (die meisten Demos scheinen die Anwendung der Schwerkraft auf eine Vertikale zu sein Modell vom Typ Top / Down).

Wäre der Farseer-Motor geeignet? oder wäre ein anderer motor besser geeignet?

Aaron M.
quelle

Antworten:

5

Ich mache so etwas mit Bullet , aber die gleiche Technik kann mit jeder Physik-Engine verwendet werden. Der Auftrieb wird modelliert, indem imaginäre Schwimmer am Körper angebracht werden, die einfach eine Kraft entsprechend ihrer Tiefe unter der Oberfläche an diskreten Punkten ausüben.

Im Zeitschritt testet jeder Schwimmer den Wasserstand an seiner Position und übt dann eine Kraft auf den starren Körper des Bootes an seiner Position relativ zum Boot aus. Ich stelle mir jeden Schwimmer als einen Zylinder vor, der immer vertikal ist, unabhängig von der Ausrichtung des Bootes. Die Kraft ist proportional zu ihrer Tiefe, bis zu einem Maximum, das durch ihr Volumen definiert wird.

Im Moment hat das Boot nur 4 Schwimmer - Bug, Heck, Backbord und Steuerbord. Ich stelle ihre Volumina manuell ein, um genügend Kraft bereitzustellen, um der Schwerkraft entgegenzuwirken, und passe dann die Positionen und Zylinderlängen an, um die Art und Weise, wie sich das Boot bewegt, zu optimieren. Ich habe eine vage Idee, die Schwimmer zu erzeugen, indem ich Zylinder irgendwie in das starre Körpervolumen packe, aber das ist etwas für die Zukunft.

Eine kurze Demo eines Bootes, das durch Wellen segelt, ist hier auf Youtube .

Rob Agar
quelle
0

Die Farseer-Physik unterstützt alle Arten von Kraft- und Intertia-Anwendungen. Das wäre also kein Problem. Ich bin mir jedoch nicht 100% sicher, ob Farseer bereits flüssige Körper (für das Wasser) unterstützt, aber wenn dies unterstützt wird, sollte es in Ordnung sein. (Beachten Sie auch, dass Farseer eine 2D-Physik-Engine ist.)

Roy T.
quelle
Ich denke, dass sie Unterstützung für Flüssigkeiten in der nächsten Version von Farseer (3.3)
hinzufügen