Jak renderować cząsteczki 2D jako płynne?

45

Załóżmy, że masz dobry sposób na poruszanie cząstkami 2D w celu symulacji płynu (np. Wody). Wszelkie pomysły, jak to wyrenderować?

To jest gra 2D, w której perspektywa jest z boku, jak to . Woda będzie zawarta w pudełkach, które można rozbić, aby mogła spaść i oddziaływać z innymi przedmiotami. Najprostszym sposobem, jaki przychodzi mi na myśl, jest użycie małego obrazu dla każdej cząstki. Chcę usłyszeć więcej sposobów renderowania wody.

Łukasz
źródło

Odpowiedzi:

28

Sprawdź, jak to zrobił PixelJunk Shooter (w tym symulacja) w tej prezentacji (PDF) na GDC2010.


Przykładowy obraz PixelJunk Shooter

George Duckett
źródło
1
Nie wiedziałem, że PixelJunk ... naprawdę niezły wycisk. Dziękuję Ci!
luke
Link do przyczepy :)
David Gouveia
Co to są SPU, PPU, SPURS?
Martijn Courteaux,
@MartjinCourteaux: są częścią procesora Cell PS3. Pomyśl o nich jak o modułach cieniujących GPU, aczkolwiek istnieją pewne kluczowe różnice.
Sean Middleditch,
12

Odpowiedź George'a Ducketta jest znacznie bardziej bezpośrednia i naprawdę dobrze przedstawiona, jeśli potrzebujesz w pełni symulowanej wody w swojej grze. W przypadku symulowanej fizyki płytkiej wody z minimalną dokładnością (mniej realizmu, więcej zabawy), ten obraz dał mi niesamowity moment przejrzystości:

http://www.patrickmatte.com/stuff/physicsLiquid/

DaveStance
źródło
Proste i miłe! Tak naprawdę nie pomyślałem o użyciu tak prostego kroku przetwarzania końcowego ... po prostu zastanawiam się, czy urządzenie takie jak iPhone poradzi sobie z tym. To wydaje się być dobrym punktem wyjścia. Dzięki.
luke
Mogę ręczyć za to podejście. Użyłem go raz w projekcie i działało pięknie. Dodaj filtr fazy i możesz mieć również ładny menisk na swoich plamach.
scriptocalypse
Super fajne! Ale nie jestem pewien, jak dobrze pomieści przechodzącą przez nią postać. Odsunąłby wszystkie kule na bok, prawda?
Max
5

Grant Kot umieścił część swojego płynnego kodu symulacyjnego na Github z implementacjami zarówno w javascript (canvas), jak i C ++ z OpenFrameworks: https://github.com/kotsoft

Ma kilka wersji demonstracyjnych na swoim koncie youtube: http://youtu.be/HqWheJSEiaw

Nie mam pojęcia, jak to działa, ale wiem, że działa szybko i istnieje wiele różnych wariantów, które można z nim zbudować. Dobrym słowem kluczowym do wyszukiwania mogą być „cząstki wielosieciowe”.

michael.bartnett
źródło
Naprawdę podoba mi się, jak Grant Kot symuluje płyny! Nawet jeśli rendering jest minimalny, przynajmniej w aplecie na tych stronach internetowych. Jest to wiele parametrów do kontrolowania symulacji. Warto przyjrzeć się temu głębiej. Dzięki.
luke