Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Jul 16, 2024 05:11

Foren-Übersicht » Sonstiges » Projekte
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Smart Physics
BeitragVerfasst: Di Mai 20, 2008 20:55 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mär 30, 2007 18:35
Beiträge: 331
Hallo,

ich möchte hier mal mein neues Projekt vorstellen, auch, wenn es bisher nicht so viel mit OpenGL zu tun hat. Die Grafik besteht bisher nur aus einem blauen Hintergrund und einfachen Polygonen, nichtmal Texturen werden im Moment verwendet. Vorerst geht es nur darum eine Physiksimulation zu erstellen.

Was ist Smart Physics?
Smart Physics ist eine 2D-Physiksimulation, die von vorne bis hinten von mir selbst entwickelt wird. Von der Grafik über die Steuerung bishin zur Physik selbst. Der Name kommt von den sogenannten Smartboards, welche zB. in meiner Schule vorhanden sind. Es soll nämlich möglich sein auf dieser "digitalen Tafel" Objekte zeichnen zu können, die sich dann physikalisch korrekt verhalten. Geplant ist, dass jedes beliebige Form und Art von Objekt unterstützt wird, sowie viele verschiedene Arten von Joints, also Verbindungen. Das ganze soll dann so sein, dass man sich die Kräfte, die auf einen Körper wirken, sowie die Energie o.Ä in einem Graphen anzeigen lassen kann.

Der aktuelle Stand
Bisher werden beim Zeichnen von Objekten nur Rechtecke (beliebig rotiert) und Kreise erkannt. Es gibt auch erst eine Verbindungsart, die noch nicht von Hand gezeichnet werden kann. Die Kollisionskontrolle funktioniert bei diesen Primitiven und unterstützt mehrere Kontaktpunkte. Außerdem wird die Reibung vereinfacht berechnet, sowie eine Konstante für die Härte von Körpern bereitgestellt. Außerdem habe ich schon ein paar Funktionen eingebaut, sodass durch eine kleine Fehlerkorrektur Körper nicht im Boden versinken können o.A.

Was ist geplant?
Demnächst versuche ich Dreicke zu unterstützen, wodurch es möglich ist durch Triangulation andere Formen zusammenzusetzen. Weiterhin kommen noch andere Arten von Joints hinzu.
Außderdem muss ich mir etwas für die Erkennung der gezeichneten Objekte überlegen, da diese noch ein bisschen "unhandlich" ist. Dafür muss ich das Programm aber erst nochmal in meiner Schule testen, weil es einfacher sein wird Körper an der Tafel zu zeichnen, als mit der Maus.

Ich habe mir vorgenommen (und teilweise auch schon realisiert) das ganze so aufzubauen, dass man es auch als 2D Physikengine benutzen kann. Mit einem objektorientierten Interface.

Ich übelege mir außerdem das Ganze irgendwann mit Source Code zu veröffentlichen, aber das wird noch ein bisschen dauern.
Vorher gibts erst ein paar Screenshots und in ein paar Tagen eine kleine Version zum testen.


Bild

Bild


Markus


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 21, 2008 07:54 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mär 30, 2007 18:35
Beiträge: 331
Moin,

ich habe mich dazu entschlossen jetzt schon eine (etwas abgespeckte) Version bereitzustellen:
Smart Physics

Mit der linken Maustaste kann man Objekte zeichnen. Am Anfang nur unrotierte Rechtecke, wenn ihr auf dieses "Zeichnen" Symbol klickt, auch rotierte Rechtecke und Kreise.
Dazu muss man bei den Kisten in jeder Ecke (bis auf die, in der man anfängt) ganz kurz warten und dann erst weiterzeichnen. Um das hinzubekommen braucht man vielleicht ein paar Tests... da muss ich mir noch was besseres einfallen lassen, aber am SmartBoard ist das einfacher. Mit dem anderen Button kann man zwischen statischen und dynamischen Körpern wechseln. Die beiden Trackbars sind für Reibung und Härte des Objekts.

Mit der rechten Maustaste kann man in der Umgebung rumscrollen. Wenn man mit der rechten Maustaste einen Körper selektiert kann man ihn bewegen.
Mittlere Maustaste auf ein Objekt löscht es.

Markus


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 24, 2008 10:01 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mär 30, 2007 18:35
Beiträge: 331
Hallo,

ich hatte eigentlich vorgehabt das Projekt für eine Besondere Lernleistung für mein Abitur zu benutzen. Es gab aber sehr viele Probleme
mit dem "Smart Board" in der Schule, was mich verunsichert hat. Deswegen habe ich das vorhaben aufgegeben.

Trotzdem mache ich privat mit dem Projekt weiter. Ich hatte sehr viele Probleme mit konkaven Objekten, und habe mich deshalb dazu entschieden die Probleme
von anfang an zu vermeiden. Ich bin zum Schluss gekommen ein Objekt aus einzelnen einfachen Geometrien zusammenzusetzen.
Das können Kreise und Polygone sein. Falls man ein konkaves Polygon an die Engine übergibt wird dieses automatisch Trianguliert - naja, eigentlich werden im Moment
noch alle Polygone in Dreicke zerteilt, ich muss testen was schneller zu berechnen ist (von den Kollisionen her).

Durch diesen Ansatz kann man theoretisch auch Polygone mit Inseln benutzen.
Als nächstes kümmere ich mich um die Mauseingaben, also das man irgendwas zeichnen kann und das Programm selbst erkennt, ob es ein Kreis, ein Rechteck oder sonstwas ist,
ansonsten müsste man ja alle Punkte der Mauseingabe als Vertex benutzen.

