2009-04-30 22 views
15

He estado usando the Open Dynamics Engine (ODE) durante las últimas semanas con gran éxito. Tiene una API muy simple y sus simulaciones al menos parecen realistas. (A veces me pregunto acerca de los parámetros de mi colisión conjunta, pero lo que sea).Motores de física de código abierto

Mi única queja es que a veces es un perro. Si simuló ingenuamente miles de cuerpos interactuantes, entonces mi rendimiento comienza a sumergirse.

Sé que puedo pasar tiempo con sus redes espaciales para reducir la carga del sistema de colisión, pero antes de hacer el esfuerzo de ajustar mi código para trabajar con ODE, me pregunto si hay cualquier otro código abierto/Motores de física gratuitos que vale la pena mirar. Esto será para una aplicación comercial, por lo que estoy buscando algo más sólido y más probado en la batalla que algún proyecto de fin de semana de un estudiante universitario.

Respuesta

21

La construcción de una forma rápida, precisa y estable Solver es extremadamente difícil, y gente como Havok están comprensiblemente protectora de la tecnología. Dicho esto, los sistemas libres yo sepa son:

  • Newton Game Dinámica - Éste hizo su reputación en tener un solucionador muy precisa y estable, a costa de rendimiento. Pasó los últimos años tratando de obtener rendimiento sin sacrificar los otros dos. Es un motor bien diseñado y funciona bien, pero sigue siendo uno de los más lentos. No es de código abierto.
  • Tokamak - Exactamente lo contrario. Este es horrible incluso sus demostraciones no se ejecutan de manera estable. Simplemente levante el apilamiento de su caja y podrá ver trepidación masiva. Nunca me han impresionado. Sin embargo, es de código abierto y muy rápido.
  • Bullet - Esto es liderado por un ex empleado de Havok, que ahora es empleado de Sony (aunque no recuerdo si eso es SOE o SCEA). Este es el novato de la escena, y en realidad es de código abierto. Tiene un gran respaldo de Sony, es muy bien plataforma cruzada, y está desarrollado por personas que saben lo que están haciendo.
  • TrueAxis - Una aparición reciente en la escena. No sé mucho al respecto, y realmente no ha ganado una comunidad sustancial. Tiendo a ser un poco escéptico aquí; puede estar bien escrito, pero con una pequeña ayuda de la comunidad puede ser difícil de encontrar, y probablemente no es un motor bien probado y estable, en comparación con los demás.

Soy un gran fanático de Bullet, pero he escuchado algunas quejas sobre esto. La mayoría de ellos parece centrarse en documentación deficiente o problemas ocasionales en algunas plataformas secundarias como Mac. Todavía sería mi elección después de los "Big 2", Havok y PhysX.

+0

Me alegro de haber hecho esta pregunta. Bullet realmente suena exactamente como lo que estaba buscando. –

+0

Bullet también está integrado en Blender, en la forma de un motor de juego. – new123456

+0

Newton es de código abierto: https://github.com/MADEAPPS/newton-dynamics/ – Dmitriy

5

Bullet es increíble, y se ha utilizado comercialmente (por ejemplo: en la producción de Bolt, y varios juegos de PS3/Wii) tiene soporte para muchas plataformas e incluso CUDA de nVidia.

4

Bullet es gratuito para uso comercial y las fuentes están disponibles.

La documentación podría ser mucho mejor, pero hay un foro y una serie de ejemplos que pueden ayudar al comenzar.

2

Farseer es muy agradable.

http://www.codeplex.com/FarseerPhysics

+2

Dado que se trata de un motor 2D completamente en C#, es menos capaz y más lento que ODE y probablemente no lo que el OP quiere. No me malinterpreten, Farseer es fabuloso para los proyectos de XNA. Simplemente no creo que sea útil aquí. – Promit

+0

De acuerdo, pero podría valer la pena mirar :) – Chuck

3

Con el hardware actual, si simula ingenuamente 1000 cuerpos rígidos que interactúan en una CPU x86, el rendimiento comienza a sumergirse sin excepción. Si desea más rendimiento en este momento, sería mejor buscar motores de física que cambien su carga de trabajo a GPU.

Las CPU tienen capacidades matemáticas y de procesamiento lógico muy completas, pero las GPU tienen capacidades mucho mayores de computación en coma flotante.

Si aún desea más rendimiento simplemente con el uso de CPU, deberá cambiar sus requisitos.

1

Nvidia PhysX es no de código abierto, pero libremente disponible para Windows, Linux y PS3.

Presupuesto de http://en.wikipedia.org/wiki/PhysX:

Nvidia ofrece tanto el motor como el SDK de forma gratuita a los usuarios y desarrolladores de Windows y Linux [6]. PlayStation 3 SDK también está disponible de forma gratuita debido al acuerdo de compra general de Sony.

+0

Gracias por el enlace. En mi caso, necesito poder controlar la compilación para que esto no funcione para mí. ¡Es bueno saberlo! –