PAL: Interface Abstracta para Motores de Física
PAL (Physics Abstract Layer) es una inteface que unifica varios de los motores de física usados hoy en día. Gracias a una API en C++ podremos crear videojuegos o simulaciones, con una interfaz común e independiente del motor físico.
En la página se puede ver un ejemplo para comprender como funciona esta API, la cual es bastante intuitiva.
El siguiente código corresponde a la simulación de una caja (cubo) que cae al suelo (terreno).
CODE:
-
#include <stdio.h>
-
#include "palFactory.h" // Incluye biblioteca PAL physics
-
-
-
int main(int argc, char **argv)
-
{
-
PF->LoadPALfromDLL(); // Carga DLL de PAL
-
-
// Se usará motor de física "Bullet"
-
PF->SelectEngine("Bullet");
-
-
// Crea objeto para la física
-
palPhysics *pp = PF->CreatePhysics();
-
-
if (pp == NULL)
-
{
-
printf("Error al crear motor de física\n.");
-
return 0;
-
}
-
-
// Inicializa motor y define vector gravedad
-
pp->Init(0,-9.8f,0);
-
-
// Crea un terreno
-
palTerrainPlane *pt= PF->CreateTerrainPlane();
-
-
// Lo inicializa en la posición (0,0,0)
-
// con un tamaño de 50x50 unidades
-
pt->Init(0,0,0, 50.0f);
-
-
// Crea una caja (cubo)
-
palBox *pb = PF->CreateBox();
-
-
// Se inicializa en la posición (0,5,0)
-
// (5 unidades sobre el terreno, en el aire)
-
// Define las dimensiones a 1x1x1 con una masa de 1
-
pb->Init(0,5,0, 1,1,1, 1);
-
-
// 100 ciclos para la simulación
-
for (int i=0; i <100; i++)
-
{
-
// Actualiza el motor de física con
-
// un timestep de 0.02
-
pp->Update(0.02f);
-
-
palVector3 pos;
-
// Obtiene la posición de la caja
-
// (se almacena en el vector pos)
-
pb->GetPosition(pos);
-
-
printf("La posición actual de la caja es %6.5f en el tiempo %4.2f\n",
-
pos.y, pp->GetTime());
-
}
-
-
// Se limpia motor de física
-
PF->Cleanup();
-
}
Los motores de física soportados actualmente son los siguientes:
- Ageia PhysX
- Bullet Physics Library
- JigLib
- Newton Game Dynamics
- ODE Open Dynamics Engine
- OpenTissue Library
- Tokamak
- TrueAxis Physics
Enlaces de interés sobre PAL:






BONE | Noviembre 13th, 2007 at 4:12 pm #
hola hola sabes como puedo instalar el physics esque me marca errores :S como lo puedo instalar
GRACIAS.
BONE | Noviembre 13th, 2007 at 4:13 pm #
bullet physics
Madster | Noviembre 18th, 2007 at 5:52 pm #
hey! excelente!
pero ¿es un mínimo común denominador? me pregunto si esto dará para benchmarks.