Bewegung auf einer gekrümmten Planetenoberfläche

7

Ich suche nach einer Lösung, um eine Vielzahl von Objekten über die unebene Oberfläche meines Planeten zu bewegen. Die Idee ist, dass ich eine Reihe von Objekten haben werde, die der Planetenlandschaft folgen und sich in zufälligen Richtungen bewegen.

Die Planetenoberfläche besteht aus 6 projizierten Kugelebenen, die alle verschoben wurden, um eine "holprige" Oberfläche zu erzeugen. Ein gitterbasiertes Bewegungssystem wäre ideal, da es sich für viele Wegfindungslösungen eignet. Ich verwende auch Unity, daher ist die Nutzung der Physik-Engine eine Option, aber die Erfahrungen der Vergangenheit haben nicht zu sehr guten Ergebnissen geführt.

Ich habe Probleme, den besten Ansatz für eine realistische Bewegung zu verstehen. Wäre es eine Frage der Berechnung der Schwerkraft und der anschließenden Übersetzung des Objekts entlang seiner Vorwärts-, Rechts- usw. Oder wäre es eher eine Vorberechnung des Pfades von A nach B und Anwenden dieser Bewegung.

Geben Sie hier die Bildbeschreibung ein

Ich habe überall nach Ideen zu diesem Thema gesucht, aber nichts gefunden. Ein paar Vorschläge wären sehr dankbar.

Vielen Dank.

Caius Eugene
quelle
3
Können Sie etwas genauer sein? Wo hast du Probleme beim Starten? (Beispiel: Wie man die Objekte darstellt, die Mathematik dahinter, wie man die Objekte bewegt ...)
Alex Shepard
1
Sie müssen vier Themen untersuchen: Vektoren (Bestimmen von Vektoren aus Koordinaten, Hinzufügen von Vektoren), Kreuzprodukt (und Oberflächennormalen), Objektraum und Weltraum. Die Lösung wird mit diesem Wissen einfach sein. Denken Sie daran, dass Objekte in Bezug auf die Oberflächennormale bewegt werden, während die Schwerkraft entlang des Vektors zweier Schwerpunkte angewendet wird.
SAHornickel
@SAHornickel Ich habe nur begrenzte Kenntnisse in diesem Bereich, genug, um durchzukommen, aber es scheint, dass die Erweiterung dieses Wissens ein großer Vorteil wäre. Danke für Ihren Vorschlag.
Caius Eugene

Antworten:

1

Nachdem ich zuvor Unity verwendet hatte, würde ich mein Bestes geben, um die Physik-Engine so gut wie möglich zu nutzen. Grundsätzlich würde ich die Positionen in Polarkoordinaten + eine Drehung für die Blickrichtung darstellen. Im Wesentlichen würden die Polarkoordinaten Ihnen eine eindeutige Position auf einer perfekten Kugel geben (die Sie einem Gitter zuordnen könnten, wobei zu berücksichtigen ist, dass sich das Gitter an bestimmten Stellen umwickelt und abquetscht), und die zusätzliche Drehung würde den Winkel um den Vektor senkrecht angeben zu der Kugel an diesem Ort. Unity und die Physik-Engine kümmern sich um die eigentliche Bewegung, solange Sie einen konstanten Gravitations- "Zug" vom Schwerpunkt des Objekts zum Schwerpunkt des Planetoids liefern.

RobCurr
quelle
Vielen Dank für diesen Vorschlag, diese Einheitsperspektive macht für mich Sinn. Ich werde es kurz versuchen und sehen, welche Ergebnisse ich bekomme. Was die Polarkoordinaten betrifft, denke ich, da ich theoretisch 6 Gitter "Gesichter" kann, denke ich, dass Berechnungen auf dieser Basis durchgeführt werden sollten. Die Kombination Ihrer und der Lösung von @untitled könnte die Antwort sein.
Caius Eugene
2

Sie können die Oberfläche als 2D-Höhenkarte Ihres Planeten behandeln.

Dies vereinfacht die erforderlichen Berechnungen erheblich. Wenden Sie für die Schwerkraft einfach eine Kraft nach unten an, und Ihre Hauptbewegung befindet sich auf einer Ebene. Wenn Sie fertig sind, können Sie die Koordinaten einfach über einige Triggerfunktionen in das sphärische Koordinatensystem konvertieren.

ohne Titel
quelle
1
+1 Diese Triggerfunktionen kosten Sie immer noch, aber in Bezug auf Einfachheit, Kollisionszuverlässigkeit und Gesamtleistung würde ich diesen Ansatz der Verwendung der in Unity integrierten Physik empfehlen.
Ingenieur