Gravitationsmechanik für das Laufen auf der Innenfläche einer Kugel in Godot 4.5
In der Godot Engine 4.5 erfordert die Implementierung eines First-Person-Controllers für das Laufen auf der Innenfläche einer Hohlkugel ein nicht-standardisiertes Gravitationsmodell. Die Richtung der Gravitation ist stets entlang der Oberflächennormale orientiert, das heißt zum Mittelpunkt der Kugel hin. Dies definiert den Gravitationsvektor als Funktion der Position \vec{g}(\vec{r}).
Ein vereinfachtes Modell nimmt eine konstante Beschleunigung g_0 auf der Oberfläche an (h=0), aber für realistische Sprünge bis zu 0.3R Höhe ist eine Abhängigkeit von der Höhe h = R - |\vec{r}| notwendig. Die Kugel ist symmetrisch, daher hängt g nur von h ab: \vec{g} = g(h) \frac{\vec{r}}{|\vec{r}|}.
Modellprinzipien:
- Keine Gravitation im Zentrum: g(R) = 0.
- Kontinuität und sanfte Änderungen in g(h).
- Keine Extrema auf [0, R].
Die lineare Funktion g(h) = g_0 \frac{R - h}{R} vereinfacht sich zu \vec{g} = g_0 \frac{\vec{r}}{R}. Dies sorgt für intuitive Physik: langsames Schweben nahe dem Zentrum und standardmäßiges Fallen nahe der Oberfläche.
Sprungdynamik und numerische Integration
Die vertikale Bewegung wird durch die Gleichung \ddot{h} = -g_0 (1 - \frac{h}{R}) beschrieben. Um die Trajektorie mit den Anfangsbedingungen h(0)=0, \dot{h}(0)=v_0 zu berechnen, wird das Euler-Verfahren verwendet.
Vorteile des Euler-Verfahrens für die Spielphysik:
- Kompakter Code mit einfacher Iteration.
- Geringe Rechenlast pro Frame.
- Akzeptable Fehlermarge bei 60 FPS und float32.
Die analytische Lösung ist komplexer, aber nützlich für die Analyse. Diagramme zeigen, dass für v_0 < 80% der Geschwindigkeit zum Zentrum die Dynamik der auf der Erde nahe kommt.
Analyse der Sprunggrenzen
Ein Sprung zum Zentrum mit einem Stopp erfordert eine Geschwindigkeit, die von R und g_0 abhängt. Für menschliche Fähigkeiten (v_0 ≤ 5 m/s, g_0=9.8 m/s²), ist der Kugelradius auf ~5 m begrenzt. Größere Kugeln erfordern eine Reduzierung von g_0 oder machen das Erreichen des Zentrums unmöglich.
Auswirkung der Parameter auf h(t):
- Eine Erhöhung von R macht die Dynamik ähnlicher zur flachen Gravitation.
- Hohe v_0 nahe dem Zentrum verursacht ungewöhnliches Schweben.
- Für R ≥ 20 m fühlen sich Sprünge bei typischen Geschwindigkeiten standardmäßig an.
Grenzen der "speziellen" Dynamik: v_0 < 0.8 v_center oder R > 2R_ref.
Wichtige Erkenntnisse
- Lineares Modell g(h): Einfache Implementierung \vec{g} = g_0 \frac{\vec{r}}{R}, sanfter Übergang von g_0 zu 0.
- Euler-Verfahren: Geeignet für Echtzeit, minimale Last.
- Realistische Grenzen: Ein Sprung zum Zentrum ist nur möglich für R < 10 m bei g_0=9.8 und v_0=5 m/s.
- Spielgefühl: Ungewöhnliche Physik zeigt sich nur bei Annäherung an das Zentrum.
- Godot 4.5: Ähnlich wie beim Möbiusstreifen-Controller, Fokus auf lokale Vertikale.
Implementierung des Controllers
Im Controller bestimmt die Gravitation die "Kopf-zu-Fuß"-Orientierung. Für den Flug während eines Sprungs wird nur die Gravitation berücksichtigt; Aerodynamik ist optional. Eine spezielle Behandlung des Kugelzentrums verhindert eine Division durch Null.
Für große R (Weltmaßstäbe) behält das Modell die Symmetrie bei, erfordert jedoch eine Optimierung der Integration bei niedrigen FPS. Tests auf float32 bestätigen die Stabilität.
— Editorial Team
Noch keine Kommentare.