#include <SubCollisionPipeline.h>
A self-contained collision pipeline for a specific set of collision models. More...

A self-contained collision pipeline for a specific set of collision models.
SubCollisionPipeline implements a complete collision detection and response workflow for an explicitly defined subset of collision models. Unlike the standard CollisionPipeline which processes all collision models in the scene graph, this component only handles the collision models explicitly linked to it.
This class is designed to be used as part of a CompositeCollisionPipeline, which can aggregate multiple SubCollisionPipelines to handle different groups of collision models independently (and potentially in parallel).
Required components (via links):
Static Public Attributes | |
| static constexpr unsigned int | s_defaultDepthValue = 6 |
| Default value for the bounding tree depth parameter. More... | |
Public Member Functions | |
| SOFA_CLASS (SubCollisionPipeline, Inherited) | |
| virtual | ~SubCollisionPipeline () override=default |
| void | doInit () override |
| Validates that all required components are linked and sets the component state accordingly. More... | |
| void | doHandleEvent (sofa::core::objectmodel::Event *) override |
| Event handling (currently no-op for this pipeline). More... | |
| void | computeCollisionReset () override |
| Clears contact responses from the previous time step. More... | |
| void | computeCollisionDetection () override |
| Performs collision detection: computes bounding trees, runs broad and narrow phase detection. More... | |
| void | computeCollisionResponse () override |
| Creates contact responses based on detected collisions. More... | |
| std::vector< sofa::core::CollisionModel * > | getCollisionModels () override |
| Returns the list of collision models handled by this pipeline. More... | |
Public Member Functions inherited from sofa::component::collision::detection::algorithm::BaseSubCollisionPipeline | |
| SOFA_ABSTRACT_CLASS (BaseSubCollisionPipeline, sofa::core::objectmodel::BaseComponent) | |
| void | init () override final |
| Initializes the component. Marked final to enforce Template Method pattern. More... | |
| void | bwdInit () override final |
| Initialization of the component during the bottom-up traversal. Marked final to enforce Template Method pattern. More... | |
| void | draw (const core::visual::VisualParams *vparams) override final |
| Renders debug visualization. Marked final to enforce Template Method pattern. More... | |
| void | handleEvent (sofa::core::objectmodel::Event *e) override final |
| Processes simulation events. Marked final to enforce Template Method pattern. More... | |
Public Member Functions inherited from sofa::core::objectmodel::BaseComponent | |
| SOFA_CLASS (BaseComponent, Base) | |
| virtual void | computeBBox (const core::ExecParams *, bool=false) |
| void | setSrc (const std::string &v, std::vector< std::string > *attributeList=nullptr) |
| Sets a source Object and parses it to collect dependent Data. More... | |
| void | setSrc (const std::string &v, const BaseComponent *loader, std::vector< std::string > *attributeList=nullptr) |
| Base * | findLinkDestClass (const BaseClass *destType, const std::string &path, const BaseLink *link) override |
| virtual std::string | getPathName () const override |
| Return the full path name of this object. More... | |
| virtual bool | insertInNode (BaseNode *) |
| virtual bool | removeInNode (BaseNode *) |
| SReal | getTime () const |
| Current time. More... | |
| const BaseContext * | getContext () const |
| BaseContext * | getContext () |
| const BaseComponent * | getMaster () const |
| BaseComponent * | getMaster () |
| const VecSlaves & | getSlaves () const |
| BaseComponent * | getSlave (const std::string &name) const |
| virtual void | addSlave (BaseComponent::SPtr s) |
| virtual void | removeSlave (BaseComponent::SPtr s) |
| virtual void | handleTopologyChange () |
| virtual void | handleTopologyChange (core::topology::Topology *t) |
| void | parse (BaseObjectDescription *arg) override |
| Parse the given description to assign values to this object's fields and potentially other parameters. More... | |
| virtual void | reinit () |
| Update method called when variables used in precomputation are modified. More... | |
| void | updateInternal () |
| Update method called when variables (used to compute other internal variables) are modified. More... | |
| virtual void | storeResetState () |
| Save the initial state for later uses in reset() More... | |
| virtual void | reset () |
| Reset to initial state. More... | |
| virtual void | cleanup () |
Public Member Functions inherited from sofa::core::objectmodel::Base | |
| virtual const BaseClass * | getClass () const |
| void | addDeprecatedAttribute (lifecycle::DeprecatedData *attribute) |
| void | addUpdateCallback (const std::string &name, std::initializer_list< BaseData * > inputs, std::function< sofa::core::objectmodel::ComponentState(const DataTracker &)> function, std::initializer_list< BaseData * > outputs) |
| void | addOutputsToCallback (const std::string &name, std::initializer_list< BaseData * > outputs) |
| const std::string & | getName () const |
| Accessor to the object name. More... | |
| void | setName (const std::string &n) |
| Set the name of this object. More... | |
| void | setName (const std::string &n, int counter) |
| Set the name of this object, adding an integer counter. More... | |
| std::string | getTypeName () const |
| Get the type name of this object (i.e. class and template types) More... | |
| virtual std::string | getClassName () const |
| Get the class name of this object. More... | |
| virtual std::string | getTemplateName () const final |
| Get the template type names (if any) used to instantiate this object. More... | |
| std::string | getNameSpaceName () const |
| Get the template type names (if any) used to instantiate this object. More... | |
| void | setDefinitionSourceFileName (const std::string &sourceFileName) |
| Set the source filename (where the component is implemented) More... | |
| const std::string & | getDefinitionSourceFileName () const |
| Get the source filename (where the component is implemented) More... | |
| void | setDefinitionSourceFilePos (const int) |
| Set the source location (where the component is implemented) More... | |
| int | getDefinitionSourceFilePos () const |
| Get the source location (where the component is implemented) More... | |
| void | setInstanciationSourceFileName (const std::string &sourceFileName) |
| const std::string & | getInstanciationSourceFileName () const |
| void | setInstanciationSourceFilePos (const int) |
| int | getInstanciationSourceFilePos () const |
| void | addMessage (const sofa::helper::logging::Message &m) const |
| size_t | countLoggedMessages (sofa::helper::logging::Message::TypeSet t=sofa::helper::logging::Message::AnyTypes) const |
| const std::deque< sofa::helper::logging::Message > & | getLoggedMessages () const |
| const std::string | getLoggedMessagesAsString (sofa::helper::logging::Message::TypeSet t=sofa::helper::logging::Message::AnyTypes) const |
| void | clearLoggedMessages () const |
| bool | notMuted () const |
| const sofa::core::objectmodel::TagSet & | getTags () const |
| Represents the subsets the object belongs to. More... | |
| bool | hasTag (Tag t) const |
| Return true if the object belong to the given subset. More... | |
| void | addTag (Tag t) |
| Add a subset qualification to the object. More... | |
| void | removeTag (Tag t) |
| Remove a subset qualification to the object. More... | |
| ComponentState | getComponentState () const |
| bool | isComponentStateValid () const |
| bool | isComponentStateInvalid () const |
| SOFA_ATTRIBUTE_DEPRECATED__TOBASECONSTRAINT () virtual const behavior | |
| SOFA_ATTRIBUTE_DEPRECATED__TOBASEOBJECT () virtual const objectmodel | |
| virtual bool | parseField (const std::string &attribute, const std::string &value) |
| Assign one field value (Data or Link) More... | |
| virtual bool | hasField (const std::string &attribute) const |
| Check if a given Data field or Link exists. More... | |
| void | parseFields (const std::list< std::string > &str) |
| Assign the field values stored in the given list of name + value pairs of strings. More... | |
| virtual void | parseFields (const std::map< std::string, std::string * > &str) |
| Assign the field values stored in the given map of name -> value pairs. More... | |
| void | writeDatas (std::ostream &out, const std::string &separator=" ") |
| BaseData * | findData (const std::string &name) const |
| std::vector< BaseData * > | findGlobalField (const std::string &name) const |
| Find data fields given a name: several can be found as we look into the alias map. More... | |
| BaseLink * | findLink (const std::string &name) const |
| std::vector< BaseLink * > | findLinks (const std::string &name) const |
| Find link fields given a name: several can be found as we look into the alias map. More... | |
| virtual void | updateLinks (bool logErrors=true) |
| Update pointers in case the pointed-to objects have appeared. More... | |
| template<class T > | |
| BaseData::BaseInitData | initData (::sofa::core::objectmodel::Data< T > *field, const char *n, const char *help, ::sofa::core::objectmodel::BaseData::DataFlags dataflags) |
| Helper method used to initialize a data field containing a value of type T. More... | |
| template<class T > | |
| BaseData::BaseInitData | initData (Data< T > *field, const char *n, const char *help, bool isDisplayed=true, bool isReadOnly=false) |
| Helper method used to initialize a data field containing a value of type T. More... | |
| template<class T > | |
| Data< T >::InitData | initData (Data< T > *field, const T &value, const char *n, const char *help, bool isDisplayed=true, bool isReadOnly=false) |
| Helper method used to initialize a data field containing a value of type T. More... | |
| void | addData (BaseData *f, const std::string &name) |
| void | addData (BaseData *f) |
| void | removeData (BaseData *f) |
| Remove a data field. More... | |
| void | addAlias (BaseData *field, const char *alias) |
| Add an alias to a Data. More... | |
| void | addLink (BaseLink *l) |
| Add a link. More... | |
| void | addAlias (BaseLink *link, const char *alias) |
| Add an alias to a Link. More... | |
| const VecData & | getDataFields () const |
| Accessor to the vector containing all the fields of this object. More... | |
| const MapData & | getDataAliases () const |
| Accessor to the map containing all the aliases of this object. More... | |
| const VecLink & | getLinks () const |
| Accessor to the vector containing all the fields of this object. More... | |
| const MapLink & | getLinkAliases () const |
| Accessor to the map containing all the aliases of this object. More... | |
| virtual bool | findDataLinkDest (BaseData *&ptr, const std::string &path, const BaseLink *link) |
| template<class T > | |
| bool | findLinkDest (T *&ptr, const std::string &path, const BaseLink *link) |
Protected Member Functions | |
| SubCollisionPipeline () | |
Protected Member Functions inherited from sofa::component::collision::detection::algorithm::BaseSubCollisionPipeline | |
| BaseSubCollisionPipeline () | |
| virtual void | doBwdInit () |
| Called after all objects are initialized. Default implementation is empty. More... | |
| virtual void | doDraw (const core::visual::VisualParams *vparams) |
| Called during rendering. Default implementation is empty. More... | |
Protected Member Functions inherited from sofa::core::objectmodel::BaseComponent | |
| BaseComponent () | |
| ~BaseComponent () override | |
| virtual void | doUpdateInternal () |
| Implementation of the internal update. More... | |
| void | changeContextLink (BaseContext *before, BaseContext *&after) |
| void | changeSlavesLink (BaseComponent::SPtr ptr, std::size_t, bool add) |
| This method insures that slaves objects have master and context links set correctly. More... | |
| void | trackInternalData (const BaseData &data) |
| Method called to add the Data to the DataTracker (listing the Data to track) More... | |
| void | cleanTracker () |
| bool | hasDataChanged (const BaseData &data) |
| Method called to know if a tracked Data has changed. More... | |
Protected Member Functions inherited from sofa::core::objectmodel::Base | |
| Base () | |
| virtual | ~Base () |
| void | initData0 (BaseData *field, BaseData::BaseInitData &res, const char *name, const char *help, bool isDisplayed=true, bool isReadOnly=false) |
| Helper method used by initData() More... | |
| void | initData0 (BaseData *field, BaseData::BaseInitData &res, const char *name, const char *help, BaseData::DataFlags dataFlags) |
| Helper method used by initData() More... | |
| template<class T > | |
| void | initData0 (Data< T > *field, typename Data< T >::InitData &res, const T &value, const char *n, const char *help, bool isDisplayed=true, bool isReadOnly=false) |
| Helper method used by initData() More... | |
Protected Member Functions inherited from sofa::core::IntrusiveObject | |
| virtual | ~IntrusiveObject ()=default |
Additional Inherited Members | |
Protected Attributes inherited from sofa::core::objectmodel::BaseComponent | |
| SingleLink< BaseComponent, BaseContext, BaseLink::FLAG_DOUBLELINK > | l_context |
| LinkSlaves | l_slaves |
| SingleLink< BaseComponent, BaseComponent, BaseLink::FLAG_DOUBLELINK > | l_master |
Protected Attributes inherited from sofa::core::objectmodel::Base | |
| std::map< std::string, sofa::core::DataTrackerCallback > | m_internalEngine |
| VecData | m_vecData |
| List of fields (Data instances) More... | |
| MapData | m_aliasData |
| name -> Data multi-map (includes names and aliases) More... | |
| VecLink | m_vecLink |
| List of links. More... | |
| MapLink | m_aliasLink |
| name -> Link multi-map (includes names and aliases) More... | |
Static Public Member Functions inherited from sofa::component::collision::detection::algorithm::BaseSubCollisionPipeline | |
| static std::set< std::string > | getResponseList () |
| Returns all available contact response types registered in the Contact factory. More... | |
Static Public Member Functions inherited from sofa::core::objectmodel::BaseComponent | |
| template<class T > | |
| static bool | canCreate (T *, BaseContext *, BaseObjectDescription *) |
| Pre-construction check method called by ObjectFactory. More... | |
| template<class T > | |
| static T::SPtr | create (T *, BaseContext *context, BaseObjectDescription *arg) |
| Construction method called by ObjectFactory. More... | |
Static Public Member Functions inherited from sofa::core::objectmodel::Base | |
| static const BaseClass * | GetClass () |
| template<class T > | |
| static std::string | shortName (const T *ptr=nullptr, BaseObjectDescription *=nullptr) |
| sofa::Data<unsigned int> sofa::component::collision::detection::algorithm::SubCollisionPipeline::d_depth |
Maximum depth of bounding trees used in collision detection.
| sofa::SingleLink< SubCollisionPipeline, sofa::core::collision::BroadPhaseDetection, sofa::BaseLink::FLAG_STOREPATH | sofa::BaseLink::FLAG_STRONGLINK > sofa::component::collision::detection::algorithm::SubCollisionPipeline::l_broadPhaseDetection |
Broad phase detection algorithm for quickly identifying potentially colliding pairs.
| sofa::MultiLink< SubCollisionPipeline, sofa::core::CollisionModel, sofa::BaseLink::FLAG_DUPLICATE > sofa::component::collision::detection::algorithm::SubCollisionPipeline::l_collisionModels |
List of collision models to process in this pipeline.
| sofa::SingleLink< SubCollisionPipeline, sofa::core::collision::ContactManager, sofa::BaseLink::FLAG_STOREPATH | sofa::BaseLink::FLAG_STRONGLINK > sofa::component::collision::detection::algorithm::SubCollisionPipeline::l_contactManager |
Contact manager responsible for creating and managing contact objects.
| sofa::SingleLink< SubCollisionPipeline, sofa::core::collision::Intersection, sofa::BaseLink::FLAG_STOREPATH | sofa::BaseLink::FLAG_STRONGLINK > sofa::component::collision::detection::algorithm::SubCollisionPipeline::l_intersectionMethod |
Intersection method defining how to detect intersections between geometric primitives.
| sofa::SingleLink< SubCollisionPipeline, sofa::core::collision::NarrowPhaseDetection, sofa::BaseLink::FLAG_STOREPATH | sofa::BaseLink::FLAG_STRONGLINK > sofa::component::collision::detection::algorithm::SubCollisionPipeline::l_narrowPhaseDetection |
Narrow phase detection algorithm for precise intersection testing.
|
inlinestaticconstexpr |
Default value for the bounding tree depth parameter.
|
protected |
|
overridevirtualdefault |
|
overridevirtual |
Performs collision detection: computes bounding trees, runs broad and narrow phase detection.
Performs collision detection in two phases: broad phase and narrow phase.
Implements sofa::component::collision::detection::algorithm::BaseSubCollisionPipeline.
|
overridevirtual |
Clears contact responses from the previous time step.
Resets the collision state by clearing all existing contact responses.
This method prepares for a new collision detection cycle by:
This ensures a clean slate before new collisions are detected.
Implements sofa::component::collision::detection::algorithm::BaseSubCollisionPipeline.
|
overridevirtual |
Creates contact responses based on detected collisions.
Creates collision responses based on detected contacts.
Implements sofa::component::collision::detection::algorithm::BaseSubCollisionPipeline.
|
inlineoverridevirtual |
Event handling (currently no-op for this pipeline).
Implements sofa::component::collision::detection::algorithm::BaseSubCollisionPipeline.
|
overridevirtual |
Validates that all required components are linked and sets the component state accordingly.
Validates that all required components are properly linked.
Checks for the presence of all mandatory links:
Sets the component state to Invalid if any required component is missing, which prevents the pipeline from executing collision detection.
Implements sofa::component::collision::detection::algorithm::BaseSubCollisionPipeline.
|
overridevirtual |
Returns the list of collision models handled by this pipeline.
Returns the list of collision models explicitly linked to this pipeline.
Implements sofa::component::collision::detection::algorithm::BaseSubCollisionPipeline.
| sofa::component::collision::detection::algorithm::SubCollisionPipeline::SOFA_CLASS | ( | SubCollisionPipeline | , |
| Inherited | |||
| ) |