Seite 1 von 1

Flugzeugflugphysik

Verfasst: 17.12.2024, 11:49
von Jonathan
Moin, eine Frage an die Simulationsexperten hier: Wie werden Flugzeuge in Computerspielen simuliert?

Wie man es wohl "richtig" machen würde kann ich mir schon vorstellen: Es gibt ja Beispielsweise Toolkits wie OpenFOAM mit denen man die Strömungskräfte sehr akkurat berechnen kann (sowas wird ja schließlich auch in der Entwicklung der Flugzeuge benutzt). Darüber kann man dann die verschiedenen Kräfte ausrechnen, die auf verschiedene Teile des Flugzeugs wirken, welches selber größtenteils ein Rigid-Body ist (gut, Flügel werden sich schon etwas biegen), der sich dann mit einer gewissen Geschwindigkeit und Trägheit bewegt, deren Updates sich nun aus der Summe der Einzelkräfte ergeben. Bewegt man Höhen- oder Seitenruder ändert sich entsprechend die Form des Flugzeugs, die Luftströmungen ändern sich und die resultierenden Kräfte sind anders und das Flugzeug fliegt "automatisch in die richtige Richtung". First-Principle-Based, quasi.
Vielleicht übersehe ich da noch etwas grundlegendes, aber selbst wenn nicht, ist eine vollständige Strömungssimulation (mit Turbulenzen und all dem) natürlich halbwegs teuer und nicht das, was man für ein Computerspiel will.

Auf der anderen Seite des Spektrums kann eine Arcade Steuerung z.B. direkt die Flugrichtung ändern, dass sich das Höhenruder bewegt ist dann nur noch optisches Gimmick. Das fühlt sich dann aber vermutlich weder sehr echt an, noch wird es die nötige Komplexität im Verhalten zeigen, dass das Rumfliegen wirklich Spaß macht.

Für eine Flugsimulation mit realistischem Flugverhalten will man also vermutlich irgendetwas dazwischen nehmen, ein Modell, dass in den meisten Situationen schon ziemlich nah an das korrekte physikalische Verhalten kommt, aber deutlich einfacher / schneller berechenbar ist. Bloß was? Wie sehen da die gängigen Approximationen aus? Gibts sowas wie best practises? Hat da schonmal jemand näher reingeschaut?

Fun Fact: Beim Nachdenken über Flugphysik ist mir jetzt auch klar geworden, weshalb Treibstoff in den Tragflächen gelagert wird. Ich dachte früher immer der Hauptgrund sei, das da halt irgendwie noch Platz war, und man flüssiges Kerosin leichter in komischen Formen lagern kann, als Menschen oder Gepäck. Jetzt vermute ich, dass es hauptsächlich mit dem Massenmittelpunkt des Flugzeugs zu tun hat: Auftrieb kommt von den Flügel, Schub von den Triebwerke quasi auch (die sind ja direkt unter den Flügeln). Beides funktioniert netter, wenn die Kräfte möglichst direkt auf den Massenmittelpunkt wirkt, denn alles andere erzeugt eine zusätzliche Drehbewegung die man ausgleichen muss. Treibstoff ist schwer, das Fluggewicht nach dem Start und vor der Landung ist sehr verschieden, wenn der Treibstoff also irgendwo anders als im Massenmittelpunkt gelagert würde, hätte man Probleme, alles auszubalancieren. Erinner an diesen Fall, wo in einem Lastenflugzeug ein Panzer(?) nicht richtig angeschnallt war, und beim starten nach hinten gerutscht ist. Das Flugzeug hat diese Nase nicht mehr runter bekommen, war manövrierunfähig, und ist direkt abgestürzt. Das Gewicht oder irgendein anderer Defekt war überhaupt nicht das Problem, sondern einfach nur, dass der Massenmittelpunkt verrutscht war. Ist schon interessant, darüber nachzudenken...

Re: Flugzeugflugphysik

