33 #ifndef DART_COLLISION_BULLET_BULLETCOLLISIONDETECTOR_HPP_ 34 #define DART_COLLISION_BULLET_BULLETCOLLISIONDETECTOR_HPP_ 37 #include "dart/config.hpp" 40 #include <assimp/scene.h> 41 #include <btBulletCollisionCommon.h> 42 #include "dart/dynamics/CollisionDetector.hpp" 43 #include "dart/dynamics/bullet/BulletCollisionGroup.hpp" 44 #include "dart/dynamics/bullet/BulletCollisionShape.hpp" 56 static std::shared_ptr<BulletCollisionDetector> create();
66 const std::string&
getType()
const override;
103 const Eigen::Vector3d& from,
104 const Eigen::Vector3d& to,
123 std::shared_ptr<BulletCollisionShape> claimBulletCollisionShape(
124 const dynamics::ConstShapePtr& shape);
126 void reclaimBulletCollisionShape(
const dynamics::ConstShapePtr& shape);
128 std::unique_ptr<BulletCollisionShape> createBulletCollisionShape(
129 const dynamics::ConstShapePtr& shape);
134 class BulletCollisionShapeDeleter final
137 BulletCollisionShapeDeleter(
145 dynamics::ConstShapePtr mShape;
149 struct ShapeInfo final
152 std::weak_ptr<BulletCollisionShape> mShape;
155 std::size_t mLastKnownVersion;
159 std::map<dynamics::ConstShapePtr, ShapeInfo> mShapeMap;
161 std::unique_ptr<BulletCollisionGroup> mGroupForFiltering;
169 #endif // DART_COLLISION_BULLET_BULLETCOLLISIONDETECTOR_HPP_ double distance(CollisionGroup *group, const DistanceOption &option=DistanceOption(false, 0.0, nullptr), DistanceResult *result=nullptr) override
Get the minimum signed distance between the Shape pairs in the given CollisionGroup.
Definition: BulletCollisionDetector.cpp:325
Helper class to register a object creator function to the Singleton.
Definition: Factory.hpp:124
bool raycast(CollisionGroup *group, const Eigen::Vector3d &from, const Eigen::Vector3d &to, const RaycastOption &option=RaycastOption(), RaycastResult *result=nullptr) override
Performs raycast to a collision group.
Definition: BulletCollisionDetector.cpp:362
std::shared_ptr< CollisionDetector > cloneWithoutCollisionObjects() const override
Create a clone of this CollisionDetector.
Definition: BulletCollisionDetector.cpp:128
Definition: DistanceResult.hpp:46
std::unique_ptr< CollisionObject > createCollisionObject(const dynamics::ShapeFrame *shapeFrame) override
Create CollisionObject.
Definition: BulletCollisionDetector.cpp:429
bool collide(CollisionGroup *group, const CollisionOption &option=CollisionOption(false, 1u, nullptr), CollisionResult *result=nullptr) override
Perform collision check for a single group.
Definition: BulletCollisionDetector.cpp:228
BulletCollisionDetector()
Constructor.
Definition: BulletCollisionDetector.cpp:423
Definition: Aspect.cpp:40
Definition: CollisionOption.hpp:44
void notifyCollisionObjectDestroying(CollisionObject *object) override
Notify that a CollisionObject is destroying. Do nothing by default.
Definition: BulletCollisionDetector.cpp:449
Definition: CollisionResult.hpp:51
Definition: DistanceOption.hpp:44
Definition: BulletCollisionDetector.hpp:49
std::unique_ptr< CollisionGroup > createCollisionGroup() override
Create a collision group.
Definition: BulletCollisionDetector.cpp:147
~BulletCollisionDetector() override
Constructor.
Definition: BulletCollisionDetector.cpp:121
const std::string & getType() const override
Return collision detection engine type as a std::string.
Definition: BulletCollisionDetector.cpp:134
Definition: CollisionObject.hpp:43
void refreshCollisionObject(CollisionObject *object) override
Update the collision geometry of a ShapeFrame.
Definition: BulletCollisionDetector.cpp:439
Definition: CollisionGroup.hpp:51
static const std::string & getStaticType()
Get collision detector type for this class.
Definition: BulletCollisionDetector.cpp:140
Definition: RaycastResult.hpp:62
Definition: ShapeFrame.hpp:189
Definition: BulletCollisionShape.hpp:46
Definition: RaycastOption.hpp:42
Definition: CollisionDetector.hpp:56
virtual std::unique_ptr< CollisionGroup > createCollisionGroup()=0
Create a collision group.