Dzięki to była porada w dziesiątkę z tym bullet. A sam wolał bym się nie zabierać aktualnie za pisanie silnika fizycznego bo jest to zapewne przedsięwzięcie nie mniej pracochłonne jak pisanie silnika graficznego ;-) Udało mi się skonfigurować bulleta z androidem i z eclipse oraz załadować do programu biblioteki. Jeśli ktoś miał do czynienia z tym engnem to szukam porad jak najprościej zintegrować to z OpenGL. Udało mi się na chwilę obecną załadować scenę fizyczną tworząc "podłogę" i jeden obiekt jako kostka. Szukam sposobu połączenia tego z openGL. Scena jest tworzona tak:
/* Tworzenie świata fizycznego ;-) */
CollisionConfiguration collisionConfiguration = new DefaultCollisionConfiguration();
CollisionDispatcher dispatcher = new CollisionDispatcher(collisionConfiguration);
Vector3f worldAabbMin = new Vector3f(-10000,-10000,-10000);
Vector3f worldAabbMax = new Vector3f(10000,10000,10000);
AxisSweep3 overlappingPairCache = new AxisSweep3(worldAabbMin, worldAabbMax);
SequentialImpulseConstraintSolver solver = new SequentialImpulseConstraintSolver();
dynamicWorld = new DiscreteDynamicsWorld(dispatcher, overlappingPairCache, solver, collisionConfiguration);
dynamicWorld.setGravity(new Vector3f(0,-10,0));
dynamicWorld.getDispatchInfo().allowedCcdPenetration = 0f;
/* Tworzenie standardowej podłogi */
CollisionShape groundShape = new BoxShape(new Vector3f(100.f, 50.f, 100.f));
Transform groundTransform = new Transform();
groundTransform.setIdentity();
groundTransform.origin.set(new Vector3f(0.f, -56.f, 0.f));
float mass = 0f;
Vector3f localInertia = new Vector3f(0, 0, 0);
DefaultMotionState myMotionState = new DefaultMotionState(groundTransform);
RigidBodyConstructionInfo rbInfo = new RigidBodyConstructionInfo(mass, myMotionState, groundShape, localInertia);
RigidBody body = new RigidBody(rbInfo);
dynamicWorld.addRigidBody(body);
dynamicWorld.clearForces();
/* Utworzenie obiektu fizycznego (kostka) */
Transform transform;
BoxShape shape = new BoxShape(new Vector3f(2,2,2));
float mass2 = 2;
Vector3f localInertia1 = new Vector3f(0,0,0);
shape.calculateLocalInertia(mass2, localInertia1);
RigidBodyConstructionInfo rbInfo1;
RigidBody body1;
transform = new Transform();
transform.setIdentity();
transform.origin.set(0, 5,10);
DefaultMotionState polorzenie = new DefaultMotionState(transform);
rbInfo1 = new RigidBodyConstructionInfo(mass2, polorzenie, shape, localInertia);
body1 = new RigidBody(rbInfo1);
body1.setRestitution(0.1f);
body1.setFriction(0.50f);
body1.setDamping(0f, 0f);
dynamicWorld.addRigidBody(body1);
Teraz podczas renderu sceny wołam co klatkę
float ms = clock.getTimeMicroseconds();
clock.reset();
dynamicWorld.stepSimulation(ms / 1000000f);
Co pewnie (bo nie mam jak podejrzeć) uaktualnia mi scenę fizyczną. Pytanie jak teraz dostać z tego wszystkiego macierz transformacji dla opengl dla danego obiektu?