Am avut o astfel de idee mai demult, vroiam sa fac un OpenPL (Open Physics Library), ODE e cel mai apropiat de ceea ce vroiam eu insa e cam incalcit la unele chestii, plus ca OpenPL asta ar fi fost un fel de wrapper precum OPAL, pentru mai multe libs de fizica, insa ar fi fost strict ca un state-machine OpenGL.
Exemplu:
Cod sursă:
void main ()
{
PLuint sfera = plCreateBody( PL_BODY_TYPE_SPHERE );
plSetValuef( sfera, PL_SPHERE_PARAM_RADIUS, 100.0f );
PLuint jointul = plCreateJoint( PL_JOINT_TYPE_HINGE );
//..............
plSetGlobalValuef( PL_GLOBAL_PARAM_GRAVITY, 0, -1, 0, 9.8f );
plApplyForce( sfera, 10, 0, 10, 100.0f );
plSimulate( 0.2f /*step size*/ );
// apoi cand iti desenezi meshul asociat sferei fizice
float pos[3];
float rot[4];
float worldMtx[16];
plGetValuefv( sfera, PL_BODY_TRANSLATION, pos );
plGetValuefv( sfera, PL_BODY_ROTATION, rot /*quat: xyzw*/ );
plGetValuefv( sfera, PL_BODY_WORLD_MATRIX, worldMtx );
//....... render mesh with that transform .........
}
Eh si uite-asa ai generic physics lib cu tot ce iti trebuie luat de prin toate celelalte libs de fizica, un simplu wrapper pt physics libs. ODE, Newton, Bullet, Havok (?), PhysX sa fie un fel de ICD-uri ca in OpenGL.
OPAL e misto si el, insa e C++ classes, nu e rau, dar ar fi nice un state machine simplu cum e OpenGL, call-uri simple si rapide.
Asta era atunci, cand nu era nici un OpenPL, se pare ca au facut-o altii inaintea mea

:
http://www.openpl.net/ dar vad ca nu e f activ
Maybe... sometime
