Registriert: Sa Mai 04, 2002 19:48 Beiträge: 3827 Wohnort: Tespe (nahe Hamburg)
Wirklich viel ist nach dem Aufruf Bilder für das IOTW zu schicken nicht gekommen, aber Al war bisher stets fleissig. Bevor alles beim mir im Postfach versauert, gibts einen Beitrag einmal für Euch hier in den News. Danke für diese Einsendung.
Kennt ihr das? Ihr bekommt zum x-ten mal etwas erzählt, dass ihr schon seit Jahren wisst? Ich hasse sowas - und wir machen in der Schule gerade Vektorrechnung, also Addieren, Subtrahieren, vor ein paar Tagen haben wir das Punktprodu äh pardon Skalarprodukt eingeführt. *BuhHeulSchluchz* Ich könnt heulen. Wie gut, dass man sich dann Nachmittags vor den PC setzen und als Ausgleich die wildesten Vektorrechnungen proggen kann. Ich hab mich also mal hingesetzt und mir etwas angeguckt, was ich schon immer mal machen wollte: Fast Fluid Dynamics. Und ich muss sagen, wenn man es nicht zu genau nimmt, kann man recht schnell gute Ergebnisse bekommen. Nach ein wenig Googeln hab ich dieses Tut gefunden
was meiner Meinung nach ein recht guter Start ist, weil man mit den Sources direkt was Proggen und sehen kann. Ich hab dann noch die Gradientenberechnung in der Helmholtz-Hodge-Decomposition geändert, und dann hatte ich nach nem halben Nachmittag ne ganz gut funktionierende Basis. Und weil ich auch sonst immer recht zündelnde Ideen habe, is mir dieser alte Artikel wieder eingefallen:
und man kann die schönsten Explosionen simulieren.
Die 12 kleinen Pics zeigen die Simulation einer Explosion im Abstand von 20 Frames. Ich finde man kann sogar eine leicht pilzartige Form erkennen. Das größere Pic unten links in der Ecke zeigt die Strömungsrichtungen (schwarze Linien), sowie Sauerstoff (blau), Brennstoff (grün) und Hize (rot). Dachte, da kann man mal die Strudel etwas besser sehen kann. Die Simulation läuft auf meinem System (AMD XP 2800+) mit einer Auflösung des Vektorfeldes von 128x128 mit immer hin 11 FPS.
Hoffe euch gefallen die Bilder, auch wenn sie nicht so viel mit OGL zu tun haben...
AL
_________________ "Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."
Zuletzt geändert von Phobeus am So Dez 11, 2005 19:43, insgesamt 1-mal geändert.
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Wow, ich bin begeistert. Wirklich saubere Arbeit!
Ich hab die PDFs mal überflogen, und muss schon sagen, dass das sehr komplex aussieht. Aber deine Ergebnisse sind auf jedem Fall sehr anspornend, ich schreib das mal auf meine ToDo-Liste
Und heute nacht werd ich ned schlafen können, weil ich fieberhaft überlegen werde, wie man das Ganze performance-optimieren könnte.
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Auf den ersten Blick sehen die Artikel natürlich sehr mathematisch aus, aber wenn man sich mal ein bisschen da reindenkt, ist es eigentlich ganz gut nachvollziehbar (Man muss nur wissen, was Nabla ist). Zummindest reicht es aus, um so einen kleinen Integrator zu schreiben. Wie realistisch der nun ist, is ne andere Frage, aber er soll ja auch nur nett aussehen.
Zitat:
ich schreib das mal auf meine ToDo-Liste Wink
Wenn sich genügend Leute dafür interessieren, könnte ich ja mal meinen Code ein bisschen säubern und posten...
Zitat:
Und heute nacht werd ich ned schlafen können, weil ich fieberhaft überlegen werde, wie man das Ganze performance-optimieren könnte.
Damit du heute Nacht gut schlafen kannst:
Ausgehend von dem obersten Artikel sollte man zunächst einmal die Advektion und Diffusion der Geschwindigkeit nicht für die Komponenten getrennt machen. Dann wird der Code zwar länger, aber man spart sich z.B. bei dem Backtracing das mehrfache Berechnen der Interpolationsfaktoren. Das kann man dann vielleicht (Das hab ich nicht getestet) auch noch auf die anderen Eigenschaften übertragen, also die Berechnungen für die "Stoffe" im Medium und die Berechnungen für das Medium selber nicht getrennt sondern zusammen machen. Dann kann man noch mehr einsparen. Aber wie gesagt, letzteres hab ich noch nicht getestet...
_________________ [18:30] tomok: so wie ich das sehe : alles. was nich was anderes ist als nen Essay ist nen Essay
hi, i'm a signature viruz, plz set me as your signature and help me spread
ich benutze den Algorithmus um Wasser in Rohrleitungen zu animieren. Nur leider ist das Problem das die Geschwindigkeit der Simulation ziemlich gering ist. Auf den Cellprozessor kann ich nicht warten, also muss ich einen anderen Weg finden die Sache zu beschleunigen. Die Schritte in einer Funktion zusammenzuführen ist eine Klasse Idee. Wär kool wenn man mal den Code dazu sehen könnte. Hab mir auch schon überlegt die Berechnung des Fluidgitters auf bestimmte Zeitpunkte zu beschränken und den Zeitschritt entsprechend gross zu wählen. Die Zwischenzustände des Fluids könnte man dann linear Interpolieren. Eine andere Möglichkeit die Sache zu beschleunigen besteht in der Verwendung von Octtrees bzw. Quadtrees.
Den Fluss visualisiere ich mit Partikeln, hat jemand einen Plan wo es ein Tuturial für eine richtig schnelle Partikelengine gibt.? Leider kann ich nicht mit GL_ARB_PointSprites arbeiten da meine Graka das nicht unterstützt.
Finde es toll das, dieses Thema hier behandelt wird. Schließlich gibt es den Algorithmus schon seit 1998. Hier hab ich noch den Link zu einer deutschen Diplomarbeit zum Thema Rauchsimulation mit dem SFA http://www.coplabs.org/.
cu.
leider ist das Problem das die Geschwindigkeit der Simulation ziemlich gering ist. Auf den Cellprozessor kann ich nicht warten, also muss ich einen anderen Weg finden die Sache zu beschleunigen.
Es gibt sicherlich viele Möglichkeiten das zu beschleunigen. Das große Problem ist nur, wie bei allen Volumetrischen Berechnungen, dass der Aufwand mit O(n³) zunimmt. Meine Simulation ist nur 2D da ist der Aufwand geringer. Es gibt jedoch Möglichkeiten, 3D Simulationen aus wenigen 2D Simulationen wie X Billboards zusammen zu setzen, und dann dazwischen zu interpolieren. Dazu hab ich irgendwo mal n Paper gesehen. Finds nur gerade nicht wieder...
Ansonsten kann ich nur dazu raten, die Auflösung runter zu drehen, und die dadurch auftretende Ungenauigkeit mit Techniken wie diesem Vorticity Confinement auszugleichen, so gut es geht.
Du sagst du verwendest Partikel. Hmm, ich hab die Dichte durch ein Skalarfeld definiert, und da die Advectionsberechnungen für die Dichte und die Geschwindigkeit im Grunde identisch sind, könnte man die zusammen ziehen, was an der Stelle den Aufwand halbieren würde. Mit Partikeln geht das nicht ganz so einfach, aber du könntest die Partikel in ein Gitter einordnen, und dann beim Advectionsschritt der Geschwindigkeit auch auf die Zelle des jeweiligen Gitters zugreifen, um die Particel von dort zu bewegen.
Zitat:
Die Schritte in einer Funktion zusammenzuführen ist eine Klasse Idee.
Es macht den Code extrem kurz, was beim Verständnis ziemlich hilft (weils übersichtlicher ist, und man die Analogien sofort sieht), aber es macht ihn nicht unbedingt effizient. So werden für das Skalarfeld und für das Vektorfeld die gleichen Funktionen benutzt, wobei beim Vektorfeld die Komponenten voneinander getrennt betrachtet werden. Der Code ist dadurch zwar sehr kurz, aber es gibt ne menge Dinge, die 2x (für 2D, bei 3D dann 3x) berechnet werden, was eigentlich nicht sein müsste.
_________________ [18:30] tomok: so wie ich das sehe : alles. was nich was anderes ist als nen Essay ist nen Essay
hi, i'm a signature viruz, plz set me as your signature and help me spread
Es gibt sicherlich viele Möglichkeiten das zu beschleunigen.
Ist doch eine Herausforderung der man sich hier im Forum stellen könnte. Hat den jemand Bock eine schnelle Fluid Engine mitzuentwickeln.?
Zitat:
Ansonsten kann ich nur dazu raten, die Auflösung runter zu drehen.
Geht leider nicht, da ich das Volumen mit Hilfe inkrementaler Dreieckvoxelisierung berechne. Die Vorlage bilden Vrml Modelle die dann entsprechend ihrer Form in Volumendaten umgewandelt werden. Um nun ein halbwegs befriedigendes genaues Ergebniss bei der Simulation zu erzielen muss die Aufloesung schon ziemlich hoch sein.
Bin jetzt dabei den Fluss mit mehren 2D Gittern zu berechnen, so wie du das schon angemerkt hast. Wär richtig gut wenn du das erwähnte Schriftstück noch auftreiben könntest. Ausserdem würde ich mich freuen den Code deiner 2D Lösung anzuschauen.
Wissen vermehrt ich nur wenn man es teilt. In diesem Sinn Mfg.
Für ne richtige ausgereifte Engine hab ich definitiv zu wenig Ahnung von dem Zeugs. Meinen SrcCode könnte ich ja mal herausputzen und Posten. Im mom enthält der rein gar keine Kommentare, was ihn nicht sehr gerade angenehm zu lesen macht. Aber selbst dann sollte man es eher als Einstieg in das Thema sehen, und nicht als den perfekten Code...
_________________ [18:30] tomok: so wie ich das sehe : alles. was nich was anderes ist als nen Essay ist nen Essay
hi, i'm a signature viruz, plz set me as your signature and help me spread
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Woah! Die Videos sind echt der Wahnsinn!
Ich schau die mir gerade an, und muss sagen, dass das schon beeidruckende Werke. Ich werd auf jedem Fall mal schauen, was ich für mich daraus lernen kann...viel wirds ned sein
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Registriert: Do Jun 19, 2003 10:44 Beiträge: 991 Wohnort: Karlsfeld (nahe München)
Den Link von oben (Real-Time Fluid Dynamics for Games (PDF)) habe ich mal den Student zukommen lassen der im Rahmen des Summer of Code einen "Sky Generator" für Blender schreibt.
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Vielen Dank!
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
ich beschäftige mich schon einige zeit mit dem tutorial und ich muss sagen, ich bekomme garnix gebacken
wer will kann sich ja mein posting im df anschauen, hier noch einen thread zu starten wäre wohl zu viel des guten
Mitglieder in diesem Forum: 0 Mitglieder und 78 Gäste
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.