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?
fuente
Otro esquema que encontré es el de Position Based Dynamics donde:
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.
fuente