W tym momencie platforma i język programowania nie mają znaczenia. Chciałbym tylko wiedzieć, czy istnieje coś takiego. Każda pomoc jest mile widziana.
W tym momencie platforma i język programowania nie mają znaczenia. Chciałbym tylko wiedzieć, czy istnieje coś takiego. Każda pomoc jest mile widziana.
Odpowiedzi:
Sprawdź, co Q-Games wykorzystało do Pixeljunk Shooter. Jest to gra 2D z bardzo zaangażowaną fizyką płynów. Nie jestem pewien, czy użyli silnika fizyki domowej, czy oprogramowania pośredniego, ale informacje te prawdopodobnie gdzieś tam są.
Cóż, nie zastanawiałem się nad tym, ale wiem na pewno, że prawie każdy silnik fizyki może naśladować ten pomysł. Box2D itp.
Zasadniczo cząstki odbijają się wokół, od powierzchni i siebie nawzajem (szybciej w przypadku gazów), ale także dają im stały efekt grawitacji (wszystkie płyny miałyby to samo, ale niektóre gazy mogą wolniej się unosić).
Jeśli połączysz zewnętrzne cząstki, otrzymasz wielokątny kształt reprezentujący masę
LUB
jeśli po prostu narysujesz piksel lub grafikę cząstek na każdej cząsteczce, możesz zamiast tego uzyskać efekt chmury dla masy.
Jedyną biblioteką, jaką mogłem wymyślić, która konkretnie zajmuje się płynami, jest Fluidic . Jest dość alfa i ma tylko jedną wersję. Biblioteka fizyki Bullet obsługuje „hydrodynamikę cząstek wygładzonych”, technikę stosowaną do modelowania płynów. Mimo że biblioteka jest ukierunkowana na 3D, można zastosować wiązania do jednej osi, aby działała w 2D.
Moim zaleceniem byłoby, jak już wspomniałem w niektórych komentarzach do innych odpowiedzi, użycie standardowego silnika fizyki, takiego jak Box2D lub Chipmunk, i użycie szeregu kół do modelowania wody (z grawitacją) lub gazu (bez grawitacji) i połączenie ich razem w jedno ciało wodne lub gazowe. Możesz nałożyć pewne ograniczenia na poszczególne ciała, aby „zbijały się” ze sobą, dzięki czemu możesz symulować lepkość. Obejrzyj ten film, aby zobaczyć, jak poszczególne ciała (modelowane w kwadracie na filmie) współpracują ze sobą. Pamiętaj jednak, że technika zastosowana w tym filmie nie jest taka sama jak wspomniana w tym akapicie. Możesz użyć wideo, aby dowiedzieć się, w jaki sposób okręgi oddziałują na siebie i spróbować naśladować to za pomocą ograniczeń obecnych w używanej bibliotece fizyki.
Interesująca część pojawia się, gdy chcesz połączyć wiele kręgów w zbiornik wodny. Najprostszym rozwiązaniem, jakie mogę wymyślić, jest narysowanie każdego koła jako metabelki, aby pojawiły się jako część większego ciała. Można znaleźć matematyki i jakiś przykładowy kod za tymi organami tutaj .
Minęło kilka lat od opublikowania tego pytania, ale natknąłem się na nie podczas wyszukiwania, więc pomyślałem, że go zaktualizuję.
Google wydało LiquidFun (open source) dla systemu Box2D. Ma pewne ograniczenia, ale jest to szybki sposób na rozpoczęcie od cząstek cieczy, piasku itp. O całkiem przyzwoitej wydajności.
https://github.com/google/liquidfun
PixelJunk ma świetne podejście, ale jest to prywatna biblioteka. Podzielili się niesamowitym poziomem szczegółów w swoim przemówieniu na GCD 2010.