2009-02-17 17 views
7

Przez jakiś czas próbowałem symulować płynącą wodę za pomocą algorytmów pobranych z "Real-Time Fluid Dynamics for Games". Problem polega na tym, że nie wydaje mi się, że z tymi algorytmami wydostaję się z wody.Symulacja wody za pomocą siatki

Sama myślę, że robię coś złego i że te algorytmy nie są odpowiednie dla płynów podobnych do wody.

Co robię źle z tymi algorytmami? Czy te algorytmy są w ogóle poprawne?

Mam powiązany projekt w bitbucket repository. (wymaga gletools i najnowszego pyglet do uruchomienia)

Odpowiedz

6

Rozwiązania oparte na wokselach są odpowiednie do symulowania cieczy i często są stosowane w filmach. Ron Fedkiw's website podaje przykłady akademickie - wszystkie te są oparte na siatce. Ten kod stanowi podstawę wielu symulacji używanych przez Pixar i ILM.

Dobrym źródłem jest także Robert Bridson Fluid Simulation course notes z SIGGRAPH, a on ma książkę "Fluid Simulation for Computer Graphics", która przechodzi przez opracowanie symulatora cieczy w szczegółach.

Najbardziej konkretną odpowiedzią, jaką mogę zadać na to pytanie, jest to, że płyny Stam w czasie rzeczywistym do gier koncentrują się na dymie, tj. gdzie nie ma granicy pomiędzy płynem (wodą) i zewnętrznym obszarem powietrza. Zasadniczo dym i płyny wykorzystują ten sam podstawowy mechanizm, ale w przypadku cieczy należy również śledzić położenie powierzchni cieczy i stosować odpowiednie warunki brzegowe na powierzchni.

2

Jakiego rodzaju wody próbujesz symulować? Baseny z wodą, które falują lub płyną ciecze?

Nie sądzę, żebym kiedykolwiek widział płynącą wodę, z wyjątkiem renderowanych filmów. Rippling wody jest dość łatwy do zrobienia, ta strona zwykle pojawia się w tego typu pytaniach. http://freespace.virgin.net/hugo.elias/graphics/x_water.htm

+0

płynące płyny, falujące baseny są dość trywialne, chociaż fajne i wiedziałbym już, jak je symulować. :> – Cheery

1

Tak, ten rodzaj rozwiązania opartego na wokseli działa tylko wtedy, gdy ciecz jest ograniczona do bardzo dyskretnych i statycznych granic.

Aby symulować płynącą ciecz, należy przeprowadzić pewne badanie cząstek. Dość dużo postępu przyśpieszyło ich ostatnio w GPU, a można uzyskać wspaniałe efekty.

Spójrz na, http://nzone.com/object/nzone_cascades_home.html jako doskonały przykład tego, co można osiągnąć.

2

Cem Yuksel zaprezentował fantastyczną prelekcję na temat swojej Wave Particles na SIGGRAPH 2007. Dają bardzo realistyczny efekt za dość niski koszt. Potrafił nawet symulować interakcję ze sztywnymi ciałami, takimi jak skrzynie i łodzie. Innym interesującym aspektem jest to, że ruch łodzi nie jest napisany, jest symulowany przez oddziaływanie śmigła z płynem.

Cem Yuksel's Wave Particles http://www.cemyuksel.com/research/waveparticles/title.jpg

Na konferencji powiedział, że planuje wydanie kodu źródłowego, ale nie widziałem jeszcze nic. Jego strona zawiera pełny artykuł i filmy wideo, które pokazał na konferencji.

Edytuj: Po prostu zobaczyłem twój komentarz o tym, że chcesz symulować płynące płyny, a nie falujące baseny. Nie byłoby to odpowiednie, ale zostawię to tutaj na wypadek, gdyby ktoś inny uznał to za użyteczne.