Verfasst: 17.12.2024, 12:08
von woodsmoke
Bei Microsofts FSX wurden Werte einfach von Tabellen abgelesen!
Look-up tables do not calculate coefficients, just as they don't calculate anything else. A look-up table is a table of keys with corresponding values. When given a key, it looks up its table to return the corresponding value. No calculations. No physics. Just a lookup. Of a table. Hence the name, lookup table.
https://www.avsim.com/forums/topic/4959 ... on/page/5/

Re: Flugzeugflugphysik

Verfasst: 17.12.2024, 13:09
von Krishty
Ja, bei dem Ganzen gibt es verschiedene Abstufungen.

Arcade

Arcade-Spiele wie Ace Combat haben ein kaum physikalisch basiertes Modell. Da hat man einen Geschwindigkeitsvektor, und Drücken der Richtungstasten lenkt den Vektor um. Nicht einmal Masse/Trägheit wird da vernünftig simuliert, weil “coole” Manöver wie Cobra dann irre schwer hinzukriegen sind. Ich würde sagen, dass die meisten Raumschiff- und Flugzeugspiele, die man mal eben an einem Wochenende programmiert, unter diese Kategorie fallen. Nebenwirkung ist dann, dass man in Ace Combat z. B. rückwärts fliegen kann.

Sim-Lite

Spiele, die sich als Simulation verkaufen, simulieren üblicherweise einen bis ein Dutzend Auftriebsflächen pro Flugzeug plus Massenschwerpunkt, und Trägheit (auch bei Rotation). Da gibt es dann bspw. eine Auftriebsfläche für Rumpf, eine pro Tragfläche, eine für Ruder, usw. Jede Fläche hat Luftwiderstand und Auftrieb, die gemäß Anstellwinkel ausgewertet werden. Wenn man steuert, werden Auftriebs- und Widerstandskoeffizienten der Flächen verändert.

[Diese Koeffizienten kannst du aus Flügelprofil und Flugzeugform mit Aerodynamic-Programmen wie DATCOM berechnen und in Tabellen speichern. Es gibt auch viele Paper der NASA über Windkanaltests, aus denen du sie einfach abschreiben kannst. Das ist, was woodsmoke oben meinte.]

Die simulierten Flächen stimmen meist nicht mit dem Flugzeugmodell überein, sondern sind vereinfacht. Flugzeuge haben merkwürdige Effekte wie die Kopplung von Roll- und Giermoment. Das bedeutet: Wenn du in das Ruder trittst, um nach rechts zu gieren, rollt die rechte Tragfläche nach unten und die Nase senkt sich zugleich. Das ist einerseits unintuitiv für den Spieler und bedeutet weiterhin, dass du einen richtigen Fly-by-Wire-Computer mit Querkopplung der Achsen simulieren müsstest, um das Flugzeug stabil zu halten.

Hier vergleicht jemand, was passiert, wenn man in einer F-16 das Seitenruder tritt: Wirklichkeit, DCS, BMS. In Sim-Lites würdest du einfach erwarten, dass das Flugzeug ein Bisschen nach links giert.


Also modelliert man eine Art Dart-Pfeil mit Rudern und Traglächen genau um den Masseschwerpunkt, selbst wenn das Flugzeug visuell wie ein supertoller Düsenjäger aussieht. Ist wesentlich einfacher zu simulieren und zu handhaben, fühlt sich recht realistisch an.

Echte Simulation

“Echte” Simulationen wie X-Plane, Microsoft Flight Simulator, und DCS (je nach Flight Model) unterteilen das Flugzeug ähnlich der Sim-Lites in aerodynamische Flächen und berechnen darauf Physik. Im Gegensatz zu Sim-Lites ist die Unterteilung aber möglichst realistisch. Jedes Flugzeug, das in Wirklichkeit ein Fly-By-Wire-System benötigt (also quasi alles über Cessna-Propellerflugzeug) bekommt eine Simulation dieses Systems.

