Bullet Collision Detection & Physics Library
Public Member Functions | Public Attributes | Private Attributes | List of all members
btTriangleMesh Class Reference

The btTriangleMesh class is a convenience class derived from btTriangleIndexVertexArray, that provides storage for a concave triangle mesh. More...

#include <btTriangleMesh.h>

Inheritance diagram for btTriangleMesh:
Inheritance graph
[legend]
Collaboration diagram for btTriangleMesh:
Collaboration graph
[legend]

Public Member Functions

 btTriangleMesh (bool use32bitIndices=true, bool use4componentVertices=true)
 
bool getUse32bitIndices () const
 
bool getUse4componentVertices () const
 
void addTriangle (const btVector3 &vertex0, const btVector3 &vertex1, const btVector3 &vertex2, bool removeDuplicateVertices=false)
 By default addTriangle won't search for duplicate vertices, because the search is very slow for large triangle meshes. More...
 
void addTriangleIndices (int index1, int index2, int index3)
 Add a triangle using its indices. Make sure the indices are pointing within the vertices array, so add the vertices first (and to be sure, avoid removal of duplicate vertices) More...
 
int getNumTriangles () const
 
virtual void preallocateVertices (int numverts)
 
virtual void preallocateIndices (int numindices)
 
int findOrAddVertex (const btVector3 &vertex, bool removeDuplicateVertices)
 findOrAddVertex is an internal method, use addTriangle instead More...
 
void addIndex (int index)
 addIndex is an internal method, use addTriangle instead More...
 
- Public Member Functions inherited from btTriangleIndexVertexArray
 BT_DECLARE_ALIGNED_ALLOCATOR ()
 
 btTriangleIndexVertexArray ()
 
virtual ~btTriangleIndexVertexArray ()
 
 btTriangleIndexVertexArray (int numTriangles, int *triangleIndexBase, int triangleIndexStride, int numVertices, btScalar *vertexBase, int vertexStride)
 
void addIndexedMesh (const btIndexedMesh &mesh, PHY_ScalarType indexType=PHY_INTEGER)
 
virtual void getLockedVertexIndexBase (unsigned char **vertexbase, int &numverts, PHY_ScalarType &type, int &vertexStride, unsigned char **indexbase, int &indexstride, int &numfaces, PHY_ScalarType &indicestype, int subpart=0)
 get read and write access to a subpart of a triangle mesh this subpart has a continuous array of vertices and indices in this way the mesh can be handled as chunks of memory with striding very similar to OpenGL vertexarray support make a call to unLockVertexBase when the read and write access is finished More...
 
virtual void getLockedReadOnlyVertexIndexBase (const unsigned char **vertexbase, int &numverts, PHY_ScalarType &type, int &vertexStride, const unsigned char **indexbase, int &indexstride, int &numfaces, PHY_ScalarType &indicestype, int subpart=0) const
 
virtual void unLockVertexBase (int subpart)
 unLockVertexBase finishes the access to a subpart of the triangle mesh make a call to unLockVertexBase when the read and write access (using getLockedVertexIndexBase) is finished More...
 
virtual void unLockReadOnlyVertexBase (int subpart) const
 
virtual int getNumSubParts () const
 getNumSubParts returns the number of seperate subparts each subpart has a continuous array of vertices and indices More...
 
IndexedMeshArraygetIndexedMeshArray ()
 
const IndexedMeshArraygetIndexedMeshArray () const
 
virtual bool hasPremadeAabb () const
 
virtual void setPremadeAabb (const btVector3 &aabbMin, const btVector3 &aabbMax) const
 
virtual void getPremadeAabb (btVector3 *aabbMin, btVector3 *aabbMax) const
 
- Public Member Functions inherited from btStridingMeshInterface
 BT_DECLARE_ALIGNED_ALLOCATOR ()
 
 btStridingMeshInterface ()
 
virtual ~btStridingMeshInterface ()
 
virtual void InternalProcessAllTriangles (btInternalTriangleIndexCallback *callback, const btVector3 &aabbMin, const btVector3 &aabbMax) const
 
void calculateAabbBruteForce (btVector3 &aabbMin, btVector3 &aabbMax)
 brute force method to calculate aabb More...
 
const btVector3getScaling () const
 
void setScaling (const btVector3 &scaling)
 
virtual int calculateSerializeBufferSize () const
 
virtual const char * serialize (void *dataBuffer, btSerializer *serializer) const
 fills the dataBuffer and returns the struct name (and 0 on failure) More...
 

Public Attributes

