iMSTK
Interactive Medical Simulation Toolkit
Classes | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
imstk::PbdObjectCellRemoval Class Reference

This class defines a method of removing cells and their associated constraints from a Pbd object. Can update the visual and collision representation when using a tetrahedral mesh as physics object Does not support updating visual and collision representation when the physics mesh is a LineMesh or a SurfaceMesh AND they differ. Note: The two modes for visual meshes exist to support generating new texture coordinates, when reusing a vertex from a visual mesh the vertex should already have uv coordinates assigned to it. Assigning new ones may break the current look of the object as the vertex may still be in use. With the VisualSeparateVertices mode, new vertices will be generated for newly exposed surface. This allows the user to assign new uv coordinates to those new points. More...

#include <imstkPbdObjectCellRemoval.h>

Inheritance diagram for imstk::PbdObjectCellRemoval:
Inheritance graph
[legend]
Collaboration diagram for imstk::PbdObjectCellRemoval:
Collaboration graph
[legend]

Public Types

enum  OtherMeshUpdateType {
  None = 0, Collision = 1, VisualReuseVertices = 2, VisualSeparateVertices = 4,
  CollisionAndVisualSeparate = Collision | VisualSeparateVertices, CollisionAndVisualReused = Collision | VisualReuseVertices
}
 
- Public Types inherited from imstk::EventObject
using Observer = std::tuple< bool, std::weak_ptr< EventObject >, std::function< void(Event *)> >
 

Public Member Functions

 PbdObjectCellRemoval (std::shared_ptr< PbdObject > pbdObj, OtherMeshUpdateType alsoUpdate=OtherMeshUpdateType::None)
 
void removeCellOnApply (int cellId)
 Adds cell to list of cells to be removed.
 
void apply ()
 removed cells and associated constraints
 
std::vector< int > getRemovedCells ()
 Get ids of cells that have been removed.
 
- 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 update ()
 Update the SceneObject, called during scene update.
 
virtual void visualUpdate ()
 Update the visuals, called before render.
 
virtual void updateGeometries ()
 Update the geometries.
 
virtual bool initialize ()
 Initialize the scene object.
 
void initGraphEdges ()
 Initializes the edges of the SceneObject's computational graph.
 
virtual void reset ()
 
- 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 removeConstraints ()
 
void addDummyVertexPointSet (std::shared_ptr< PointSet > pointSet)
 
void addDummyVertex (std::shared_ptr< AbstractCellMesh > mesh)
 
void fixup ()
 
- Protected Member Functions inherited from imstk::SceneObject
virtual void initGraphEdges (std::shared_ptr< TaskNode > source, std::shared_ptr< TaskNode > sink)
 Setup connectivity of the compute graph.
 
virtual void postModifiedAll ()
 Posts modified for all geometries.
 

Protected Attributes

std::shared_ptr< PbdObjectm_obj
 Object that cells are removed from.
 
std::shared_ptr< AbstractCellMeshm_mesh
 Mesh from object cells are removed from.
 
std::vector< int > m_cellsToRemove
 List of cells to remove, cleared after removal.
 
std::vector< int > m_removedCells
 Cells that have been removed.
 
- 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

This class defines a method of removing cells and their associated constraints from a Pbd object. Can update the visual and collision representation when using a tetrahedral mesh as physics object Does not support updating visual and collision representation when the physics mesh is a LineMesh or a SurfaceMesh AND they differ. Note: The two modes for visual meshes exist to support generating new texture coordinates, when reusing a vertex from a visual mesh the vertex should already have uv coordinates assigned to it. Assigning new ones may break the current look of the object as the vertex may still be in use. With the VisualSeparateVertices mode, new vertices will be generated for newly exposed surface. This allows the user to assign new uv coordinates to those new points.

Definition at line 37 of file imstkPbdObjectCellRemoval.h.


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