Domanda

Ho usato l'Open Dynamics Engine (ODE) per le ultime settimane con grande successo. Ha un'API molto semplice e le sue simulazioni almeno sembrano realistiche. (A volte mi chiedo quali siano i parametri del mio collisione, ma comunque.)

La mia unica lamentela è che a volte è un cane. Se simulo ingenuamente migliaia di corpi interagenti, la mia performance inizia a immergersi.

So che posso passare del tempo con le loro griglie spaziali per ridurre il carico del sistema di collisione, ma prima di passare lo sforzo di ottimizzare il mio codice per lavorare con ODE, mi chiedo se ci sono altri Open Source / Motori di fisica gratuiti che vale la pena guardare . Questo sarà per un'app commerciale, quindi sto cercando qualcosa di più solido e più testato in battaglia rispetto al progetto di fine settimana di uno studente universitario.

È stato utile?

Soluzione

Costruire un risolutore veloce, preciso e stabile è estremamente complicato, e persone come Havok sono comprensibilmente protettive della tecnologia. Detto questo, i sistemi gratuiti di cui sono a conoscenza sono:

  • Newton Game Dynamics - Questo si è fatto una reputazione avendo un risolutore molto preciso e stabile, a scapito delle prestazioni. Sono passati gli ultimi anni a cercare di ottenere prestazioni senza sacrificare gli altri due. È un motore ben progettato e funziona bene, ma è ancora uno dei più lenti là fuori. Non open source.
  • Tokamak : esattamente il contrario. Questo è orribile; anche le loro demo non funzionano stabilmente. Basta accatastare la loro scatola e puoi vedere un enorme jitter. Non sono mai stato colpito. È open source e selvaggiamente veloce, però.
  • Bullet - Questo è guidato da un ex dipendente Havok, che ora è impiegato da Sony (anche se non ricordo se si tratta di SOE o SCEA). Questo è il principiante della scena ed è in realtà open source. Ha un forte supporto Sony, è ben multipiattaforma ed è sviluppato da persone che sanno cosa stanno facendo.
  • TrueAxis : un'apparizione recente sulla scena. Non ne so molto e non ha davvero guadagnato una comunità sostanziale. Tendo ad essere un po 'scettico qui; può essere ben scritto, ma con una piccola comunità può essere difficile trovare un aiuto, e probabilmente non è un motore ben collaudato e stabile, rispetto agli altri.

Sono un grande fan di Bullet, ma ho sentito alcune lamentele errate al riguardo. La maggior parte sembra incentrarsi su una scarsa documentazione o su problemi occasionali su alcune piattaforme secondarie come il Mac. Sarebbe ancora la mia scelta dopo il "Big 2", Havok e PhysX.

Altri suggerimenti

Bullet è fantastico, ed è stato usato commercialmente (es: nella produzione di Bolt e diverse PS3 / Wii games) supporta molte piattaforme e persino il CUDA di nVidia.

Bullet è gratuito per uso commerciale e sono disponibili fonti.

La documentazione potrebbe essere molto migliore, ma c'è un forum e una serie di esempi che possono aiutare all'inizio.

Con l'hardware di oggi, se simuli ingenuamente 1000 corpi rigidi interagenti su una CPU x86, le prestazioni iniziano a immergersi senza eccezioni. Se vuoi maggiori prestazioni in questo momento, sarebbe meglio cercare motori fisici che spostino il loro carico di lavoro su GPU.

Le CPU hanno grandi capacità di elaborazione matematica e logica di numeri interi, ma le GPU hanno capacità di calcolo in virgola mobile molto più grandi.

Se vuoi ancora più prestazioni usando solo le CPU, dovrai cambiare i tuoi requisiti.

Nvidias PhysX è non open source , ma liberamente disponibile per Windows, Linux e PS3 .

Citazione da http://en.wikipedia.org/wiki/PhysX :

  

Nvidia fornisce sia il motore che l'SDK gratuitamente agli utenti e sviluppatori Windows e Linux [6]. L'SDK di PlayStation 3 è inoltre disponibile gratuitamente a causa dell'accordo di acquisto generale di Sony.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top