Solche Simulationen sind dann wesentlich anspruchsvoller. Bei DCS die F-15 zu starten dauert um die acht Minuten, um Checklisten abzuarbeiten.

tl;dr

Arcade ist schnell hingeklatscht und bringt dich 80 % ans Ziel. Sim-Lite dauert trotz sehr grobem Modell wesentlich länger und bringt dich weiter. Eine genaue Simulation eines modernen Flugzeugs ist ein Projekt, das über mehrere Jahre angelegt werden sollte, weil du neben der Aerodynamik auch das Flight Control System mitsimulieren musst. Die meisten Sim-Games gehen den Mittelweg.

Re: Flugzeugflugphysik

Verfasst: 17.12.2024, 13:16
von Krishty
Jonathan hat geschrieben: 17.12.2024, 11:49Fun Fact: Beim Nachdenken über Flugphysik ist mir jetzt auch klar geworden, weshalb Treibstoff in den Tragflächen gelagert wird. Ich dachte früher immer der Hauptgrund sei, das da halt irgendwie noch Platz war, und man flüssiges Kerosin leichter in komischen Formen lagern kann, als Menschen oder Gepäck. Jetzt vermute ich, dass es hauptsächlich mit dem Massenmittelpunkt des Flugzeugs zu tun hat: Auftrieb kommt von den Flügel, Schub von den Triebwerke quasi auch (die sind ja direkt unter den Flügeln). Beides funktioniert netter, wenn die Kräfte möglichst direkt auf den Massenmittelpunkt wirkt, denn alles andere erzeugt eine zusätzliche Drehbewegung die man ausgleichen muss. Treibstoff ist schwer, das Fluggewicht nach dem Start und vor der Landung ist sehr verschieden, wenn der Treibstoff also irgendwo anders als im Massenmittelpunkt gelagert würde, hätte man Probleme, alles auszubalancieren. Erinner an diesen Fall, wo in einem Lastenflugzeug ein Panzer(?) nicht richtig angeschnallt war, und beim starten nach hinten gerutscht ist. Das Flugzeug hat diese Nase nicht mehr runter bekommen, war manövrierunfähig, und ist direkt abgestürzt. Das Gewicht oder irgendein anderer Defekt war überhaupt nicht das Problem, sondern einfach nur, dass der Massenmittelpunkt verrutscht war. Ist schon interessant, darüber nachzudenken...
So ungefähr. Center of Lift verschiebt sich mit steigender Geschwindigkeit, etwa in Reiseflughöhe und bei Reisefluggeschwindigkeit, trimmen musst du also immer. Aber wenn CoL und Center of Gravity nah bei einander sind, hilft das definitiv.

Bei Kampfflugzeugen ist ein niedriges Trägheitsmoment wichtig (damit das Flugzeug schnell rollen und nicken kann), da pumpt man den Sprit so schnell wie möglich aus den Tragflächen in den Rumpf, nahe des Masseschwerpunkts. Kennst das ja mit dem Drehstuhl und den ausgestreckten Armen, die deine Drehgeschwindigkeit bremsen.

Re: Flugzeugflugphysik

Verfasst: 17.12.2024, 13:42
von Jonathan
Vielen Dank für die Ausführungen, ich werd mich da mal näher reinlesen :)

Re: Flugzeugflugphysik

Verfasst: 17.12.2024, 19:10
von antisteo
Die Flugphysik lässt sich mit ein paar Vektoren und Matritzen sehr gut annähern. Ich habe schon relativ viele Flugzeug- und Raketensimulatoren gebaut.

Grundlegender State des Flugzeugs
Prinzipiell musst du dir folgende 12 Werte für ein Fluggerät merken:
x y z Position
rx ry rz Drehung
vx vy vz Geschwindigkeit
vrx vry vrz Inertion (Rotationsgeschwindigkeit)

