Esquemas de Timestep para simulações de física

8

As operações usadas para avançar em uma simulação de física são mais comuns:

  • Integrar velocidade e posição
  • Detecção e resolução de colisões
  • Resolução de contato (em casos avançados)

Há algum tempo, deparei-me com este artigo de Stanford que propunha um esquema alternativo, que é o seguinte:

  • Detecção e resolução de colisões
  • Integrar velocidade
  • Resolução de contato
  • Integrar posição

É intrigante porque permite soluções robustas para o problema de empilhamento. Então isso me fez pensar ...

Que esquemas alternativos, se houver, estão disponíveis, simples ou complexos? Quais são seus benefícios, desvantagens e considerações de desempenho?

kevintodisco
fonte

Respostas:

2

A técnica que achei que funcionou melhor para mim ao longo dos anos é a seguinte:

  • Integrar velocidade

  • Detecção de colisão

  • Solucionador de restrições (incluindo resolução de contato)

  • Integrar posição

Aparentemente, isso é chamado de 'semi-implícito'. Eu achei a mais estável de todas as técnicas que tentei. Eu usei isso no mecanismo de física por trás do Little Big Planet PSP.

Espero que ajude!

Saúde, Paul.

wildbunny
fonte
informação de fundo sobre o "semi-implícito": gafferongames.com/post/integration_basics
mnagel
0

Outro esquema que encontrei é o da Position Based Dynamics, onde você:

  • Integrar velocidade e posição (sem restrições)
  • Detecção de colisão
  • Solucionador de restrições (baseado em posição)
  • Atualizar velocidades de novas posições (basicamente você as integra usando as forças de restrição calculadas, exatamente como você fez para as posições)

Isso é para mostrar que existem de fato outros esquemas. Cada um tem seus benefícios. O PBD é bom para tecidos, por exemplo, enquanto o solucionador de velocidade semi-implícito é mais adequado para rígidos.

A etapa de detecção de colisão deve estar em algum lugar após a atualização das posições, pois não importa se você a coloca antes ou depois de uma atualização de velocidade (a menos que você esteja usando velocidade para detecção contínua). As coisas podem ficar ainda mais confusas se você usar métodos de ordem superior, como Runge-Kutta: onde você coloca a colisão e com que frequência? Acho que Kenny Erleben tem alguns parágrafos sobre isso (abordagens preguiçosas e ansiosas) no início de sua tese de doutorado.

Mihai F
fonte