Class DistanceFieldCollisionDetection
Defined in File DistanceFieldCollisionDetection.h
Nested Relationships
Nested Types
Struct DistanceFieldCollisionDetection::DistanceFieldCollisionBox
Struct DistanceFieldCollisionDetection::DistanceFieldCollisionCylinder
Struct DistanceFieldCollisionDetection::DistanceFieldCollisionHollowBox
Struct DistanceFieldCollisionDetection::DistanceFieldCollisionHollowSphere
Struct DistanceFieldCollisionDetection::DistanceFieldCollisionObject
Struct DistanceFieldCollisionDetection::DistanceFieldCollisionObjectWithoutGeometry
Struct DistanceFieldCollisionDetection::DistanceFieldCollisionSphere
Struct DistanceFieldCollisionDetection::DistanceFieldCollisionTorus
Inheritance Relationships
Base Type
public PBD::CollisionDetection
(Class CollisionDetection)
Derived Type
public PBD::CubicSDFCollisionDetection
(Class CubicSDFCollisionDetection)
Class Documentation
-
class DistanceFieldCollisionDetection : public PBD::CollisionDetection
Distance field collision detection.
Subclassed by PBD::CubicSDFCollisionDetection
Public Functions
-
DistanceFieldCollisionDetection()
-
virtual ~DistanceFieldCollisionDetection()
-
virtual void collisionDetection(SimulationModel &model)
-
virtual bool isDistanceFieldCollisionObject(CollisionObject *co) const
-
void addCollisionBox(const unsigned int bodyIndex, const unsigned int bodyType, const Vector3r *vertices, const unsigned int numVertices, const Vector3r &box, const bool testMesh = true, const bool invertSDF = false)
-
void addCollisionSphere(const unsigned int bodyIndex, const unsigned int bodyType, const Vector3r *vertices, const unsigned int numVertices, const Real radius, const bool testMesh = true, const bool invertSDF = false)
-
void addCollisionTorus(const unsigned int bodyIndex, const unsigned int bodyType, const Vector3r *vertices, const unsigned int numVertices, const Vector2r &radii, const bool testMesh = true, const bool invertSDF = false)
-
void addCollisionObjectWithoutGeometry(const unsigned int bodyIndex, const unsigned int bodyType, const Vector3r *vertices, const unsigned int numVertices, const bool testMesh)
-
void addCollisionHollowSphere(const unsigned int bodyIndex, const unsigned int bodyType, const Vector3r *vertices, const unsigned int numVertices, const Real radius, const Real thickness, const bool testMesh = true, const bool invertSDF = false)
-
void addCollisionHollowBox(const unsigned int bodyIndex, const unsigned int bodyType, const Vector3r *vertices, const unsigned int numVertices, const Vector3r &box, const Real thickness, const bool testMesh = true, const bool invertSDF = false)
-
void addCollisionCylinder(const unsigned int bodyIndex, const unsigned int bodyType, const Vector3r *vertices, const unsigned int numVertices, const Vector2r &dim, const bool testMesh = true, const bool invertSDF = false)
Add collision cylinder
- Parameters
bodyIndex – index of corresponding body
bodyType – type of corresponding body
dim – (radius, height) of cylinder
Protected Functions
-
void collisionDetectionRigidBodies(RigidBody *rb1, DistanceFieldCollisionObject *co1, RigidBody *rb2, DistanceFieldCollisionObject *co2, const Real restitutionCoeff, const Real frictionCoeff, std::vector<std::vector<ContactData>> &contacts_mt)
-
void collisionDetectionRBSolid(const ParticleData &pd, const unsigned int offset, const unsigned int numVert, DistanceFieldCollisionObject *co1, RigidBody *rb2, DistanceFieldCollisionObject *co2, const Real restitutionCoeff, const Real frictionCoeff, std::vector<std::vector<ContactData>> &contacts_mt)
-
void collisionDetectionSolidSolid(const ParticleData &pd, const unsigned int offset, const unsigned int numVert, DistanceFieldCollisionObject *co1, TetModel *tm2, DistanceFieldCollisionObject *co2, const Real restitutionCoeff, const Real frictionCoeff, std::vector<std::vector<ContactData>> &contacts_mt)
-
bool findRefTetAt(const ParticleData &pd, TetModel *tm, const DistanceFieldCollisionDetection::DistanceFieldCollisionObject *co, const Vector3r &X, unsigned int &tetIndex, Vector3r &barycentricCoordinates)
-
struct ContactData
-
struct DistanceFieldCollisionBox : public PBD::DistanceFieldCollisionDetection::DistanceFieldCollisionObject
Public Functions
-
inline virtual ~DistanceFieldCollisionBox()
-
inline virtual int &getTypeId() const
-
virtual double distance(const Eigen::Vector3d &x, const Real tolerance)
Public Members
-
Vector3r m_box
-
inline virtual ~DistanceFieldCollisionBox()
-
struct DistanceFieldCollisionCylinder : public PBD::DistanceFieldCollisionDetection::DistanceFieldCollisionObject
Public Functions
-
inline virtual ~DistanceFieldCollisionCylinder()
-
inline virtual int &getTypeId() const
-
virtual double distance(const Eigen::Vector3d &x, const Real tolerance)
Public Members
-
Vector2r m_dim
-
inline virtual ~DistanceFieldCollisionCylinder()
-
struct DistanceFieldCollisionHollowBox : public PBD::DistanceFieldCollisionDetection::DistanceFieldCollisionObject
-
struct DistanceFieldCollisionHollowSphere : public PBD::DistanceFieldCollisionDetection::DistanceFieldCollisionObject
Public Functions
-
inline virtual ~DistanceFieldCollisionHollowSphere()
-
inline virtual int &getTypeId() const
-
virtual bool collisionTest(const Vector3r &x, const Real tolerance, Vector3r &cp, Vector3r &n, Real &dist, const Real maxDist = 0.0)
-
virtual double distance(const Eigen::Vector3d &x, const Real tolerance)
-
inline virtual ~DistanceFieldCollisionHollowSphere()
-
struct DistanceFieldCollisionObject : public PBD::CollisionDetection::CollisionObject
Subclassed by PBD::CubicSDFCollisionDetection::CubicSDFCollisionObject, PBD::DistanceFieldCollisionDetection::DistanceFieldCollisionBox, PBD::DistanceFieldCollisionDetection::DistanceFieldCollisionCylinder, PBD::DistanceFieldCollisionDetection::DistanceFieldCollisionHollowBox, PBD::DistanceFieldCollisionDetection::DistanceFieldCollisionHollowSphere, PBD::DistanceFieldCollisionDetection::DistanceFieldCollisionObjectWithoutGeometry, PBD::DistanceFieldCollisionDetection::DistanceFieldCollisionSphere, PBD::DistanceFieldCollisionDetection::DistanceFieldCollisionTorus
Public Functions
-
inline DistanceFieldCollisionObject()
-
inline virtual ~DistanceFieldCollisionObject()
-
virtual bool collisionTest(const Vector3r &x, const Real tolerance, Vector3r &cp, Vector3r &n, Real &dist, const Real maxDist = 0.0)
-
virtual void approximateNormal(const Eigen::Vector3d &x, const Real tolerance, Vector3r &n)
-
virtual double distance(const Eigen::Vector3d &x, const Real tolerance) = 0
-
void initTetBVH(const Vector3r *vertices, const unsigned int numVertices, const unsigned int *indices, const unsigned int numTets, const Real tolerance)
Public Members
-
bool m_testMesh
-
Real m_invertSDF
-
PointCloudBSH m_bvh
-
TetMeshBSH m_bvhTets
-
TetMeshBSH m_bvhTets0
-
inline DistanceFieldCollisionObject()
-
struct DistanceFieldCollisionObjectWithoutGeometry : public PBD::DistanceFieldCollisionDetection::DistanceFieldCollisionObject
Public Functions
-
inline virtual ~DistanceFieldCollisionObjectWithoutGeometry()
-
inline virtual int &getTypeId() const
-
inline virtual bool collisionTest(const Vector3r &x, const Real tolerance, Vector3r &cp, Vector3r &n, Real &dist, const Real maxDist = 0.0)
-
inline virtual double distance(const Eigen::Vector3d &x, const Real tolerance)
-
inline virtual ~DistanceFieldCollisionObjectWithoutGeometry()
-
struct DistanceFieldCollisionSphere : public PBD::DistanceFieldCollisionDetection::DistanceFieldCollisionObject
Public Functions
-
inline virtual ~DistanceFieldCollisionSphere()
-
inline virtual int &getTypeId() const
-
virtual bool collisionTest(const Vector3r &x, const Real tolerance, Vector3r &cp, Vector3r &n, Real &dist, const Real maxDist = 0.0)
-
virtual double distance(const Eigen::Vector3d &x, const Real tolerance)
Public Members
-
Real m_radius
-
inline virtual ~DistanceFieldCollisionSphere()
-
struct DistanceFieldCollisionTorus : public PBD::DistanceFieldCollisionDetection::DistanceFieldCollisionObject
Public Functions
-
inline virtual ~DistanceFieldCollisionTorus()
-
inline virtual int &getTypeId() const
-
virtual double distance(const Eigen::Vector3d &x, const Real tolerance)
Public Members
-
Vector2r m_radii
-
inline virtual ~DistanceFieldCollisionTorus()
-
DistanceFieldCollisionDetection()