iMSTK
Interactive Medical Simulation Toolkit
|
This class defines a collision interaction pipeline between a RigidObject and LevelSetDeformableObject. More...
#include <imstkRigidObjectLevelSetCollision.h>
Public Member Functions | |
RigidObjectLevelSetCollision (std::shared_ptr< RigidObject2 > obj1, std::shared_ptr< LevelSetDeformableObject > obj2) | |
void | initGraphEdges (std::shared_ptr< TaskNode > source, std::shared_ptr< TaskNode > sink) override |
Setup connectivity of task graph. More... | |
void | copyVertsToPrevious () |
void | measureDisplacementFromPrevious () |
![]() | |
void | setCollisionDetection (std::shared_ptr< CollisionDetectionAlgorithm > colDetect) |
void | setCollisionHandlingA (std::shared_ptr< CollisionHandling > colHandlingA) |
Set the Collision Handling for object A. | |
void | setCollisionHandlingB (std::shared_ptr< CollisionHandling > colHandlingB) |
Set the Collision Handling for object B. | |
void | setCollisionHandlingAB (std::shared_ptr< CollisionHandling > colHandlingAB) |
Set the two-way Collision Handling for both objects. | |
std::shared_ptr< CollisionDetectionAlgorithm > | getCollisionDetection () const |
std::shared_ptr< CollisionHandling > | getCollisionHandlingA () const |
std::shared_ptr< CollisionHandling > | getCollisionHandlingB () const |
std::shared_ptr< CollisionHandling > | getCollisionHandlingAB () const |
std::shared_ptr< TaskNode > | getCollisionDetectionNode () const |
std::shared_ptr< TaskNode > | getCollisionHandlingANode () const |
std::shared_ptr< TaskNode > | getCollisionHandlingBNode () const |
void | updateCollisionGeometry () |
void | visualUpdate () override |
Update the visuals, called before render. | |
virtual void | setEnabled (const bool enabled) |
Enable or disable the interaction, when disabled the interaction isn't executed and no response will happen. | |
virtual bool | getEnabled () const |
![]() | |
SceneObject (const std::string &name="SceneObject") | |
std::shared_ptr< TaskGraph > | getTaskGraph () const |
Get the computational graph. | |
std::shared_ptr< Geometry > | getVisualGeometry () const |
Sets the visual geometry, adds (sets the first) VisualModel. | |
void | setVisualGeometry (std::shared_ptr< Geometry > geometry) |
std::shared_ptr< VisualModel > | getVisualModel (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< TaskNode > | getUpdateNode () const |
Returns the computational node for updating. | |
std::shared_ptr< TaskNode > | getUpdateGeometryNode () const |
Returns the computational node for updating geometry. | |
virtual void | update () |
Update the SceneObject, called during scene update. | |
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 () |
![]() | |
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< Component > | getComponent (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) |
![]() | |
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. | |
Public Attributes | |
std::shared_ptr< VecDataArray< double, 3 > > | m_prevVertices |
Protected Attributes | |
std::shared_ptr< TaskNode > | m_copyVertToPrevNode = nullptr |
std::shared_ptr< TaskNode > | m_computeDisplacementNode = nullptr |
![]() | |
std::shared_ptr< CollidingObject > | m_objA = nullptr |
std::shared_ptr< CollidingObject > | m_objB = nullptr |
std::shared_ptr< CollisionDetectionAlgorithm > | m_colDetect = nullptr |
Collision detection algorithm. | |
std::shared_ptr< CollisionHandling > | m_colHandlingA = nullptr |
std::shared_ptr< CollisionHandling > | m_colHandlingB = nullptr |
std::shared_ptr< TaskNode > | m_collisionDetectionNode = nullptr |
std::shared_ptr< TaskNode > | m_collisionHandleANode = nullptr |
std::shared_ptr< TaskNode > | m_collisionHandleBNode = nullptr |
std::shared_ptr< TaskNode > | m_collisionGeometryUpdateNode = nullptr |
bool | m_didUpdateThisFrame = false |
![]() | |
std::shared_ptr< TaskGraph > | m_taskGraph = nullptr |
Computational Graph. | |
![]() | |
std::vector< std::shared_ptr< Component > > | m_components |
EntityID | m_ID |
unique ID of entity | |
std::string | m_name |
Not unique name. | |
![]() | |
ParallelUtils::SpinLock | eventQueueLock |
std::deque< Command > | eventQueue |
std::vector< std::pair< std::string, std::vector< Observer > > > | queuedObservers |
std::vector< std::pair< std::string, std::vector< Observer > > > | directObservers |
Additional Inherited Members | |
![]() | |
using | Observer = std::tuple< bool, std::weak_ptr< EventObject >, std::function< void(Event *)> > |
![]() | |
CollisionInteraction (std::string objName, std::shared_ptr< CollidingObject > obj1, std::shared_ptr< CollidingObject > obj2, std::string cdType) | |
void | updateCD () |
Update collision. | |
void | updateCHA () |
Update handler A. | |
void | updateCHB () |
Update handler B. | |
![]() | |
virtual void | postModifiedAll () |
Posts modified for all geometries. | |
![]() | |
static std::atomic< EntityID > | m_count { 0 } |
current count of entities | |
This class defines a collision interaction pipeline between a RigidObject and LevelSetDeformableObject.
Definition at line 24 of file imstkRigidObjectLevelSetCollision.h.
|
overridevirtual |
Setup connectivity of task graph.
Compute Tentative Velocities (pre col vel) LSM Begin Compute Velocities Collision Detection Rigid Body Handler (add constraints) LSM Handler (pointset erosion) Rbd Solve LSM End Compute Velocities
Reimplemented from imstk::SceneObject.
Definition at line 92 of file imstkRigidObjectLevelSetCollision.cpp.