Schub
Der Schub an einem Triebwerk wird zu einem Teil in Beschleunigung, zum Teil in Rotation umgewandelt. Den genauen Anteil erhältst du, wenn du die Position des Triebwerks relativ zum Massezentrum des Flugzeugs mit dem Schubvektor vektor-multiplizierst. Beispiel: Ein Triebwerk am Ende einer Stange, das 90° zur Stange geneigt ist, wird zu 100% Rotationsschub erzeugen; ein Triebwerk, das am Heck einer Rakete sitzt, wird zu 100% Bewegungsschub erzeugen.

Den Bewegungs-Anteil des Schub teilst du noch durch die Masse und den Rotationsanteil durch die Masseträgheit deines Fluggeräts (die Masse ist 1dimensional, die Rotationsträgheit ist auf jeder Achse anders hoch)

Wenn zwei Triebwerke an zwei gegenüberliegenden Tragflächen angebracht sind, hebt sich der Rotationsfaktor auf (was ja gewollt ist) und es bleibt nur der Vorwärtstrieb.

Je Takt wird der Schub somit auf vx vy vz und vrx vry und vrz addiert.

Widerstand
Der Luftwiderstand ist etwas komplizierter zu berechnen. Die anströmende Luft (Windgeschwindigkeit + Flugzeuggeschwindigkeit) wird abhängig vom Angriffswinkel in unterschiedliche Richtungen reflektiert. Hier brauchst du eine Matrix, die, wenn du die Luftgeschwindigkeit hineinmultiplizierst, die Bremsbeschleunigung zurückgibt.

Beispiel: In Flugrichtung hat das Flugzeug weniger Bremsbeschleunigung als in Senkrecht-Fall-Richtung. Bei gebogenen Flügeln (keine Delta-Flügel), wird außerdem noch ein Teil der Windrichtung zu Auftrieb, d.h. du gewinnst an Höhenbeschleunigung durch einen höheren Luftstrom.

Kontrollflächen
Steuerruder, Seitenruder & co sind auch nur Luftwiderstands-Matritzen, die, wenn das Ruder betätigt ist, auch noch dazu multipliziert werden.

Diese Luftwiderstand-Matrix ist genau das, was woodsmoke mit "Lookup Table" meint.

Re: Flugzeugflugphysik

Verfasst: 17.12.2024, 21:31
von Schrompf
Die Antworten waren bisher sehr spannend. Es ist echt faszinierend, auf welch unterschiedlichen Niveaus die Leute hier einander begegnen.

Re: Flugzeugflugphysik

Verfasst: 18.12.2024, 05:56
von Jonathan
antisteo hat geschrieben: 17.12.2024, 19:10 Die Flugphysik lässt sich mit ein paar Vektoren und Matritzen sehr gut annähern.
Woran ich denken musste: What is the formula for momentum

Re: Flugzeugflugphysik

Verfasst: 18.12.2024, 07:49
von joeydee
Woran ich denken musste: What is the formula for momentum
LOL
Ja, Tensormatrizen, an der Stelle hatte ich die Hobbyphysik aufgegeben :D Obwohl Matrizen eigentlich ja auch nur zusammengefasste Gleichungen sind um mehrere Dimensionen auf einen Schlag abzufrühstücken. Und obwohl ich Matrizen für die 2D- und 3D-Lage liebe (statt der Euler-Notation mit x y z Position, rx ry rz Drehung).
Statt Tensor-Mathe steh ich dann doch mehr auf überschaubare Massepunkt-Integratoren mit Grundschulphysik, die lösen das ja für sich. So wie ich bei Lagematrizen ohne Eulerwinkel auskomme, muss ich auch Winkelgeschwindigkeiten nicht explizit als Wert kennen um das Gesamtverhalten zu simulieren.

Re: Flugzeugflugphysik

Verfasst: 18.12.2024, 11:36
von Jonathan
joeydee hat geschrieben: 18.12.2024, 07:49Obwohl Matrizen eigentlich ja auch nur zusammengefasste Gleichungen sind um mehrere Dimensionen auf einen Schlag abzufrühstücken.
Ich hab in meinem Leben ungefähr 4 mal versucht, Einsteinsummation zu verstehen. Jedesmal war es zu verwirrend und ich hab es schließlich per Hand gemacht und dann ging es auch direkt. Es ist nicht so, dass das sehr kompliziert wäre. Ich würde es garantiert verstehen, wenn ich es 30 Minuten richtig durchlesen würde. Stattdessen hab ich nach 10 Minuten aufgegeben und es in 5 Minuten von Hand gemacht und damit 15 Minuten Zeit gespart. Weil, wenn ich das in 2 Jahren wieder brauche, hab ich ja garantiert alles schon wieder vergessen und muss es neu lernen.

Ein Kollege von mir war dagegen absoluter Fan der Einsteinsummation und hat damit ALLES gemacht. Tjo, jeder sucht sich einen Fetisch selbst aus :D

Re: Flugzeugflugphysik

Verfasst: 18.12.2024, 12:58
von Krishty
joeydee hat geschrieben: 18.12.2024, 07:49LOL
Ja, Tensormatrizen, an der Stelle hatte ich die Hobbyphysik aufgegeben :D Obwohl Matrizen eigentlich ja auch nur zusammengefasste Gleichungen sind um mehrere Dimensionen auf einen Schlag abzufrühstücken. Und obwohl ich Matrizen für die 2D- und 3D-Lage liebe (statt der Euler-Notation mit x y z Position, rx ry rz Drehung).
Statt Tensor-Mathe steh ich dann doch mehr auf überschaubare Massepunkt-Integratoren mit Grundschulphysik, die lösen das ja für sich. So wie ich bei Lagematrizen ohne Eulerwinkel auskomme, muss ich auch Winkelgeschwindigkeiten nicht explizit als Wert kennen um das Gesamtverhalten zu simulieren.
This.

Das Trägheitsmoment ist übrigens vor allem bei großen Flugzeugen und geringer Geschwindigkeit oder großer Höhe wichtig. Kleine und schnelle Flugzeuge haben üblicherweise so einen Überschuss an aerodynamischen Kräften, dass Dinge wie dein Flight Control System und die Rampe der Tasten-/Joystickeingabe wichtiger werden.

Etwa wie bei einem Autorennspiel – wenn du bei 150 km/h die „links“-Taste drückst, ist weniger wichtig, wie der Trägheitstensor des Autos aussieht. Wichtiger ist, ob die Simulation das als instantanen vollen Lenkradeinschlag interpretiert, oder den Lenkeinschlag sanft erhöht, oder – bei angeschlossenem Lenkrad-Input – wie schnell du deine Hände bewegen kannst.

Edit: Hier habe ich den Bug Report, dass sich das Handling der F-22 in Total Air War eigentlich komplett aus dem Low-Pass-Filter auf Tastatur- und Joystickeingaben ergab statt aus Simulation. Meine Zusammenfassung ist
  • Someone missed two zeros when programming pitch control.
     
  • This made the F-22 react too drastic to pitch changes. So they introduced this magic factor to counter pitch changes with lift in the opposite direction.
     
  • They noticed how crazy their FCS oscillates but had no time to analyze the bug, so they just added a low-pass filter to keyboard/joystick input. It was enough for low speeds, so it was shipped.
Einziges Manko war, dass das Flugzeug kurz nickt, wenn man ganz ganz schnell fliegt und man den Joystick oder eine Richtungstaste berührt. Wäre das nicht gewesen, hätten wir den Fehler nicht bemerkt. Ab 150 Knoten ist so ein Kampfflugzeug eigentlich nicht von Ace-Combat-Arcade-Gameplay zu unterscheiden.