btScalar m_weldingThreshold
 

Private Attributes

btAlignedObjectArray< btVector3m_4componentVertices
 
btAlignedObjectArray< btScalarm_3componentVertices
 
btAlignedObjectArray< unsigned int > m_32bitIndices
 
btAlignedObjectArray< unsigned short int > m_16bitIndices
 
bool m_use32bitIndices
 
bool m_use4componentVertices
 

Additional Inherited Members

- Protected Attributes inherited from btTriangleIndexVertexArray
IndexedMeshArray m_indexedMeshes
 
int m_pad [2]
 
int m_hasAabb
 
btVector3 m_aabbMin
 
btVector3 m_aabbMax
 
- Protected Attributes inherited from btStridingMeshInterface
btVector3 m_scaling
 

Detailed Description

The btTriangleMesh class is a convenience class derived from btTriangleIndexVertexArray, that provides storage for a concave triangle mesh.

It can be used as data for the btBvhTriangleMeshShape. It allows either 32bit or 16bit indices, and 4 (x-y-z-w) or 3 (x-y-z) component vertices. If you want to share triangle/index data between graphics mesh and collision mesh (btBvhTriangleMeshShape), you can directly use btTriangleIndexVertexArray or derive your own class from btStridingMeshInterface. Performance of btTriangleMesh and btTriangleIndexVertexArray used in a btBvhTriangleMeshShape is the same.

Definition at line 27 of file btTriangleMesh.h.

Constructor & Destructor Documentation

btTriangleMesh::btTriangleMesh ( bool  use32bitIndices = true,
bool  use4componentVertices = true 
)

Definition at line 21 of file btTriangleMesh.cpp.

Member Function Documentation

void btTriangleMesh::addIndex ( int  index)

addIndex is an internal method, use addTriangle instead

Definition at line 65 of file btTriangleMesh.cpp.

void btTriangleMesh::addTriangle ( const btVector3 vertex0,
const btVector3 vertex1,
const btVector3 vertex2,
bool  removeDuplicateVertices = false 
)

By default addTriangle won't search for duplicate vertices, because the search is very slow for large triangle meshes.

In general it is better to directly use btTriangleIndexVertexArray instead.

Definition at line 132 of file btTriangleMesh.cpp.

void btTriangleMesh::addTriangleIndices ( int  index1,
int  index2,
int  index3 
)

Add a triangle using its indices. Make sure the indices are pointing within the vertices array, so add the vertices first (and to be sure, avoid removal of duplicate vertices)

Definition at line 78 of file btTriangleMesh.cpp.

int btTriangleMesh::findOrAddVertex ( const btVector3 vertex,
bool  removeDuplicateVertices 
)

findOrAddVertex is an internal method, use addTriangle instead

Definition at line 86 of file btTriangleMesh.cpp.

int btTriangleMesh::getNumTriangles ( ) const

Definition at line 140 of file btTriangleMesh.cpp.

bool btTriangleMesh::getUse32bitIndices ( ) const
inline

Definition at line 43 of file btTriangleMesh.h.

bool btTriangleMesh::getUse4componentVertices ( ) const
inline

Definition at line 48 of file btTriangleMesh.h.

void btTriangleMesh::preallocateIndices ( int  numindices)
virtual

Reimplemented from btTriangleIndexVertexArray.

Definition at line 160 of file btTriangleMesh.cpp.

void btTriangleMesh::preallocateVertices ( int  numverts)
virtual

Reimplemented from btTriangleIndexVertexArray.

Definition at line 149 of file btTriangleMesh.cpp.

Member Data Documentation

btAlignedObjectArray<unsigned short int> btTriangleMesh::m_16bitIndices
private

Definition at line 33 of file btTriangleMesh.h.

btAlignedObjectArray<unsigned int> btTriangleMesh::m_32bitIndices
private

Definition at line 32 of file btTriangleMesh.h.

btAlignedObjectArray<btScalar> btTriangleMesh::m_3componentVertices
private

Definition at line 30 of file btTriangleMesh.h.

btAlignedObjectArray<btVector3> btTriangleMesh::m_4componentVertices
private

Definition at line 29 of file btTriangleMesh.h.

bool btTriangleMesh::m_use32bitIndices
private

Definition at line 34 of file btTriangleMesh.h.

bool btTriangleMesh::m_use4componentVertices
private

Definition at line 35 of file btTriangleMesh.h.

btScalar btTriangleMesh::m_weldingThreshold

Definition at line 39 of file btTriangleMesh.h.


The documentation for this class was generated from the following files: