Como renderizar partículas 2D como fluido?

45

Suponha que você tenha uma boa maneira de mover suas partículas 2D para simular um fluido (como a água). Alguma idéia de como renderizá-lo?

Isto é para um jogo 2D, onde a perspectiva é do lado, assim . A água estará contida em caixas que podem ser quebradas para que caiam e interajam com outros objetos. A maneira mais simples que me vem à mente é usar uma pequena imagem para cada partícula. Estou interessado em ouvir mais maneiras de produzir água.

Lucas
fonte

Respostas:

28

Confira como o PixelJunk Shooter fez isso (incluindo simulação) nesta apresentação (PDF) em GDC2010.


Amostra de imagem do PixelJunk Shooter

George Duckett
fonte
1
Não sabia PixelJunk ... realmente uma boa pres. Obrigado!
27412
A ligação ao reboque :)
David Gouveia
O que são SPU, PPU, SPURS?
Martijn Courteaux
@ MartjinCourteaux: eles fazem parte do CPU Cell do PS3. Pense neles como shaders de GPU, embora existam algumas diferenças importantes.
23812 Sean Sean Middleditch
12

A resposta de George Duckett é muito mais direta e muito bem apresentada se você precisar de água totalmente simulada em seu jogo. Para física de águas rasas simuladas com precisão mínima (menos realismo, mais brincalhão), essa imagem me proporcionou um incrível momento de clareza:

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

DaveStance
fonte
Simples e agradável! Realmente não pensei em usar uma etapa tão simples de pós-processamento ... apenas me pergunto se um dispositivo como o iPhone vai lidar com isso. Parece ser um bom ponto de partida. Valeu.
31412
Eu posso garantir essa abordagem. Eu usei uma vez em um projeto e funcionou lindamente. Adicione um filtro de chanfro e você poderá ter um bom menisco em seus blobs também.
Script12ypse
Muito legal! Mas não tenho certeza de quão bem isso acomodaria um personagem que passeava por ele. Empurraria todas as esferas para um lado, não?
Max
5

Grant Kot publicou parte de seu código de simulação fluida no Github com implementações em javascript (canvas) e C ++ com OpenFrameworks: https://github.com/kotsoft

Ele tem algumas demos em sua conta do youtube: http://youtu.be/HqWheJSEiaw

Não tenho ideia de como funciona, mas sei que funciona rápido e há todo tipo de variação para criar com ele. Uma boa palavra-chave para procurar pode ser "partículas multigrid".

michael.bartnett
fonte
Eu realmente gosto de como Grant Kot simula fluidos! Mesmo que a renderização seja mínima, pelo menos no applet nessas páginas da web. É como muitos parâmetros para controlar a simulação. Vale uma olhada mais profunda. Valeu.
luke