Autor |
Beitrag |
Dornathal
      
Beiträge: 38
|
Verfasst: Mi 07.05.08 18:35
Hallo Leute,
Ich habe schon ein bisschen in diesem Forum nach Ideen zu einer Physik Engine gesucht habe aber keine gefunden und auch keine Tutorials im Internet.
Ich würde gerne eine Physik Engine "bauen" weiß aber nicht genau wie das geht. Ich bin momentan noch in der 11. Klasse und habe deswegen auch kein lückenloses Wissen über vektoren etc. aber ich will das lernen.
Ich habe schon versucht eine Kollision von Kugeln gegen eine Wand mittels Krafteinwirkungen zu realisieren was auch befriedigend funktioniert.
Meine Frage ist nun wie ist die grundlegende Struktur einer Physik Engine und was braucht man alles um z.B. die Kollision der einzelnen Objekte möglichst realistisch nachzubilden.
Also im Besten fall würde ich nach der Diskussion ein Umled-Diagramm erstellen können.
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 07.05.08 19:02
Moin,
also ich persönich habe nooooooch nie etwas von einer Physik Engine gehört.
Bin aber auch erst 6-Klasse.
Wie stellst du dir das vor?
Sonst such mal nach Genesis das ist zwar für Spiele gedacht,aber da ich nicht weiß
ob es Physik Enginen gibt, weiß ich nicht ob es dir hilft.
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: Mi 07.05.08 19:08
AFAIK hat Genesis keine Physikengine. Oder irre ich mich da?
@j.klugmann: Klar gibt es Physik-Engines. Sonst würden doch Spiele mit hohen Ansprüchen auf physikalische Korrektheit (z. B. "Line Rider", "Roter Baron" oder - ganz extrem - MS Flight Simulator) nicht laufen. Wobei ich denke, dass diese Spiele keine fertigen Physik-Engines verwenden.
Außerdem ist G3D ja 3D.
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 07.05.08 19:30
Und was macht so eine Physik Engine??
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: Mi 07.05.08 19:45
Na, physikalische Berechnungen vornehmen, die du sonst manuell durchführen müsstest (alles mögliche, also z. B. Fliehkräfte, Kollision, Fallbeschleunigung, Reibung, ich würde sogar Partikelengines als spezielle Physikengines zählen).
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Mi 07.05.08 19:55
Ich hatte mal mit einer angefangen. Kollisionserkennung etc. liefen auch schon ganz gut, nur die Physik selbst war noch nicht das Gelbe vom Ei. Dafür konnte man bereits Objekte miteinander verbinden. (durch Federn, Seile etc.)
Hier ein Thread dazu: www.delphi-forum.de/...amp;highlight=physik
wenn Bedarf besteht kann ich mal den bisherigen Quellcode veröffentlichen.
mfg
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 07.05.08 19:56
...hab mehr an Grafik gedacht 
|
|
Dornathal 
      
