PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie "simuliert" man Wasser? (physikmäßig?)


Karümel
2005-06-14, 20:12:02
Öhm, meiner einer hat mal eben ne Frage.

Wie kann man eigentlich in einer Engine Wasser simulieren?
Gemeint ist damit das was man heute schon kennt, also die Dinge die im Wasser schwimmen (Pbjekte oder Spielfigur), sondern das Wasser selber. Sprich was passiert mit dem Wasser wenn man z.B. ein Glas Wasser ausschüttet.
Wie kann man da die Kräfte die auf das Wasser wirken darstellen?

Ist so etwas überhaupt technsich möglich?

RLZ
2005-06-14, 20:33:08
Wenn du Lust hast dich etwa durch das Thema zu lesen findest du hier (http://graphics.stanford.edu/~losasso/) gute Paper dazu. :)

Karümel
2005-06-14, 20:51:16
So etwas in Deutsch wäre net schlecht.

Coda
2005-06-14, 22:24:14
"Sowas in deutsch" zu finden dürfte sich sehr schwierig gestalten, weil selbst Deutsche sowas normal auf Englisch publizieren ;)

Spasstiger
2005-06-14, 23:21:16
Klar ist Wassersimulation technisch möglich, die Physik liefert alle notwendigen Gesetze. Der Satz von Navier-Stokes z.b. ist eine gute Näherung für das Fließverhalten von (inkompressiblen) Flüssigkeiten.
Die ersten Ansätze von Echtzeit-Wassersimulation mit fließendem Wasser werden wohl auf Partikeln basieren. Eine erste Echtzeitdemo mit Hilfe der PhysX Beschleunigerkarte von Ageia gibts in folgendem Video zu sehen:
http://dmode.datamachine.net/Ageia.wmv

Garfieldx
2005-06-14, 23:46:35
Öhm, meiner einer hat mal eben ne Frage.

Wie kann man eigentlich in einer Engine Wasser simulieren?
Gemeint ist damit das was man heute schon kennt, also die Dinge die im Wasser schwimmen (Pbjekte oder Spielfigur), sondern das Wasser selber. Sprich was passiert mit dem Wasser wenn man z.B. ein Glas Wasser ausschüttet.
Wie kann man da die Kräfte die auf das Wasser wirken darstellen?

Ist so etwas überhaupt technsich möglich?

Kenne zwar auf anhieb keine Engine - aber kann dir sagen, das ich selbst nach dem Semester Strömungsmechanik von Fluiddynamik nicht wirklich Ahnung habe - daher denke ich das ein "kurzes" einlesen nicht soviel bringt.
Da steckt etwas mehr dahinter, vorallem wenn du es mathematisch erfassen willst.

cu GarfieldX

Monkey
2005-06-15, 00:17:35
vielleicht findest ja hier nen ansatz:

http://www.codeworx.org/opengl_tuts.php

Rhönpaulus
2005-06-15, 00:38:31
wirklich exakt berechenbar sind doch nur laminare strömungen,oder?
sobald es chaotisch wird sind die berechnungsmodelle nicht mehr zuverlässig weswegen in der forschung dann wieder in strömungskanälen das ware verhalten in der praxis ausprobiert werden muß da auf die simulationen kein verlaß ist.

Cyphermaster
2005-06-15, 10:07:31
Auf Simulationen dieser Art ist ohnehin kein echter Verlaß, egal ob laminar oder turbulent! Numerische Strömungssimulation auf einem Rechner arbeitet wegen der notwendigen Reduzierung des Berechnungsaufwandes immer mit Punktnetzen, simuliert also nicht jedes einzelne Wasserteilchen = Ungenauigkeit. Dadurch, und durch die Tatsache, daß es grade bei turbulenten Strömungen kein einheitliches mathematisches "Universalmodell", sondern mehrere von Fall zu Fall unterschiedlich gute/schlechte Methoden gibt, sind Simulationen IMMER in Frage zu stellen (als Sahnehäubchen kommt ja noch die Frage obendrauf, wie gut oder schlecht die Programmierung des Simulationsprogramms ist!). Real führt man sie mit leicht variierenden Parametern mehrfach aus und nimmt die Ergebnisse als vernünftig an, wenn die Ergebnisse trotz den Varianzen plausibel ähnlich aussehen. Falls machbar, macht man aber immer auch einen "real-life"-Test, um sicher zu gehen und Simulations-Artefakte auszuschließen.

Exakte Berechenbarkeit solcher Dinge besteht praktisch ausschließlich in der Theorie. Die Frage ist eher, wie weit man "versimpeln" muß, bis man einen vernünftigen Kompromiß zwischen physikalischem Realismus und ausreichend schneller Berechenbarkeit bekommt, den man in einer Engine einsetzen kann. Bislang ist derartiger physikalischer Realismus in Echtzeit aber für Spiele noch völlig außer Reichweite, da wird nur sehr, sehr rudimentär solche Physik einsetzbar werden - PhysX hin oder her.

