Activa las notificaciones para estar al tanto de lo más nuevo en tecnología.

Box2D: biblioteca de simulación física de cuerpos rígidos

Más de uno habrá jugado alguna vez Angry Birds y se habrá sorprendido cómo las cosntrucciones del juego se derrumban como si estuviésemos en la...

angry-birds

Más de uno habrá jugado alguna vez Angry Birds y se habrá sorprendido cómo las cosntrucciones del juego se derrumban como si estuviésemos en la vida real. Esto se debe a que el juego en cuestión usa un motor de simulación física llamado Box2D, cuya tarea es emular las condiciones físicas reales de cuerpos rígidos, para interactuar con ellos de manera tal, que pareciese que fuesen verdaderos.

Box2D es un motor de código abierto, escrito en C++, para simular cuerpos rígidos en dos dimensiones. El desarrollo de esta biblioteca de funciones es de Erin Catto y se pueden usar bajo la licencia zlib. Esto quiere decir que La licencia sólo tiene los siguientes puntos para tener en cuenta: El software es usado simplemente como tal. Los autores no son responsables de ningún daño provocado por el uso del mismo.

La distribución de una versión modificada del software está sujeta a las siguientes restricciones:

  • No se debe indicar que se es el autor del software original.
  • Versiones de fuentes alteradas no deben ser representadas como la versión original del software.
  • El aviso de la licencia no debe ser eliminado de las distribuciones derivadas.

Nótese que la licencia no requiere que el código fuente sea distribuido.

Sin embargo, el autor de Box2D incita a los que usen su biblioteca de funciones a dar el crédito correspondiente.

Las características de este motor de simulación de cuerpos rígidos son las siguientes:

Colisión

  • Detección contínua de colisiones
  • Callbacks de contacto (begin, end, pre-solve y post-solve)
  • Polígonos covexos y círculos
  • Formas múltiples en un cuerpo
  • Un tiro puede tocvar muchas formas
  • Manejo eficiente de pares
  • Consultas de fase amplia AABB rápidas
  • Grupos de colisiones y categorías

Física

  • Física contínua con tiempo para resolver impactos
  • Gráfica de contacto persistente de cuerpos
  • Solución aislada y manejo de reposo
  • Contacto, fricción  y restitución
  • Pila estable con solución en tiempo lineal
  • Tipos como revolute, prismatic, distancia, pulley, gear, mouse joint
  • Límites de lasa uniones, motores y fricción
  • Corrección del momentum de la posición desacoplada
  • Precisión razonable a las fuerzas, reacciones e impulsos

Sistema

  • Bloques pequeños y asignación en la pila (stack)
  • Ajuste de parámetros centralizados
  • C++ portable, pues no usa contenedores STL

Cama de pruebas

  • OpenGL con Freeglut
  • Interfaz gráfica con GLUI
  • Cambio fácil entere pruebas usando GUI
  • Marco de pruebas para añadir nuevas pruebas
  • Selección de mouse
  • Archivos para el build del sistema

Documentación

  • Manual del usuario
  • Documento Doxygen con comentarios en el código
  • Foro de usuarios activo

Si deseas bajar el motor de simulación Box2D, entre aquí. Es complejo de usar, pues contiene mucha información, pero si trabaja con este sistema, poco a poco podrá hacer programas que reten incluso las capacidades mostradas en Angry Birds, por ejemplo.

Referencias:

Box2D 

Comentarios