Hier hab ich noch einen Screenshot vom aktuellen Entwicklungsstand. Mal schauen ob ich in ein paar Tagen die neue Version hochlade.

Bild

Markus


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 31, 2008 14:15 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mär 30, 2007 18:35
Beiträge: 331
Hallo,

ich bin in den letzten Tagen ziemlich gut vorangekommen, deswegen gebe ich hier mal einen Zwischenbericht.

Ich habe das Eingabehandling fast fertiggestellt. Man kann jetzt einfach so Objekte zeichnen (nur gegen den Uhrzeigersinn, weil ich noch nicht sortiere). Die Geometrie wird dann optimiert und
auf verschiedene Formen hin geprüft (Rechteck, Kreis und Linien innherhalb beliebiger Objekte um die Geometrie zu vereinfachen).

Man kann alle Objekte rotieren und selektieren. Wenn die Simulation pausiert ist kann man Selektierte Objekte bewegen. Versucht man dies während die Simulation gestartet
ist, "zieht" man das Objekt durch die Gegend, wie man es auch in der realen Welt erwarten würde.

Man kann Objekte löschen, indem man sie mit einer geraden Linie durchstreicht. Zeichnet man eine gerade Linie innherhalb eines (unselektierten) Körpers, wird dieses statisch.
Zeichnet man auf diese Weise einen Kreis fügt man ein Gelenk am Mittelpunkt des Kreises hinzu. Das funktioniert aber noch nicht so, dass man zwei Objekte miteinander verbinden kann.

Theoretisch geht das und ich habe das auch getestet, ich muss mir nur übelegen, wie man das zeichnen soll.

Wie ihr schon gemerkt habt, habe ich verschiedene Verbindungsarten hinzugefügt:

MouseJoint Eine Verbindung, mit der man Objekte an einem Aufhängepunkt ziehen kann
HingeJoint Ein Gelenk, das man entweder an zwei Objekten fest machen kann (-> z.B Auto), oder an einem Objekt und dem Hintergrund (->z.B für ein Zahnrad)
FixationJoint Eine Verbindung, mit der man zwei Objekte sozusagen zu einem machen kann ( sieh bewegen und rotieren nicht mehr relativ zueinander)

Andere werden noch dazukommen, z.B ein Seil oder eine Feder.

Auf meiner ToDo-Liste ist außerdem eine bessere Grafik und die Möglichkeit Reibung, Härte und Dichte über ein Interface ändern zu können.

Wenn ich das ganze stabil zum Laufen bekomme, und es gewünscht wird, kann ich eine Version hochladen.

Bild

Markus


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 16, 2008 16:17 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mär 30, 2007 18:35
Beiträge: 331
Hallo,

in letzter Zeit hat sich einiges getan, deswegen dachte ich, ich gebe mal den neusten Stand bekannt.

Ich habe vorallem das Benutzerinterface verbessert. Es gibt nun Einstellungen für die Gravitation und die Luftreibung.
Außerdem kann man in einem Optionsmenü für jeden Körper die Werte für die Dichte, die Reibung und die Elastizität verändern.
Zudem habe ich eine Reihe voreingestellter "Experimente" hinzugefügt, die einfach gestartet werden können.

Die neue Benutzinterface basiert grundlegend auf dem GUI-System der "Andorra2D"-Engine vom DGL-User "igel457".
Die Projekthomepage findet sich unter http://sourceforge.net/projects/andorra. Zudem gibt es hier im Forum einen Projektthread.
Außerdem verwende ich die TextSuite von Lossy eX.
Danke an dieser Stelle dafür! Der veränderte Source-Code wird bei der nächsten Veröffentlichung dem Projekt beigefügt.

Es gibt nun auch ein Kreis- und ein Rechteckstool, Federn und die Möglichkeit zwei Objekte miteinander zu verbinden.

Alle Funktionen sind in der Date "Funktionsweise.pdf" aufgelistet inklusive einer Beschreibung.

Über Feedback und Bugberichte würde ich mich sehr freuen, den Download der neuen Version gibts hier.

Markus


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mai 16, 2009 20:10 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mär 30, 2007 18:35
Beiträge: 331
Hallo,

nachdem jetzt das (schriftliche Abitur) vorbei ist, habe ich das Projekt soweit beendet. Mein Lehrer hat mir noch ein paar Feature-Vorschläge gegeben, die ich eingebaut habe. Ob ich nochmal daran weiter arbeite, weiß ich nicht. Ich will euch die "fertige" Version nur zur Verfügung stellen.
Vieles wurde verbessert, neu hinzugefügt oder verändert. Ich weiß überhaupt nicht mehr, was das alles war :? Die meisten Features sollten in der Funktionsweise.pdf stehen.

Man hat nun die Möglichkeit die Objekteigenschaften aufzuzeichen und in einer csv-Datei zu speichern. Außerdem gibt ein ein paar neue Joints, und die Möglichkeit diese zu löschen. Um Rampen oder sowas zu zeichnen kann man auch mit einem nicht geschlossenen Linienzug ein sehr dünnes Objekt erstellen. Das funktioniert manchmal nicht, vielleicht muss man es mehrmals versuchen.

Ein Sceenshot zusammen mit dem Downloadlink als Abschluss:
Bild

Markus


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Sonstiges » Projekte


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.019s | 15 Queries | GZIP : On ]