Motores de física de corpo mole 2D?

9

Oi, então eu aprendi recentemente a biblioteca de gráficos SFML e gostaria de usar ou criar um sistema de física 2D de corpo não rígido para usar com ele. Eu tenho três perguntas:

A definição de corpo rígido no Box2d é

Um pedaço de matéria que é tão forte que a distância entre dois pedaços de matéria no pedaço é completamente constante.

E é exatamente isso que eu não quero, pois gostaria de criar corpos elásticos, deformáveis, quebráveis ​​e de reconexão. 1. Existe algum mecanismo de física 2D simples, mas com esses tipos de características por aí? de preferência gratuito ou de código aberto?

2. Caso contrário, eu poderia usar o box2d e trabalhar com ele para criá-lo, mesmo que seja baseado em corpos rígidos?

3. Finalmente, se houver um mecanismo de física simples como este, devo prosseguir com o processo de criação de um novo de qualquer maneira, simplesmente por experiência e para aprimorar o conhecimento de matemática em física? Acho que ajudaria se eu quisesse modificar o código de um mecanismo existente ou criar um jogo com uma física realmente única.

Obrigado!

Griffin
fonte
11
Havia esse mecanismo chamado JelloPhysics (C #), mas o site parece estar inoperante. Há um vídeo aqui: youtube.com/watch?v=SvqY_pgA6DU
bummzack

Respostas:

6

Você pode usar sistemas rígidos para criar dinâmicas moles de corpo e fluidos. Razão física por trás disso? Bem, essencialmente, os átomos são pequenos corpos rígidos. Isso não é totalmente verdade, é claro, mas, por simplicidade, você pode vê-las como tal. E corpos moles são obviamente feitos de átomos.

Então, como você cria "corpos moles" usando um mecanismo de corpo rígido como o Box2D?

A técnica essencial é unir pontos em seu corpo usando articulações. Por exemplo, se você conectar as extremidades de uma lista de linhas usando juntas de distância (o que significa que a distância entre duas juntas deve ser constante), ela se comportará aproximadamente como um pedaço de pano.

Mas isso é apenas uma descrição aproximada. Um monte de "trabalho de campo elementar" com o Box2D foi realizado por ewjordan, um dos desenvolvedores da porta Java do Box2D. Aqui está um bom ponto de partida: http://www.box2d.org/forum/viewtopic.php?f=8&t=1978

TravisG
fonte
É necessária uma mistura de molas de tensão / compressão para manter a "forma" do corpo mole, além de calcular o volume para mantê-lo inteiro.
Jonathan Connell
Sim, mas tudo isso é realmente feito através de juntas, se estamos falando sobre o Box2D. Claro que ele terá que alterar manualmente o comportamento deles, mas é aí que ele deve começar. Para efeitos de volume constante em blobs do tipo Gish, por exemplo, o JBox2D possui ConstantVolumeJoint.
TravisG
Sim, eu não sou tão familiarizado com Box2D, eu só sei como alguns colegas utilizado PhysX para simular uma bolha ^^
Jonathan Connell
1

O termo que você está procurando é física do corpo mole.

A Wikipedia tem uma boa lista. Eles são todos 3D AFAICS, mas devem ser bons.

Verifique também esta questão SO.

Um ótimo livro (corpo rígido, mas toda a matemática e física existe); também é 3D, mas é trivial para a transferência para 2D) é Game Physics Engine Development . Ele implementa um sistema baseado em partículas antes de passar para corpos rígidos e colisões.

O Pato Comunista
fonte
1

Uma maneira simples de simular corpos moles é conectar pequenos corpos rígidos com juntas elásticas. A parte difícil é ajustar os parâmetros do modelo e mapear a textura para o modelo subjacente.

A seguinte postagem no blog fornece a implementação de uma bola deformável com o mecanismo cocos2d: http://2sa-studio.blogspot.com/2014/05/soft-bodies-with-cocos2d-v3.html

sdabet
fonte
créditos para chamar a depuração cocos2d ;-)
sdabet