Code: Select all
//ground collision shape
/*ObjectArrayList<Vector3f> groundPs = new ObjectArrayList<>(); //WORKS
groundPs.add(new Vector3f(-100,0,100));
groundPs.add(new Vector3f(-100,0,-100));
groundPs.add(new Vector3f(100,0,-100));
groundPs.add(new Vector3f(100,0,100));
ConvexHullShape groundCollisionShape = new ConvexHullShape(groundPs);*/
//doesn't work
ByteBuffer triangleIndexBase = BufferUtils.createByteBuffer(12);
ByteBuffer vertexBase = BufferUtils.createByteBuffer(36);
IntBuffer triangleIndexBaseIB = triangleIndexBase.asIntBuffer();
FloatBuffer vertexBaseFB = vertexBase.asFloatBuffer();
//triangle
triangleIndexBaseIB.put(0);//4
triangleIndexBaseIB.put(1);//8
triangleIndexBaseIB.put(2);//12
//vertices
vertexBaseFB.put(-100f);//4
vertexBaseFB.put(0);//8
vertexBaseFB.put(100f);//12
vertexBaseFB.put(100f);//16
vertexBaseFB.put(0);//20
vertexBaseFB.put(100f);//24
vertexBaseFB.put(0);//28
vertexBaseFB.put(0);//32
vertexBaseFB.put(-100f);//36
IndexedMesh groundIndexedMesh = new IndexedMesh();
groundIndexedMesh.numTriangles = 1;
groundIndexedMesh.numVertices = 3;
groundIndexedMesh.triangleIndexBase = triangleIndexBase;
groundIndexedMesh.triangleIndexStride = 12;//???
groundIndexedMesh.vertexBase = vertexBase;
groundIndexedMesh.vertexStride = 12;//???
TriangleIndexVertexArray groundTriangleIndexVertexArray = new TriangleIndexVertexArray();
groundTriangleIndexVertexArray.addIndexedMesh(groundIndexedMesh);
GImpactMeshShape groundCollisionShape = new GImpactMeshShape(groundTriangleIndexVertexArray);
//BvhTriangleMeshShape groundCollisionShape = new BvhTriangleMeshShape(groundTriangleIndexVertexArray, true);
I would also like to mention the documentation on how to create an IndexedMesh is non existent. The biggest hint on how to do it is reading the comments on the source code http://bulletphysics.org/Bullet/BulletF ... ource.html