7 #include "NeedleInteraction.h" 8 #include "imstkCollidingObject.h" 9 #include "imstkCollisionDetectionAlgorithm.h" 10 #include "imstkLineMesh.h" 11 #include "imstkPuncturable.h" 12 #include "imstkRigidObject2.h" 13 #include "imstkSignedDistanceField.h" 14 #include "imstkStraightNeedle.h" 15 #include "imstkTaskGraph.h" 16 #include "NeedleRigidBodyCH.h" 18 using namespace imstk;
20 NeedleInteraction::NeedleInteraction(std::shared_ptr<CollidingObject> tissueObj,
21 std::shared_ptr<RigidObject2> needleObj,
22 const std::string& collisionName) :
26 <<
"NeedleInteraction only works with StraightNeedle component";
28 <<
"NeedleInteraction only works with Puncturable component";
29 CHECK(std::dynamic_pointer_cast<ImplicitGeometry>(tissueObj->getCollidingGeometry()) !=
nullptr)
30 <<
"NeedleInteraction only works with SDF colliding geometry on colliding tissueObj";
36 auto needleRbdCH = std::make_shared<NeedleRigidBodyCH>();
37 needleRbdCH->setInputRigidObjectA(needleObj);
38 needleRbdCH->setInputCollidingObjectB(tissueObj);
39 needleRbdCH->setInputCollisionData(getCollisionDetection()->getCollisionData());
40 needleRbdCH->setBaumgarteStabilization(0.001);
Place this on an object to make it puncturable by a needle. This allows puncturables to know they've ...
Definition of straight, single segment needle.
void setCollisionHandlingA(std::shared_ptr< CollisionHandling > colHandlingA)
Set the Collision Handling for object A.