Bullet Collision Detection & Physics Library: btConvexTriangleMeshShape Class Reference

Bullet Collision Detection & Physics Library

Public Member Functions | Private Attributes | List of all members
btConvexTriangleMeshShape Class Reference

The btConvexTriangleMeshShape is a convex hull of a triangle mesh, but the performance is not as good as btConvexHullShape. More...

`#include <btConvexTriangleMeshShape.h>`

Inheritance diagram for btConvexTriangleMeshShape:
[legend]
Collaboration diagram for btConvexTriangleMeshShape:
[legend]

## Public Member Functions
| BT_DECLARE_ALIGNED_ALLOCATOR ()
| btConvexTriangleMeshShape (btStridingMeshInterface *meshInterface, bool calcAabb=true)
class btStridingMeshInterface * | getMeshInterface ()
const class btStridingMeshInterface * | getMeshInterface () const
virtual btVector3 | localGetSupportingVertex (const btVector3 &vec) const
virtual btVector3 | localGetSupportingVertexWithoutMargin (const btVector3 &vec) const
virtual void | batchedUnitVectorGetSupportingVertexWithoutMargin (const btVector3 *vectors, btVector3 *supportVerticesOut, int numVectors) const
virtual const char * | getName () const
virtual int | getNumVertices () const
virtual int | getNumEdges () const
virtual void | getEdge (int i, btVector3 &pa, btVector3 &pb) const
virtual void | getVertex (int i, btVector3 &vtx) const
virtual int | getNumPlanes () const
virtual void | getPlane (btVector3 &planeNormal, btVector3 &planeSupport, int i) const
virtual bool | isInside (const btVector3 &pt, btScalar tolerance) const
virtual void | setLocalScaling (const btVector3 &scaling)
virtual const btVector3 & | getLocalScaling () const
void | calculatePrincipalAxisTransform (btTransform &principal, btVector3 &inertia, btScalar &volume) const
| computes the exact moment of inertia and the transform from the coordinate system defined by the principal axes of the moment of inertia and the center of mass to the current coordinate system.
Public Member Functions inherited from btPolyhedralConvexAabbCachingShape
void | getNonvirtualAabb (const btTransform &trans, btVector3 &aabbMin, btVector3 &aabbMax, btScalar margin) const
virtual void | getAabb (const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const
| getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version
void | recalcLocalAabb ()
Public Member Functions inherited from btPolyhedralConvexShape
| BT_DECLARE_ALIGNED_ALLOCATOR ()
| btPolyhedralConvexShape ()
virtual | ~btPolyhedralConvexShape ()
virtual bool | initializePolyhedralFeatures (int shiftVerticesByMargin=0)
| optional method mainly used to generate multiple contact points by clipping polyhedral features (faces/edges) experimental/work-in-progress
virtual void | setPolyhedralFeatures (btConvexPolyhedron &polyhedron)
const btConvexPolyhedron * | getConvexPolyhedron () const
virtual void | calculateLocalInertia (btScalar mass, btVector3 &inertia) const
Public Member Functions inherited from btConvexInternalShape
| BT_DECLARE_ALIGNED_ALLOCATOR ()
virtual | ~btConvexInternalShape ()
const btVector3 & | getImplicitShapeDimensions () const
void | setImplicitShapeDimensions (const btVector3 &dimensions)
| warning: use setImplicitShapeDimensions with care changing a collision shape while the body is in the world is not recommended, it is best to remove the body from the world, then make the change, and re-add it alternatively flush the contact points, see documentation for 'cleanProxyFromPairs'
void | setSafeMargin (btScalar minDimension, btScalar defaultMarginMultiplier=0.1f)
void | setSafeMargin (const btVector3 &halfExtents, btScalar defaultMarginMultiplier=0.1f)
virtual void | getAabbSlow (const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const
const btVector3 & | getLocalScalingNV () const
virtual void | setMargin (btScalar margin)
virtual btScalar | getMargin () const
btScalar | getMarginNV () const
virtual int | getNumPreferredPenetrationDirections () const
virtual void | getPreferredPenetrationDirection (int index, btVector3 &penetrationVector) const
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)
Public Member Functions inherited from btConvexShape
| BT_DECLARE_ALIGNED_ALLOCATOR ()
| btConvexShape ()
| not supported on IBM SDK, until we fix the alignment of btVector3
virtual | ~btConvexShape ()
btVector3 | localGetSupportVertexWithoutMarginNonVirtual (const btVector3 &vec) const
btVector3 | localGetSupportVertexNonVirtual (const btVector3 &vec) const
btScalar | getMarginNonVirtual () const
void | getAabbNonVirtual (const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const
virtual void | project (const btTransform &trans, const btVector3 &dir, btScalar &minProj, btScalar &maxProj, btVector3 &witnesPtMin, btVector3 &witnesPtMax) const
Public Member Functions inherited from btCollisionShape
| BT_DECLARE_ALIGNED_ALLOCATOR ()
| btCollisionShape ()
virtual | ~btCollisionShape ()
virtual void | getBoundingSphere (btVector3 &center, btScalar &radius) const
virtual btScalar | getAngularMotionDisc () const
| getAngularMotionDisc returns the maximum radius needed for Conservative Advancement to handle time-of-impact with rotations.
virtual btScalar | getContactBreakingThreshold (btScalar defaultContactThresholdFactor) const
void | calculateTemporalAabb (const btTransform &curTrans, const btVector3 &linvel, const btVector3 &angvel, btScalar timeStep, btVector3 &temporalAabbMin, btVector3 &temporalAabbMax) const
| calculateTemporalAabb calculates the enclosing aabb for the moving object over interval [0..timeStep) result is conservative
bool | isPolyhedral () const
bool | isConvex2d () const
bool | isConvex () const
bool | isNonMoving () const
bool | isConcave () const
bool | isCompound () const
bool | isSoftBody () const
bool | isInfinite () const
| isInfinite is used to catch simulation error (aabb check)
int | getShapeType () const
virtual btVector3 | getAnisotropicRollingFrictionDirection () const
| the getAnisotropicRollingFrictionDirection can be used in combination with setAnisotropicFriction See Bullet/Demos/RollingFrictionDemo for an example
void | setUserPointer (void *userPtr)
| optional user data pointer
void * | getUserPointer () const
void | setUserIndex (int index)
int | getUserIndex () const
void | setUserIndex2 (int index)
int | getUserIndex2 () const
virtual void | serializeSingleShape (btSerializer *serializer) const

## Private Attributes
class btStridingMeshInterface * | m_stridingMesh

## Additional Inherited Members
Protected Member Functions inherited from btPolyhedralConvexAabbCachingShape
void | setCachedLocalAabb (const btVector3 &aabbMin, const btVector3 &aabbMax)
void | getCachedLocalAabb (btVector3 &aabbMin, btVector3 &aabbMax) const
| btPolyhedralConvexAabbCachingShape ()
Protected Member Functions inherited from btConvexInternalShape
| btConvexInternalShape ()
Protected Attributes inherited from btPolyhedralConvexShape
btConvexPolyhedron * | m_polyhedron
Protected Attributes inherited from btConvexInternalShape
btVector3 | m_localScaling
btVector3 | m_implicitShapeDimensions
btScalar | m_collisionMargin
btScalar | m_padding
Protected Attributes inherited from btCollisionShape
int | m_shapeType
void * | m_userPointer
int | m_userIndex
int | m_userIndex2

## Detailed Description

The btConvexTriangleMeshShape is a convex hull of a triangle mesh, but the performance is not as good as btConvexHullShape.

A small benefit of this class is that it uses the btStridingMeshInterface, so you can avoid the duplication of the triangle mesh data. Nevertheless, most users should use the much better performing btConvexHullShape instead.

Definition at line 23 of file btConvexTriangleMeshShape.h.

## Constructor & Destructor Documentation

## ◆ btConvexTriangleMeshShape()

btConvexTriangleMeshShape::btConvexTriangleMeshShape | ( | btStridingMeshInterface * | meshInterface,
|  | bool | calcAabb = true )

Definition at line 22 of file btConvexTriangleMeshShape.cpp.

## Member Function Documentation

## ◆ batchedUnitVectorGetSupportingVertexWithoutMargin()

void btConvexTriangleMeshShape::batchedUnitVectorGetSupportingVertexWithoutMargin | ( | const btVector3 * | vectors,
|  | btVector3 * | supportVerticesOut,
|  | int | numVectors ) const
| virtual

Reimplemented from btPolyhedralConvexShape.

Definition at line 93 of file btConvexTriangleMeshShape.cpp.

## ◆ BT_DECLARE_ALIGNED_ALLOCATOR()

btConvexTriangleMeshShape::BT_DECLARE_ALIGNED_ALLOCATOR | ( |  | ) |

## ◆ calculatePrincipalAxisTransform()

void btConvexTriangleMeshShape::calculatePrincipalAxisTransform | ( | btTransform & | principal,
|  | btVector3 & | inertia,
|  | btScalar & | volume ) const

computes the exact moment of inertia and the transform from the coordinate system defined by the principal axes of the moment of inertia and the center of mass to the current coordinate system.

A mass of 1 is assumed, for other masses just multiply the computed "inertia" by the mass. The resulting transform "principal" has to be applied inversely to the mesh in order for the local coordinate system of the shape to be centered at the center of mass and to coincide with the principal axes. This also necessitates a correction of the world transform of the collision object by the principal transform. This method also computes the volume of the convex mesh.

Definition at line 184 of file btConvexTriangleMeshShape.cpp.

## ◆ getEdge()

void btConvexTriangleMeshShape::getEdge | ( | int | i,
|  | btVector3 & | pa,
|  | btVector3 & | pb ) const
| virtual

Implements btPolyhedralConvexShape.

Definition at line 145 of file btConvexTriangleMeshShape.cpp.

## ◆ getLocalScaling()

const btVector3 & btConvexTriangleMeshShape::getLocalScaling | ( |  | ) | const
| virtual

Reimplemented from btConvexInternalShape.

Definition at line 179 of file btConvexTriangleMeshShape.cpp.

## ◆ getMeshInterface() [1/2]

class btStridingMeshInterface * btConvexTriangleMeshShape::getMeshInterface | ( |  | ) |
| inline

Definition at line 33 of file btConvexTriangleMeshShape.h.

## ◆ getMeshInterface() [2/2]

const class btStridingMeshInterface * btConvexTriangleMeshShape::getMeshInterface | ( |  | ) | const
| inline

Definition at line 37 of file btConvexTriangleMeshShape.h.

## ◆ getName()

virtual const char * btConvexTriangleMeshShape::getName | ( |  | ) | const
| inlinevirtual

Implements btCollisionShape.

Definition at line 47 of file btConvexTriangleMeshShape.h.

## ◆ getNumEdges()

int btConvexTriangleMeshShape::getNumEdges | ( |  | ) | const
| virtual

Implements btPolyhedralConvexShape.

Definition at line 140 of file btConvexTriangleMeshShape.cpp.

## ◆ getNumPlanes()

int btConvexTriangleMeshShape::getNumPlanes | ( |  | ) | const
| virtual

Implements btPolyhedralConvexShape.

Definition at line 155 of file btConvexTriangleMeshShape.cpp.

## ◆ getNumVertices()

int btConvexTriangleMeshShape::getNumVertices | ( |  | ) | const
| virtual

Implements btPolyhedralConvexShape.

Definition at line 134 of file btConvexTriangleMeshShape.cpp.

## ◆ getPlane()

void btConvexTriangleMeshShape::getPlane | ( | btVector3 & | planeNormal,
|  | btVector3 & | planeSupport,
|  | int | i ) const
| virtual

Implements btPolyhedralConvexShape.

Definition at line 160 of file btConvexTriangleMeshShape.cpp.

## ◆ getVertex()

void btConvexTriangleMeshShape::getVertex | ( | int | i,
|  | btVector3 & | vtx ) const
| virtual

Implements btPolyhedralConvexShape.

Definition at line 150 of file btConvexTriangleMeshShape.cpp.

## ◆ isInside()

bool btConvexTriangleMeshShape::isInside | ( | const btVector3 & | pt,
|  | btScalar | tolerance ) const
| virtual

Implements btPolyhedralConvexShape.

Definition at line 166 of file btConvexTriangleMeshShape.cpp.

## ◆ localGetSupportingVertex()

btVector3 btConvexTriangleMeshShape::localGetSupportingVertex | ( | const btVector3 & | vec | ) | const
| virtual

Reimplemented from btConvexInternalShape.

Definition at line 115 of file btConvexTriangleMeshShape.cpp.

## ◆ localGetSupportingVertexWithoutMargin()

btVector3 btConvexTriangleMeshShape::localGetSupportingVertexWithoutMargin | ( | const btVector3 & | vec | ) | const
| virtual

Reimplemented from btPolyhedralConvexShape.

Definition at line 69 of file btConvexTriangleMeshShape.cpp.

## ◆ setLocalScaling()

void btConvexTriangleMeshShape::setLocalScaling | ( | const btVector3 & | scaling | ) |
| virtual

Reimplemented from btPolyhedralConvexAabbCachingShape.

Definition at line 172 of file btConvexTriangleMeshShape.cpp.

## Member Data Documentation

## ◆ m_stridingMesh

class btStridingMeshInterface* btConvexTriangleMeshShape::m_stridingMesh
| private

Definition at line 26 of file btConvexTriangleMeshShape.h.

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

- btConvexTriangleMeshShape.h
- btConvexTriangleMeshShape.cpp