Bullet Collision Detection & Physics Library
|
The btConvexTriangleMeshShape is a convex hull of a triangle mesh, but the performance is not as good as btConvexHullShape. More...
#include <btConvexTriangleMeshShape.h>
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. More... | |
Public Member Functions inherited from btPolyhedralConvexAabbCachingShape | |
void | getNonvirtualAabb (const btTransform &trans, btVector3 &aabbMin, btVector3 &aabbMax, btScalar margin) const |
virtual void | setLocalScaling (const btVector3 &scaling) |
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 More... | |
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 More... | |
virtual void | setPolyhedralFeatures (btConvexPolyhedron &polyhedron) |
const btConvexPolyhedron * | getConvexPolyhedron () const |
virtual btVector3 | localGetSupportingVertexWithoutMargin (const btVector3 &vec) const |
virtual void | batchedUnitVectorGetSupportingVertexWithoutMargin (const btVector3 *vectors, btVector3 *supportVerticesOut, int numVectors) const |
virtual void | calculateLocalInertia (btScalar mass, btVector3 &inertia) const |
virtual int | getNumVertices () const =0 |
virtual int | getNumEdges () const =0 |
virtual void | getEdge (int i, btVector3 &pa, btVector3 &pb) const =0 |
virtual void | getVertex (int i, btVector3 &vtx) const =0 |
virtual int | getNumPlanes () const =0 |
virtual void | getPlane (btVector3 &planeNormal, btVector3 &planeSupport, int i) const =0 |
virtual bool | isInside (const btVector3 &pt, btScalar tolerance) const =0 |
Public Member Functions inherited from btConvexInternalShape | |
BT_DECLARE_ALIGNED_ALLOCATOR () | |
virtual | ~btConvexInternalShape () |
virtual btVector3 | localGetSupportingVertex (const btVector3 &vec) const |
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' More... | |
void | setSafeMargin (btScalar minDimension, btScalar defaultMarginMultiplier=0.1f) |
void | setSafeMargin (const btVector3 &halfExtents, btScalar defaultMarginMultiplier=0.1f) |
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 More... | |
virtual void | getAabbSlow (const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const |
virtual void | setLocalScaling (const btVector3 &scaling) |
virtual const btVector3 & | getLocalScaling () 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) More... | |
Public Member Functions inherited from btConvexShape | |
BT_DECLARE_ALIGNED_ALLOCATOR () | |
btConvexShape () | |
not supported on IBM SDK, until we fix the alignment of btVector3 More... | |
virtual | ~btConvexShape () |
virtual btVector3 | localGetSupportingVertex (const btVector3 &vec) const =0 |
virtual btVector3 | localGetSupportingVertexWithoutMargin (const btVector3 &vec) const =0 |
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 |
virtual void | batchedUnitVectorGetSupportingVertexWithoutMargin (const btVector3 *vectors, btVector3 *supportVerticesOut, int numVectors) const =0 |
void | getAabb (const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const =0 |
getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version More... | |
virtual void | getAabbSlow (const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const =0 |
virtual void | setLocalScaling (const btVector3 &scaling)=0 |
virtual const btVector3 & | getLocalScaling () const =0 |
virtual void | setMargin (btScalar margin)=0 |
virtual btScalar | getMargin () const =0 |
virtual int | getNumPreferredPenetrationDirections () const =0 |
virtual void | getPreferredPenetrationDirection (int index, btVector3 &penetrationVector) const =0 |
Public Member Functions inherited from btCollisionShape | |
BT_DECLARE_ALIGNED_ALLOCATOR () | |
btCollisionShape () | |
virtual | ~btCollisionShape () |
virtual void | getAabb (const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const =0 |
getAabb returns the axis aligned bounding box in the coordinate frame of the given transform t. More... | |
virtual void | getBoundingSphere (btVector3 ¢er, btScalar &radius) const |
virtual btScalar | getAngularMotionDisc () const |
getAngularMotionDisc returns the maximum radius needed for Conservative Advancement to handle time-of-impact with rotations. More... | |
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 More... | |
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) More... | |
virtual void | setLocalScaling (const btVector3 &scaling)=0 |
virtual const btVector3 & | getLocalScaling () const =0 |
virtual void | calculateLocalInertia (btScalar mass, btVector3 &inertia) const =0 |
virtual const char * | getName () const =0 |
int | getShapeType () const |
virtual btVector3 | getAnisotropicRollingFrictionDirection () const |
the getAnisotropicRollingFrictionDirection can be used in combination with setAnisotropicFriction See Bullet/Demos/RollingFrictionDemo for an example More... | |
virtual void | setMargin (btScalar margin)=0 |
virtual btScalar | getMargin () const =0 |
void | setUserPointer (void *userPtr) |
optional user data pointer More... | |
void * | getUserPointer () const |
void | setUserIndex (int index) |
int | getUserIndex () const |
void | setUserIndex2 (int index) |
int | getUserIndex2 () 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) More... | |
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 |
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.
btConvexTriangleMeshShape::btConvexTriangleMeshShape | ( | btStridingMeshInterface * | meshInterface, |
bool | calcAabb = true |
||
) |
Definition at line 22 of file btConvexTriangleMeshShape.cpp.
|
virtual |
Reimplemented from btPolyhedralConvexShape.
Definition at line 93 of file btConvexTriangleMeshShape.cpp.
btConvexTriangleMeshShape::BT_DECLARE_ALIGNED_ALLOCATOR | ( | ) |
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.
Implements btPolyhedralConvexShape.
Definition at line 145 of file btConvexTriangleMeshShape.cpp.
|
virtual |
Reimplemented from btConvexInternalShape.
Definition at line 179 of file btConvexTriangleMeshShape.cpp.
|
inline |
Definition at line 33 of file btConvexTriangleMeshShape.h.
|
inline |
Definition at line 37 of file btConvexTriangleMeshShape.h.
|
inlinevirtual |
Implements btCollisionShape.
Definition at line 47 of file btConvexTriangleMeshShape.h.
|
virtual |
Implements btPolyhedralConvexShape.
Definition at line 140 of file btConvexTriangleMeshShape.cpp.
|
virtual |
Implements btPolyhedralConvexShape.
Definition at line 155 of file btConvexTriangleMeshShape.cpp.
|
virtual |
Implements btPolyhedralConvexShape.
Definition at line 134 of file btConvexTriangleMeshShape.cpp.
|
virtual |
Implements btPolyhedralConvexShape.
Definition at line 160 of file btConvexTriangleMeshShape.cpp.
|
virtual |
Implements btPolyhedralConvexShape.
Definition at line 150 of file btConvexTriangleMeshShape.cpp.
Implements btPolyhedralConvexShape.
Definition at line 166 of file btConvexTriangleMeshShape.cpp.
|
virtual |
Reimplemented from btConvexInternalShape.
Definition at line 115 of file btConvexTriangleMeshShape.cpp.
|
virtual |
Reimplemented from btPolyhedralConvexShape.
Definition at line 69 of file btConvexTriangleMeshShape.cpp.
|
virtual |
Reimplemented from btPolyhedralConvexAabbCachingShape.
Definition at line 172 of file btConvexTriangleMeshShape.cpp.
|
private |
Definition at line 26 of file btConvexTriangleMeshShape.h.