Cómo dibujar / hacer una colisión de física de bala cuerpo / forma?

He implementado el motor Bullet Physics en mi programa android con el NDK (estoy usando el ejemplo imagetarget de Vuforia para android), y está configurado y funcionando correctamente, sin embargo me gustaría renderizar / dibujar mis cajas de colisión / aviones para ver mi cuerpos rígidos (btRigidBody) / formas de colisión (btCollisionShape), estoy seguro de que esto es posible, pero no puedo encontrar ningún tutorial sobre cómo hacerlo!

He tomado el hola mundo Bullet física tutorial en su página wiki y lo modificó para aplicar las transformaciones de la caída de la física cuerpo a un objeto 3d Tengo en opengl es 2.0 para ver los cuerpos de colisión, aquí está el código que estoy usando para procesar al objeto:

void drawRigidBody(btRigidBody* body,QCAR::Matrix44F modelViewMatrix, unsigned int textureID) { btTransform trans; body->getMotionState()->getWorldTransform(trans); LOG("sphere pos: (x %f , y %f, z %f)",trans.getOrigin().getX(),trans.getOrigin().getY(),trans.getOrigin().getZ()); float physicsMatrix[16]; trans.getOpenGLMatrix(physicsMatrix); SampleUtils::scalePoseMatrix(kObjectScale, kObjectScale, kObjectScale, &modelViewMatrix.data[0]); QCAR::Matrix44F modelViewProjection, objectMatrix; SampleUtils::multiplyMatrix(&modelViewMatrix.data[0], physicsMatrix, &objectMatrix.data[0]); SampleUtils::multiplyMatrix(&projectionMatrix.data[0], &objectMatrix.data[0], &modelViewProjection.data[0]); glVertexAttribPointer(vertexHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*) &signVerts[0]); glVertexAttribPointer(normalHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*) &signNormals[0]); glVertexAttribPointer(textureCoordHandle, 2, GL_FLOAT, GL_FALSE, 0, (const GLvoid*) &signTexCoords[0]); glEnableVertexAttribArray(vertexHandle); glEnableVertexAttribArray(normalHandle); glEnableVertexAttribArray(textureCoordHandle); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, textureID); glUniformMatrix4fv(mvpMatrixHandle, 1, GL_FALSE, (GLfloat*)&modelViewProjection.data[0] ); glDrawArrays(GL_TRIANGLES, 0, signNumVerts); } 

EDIT: mirando el código de btBoxShape me di cuenta de que puede agarrar la caja de vértices y normales:

 btVector3** vertices= wallShape->getVertices(); btVector3**normals = wallShape->getNormals(); 

pero no se puede agarrar una lista de índices para dibujar los puntos de vértice en un cierto orden!

Si recuerdo correctamente, esta no es la forma correcta de dibujar formas de depuración en Bullet. ¿Ha leído el manual del usuario (PDF) , página 16?

Se supone que debe implementar su propia clase de depurador de cajones que implementa btIDebugDraw , y en esta clase se implementa el método drawLine .

setDebugDrawer este cajón de depuración a viñeta con setDebugDrawer y luego habilítelo con world->getDebugDrawer->setDebugMode(debugMode);

Para dibujar el mundo, llame a world->debugDrawWorld() ;

Esto llama a drawLine en su función personalizada varias veces hasta que se ha dibujado un modelo wireframe del mundo de la física.

  • Pasando varias texturas a shader en LibGDX
  • OpenGL se bloquea al vincular el programa, LG Nexus 4
  • LibGDX - Shader trabajando en el escritorio pero no en Android
  • Carga rápida de texturas en OpenGL 2.0
  • Utilizar glVertexAttribPointer y glDrawElements para extraer de un buffer de vértice empaquetado
  • Fondos de Android Live con OpenGL ES 2.0?
  • Android OpenGL ES 2.0: El modelo de cubo no sólo está distorsionado (la perspectiva es incorrecta?), Sino también las caras se cargan incorrectamente (los vértices no son correctos?)
  • Textura negra de OpenGL ES en Nexus S
  • LibGDX: ¿Cómo determinar si el contexto opengl se perdió?
  • Android y OpenGL dan marco negro en el inicio
  • La mejor práctica para usar Sprites en un juego usando AndEngine GLES2
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.