Beiträge: 38
|
Verfasst: Mi 07.05.08 20:02
Jo das ist ja der einzige Thread gewesen den ich zu dem Thema gefunden habe.
Aber ich will nicht wirklich den kompletten Quellcode haben sondern eher nur wie man das macht so die groben Strukturen was man dafür machen muss etc.
Wie gesagt ich habe auch bei Google nach Tutorials gesucht aber ich finde immer nur Hinweise auf schon sehr komplexe fertige engines und das bringt mihc auch nicht so ganz weiter.
Ich bin ja noch nicht so der Delphi crack und würde an diesem (ich gebs zu komplexen) Beispiel son bisserl weiter in die Tiefen von der Programmierung vorstoßen.
|
|
delfiphan
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: Mi 07.05.08 20:05
Starrkörpersimulation (Objekte in einer Welt herumschmeissen) inkl. Scharniere und Verbindungen, Simulation von elastischen Objekten, Fracturing (Körper, die auseinander brechen), Flüssigkeitssimulationen, Rauchsimulation, Simulation von Stoffen und Haaren. Die Liste könnte man noch beliebig erweitern. Es gibt ja mittlerweile Physik-Beschleuniger. Wer weiss, was die schon alles können
Paar mittlerweile relativ alte Delphi-Beispiele im Anhang. Literatur dazu sollte eigentlich reichlich zu finden sein. Ohne Kenntnisse über Vektoren könnte es aber schwierig werden.
Weitere Physiksimulationen:
www.delphi-forum.de/viewtopic.php?t=81903
www.delphi-forum.de/viewtopic.php?t=42187
www.delphi-library.d...ewtopic.php?p=286307
Einloggen, um Attachments anzusehen!
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Mi 07.05.08 20:16
Wenn du wirklich nur nach Anleitungen suchst, habe ich zum einen das hier:
www.teknikus.dk/tj/gdc2001.htm (Der Ansatz ist nicht allzu physikalisch und daher leicht verständlich, Geschwindigkeit und Drehmoment werden implizit behandelt, Reibung lässt sich auch relativ einfach implementieren)
Das Tutorial beschreibt, wie man eine Physik Engine auf Basis der Verlet Integration erstellt.
Für die Kollisionserkennung dürfte dann das hier noch für dich interessant sein:
wiki.delphigl.com/in...arating_Axis_Theorem
Ohne Vektoren wirst du allerdings nicht weit kommen, deshalb solltest du dir das hier zuerst durchlesen: wiki.delphigl.com/in...rial_Lineare_Algebra
mfg
Zuletzt bearbeitet von F34r0fTh3D4rk am Mi 07.05.08 20:19, insgesamt 1-mal bearbeitet
|
|
delfiphan
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: Mi 07.05.08 20:18
Oder suche im Google nach Rigid Body Dynamics oder Rigid Body Simulation. 
|
|
Dornathal 
      
Beiträge: 38
|
Verfasst: Mi 07.05.08 20:39
Ohh man danke für das vektorentutorial das ist echt cool.
Ich habs mir noch nicht ausführlich durchgelesen aber ich denke dass ich das gut verstehen werde.
(ich wusst ja nicht dass es lineare Algebra ist und hab deswegn nichts gefunden)
@delphiphan die geposteten Beispiele sind cool vor allem das mit dem Wasser und den Zahnrädern. Das ist so ungefähr die Richtung in die ich gehen wollte.
Also weniger mit Haaren und Clothes und so.
Naja danke schon mal fürs erste werde eventuell dann nochmal fragen falls ich nichts verstehe und wieder an was festhänge was ich nicht verstehe.
Das ist was ich schon mal gemacht habe wo Bälle an einer Wand (Bildschirmrand) Abprallen sollen.
Ich hab aber das Problem dass die Bälle jeweils am linken Bildschirmrand randomäßig durchflutschen oder korrekt abprallen. Außerdem ist das Abprallen manchmal um 1° oder so verschieden.
Das ganze basiert auf der mSuM die ich in der Schule bekommen habe und ich habe Vektoren benutz die die Kraft ausrechnen sollen die auf die Wand von dem Objekt gewirkt wird und diese 2* in entgegengesetze Richtung addiert wird.
Eigentlich müsste dass ja funktionieren, oder?
Einloggen, um Attachments anzusehen!
|
|
Dornathal 
      
Beiträge: 38
|
Verfasst: So 11.05.08 20:12
So ich habe mich erst einmal dem seperating axis theorem gewidmet.
Echt cooles tutorial hätte nicht gedacht dass es so einfach ist ne Polygonkollision durchzuführen. Aber ich hab nun noch ein problem: Ich habe einfach das Beispiel-Programm für die Trennung von Polygonen verwendet und den Algorithmus nachprogrammiert damit ich ihn verstehe. Zugegeben dass mit dem Skalarprodukt ist für mich immer noch nicht verständlich weil wir das halt noch nicht hatten in der Schule, Aber nun zu meiner Frage:
Ich würde die Rechtecke gerne voneinander trennen aber wenn ich nun in meinem Programm ne Kollision herbeiführe, wird das Rechteck immer egal wo kollidiert wird ganz weit nach unten links versetzt, obwohl das im Beispiel eigentlich ordentlich versetzt wird.
Ich habe heute schon mehrere Stunden versucht den Fehler zu finden aber schaffe das irgendwie nicht.
Hier ist mal das Beispielprogramm. Exe und Source(braucht mSuM);
Ich hab den Fehler gefunden: SkaliereVektor war eine Procedur und diese hat den skalierten Vektor nicht zurückgegeben.
Einloggen, um Attachments anzusehen!
|
|