Page 1 of 1

btTriangleIndexVertexArray with SHORT as index type

Posted: Fri Feb 24, 2017 8:40 pm
by avithohol
Hello,

I can beautifully create btBvhTriangleMeshShape-s in my app, passing in mTriangleIndexVertexArray like this:

Code: Select all

mTriangleIndexVertexArray = new btTriangleIndexVertexArray(int)(mVertexIndexes.size()/3),  //number of triangle faces
                                                                (int*)&mVertexIndexes[0],         //index array
                                                                (int)(3*sizeof(vInt)),         //index stride
                                                                (int)mVertexPositions.size(),    //number of vertexes
                                                                (btScalar*)&mVertexPositions[0].x,       //vertex array
                                                                (int)sizeof(cVec3) );

mCollisionShape = new btBvhTriangleMeshShape( [b]mTriangleIndexVertexArray[/b], true, true );
All is fine, and works, the only thing bothers me, that I need to pass the indexes as INT type to the btTriangleIndexVertexArray, but I wish to use UNSIGNED SHORT.

Without any drastic changes to BULLETT code, how can I achive to pass in a UNSIGNED SHORT type indexes to btTriangleIndexVertexArray?
(btTriangleMesh has such related constructor info, but no idea how to utilize it).

How do you guys would do this?

Re: btTriangleIndexVertexArray with SHORT as index type

Posted: Fri Feb 24, 2017 9:16 pm
by ktfh
I think using a indexed mesh would work http://bulletphysics.org/Bullet/BulletF ... dMesh.html

Code: Select all

btIndexedMesh mIndexedMesh;
// set this stuff
mIndexedMesh.m_numTriangles;
mIndexedMesh.m_triangleIndexBase;
mIndexedMesh.m_triangleIndexStride;
mIndexedMesh.m_numVertices;
mIndexedMesh.m_vertexBase;
mIndexedMesh.m_vertexStride;
// make mesh striding interface and add indexed mesh to it
mTriangleIndexVertexArray = new btTriangleIndexVertexArray();
mTriangleIndexVertexArray.addIndexedMesh(mIndexedMesh, PHY_SHORT);// PHY_SHORT sets index type

mCollisionShape = new btBvhTriangleMeshShape(mTriangleIndexVertexArray, true, true );

Re: btTriangleIndexVertexArray with SHORT as index type

Posted: Sun Feb 26, 2017 4:37 pm
by avithohol
ktfh wrote:I think using a indexed mesh would work http://bulletphysics.org/Bullet/BulletF ... dMesh.html

Code: Select all

btIndexedMesh mIndexedMesh;
// set this stuff
mIndexedMesh.m_numTriangles;
mIndexedMesh.m_triangleIndexBase;
mIndexedMesh.m_triangleIndexStride;
mIndexedMesh.m_numVertices;
mIndexedMesh.m_vertexBase;
mIndexedMesh.m_vertexStride;
// make mesh striding interface and add indexed mesh to it
mTriangleIndexVertexArray = new btTriangleIndexVertexArray();
mTriangleIndexVertexArray.addIndexedMesh(mIndexedMesh, PHY_SHORT);// PHY_SHORT sets index type

mCollisionShape = new btBvhTriangleMeshShape(mTriangleIndexVertexArray, true, true );
This just works! Thanks so much!
This thread is answered.