iMSTK
Interactive Medical Simulation Toolkit
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
InflatableObject Class Reference

Inflatable object based on PBD, with inflatable volume and distance constraints. More...

#include <InflatableObject.h>

Inheritance diagram for InflatableObject:
Inheritance graph
[legend]
Collaboration diagram for InflatableObject:
Collaboration graph
[legend]

Public Types

enum  InflationType { Linear, Exponential, None }
 
- Public Types inherited from imstk::EventObject
using Observer = std::tuple< bool, std::weak_ptr< EventObject >, std::function< void(Event *)> >
 

Public Member Functions

 InflatableObject (const std::string &name, const Vec3d &tissueSize, const Vec3i &tissueDim, const Vec3d &tissueCenter)
 
void inject (const Vec3d &toolTip, const double radius, double rate)
 Perform injection on the tissue given tool tip position.
 
void switchInflationType ()
 Switch between linear and exponential inflation type.
 
void setInflationRatio (double ratio)
 
void setInflationSize (double sigma)
 
void setUpdateAffectedConstraint ()
 set update affected constraints flag
 
void reset () override
 
- Public Member Functions inherited from imstk::PbdObject
 PbdObject (const std::string &name="PbdObject")
 
std::shared_ptr< PbdModelgetPbdModel ()
 
std::shared_ptr< PbdBodygetPbdBody ()
 Returns body in the model.
 
void setDynamicalModel (std::shared_ptr< AbstractDynamicalModel > dynaModel) override
 Sets the model, and creates the body within the model.
 
void updatePhysicsGeometry () override
 Update physics geometry, overrided to set transform should the PbdObject be a rigid body.
 
void setBodyFromGeometry ()
 Sets the PbdBody representing this object given its geometry.
 
bool initialize () override
 Initialize the Pbd scene object.
 
void computeCellConstraintMap ()
 
const std::vector< std::shared_ptr< PbdConstraint > > & getCellConstraints (int cellId)
 
- Public Member Functions inherited from imstk::DynamicObject
size_t getNumOfDOF () const
 Returns the number of degree of freedom.
 
void updateGeometries () final
 Update the physics geometry and the apply the maps (if defined)
 
void reset () override
 Reset the dynamic object by reseting the respective DynamicalModel and Geometry.
 
std::shared_ptr< GeometrygetPhysicsGeometry () const
 Set/Get the geometry used for Physics computations.
 
virtual void setPhysicsGeometry (std::shared_ptr< Geometry > geometry)
 
std::shared_ptr< GeometryMapgetPhysicsToCollidingMap () const
 Set/Get the Physics-to-Collision map.
 
void setPhysicsToCollidingMap (std::shared_ptr< GeometryMap > map)
 
std::shared_ptr< GeometryMapgetPhysicsToVisualMap () const
 Set/Get the Physics-to-Visual map.
 
void setPhysicsToVisualMap (std::shared_ptr< GeometryMap > map)
 
virtual std::shared_ptr< AbstractDynamicalModelgetDynamicalModel () const
 Set/Get dynamical model.
 
- Public Member Functions inherited from imstk::CollidingObject
 CollidingObject (const std::string &name="CollidingObject")
 
void update () override
 Update the SceneObject, called during scene update.
 
bool didCollide (std::shared_ptr< CollidingObject > other)
 
