Hiah!
I’ve been trying to experiment with JBullet in my engine. I was able to create a sphere, and have it bounce on a flat plane. However when I tried to use a static collision model instead of a plane, I ran into issues. I cannot figure out the BvhTriangleMeshShape.
The problem is the BvhTriangleMesh doesn’t like my index/vertex buffers. I think I’m missing something here…
int totalVerts = source.getSize();
gVertices = ByteBuffer.allocateDirect(totalVerts * 3 * 4).order(ByteOrder.nativeOrder());
gIndices = ByteBuffer.allocateDirect(totalVerts * 4).order(ByteOrder.nativeOrder());
// FILL VERTEX AND INDEX DATA
Vertex[] vertices = source.getVertices();
for (int i = 0; i < vertices.length; i++) {
Vertex vertex = vertices[i];
float[] pos = vertex.getXYZ();
gVertices.putFloat(pos[0]);
gVertices.putFloat(pos[1]);
gVertices.putFloat(pos[2]);
}
for (int i = 0; i < vertices.length; i += 3) {
gIndices.putInt(i + 0);
gIndices.putInt(i + 1);
gIndices.putInt(i + 2);
}
gVertices.flip();
gIndices.flip();
// Create mesh
IndexedMesh indexedMesh = new IndexedMesh();
indexedMesh.numVertices = totalVerts;
indexedMesh.vertexBase = gVertices;
indexedMesh.vertexStride = 3 * 4;
indexedMesh.numTriangles = totalVerts / 3;
indexedMesh.triangleIndexBase = gIndices;
indexedMesh.triangleIndexStride = 3 * 4;
TriangleIndexVertexArray vertArray = new TriangleIndexVertexArray();
vertArray.addIndexedMesh(indexedMesh);
The last line throws a NPE.
Am I setting up my buffers properly?