reow
2005-06-19, 11:51:50
Soetwas ist schon sehr "realistisch" simulierbar.
http://www.nextlimit.com/realflow/index.html einfach auf Gallery und dann auf video klicken, videos downloaden und staunen.
Die Engine ist aber eine nicht-echtzeit engine, für eine echtzeitengine auf heutigen PC's (CPU berechnung) muss man sich mit weniger details vergnügen...

DrFreaK666
2005-06-19, 13:10:27
Kurze Frage:
Wie wurde das mit dem Wasser bei Waverace gemacht (N64, GC)??

Oder vertausch ich da was?

Coda
2005-06-19, 13:13:31
Da vertauscht du was. Das ist ja nur eine Wasseroberfläche und keine voll dynamische Flüssigkeit die irgendwo reinläuft. Das ist ein paar Größenordnungen einfacher zu machen ;)

anorakker
2005-06-19, 16:10:24
irc hatte doch die sony ps3 präsentation (e³)ne echte wassersimulation dabei. mit hilfe des eyetoys hatte ein entwickler zwei gläser über ner wasserwanne in der hand und konnte diese ins wasser eintauchen und damit die gläser befüllen. inwiefern das ernsthaft physikalisch korrekt war, kann ich nicht beurteilen, es sah aber sehr beeindruckend aus

Zool
2005-06-21, 14:46:13
Wasser d.h. Wassermoleküle (besser noch H und O-Atome) können mittels Molekulardynamik oder MonteCarlo-Berechnungen beschrieben werden. Neben der Hydrodynamik können auch Prozesse wie Verdampfen, Schmelzen etc. simuliert werden.

Nur braucht man wirklich sehr leistungsfähige Rechner. Von Echzeit ist man bei typischen Systemen mit 1Mill Atomen noch um etwa Faktor 10^10 entfernt.

Coda
2005-06-21, 15:03:09
Zool dir ist schon klar das 1 Mio. Wassermoleküle nichtmal 1ml sind? ;)

Cyphermaster
2005-06-21, 15:42:11
irc hatte doch die sony ps3 präsentation (e³)ne echte wassersimulation dabei. mit hilfe des eyetoys hatte ein entwickler zwei gläser über ner wasserwanne in der hand und konnte diese ins wasser eintauchen und damit die gläser befüllen. inwiefern das ernsthaft physikalisch korrekt war, kann ich nicht beurteilen, es sah aber sehr beeindruckend aus
Nun, Simulation kommt von lt. "simulacrum" = das Ähnliche, die Kopie, das Abbild. Das heißt, alles, was die Wirklichkeit nachahmt, ist de facto eine "Simulation". Die Frage ist immer die Qualität einer Simulation!

Ich kann z.B. auch eine bewegte Wasseroberfläche in der Draufsicht mittels 3-4 wechselnder Texturen auf einer Ebene "simulieren", wie in manchen alten Spielen. Sieht halt scheiße aus und ist physikalisch eine Nullnummer. Zwischen solchen Ultra-simpelst-Ansätzen, rein optischer Imitation und physikalisch korrekter Simulation liegen logischerweise Welten! Wie gut so eine Simulation mindestens sein muß, um den Ansprüchen zu genügen, das ist die Frage und bestimmt die Komplexität und den Aufwand.

Zool
2005-06-22, 09:01:03
Zool dir ist schon klar das 1 Mio. Wassermoleküle nichtmal 1ml sind? ;)


Ist mir klar. Aber wenn man umfassende Simulationen unter Berücksichtigung echter atomarer und intermolekularer Wechselwirkungen will, bleibt da nichts anderes als MD oder MC übrig. Will man noch exakter sein und elektronische Wechselwirkungen einbeziehen, gibt es Dichtfunktionaltheorie (DFT) als den Standard. Aber da reduziert sich die Anzahl der sinnvoll beschreibaren Teilchen noch weiter und die Anzahl der Rechnenschritte steigt weiter.

Geht es nur um simple Strömungsmodelle, die mit einem Mesh erfaßt werden können, kann man Echzeitrendering schaffen.

Coprozessoren wie der PhysX sind für echte wissenschaftliche Simulationen nicht zu gebrauchen da sie einfach zu wenig Freiheitsgrade in der Programmierung haben.

Wie von Cyphermaster bemerkt, muß man erst klären, was man mit der Simulation beschreiben will. Entweder ein Abbild das ähnlich aussieht und sonst nichts mit der physikalischen Wirklichkeit gemein hat. Oder man hat ein Abbild, das je nach Feinheitsgrad auch physkalische Prozesse berücksichtigt. Je nach Anforderung muß man da bis zu den Elektronen runter.