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.

Odpowiedzi:


28

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


Przykładowy obraz PixelJunk Shooter


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/


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

6

Lub, dla szybkiego i łatwego podejścia: Użyj metaball !

3d metaballs


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”.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.