A questo punto la piattaforma e il linguaggio di programmazione non contano, vorrei solo sapere se esiste qualcosa là fuori per questo. Qualsiasi aiuto è apprezzato.
A questo punto la piattaforma e il linguaggio di programmazione non contano, vorrei solo sapere se esiste qualcosa là fuori per questo. Qualsiasi aiuto è apprezzato.
Risposte:
Scopri quali Q-Games hanno usato per Pixeljunk Shooter. È un gioco 2d con una fisica fluida piuttosto coinvolta. Non sono sicuro che usassero un motore fisico interno o di middleware, ma le informazioni sono probabilmente là fuori da qualche parte.
Beh, non ho esaminato questo, ma so per certo che quasi tutti i motori fisici possono emulare l'idea. Box2D, ecc.
Fondamentalmente hanno particelle che rimbalzano intorno, lontano dalle superfici e a vicenda (più velocemente per i gas) ma danno anche loro un effetto gravitazionale costante (i liquidi avrebbero tutti lo stesso, ma alcuni gas che potresti voler aumentare lentamente).
Se colleghi le particelle esterne otterrai una forma poligonale che rappresenta la massa
O
se disegni semplicemente un pixel o un grafico di particelle su ogni particella, puoi invece ottenere un effetto nuvola per la massa.
L'unica biblioteca che ho potuto inventare che si occupa specificamente dei fluidi è Fluidic . È piuttosto alfa e ha solo una versione, però. La libreria di fisica Bullet supporta "l'idrodinamica delle particelle levigate", una tecnica utilizzata per modellare i fluidi. Sebbene la libreria sia orientata al 3D, è possibile applicare vincoli a un asse per farlo funzionare in 2D.
La mia raccomandazione sarebbe, come ho già detto in alcuni commenti su altre risposte, di utilizzare un motore fisico standard come Box2D o Chipmunk e utilizzare un numero di cerchi per modellare l'acqua (con gravità) o gas (senza gravità) e combinarli insieme in un corpo idrico o gassoso. È possibile applicare alcuni vincoli sui singoli corpi per renderli "raggruppati" in modo da simulare la viscosità. Guarda questo video per vedere come i singoli corpi (modellati come quadrati nel video) lavorano insieme. Nota, tuttavia, la tecnica utilizzata in questo video non è la stessa menzionata in questo paragrafo. Puoi usare il video per avere un'idea di come i cerchi interagiscono tra loro e provare a imitare questo con i vincoli presenti nella libreria di fisica utilizzata.
La parte interessante arriva quando vuoi combinare più cerchi in uno specchio d'acqua. La soluzione più semplice che posso trovare è disegnare ogni cerchio come un metaball in modo che appaiano come parte di un corpo più grande. Puoi trovare la matematica e alcuni esempi di codice dietro questi corpi qui .
Sono passati alcuni anni da quando questa domanda è stata pubblicata, ma l'ho trovata durante la ricerca, quindi ho pensato di aggiornarla.
Google ha rilasciato LiquidFun (open source) per il sistema Box2D. Presenta alcune limitazioni, ma è un modo rapido per iniziare con particelle di liquido, sabbia, ecc. Con prestazioni abbastanza decenti.
https://github.com/google/liquidfun
PixelJunk ha un ottimo approccio, ma è una libreria privata. Hanno condiviso un livello incredibile di dettagli nei loro interventi al GCD 2010.