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 | |
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 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... | |
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' More... | |
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) 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 () |
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 &min, btScalar &max) const |
Public Member Functions inherited from btCollisionShape | |
BT_DECLARE_ALIGNED_ALLOCATOR () | |
btCollisionShape () | |
virtual | ~btCollisionShape () |
virtual void | getBoundingSphere (btVector3 ¢er, btScalar &radius) const |
virtual btScalar | getAngularMotionDisc () const |
getAngularMotionDisc returns the maximus 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... | |
int | getShapeType () const |
virtual btVector3 | getAnisotropicRollingFrictionDirection () const |
the getAnisotropicRollingFrictionDirection can be used in combination with setAnisotropicFriction See Bullet/Demos/RollingFrictionDemo for an example More... | |
void | setUserPointer (void *userPtr) |
optional user data pointer More... | |
void * | getUserPointer () 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 |
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 |
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 25 of file btConvexTriangleMeshShape.h.
btConvexTriangleMeshShape::btConvexTriangleMeshShape | ( | btStridingMeshInterface * | meshInterface, |
bool | calcAabb = true |
||
) |
Definition at line 23 of file btConvexTriangleMeshShape.cpp.
|
virtual |
Reimplemented from btPolyhedralConvexShape.
Definition at line 102 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 210 of file btConvexTriangleMeshShape.cpp.
Implements btPolyhedralConvexShape.
Definition at line 167 of file btConvexTriangleMeshShape.cpp.
|
virtual |
Reimplemented from btConvexInternalShape.
Definition at line 205 of file btConvexTriangleMeshShape.cpp.
|
inline |
Definition at line 35 of file btConvexTriangleMeshShape.h.
|
inline |
Definition at line 39 of file btConvexTriangleMeshShape.h.
|
inlinevirtual |
Implements btCollisionShape.
Definition at line 49 of file btConvexTriangleMeshShape.h.
|
virtual |
Implements btPolyhedralConvexShape.
Definition at line 162 of file btConvexTriangleMeshShape.cpp.
|
virtual |
Implements btPolyhedralConvexShape.
Definition at line 177 of file btConvexTriangleMeshShape.cpp.
|
virtual |
Implements btPolyhedralConvexShape.
Definition at line 155 of file btConvexTriangleMeshShape.cpp.
|
virtual |
Implements btPolyhedralConvexShape.
Definition at line 182 of file btConvexTriangleMeshShape.cpp.
|
virtual |
Implements btPolyhedralConvexShape.
Definition at line 172 of file btConvexTriangleMeshShape.cpp.
Implements btPolyhedralConvexShape.
Definition at line 188 of file btConvexTriangleMeshShape.cpp.
|
virtual |
Reimplemented from btConvexInternalShape.
Definition at line 128 of file btConvexTriangleMeshShape.cpp.
|
virtual |
Reimplemented from btPolyhedralConvexShape.
Definition at line 79 of file btConvexTriangleMeshShape.cpp.
|
virtual |
Reimplemented from btPolyhedralConvexAabbCachingShape.
Definition at line 196 of file btConvexTriangleMeshShape.cpp.
|
private |
Definition at line 28 of file btConvexTriangleMeshShape.h.