Esquemas de paso de tiempo para simulaciones físicas

8

Las operaciones utilizadas para escalonar una simulación física son las más comunes:

  • Integrar velocidad y posición
  • Detección y resolución de colisiones.
  • Resolución de contacto (en casos avanzados)

Hace un tiempo me encontré con este documento de Stanford que proponía un esquema alternativo, que es el siguiente:

  • Detección y resolución de colisiones.
  • Integrar velocidad
  • Resolución de contacto
  • Integrar posición

Es intrigante porque permite soluciones robustas al problema de apilamiento. Entonces me pregunto ...

¿Qué esquemas alternativos están disponibles, si los hay, simples o complejos? ¿Cuáles son sus beneficios, inconvenientes y consideraciones de rendimiento?

kevintodisco
fuente

Respuestas:

2

La técnica que encontré que me ha funcionado mejor a lo largo de los años es esta:

  • Integrar velocidad

  • Detección de colisiones

  • Solucionador de restricciones (incluida la resolución de contacto)

  • Integrar posición

Aparentemente esto se llama 'semi-implícito'. He descubierto que es la más estable de todas las técnicas que he probado. Usé esto en el motor de física detrás de Little Big Planet PSP.

¡Espero eso ayude!

Saludos, Paul.

salvaje
fuente
información general sobre "semi-implícito": gafferongames.com/post/integration_basics
mnagel
0

Otro esquema que encontré es el de Position Based Dynamics donde:

  • Integrar velocidad y posición (sin restricciones)
  • Detección de colisiones
  • Solucionador de restricciones (basado en posición)
  • Actualice las velocidades desde nuevas posiciones (básicamente las está integrando usando las fuerzas de restricción calculadas, tal como lo hizo para las posiciones)

Esto es para mostrar que efectivamente existen otros esquemas. Cada uno tiene sus beneficios. PBD es bueno para la tela, por ejemplo, mientras que el solucionador de velocidad semi-implícito es más adecuado para los rígidos.

El paso de detección de colisión tiene que estar en algún lugar después de que se hayan actualizado las posiciones, ya que no importa si lo pones antes o después de una actualización de velocidad (a menos que estés usando la velocidad para la detección continua). Las cosas pueden ponerse aún más complicadas si usas métodos de orden superior como Runge-Kutta: ¿dónde colocas la colisión y con qué frecuencia? Creo que Kenny Erleben tiene algunos párrafos sobre esto (enfoques perezosos y ansiosos) al comienzo de su tesis doctoral.

Mihai F
fuente