void addCollision (std::shared_ptr< CollidingObject > other, std::shared_ptr< imstk::CollisionData > data)
 Add data for collision with the object `other.
 
const std::vector< std::shared_ptr< imstk::CollisionData > > & getCollisions (std::shared_ptr< CollidingObject > other) const
 
std::shared_ptr< GeometrygetCollidingGeometry () const
 
void setCollidingGeometry (std::shared_ptr< Geometry > geometry)
 
std::shared_ptr< GeometryMapgetCollidingToVisualMap () const
 
void setCollidingToVisualMap (std::shared_ptr< GeometryMap > map)
 
- Public Member Functions inherited from imstk::SceneObject
 SceneObject (const std::string &name="SceneObject")
 
std::shared_ptr< TaskGraphgetTaskGraph () const
 Get the computational graph.
 
std::shared_ptr< GeometrygetVisualGeometry () const
 Sets the visual geometry, adds (sets the first) VisualModel.
 
void setVisualGeometry (std::shared_ptr< Geometry > geometry)
 
std::shared_ptr< VisualModelgetVisualModel (const int index) const
 Get/add visual model.
 
void addVisualModel (std::shared_ptr< VisualModel > visualModel)
 
void removeVisualModel (std::shared_ptr< VisualModel > visualModel)
 
std::shared_ptr< TaskNodegetUpdateNode () const
 Returns the computational node for updating.
 
std::shared_ptr< TaskNodegetUpdateGeometryNode () const
 Returns the computational node for updating geometry.
 
virtual void visualUpdate ()
 Update the visuals, called before render.
 
void initGraphEdges ()
 Initializes the edges of the SceneObject's computational graph.
 
- Public Member Functions inherited from imstk::Entity
 Entity (const std::string &name="Entity")
 
 SIGNAL (Entity, modified)
 
EntityID getID () const
 Get ID (ALWAYS query the ID in your code, DO NOT hardcode it) More...
 
virtual const std::string getTypeName () const
 
template<typename T >
std::shared_ptr< T > addComponent ()
 Create and return a component on this entity.
 
template<typename T >
std::shared_ptr< T > addComponent (std::string name)
 
void addComponent (std::shared_ptr< Component > component)
 Add existing component to entity.
 
std::shared_ptr< ComponentgetComponent (const unsigned int index) const
 Get a component by index.
 
template<typename T >
std::shared_ptr< T > getComponent () const
 Get the first component of type T.
 
template<typename T >
std::shared_ptr< T > getComponentN (const int index) const
 Get's the Nth component of type T.
 
template<class T >
bool containsComponent () const
 Check if contains component of type T.
 
bool containsComponent (std::shared_ptr< Component > component) const
 Check if contains given component.
 
template<typename T >
std::vector< std::shared_ptr< T > > getComponents () const
 Get all components of type T.
 
const std::vector< std::shared_ptr< Component > > & getComponents ()
 
void removeComponent (std::shared_ptr< Component > component)
 Remove component if it exists.
 
const std::string & getName () const
 Get/Set the name of the entity.
 
void setName (const std::string &name)
 
- Public Member Functions inherited from imstk::EventObject
template<typename T >
void postEvent (const T &e)
 Emits the event Direct observers will be immediately called, in sync Queued observers will receive the Command in their queue for later execution, reciever must implement doEvent.
 
template<typename T >
void queueEvent (const T &e)
 Queues event directly to this.
 
void doEvent ()
 Do an event, if none exists return.
 
void doAllEvents ()
 Do all the events in the event queue.
 
void foreachEvent (std::function< void(Command cmd)> func)
 Thread safe loop over all event commands, one can implement a custom handler.
 
void rforeachEvent (std::function< void(Command cmd)> func)
 thread safe reverse loop over all event commands, one can implement a custom handler
 
void clearEvents ()
 Removes all events from queue cleans up copies of the event.
 

Protected Member Functions

void setSphereTexCoords (const double uvScale)
 Spherically project the texture coordinates.
 
void findAffectedConstraint (const Vec3d &toolTip, const double radius)
 find affected constraints id and distance in the injection area
 
double computeGaussianWeight (double x)
 Compute weight Gaussian distribution.
 
- Protected Member Functions inherited from imstk::PbdObject
void setDeformBodyFromGeometry (PbdBody &body, std::shared_ptr< PointSet > geom)
 Creates a deformable PbdBody from Geometry.
 
void setRigidBody (PbdBody &body)
 Creates a rigid PbdBody from values.
 
- Protected Member Functions inherited from imstk::DynamicObject
void initGraphEdges (std::shared_ptr< TaskNode > source, std::shared_ptr< TaskNode > sink) override
 Setup connectivity of task graph.
 
void postModifiedAll () override
 Posts modified for all geometries.
 
 DynamicObject (const std::string &name)
 
- Protected Member Functions inherited from imstk::CollidingObject
void clearCollisions ()
 resets the collision information
 

Protected Attributes

std::shared_ptr< TetrahedralMeshm_objectTetMesh
 
std::shared_ptr< SurfaceMeshm_objectSurfMesh
 
std::vector< std::pair< int, double > > m_constraintIDandWeight
 
bool m_affectedAreaUpdated = false
 
double m_inflationRatio = 1.0
 
double m_sigma = 1.0
 
InflationType m_inflationType = InflationType::Linear
 
- Protected Attributes inherited from imstk::PbdObject
std::shared_ptr< PbdModelm_pbdModel = nullptr
 Pbd mathematical model.
 
std::shared_ptr< PbdBodym_pbdBody = nullptr
 Handle to this object in the model/system.
 
- Protected Attributes inherited from imstk::DynamicObject
std::shared_ptr< AbstractDynamicalModelm_dynamicalModel = nullptr
 Dynamical model.
 
std::shared_ptr< Geometrym_physicsGeometry = nullptr
 Geometry used for Physics.
 
std::shared_ptr< GeometryMapm_physicsToCollidingGeomMap = nullptr
 Maps from Physics to collision geometry.
 
std::shared_ptr< GeometryMapm_physicsToVisualGeomMap = nullptr
 Maps from Physics to visual geometry.
 
- Protected Attributes inherited from imstk::CollidingObject
std::shared_ptr< Geometrym_collidingGeometry = nullptr
 Geometry for collisions.
 
std::shared_ptr< GeometryMapm_collidingToVisualMap = nullptr
 Maps transformations to visual geometry.
 
Vec3d m_force = Vec3d::Zero()
 
std::unordered_map< std::shared_ptr< CollidingObject >, std::vector< std::shared_ptr< CollisionData > > > m_collisions
 
- Protected Attributes inherited from imstk::SceneObject
std::shared_ptr< TaskGraphm_taskGraph = nullptr
 Computational Graph.
 
- Protected Attributes inherited from imstk::Entity
std::vector< std::shared_ptr< Component > > m_components
 
EntityID m_ID
 unique ID of entity
 
std::string m_name
 Not unique name.
 
- Protected Attributes inherited from imstk::EventObject
ParallelUtils::SpinLock eventQueueLock
 
std::deque< CommandeventQueue
 
std::vector< std::pair< std::string, std::vector< Observer > > > queuedObservers
 
std::vector< std::pair< std::string, std::vector< Observer > > > directObservers
 

Additional Inherited Members

- Static Protected Attributes inherited from imstk::Entity
static std::atomic< EntityID > m_count { 0 }
 current count of entities
 

Detailed Description

Inflatable object based on PBD, with inflatable volume and distance constraints.

Definition at line 25 of file InflatableObject.h.


The documentation for this class was generated from the following files: