Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Opened 20 years ago

Closed 19 years ago

#27 closed defect (fixed)

Physics Engine

Reported by: patrick Owned by: bensch
Priority: major Milestone: 0.3.0-pre-alpha orx-v0
Component: Physics/ODE Version:
Keywords: Cc: bensch, patrick, nico
Referenced By: References:

Description

The goal is to implement an engine, that will calculate a congruent physical state on the world. In a first step, implement a simple PhysicsEngine and make a test level, where you are able to play around with the physics - this testlevel is curcial for development, because it will motivate you and your programmer friends…
This task is one of the most important parts in orxonox, the earlier it is implemented, the earlier the other modules in orxonox can be finished. If you need an example of a working physical engine, have a look at HalfLife2 :)
The rest of this document is written in german, ask us for translations, if needed.

  • Konkrete Anwendungszwecke
    • Fallende Koerper: freier Fall nach den physikalischen Gesetzen ACHTUNG: Aufschlag am Boden: kollisionsdetektion
    • Impulserhaltung: stoss von Koerpern. Hebelgesetz mit Rotation etc. ACHTUNG: Daempfung nicht vergessen sonst unendl. bewegung UND: Elastizitaet wichtig, sonst wird zu viel Energie in stoessen uebertragen und die Bewegung erscheint unreal.
    • Traege Beschleunigung, Steuerung von Player-Entities
    • Primitive Teilchen-Systeme: Objekte aus mehreren Teilen, die auseinanderbrechen koennen. Zerfall nach den Gesetzen der Physik
    • Kamera gekoppelt an Spieler mitterls einer unsichtbaren "Feder" →Kamera ist ein physikalisches Objekt
    • "schockwelle" bei explosion: objekte geringen gewichtes wird ein impuls radial weg vom explosionszentrum zugefuegt.
    • gravitationsrackete: oeffnet einen gravitationsschlund, der alles einsaugt, dass dumm und/oder langsam ist.
    • Physikalisches Antriebssystem fuer Flugkoerper
      • leistung (kWatt) → beschleunigung
      • aktivierung-delay
  • Ansprueche an die Physics engine:
    • Physikalische Koerper (z.B. WorldEntities) modelieren. Physikalische Eigenschaften beruecksichtigen wie:
      • Masse
      • Traegheit (moment)
      • Geschwindigkeit/ Beschleunigung
      • Schwerpunkt
      • (Dreh)impuls
      • Daempfung von bewegung, z.B. Luftwiderstand (damit bewegung nicht inf.)
      • Energie (Kinetisch/Potentiel)
      • Position (Localtion/Position)
      • Orientation (Location/Position)
    • Materialeigenschaften (Body):
      • material/fluid/field/nothing (enum)
      • "quetsch-koeffizient" bei kollisionen (impulserhaltung), der direkt in schaden umgerechnet werden koennte.
      • Breakable:
        • strength (0.0 - 1.0)
        • force Limit (0.0 never breack)
        • torque Limit
    • Fake Eigenschaften wie (Body):
      • isMoveable
      • isDestroyable
      • physikalische interaktion aktivieren/deaktivieren (flag?)
    • Umwelteigenschaften:
      • daempfung von bewegung (damit nicht unendl. bewegung)
    • Interaktionen
      • Kopplung von Objekten durch Federn/(=Kraftfelder)
  • Implementierung
    • Zentrale liste der Objekte (entities?) in class World
    • Zentrale Berechnung der physikalischen interaktionen vor jedem Spielzug (vorzugsweise eine Methode wie void World::collide())
    • berechnung der aenderung des momentanen zustandes pro objekt, dass muss so einfliessen, dass das objekt dann in der neuen situation wieder gerendert werden kann.
    • bestimmte interaktionen herausfiltern/deaktivieren (z.B. interagieren zwei Haeuser nicht miteinander etc.) - isA - Methode?
  • Offene Fragen
    • Relationen/Umrechnung von Kollision/Impulsweitergabe(erhalung)/Schaden
    • genauigkeit der Berechnungen ↔ rechenaufwand → interpolation
    • bestimmte interaktionen herausfiltern/deaktivieren (z.B. interagieren zwei Haeuser nicht miteinander etc.) - isA - Methode?

Change History (5)

comment:1 Changed 20 years ago by patrick

  • Owner changed from nobody to adi

comment:2 Changed 20 years ago by patrick

  • Cc bensch patrick nico added
  • Milestone changed from feature-taks to 0.3.0-pre-alpha

comment:3 Changed 19 years ago by bensch

  • Owner changed from adi to bensch

comment:4 Changed 19 years ago by bensch

macht mir kopfzerbrechen…

comment:5 Changed 19 years ago by bensch

  • Resolution set to fixed
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.