c++ comparison physics simulation physics-engine

c++ - Motores de física Bullet vs Newton Game Dynamics vs ODE



comparison physics (6)

Estoy tratando de elegir un motor de física para una aplicación de software simple. Sería simular una cantidad bastante pequeña de objetos para que el rendimiento no sea una gran preocupación. Estoy más preocupado por la precisión del movimiento involucrado. También me gustaría que el motor sea multiplataforma entre windows / linux / mac y que pueda usarse con el código c ++. Estaba viendo Bullet, Newton Game Dynamics y ODE porque son de código abierto. Sin embargo, si Havok / PhysX son significativamente más precisos, consideraría eso también.

Todo lo que parece encontrar son opiniones sobre los motores, ¿existen comparaciones exhaustivas entre las opciones? ¿O alguien tiene experiencia en probar los distintos motores? Ya que lo que estoy tratando de hacer es relativamente simple, probablemente no haya una gran diferencia entre ellos, pero me gustaría escuchar lo que la gente tiene que decir sobre las opciones. ¡Gracias!


Aunque es un poco anticuado, hay una comparación completa de (en orden alfabético) Bullet, JigLib, Newton, ODE, PhysX, y otros disponibles aquí:

La comparación considera integradores, modelos de fricción, solucionadores de restricciones, detección de colisiones, apilamiento y rendimiento computacional.




Lo sentimos, pero nunca encontrará una comparación real con respecto a la precisión. Estoy buscando desde hace tres meses mi tesis de maestría y no la he encontrado. Así que empecé a hacer la comparación por mi cuenta, pero aún me queda mucho camino por recorrer. Estoy probando con motores 3d e incluso motores 2d y por ahora Chipmunk es el que tiene la mayor precisión hasta ahora. Así que si no tienes necesidad de 3d te lo recomendaría. Sin embargo, si tiene una necesidad urgente de 3d y su problema es tan simple como lo describió (¿no quiere expandirlo en el futuro?) Bullet y ODE lo harán. Preferiría Bullet porque está mucho más actualizado y aún se mantiene activamente. Al menos está Newton, con el que estoy luchando ahora mismo. Por lo tanto, no puedo ofrecerte pros y contras, excepto que es un poco más de trabajo familiarizarte con la documentación (crucial) errónea. Espero que ayude. Atentamente.


Una capa de abstracción física admite una gran cantidad de motores físicos a través de una API unificada, lo que facilita la comparación de motores para su situación. PAL proporciona una interfaz única para estos motores de física:

  1. Box2D (experimental)
  2. Bala
  3. Dynamechs (en desuso)
  4. Havok (experimental)
  5. IBDS (experimental)
  6. JigLib
  7. Meqon (en desuso)
  8. Newton
  9. ODA
  10. OpenTissue (experimental)
  11. PhysX (también conocido como Novodex, Ageia PhysX, nVidia PhysX)
  12. Motor de física simple (experimental)
  13. Tokamak
  14. TrueAxis

Según el documento de http://www.adrianboeing.com/pal/papers/p281-boeing.pdf vinculado en esta respuesta :

De los motores de código abierto, el motor Bullet proporcionó los mejores resultados en general, superando incluso a algunos de los motores comerciales. Tokamak fue el más eficiente desde el punto de vista informático, por lo que es una buena opción para el desarrollo de juegos, sin embargo, TrueAxis y Newton tuvieron un buen desempeño a bajas tasas de actualización. Para los sistemas de simulación, la propiedad más importante de la simulación se debe determinar para seleccionar el mejor motor.

Aquí hay una demo de septiembre de 2007 del mismo autor:

https://www.youtube.com/watch?v=IhOKGBd-7iw


Una cosa que encontré realmente valiosa en ODE es la capacidad de cambiar casi todos los parámetros ''sobre la marcha''. Como ejemplo, el motor no parece quejarse si modificas la inercia o incluso la forma de un cuerpo. Podría reemplazar una esfera con una caja y todo seguiría funcionando o cambiaría el tamaño de la esfera. Otros motores no suelen ser tan flexibles, ya que trabajan mucho internamente para fines de optimización. En cuanto a la precisión, que yo sepa, ODE aún es compatible con un solucionador muy preciso (pero lento) que obviamente no es muy popular en la industria de los juegos porque no puedes jugar con más de 25-30 objetos en tiempo real. Espero que esto ayude.