Schemi di timestep per simulazioni fisiche


8

Le operazioni utilizzate per eseguire una simulazione fisica sono più comunemente:

  • Integrare velocità e posizione
  • Rilevazione e risoluzione delle collisioni
  • Risoluzione dei contatti (in casi avanzati)

Qualche tempo fa mi sono imbattuto in questo documento di Stanford che proponeva uno schema alternativo, che è il seguente:

  • Rilevazione e risoluzione delle collisioni
  • Integrare la velocità
  • Risoluzione del contatto
  • Integrare la posizione

È intrigante perché consente soluzioni solide al problema dello stacking. Quindi mi sono chiesto ...

Quali sono gli eventuali schemi alternativi disponibili, semplici o complessi? Quali sono i loro vantaggi, svantaggi e considerazioni sulle prestazioni?

Risposte:


2

La tecnica che ho trovato che ha funzionato meglio per me negli anni è questa:

  • Integrare la velocità

  • Rilevazione di collisioni

  • Risolutore di vincoli (compresa la risoluzione dei contatti)

  • Integrare la posizione

Apparentemente questo si chiama 'semi-implicito'. Ho scoperto che è la più stabile di tutte le tecniche che ho provato. L'ho usato nel motore fisico dietro Little Big Planet PSP.

Spero che sia d'aiuto!

Saluti, Paul.


informazioni di base su "semi-implicito": gafferongames.com/post/integration_basics
mnagel

0

Un altro schema che ho riscontrato è quello di Position Based Dynamics in cui:

  • Integrare velocità e posizione (senza vincoli)
  • Rilevazione di collisioni
  • Risolutore di vincoli (basato sulla posizione)
  • Aggiorna le velocità da nuove posizioni (in pratica le stai integrando usando le forze di vincolo calcolate, proprio come hai fatto per le posizioni)

Questo per mostrare che ci sono davvero altri schemi. Ognuno ha i suoi vantaggi. Il PBD è adatto per esempio ai tessuti, mentre il solutore di velocità semi-implicito è più adatto ai rigidi.

La fase di rilevamento delle collisioni deve essere da qualche parte dopo l'aggiornamento delle posizioni, poiché non importa se lo si inserisce prima o dopo un aggiornamento della velocità (a meno che non si utilizzi la velocità per il rilevamento continuo). Le cose possono diventare ancora più disordinate se usi metodi di ordine superiore come Runge-Kutta: dove metti collisione allora e con quale frequenza? Penso che Kenny Erleben abbia alcuni paragrafi su questo (approcci pigri e avidi) all'inizio della sua tesi di dottorato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.