9 #include "imstkMacros.h" 10 #include "imstkPbdObject.h" 18 using namespace imstk;
28 enum class InflationType
35 InflatableObject(
const std::string& name,
const Vec3d& tissueSize,
const Vec3i& tissueDim,
const Vec3d& tissueCenter);
41 void inject(
const Vec3d& toolTip,
const double radius,
double rate);
48 void switchInflationType();
50 void setInflationRatio(
double ratio) { m_inflationRatio = ratio; }
51 void setInflationSize(
double sigma) { m_sigma = sigma; }
56 void setUpdateAffectedConstraint();
58 void reset()
override;
64 void setSphereTexCoords(
const double uvScale);
69 void findAffectedConstraint(
const Vec3d& toolTip,
const double radius);
77 std::shared_ptr<TetrahedralMesh> m_objectTetMesh;
78 std::shared_ptr<SurfaceMesh> m_objectSurfMesh;
80 std::vector<std::pair<int, double>> m_constraintIDandWeight;
82 bool m_affectedAreaUpdated =
false;
84 double m_inflationRatio = 1.0;
87 InflationType m_inflationType = InflationType::Linear;
Inflatable object based on PBD, with inflatable volume and distance constraints.
double computeGaussianWeight(double x)
Compute weight Gaussian distribution.
Represents a set of tetrahedrons & vertices via an array of Vec3d double vertices & Vec4i integer ind...
Base class for scene objects that move and/or deform under position based dynamics formulation...
Represents a set of triangles & vertices via an array of Vec3d double vertices & Vec3i integer indice...