#include <CollisionModel.h>
Abstract CollisionModel interface. More...
Abstract CollisionModel interface.
A CollisionModel contains a list of same-type elements. It can be part of a list of CollisionModels, each describing a level in a bounding-volume hierarchy.
Each CollisionModel stores a pointer to the next model in the hierarchy (i.e. finer / lower / child level) as well as the previous model (i.e. coarser / upper / parent level). The first CollisionModel in this list is the root of the hierarchy and contains only one element. The last CollisionModel contains the leaves of the hierarchy which are the real elements of the object.
Each element inside CollisionModels except for the last one can have a list of children. There are 2 types of child elements:
Public Attributes | |
CollisionElementActiver * | myCollElemActiver |
CollisionElementActiver that activate or deactivate collision element during execution. More... | |
Public Attributes inherited from sofa::core::objectmodel::BaseObject | |
Data< bool > | f_listening |
if true, handle the events, otherwise ignore the events More... | |
Public Attributes inherited from sofa::core::objectmodel::Base | |
std::vector< lifecycle::DeprecatedData * > | m_oldAttributes |
Data< int > | d_messageLogCount |
Data< std::string > | name |
Name of the object. More... | |
Data< bool > | f_printLog |
if true, emits extra messages at runtime. More... | |
Data< sofa::core::objectmodel::TagSet > | f_tags |
list of the subsets the object belongs to More... | |
Data< sofa::type::BoundingBox > | f_bbox |
this object bounding box More... | |
Data< sofa::core::objectmodel::ComponentState > | d_componentState |
The state of the component among (Dirty, Valid, Undefined, Loading, Invalid). More... | |
std::string | m_definitionSourceFileName {""} |
int | m_definitionSourceFilePos {-1} |
std::string | m_instanciationSourceFileName {""} |
int | m_instanciationSourceFilePos {-1} |
Protected Attributes | |
Data< bool > | bActive |
Data< bool > | bMoving |
flag indicating if this object is changing position between iterations More... | |
Data< bool > | bSimulated |
flag indicating if this object is controlled by a simulation More... | |
Data< bool > | bSelfCollision |
flag indication if the object can self collide More... | |
Data< SReal > | proximity |
Distance to the actual (visual) surface. More... | |
Data< SReal > | contactStiffness |
Default contact stiffness. More... | |
Data< SReal > | contactFriction |
Default contact friction (damping) coefficient. More... | |
Data< SReal > | contactRestitution |
Default contact coefficient of restitution. More... | |
Data< std::string > | contactResponse |
Data< sofa::type::RGBAColor > | color |
color used to display the collision model if requested More... | |
Data< std::set< int > > | group |
Size | size |
Number of collision elements. More... | |
Data< Size > | d_numberOfContacts |
number of contacts attached to the collision model More... | |
SingleLink< CollisionModel, CollisionModel, BaseLink::FLAG_DOUBLELINK|BaseLink::FLAG_STRONGLINK > | previous |
Pointer to the previous (coarser / upper / parent level) CollisionModel in the hierarchy. More... | |
SingleLink< CollisionModel, CollisionModel, BaseLink::FLAG_DOUBLELINK > | next |
Pointer to the next (finer / lower / child level) CollisionModel in the hierarchy. More... | |
int | enum_type |
void * | userData |
SingleLink< CollisionModel, sofa::core::objectmodel::BaseObject, BaseLink::FLAG_STOREPATH|BaseLink::FLAG_STRONGLINK > | l_collElemActiver |
Pointer to the Controller component heritating from CollisionElementActiver. More... | |
Protected Attributes inherited from sofa::core::objectmodel::BaseObject | |
SingleLink< BaseObject, BaseContext, BaseLink::FLAG_DOUBLELINK > | l_context |
LinkSlaves | l_slaves |
SingleLink< BaseObject, BaseObject, 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... | |
Public Member Functions | |
SOFA_ABSTRACT_CLASS (CollisionModel, objectmodel::BaseObject) | |
void | bwdInit () override |
Initialization method called at graph creation and modification, during bottom-up traversal. More... | |
bool | empty () const |
Return true if there are no elements. More... | |
Size | getSize () const |
Get the number of elements. More... | |
bool | getSelfCollision () const |
Return true if this model process self collision. More... | |
void | setSelfCollision (bool _bSelfCollision) |
set a value to bSelfCollision More... | |
Size | getNumberOfContacts () const |
Get the number of contacts attached to the collision model. More... | |
void | setNumberOfContacts (Size i) |
Set the number of contacts attached to the collision model. More... | |
virtual void | resize (Size s) |
Set the number of elements. More... | |
Iterator | begin () |
Return an iterator to the first element. More... | |
Iterator | end () |
Return an iterator pointing after the last element. More... | |
CollisionModel * | getNext () |
Return the next (finer / lower / child level) CollisionModel in the hierarchy. More... | |
CollisionModel * | getPrevious () |
Return the previous (coarser / upper / parent level) CollisionModel in the hierarchy. More... | |
void | setPrevious (CollisionModel::SPtr val) |
Set the previous (coarser / upper / parent level) CollisionModel in the hierarchy. More... | |
virtual bool | isActive () const |
Return true if this CollisionModel should be used for collisions. More... | |
virtual void | setActive (bool val=true) |
Set true if this CollisionModel should be used for collisions. More... | |
virtual bool | isMoving () const |
Return true if this CollisionModel is changing position between iterations. More... | |
virtual void | setMoving (bool val=true) |
Set true if this CollisionModel is changing position between iterations. More... | |
virtual bool | isSimulated () const |
Return true if this CollisionModel is attached to a simulation. It is false for immobile or procedurally animated objects that don't use contact forces. More... | |
virtual void | setSimulated (bool val=true) |
Set true if this CollisionModel is attached to a simulation. More... | |
virtual void | computeBoundingTree (int maxDepth=0)=0 |
Create or update the bounding volume hierarchy. More... | |
virtual void | computeContinuousBoundingTree (SReal, int maxDepth=0) |
Create or update the bounding volume hierarchy, accounting for motions within the given timestep. More... | |
virtual std::pair< CollisionElementIterator, CollisionElementIterator > | getInternalChildren (Index) const |
Return the list (as a pair of iterators) of internal children of an element. More... | |
virtual std::pair< CollisionElementIterator, CollisionElementIterator > | getExternalChildren (Index) const |
Return the list (as a pair of iterators) of external children of an element. More... | |
virtual bool | isLeaf (Index) const |
Checks if the element(index) is a leaf and a primitive of the collision model. More... | |
virtual bool | canCollideWith (CollisionModel *model) |
Test if this model can collide with another model. More... | |
virtual bool | canCollideWithElement (Index, CollisionModel *, Index) |
Test if two elements can collide with each other. More... | |
virtual void | draw (const core::visual::VisualParams *, Index) |
Render an collision element. More... | |
void | draw (const core::visual::VisualParams *) override |
Render the whole collision model. More... | |
CollisionModel * | getFirst () |
Return the first (i.e. root) CollisionModel in the hierarchy. More... | |
CollisionModel * | getLast () |
Return the last (i.e. leaf) CollisionModel in the hierarchy. More... | |
template<class DerivedModel > | |
DerivedModel * | createPrevious () |
Helper method to get or create the previous model in the hierarchy. More... | |
virtual sofa::core::topology::BaseMeshTopology * | getCollisionTopology () |
BaseMeshTopology associated to the collision model. TODO: epernod remove virtual pure method by l_topology.get as soons as new link will be available. More... | |
const float * | getColor4f () |
Get a color that can be used to display this CollisionModel. More... | |
void | setColor4f (const float *c) |
Set a color that can be used to display this CollisionModel. More... | |
void | setProximity (const SReal a) |
Set of differents parameters. More... | |
void | setContactResponse (const std::string &a) |
int | getEnumType () const |
void | SetUserData (void *pUserData) |
Set user data. More... | |
void * | GetUserData () |
Get user data. More... | |
bool | insertInNode (objectmodel::BaseNode *node) override |
bool | removeInNode (objectmodel::BaseNode *node) override |
Experimental methods | |
SReal | getProximity () const |
Get distance to the actual (visual) surface. More... | |
SReal | getContactStiffness (Index) const |
Get contact stiffness. More... | |
void | setContactStiffness (SReal stiffness) |
Set contact stiffness. More... | |
bool | isContactStiffnessSet () const |
Get contact stiffness. More... | |
SReal | getContactFriction (Index) const |
Get contact friction (damping) coefficient. More... | |
void | setContactFriction (SReal friction) |
Set contact friction (damping) coefficient. More... | |
SReal | getContactRestitution (Index) const |
Get contact coefficient of restitution. More... | |
void | setContactRestitution (SReal restitution) |
Set contact coefficient of restitution. More... | |
std::string | getContactResponse () const |
Contact response algorithm. More... | |
const std::set< int > & | getGroups () const |
Return the group IDs containing this model. More... | |
void | addGroup (const int groupId) |
add the group ID to this model. More... | |
void | setGroups (const std::set< int > &ids) |
Set the group IDs to this model. More... | |
Public Member Functions inherited from sofa::core::objectmodel::BaseObject | |
SOFA_CLASS (BaseObject, 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 BaseObject *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... | |
SReal | getTime () const |
Current time. More... | |
const BaseContext * | getContext () const |
BaseContext * | getContext () |
const BaseObject * | getMaster () const |
BaseObject * | getMaster () |
const VecSlaves & | getSlaves () const |
BaseObject * | getSlave (const std::string &name) const |
virtual void | addSlave (BaseObject::SPtr s) |
virtual void | removeSlave (BaseObject::SPtr s) |
virtual void | handleEvent (Event *) |
Handle an event. More... | |
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 | init () |
Initialization method called at graph creation and modification, during top-down traversal. 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 |
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::map< std::string, std::string * > &str) |
Write the current field values to 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 *name, 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 *name, 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 *name, 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 | |
CollisionModel () | |
Constructor. More... | |
~CollisionModel () override | |
Destructor. More... | |
Protected Member Functions inherited from sofa::core::objectmodel::BaseObject | |
BaseObject () | |
~BaseObject () override | |
virtual void | doUpdateInternal () |
Implementation of the internal update. More... | |
void | changeContextLink (BaseContext *before, BaseContext *&after) |
void | changeSlavesLink (BaseObject::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 *name, const char *help, bool isDisplayed=true, bool isReadOnly=false) |
Helper method used by initData() More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from sofa::core::objectmodel::BaseObject | |
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) |
flag indicating if this collision model is active and should be included in default collision detections
flag indicating if this object is changing position between iterations
flag indication if the object can self collide
flag indicating if this object is controlled by a simulation
|
protected |
color used to display the collision model if requested
Default contact friction (damping) coefficient.
|
protected |
If non-empty, indicate to the ContactManager that this model should use the given class of contacts. Note that this is only indicative, and in particular if both collision models specify a different class it is up to the manager to choose.
Default contact coefficient of restitution.
number of contacts attached to the collision model
|
protected |
an int corresponding to the type of this. Useful for optimizations involving static_cast
|
protected |
No collision can occur between collision models included in a common group (i.e. sharing a common id)
|
protected |
Pointer to the Controller component heritating from CollisionElementActiver.
CollisionElementActiver* sofa::core::CollisionModel::myCollElemActiver |
CollisionElementActiver that activate or deactivate collision element during execution.
|
protected |
Pointer to the next (finer / lower / child level) CollisionModel in the hierarchy.
|
protected |
Pointer to the previous (coarser / upper / parent level) CollisionModel in the hierarchy.
Distance to the actual (visual) surface.
|
protected |
Number of collision elements.
|
protected |
|
protected |
Constructor.
|
inlineoverrideprotected |
Destructor.
|
inline |
add the group ID to this model.
|
inline |
Return an iterator to the first element.
|
overridevirtual |
Initialization method called at graph creation and modification, during bottom-up traversal.
Reimplemented from sofa::core::objectmodel::BaseObject.
|
virtual |
Test if this model can collide with another model.
Note that this test is only related to what are the two models (i.e. which type, attached to which object) and not where they are in space. It is used to prune unnecessary or invalid collisions (i.e. vertices of an object should be tested with triangles of another but not the same object).
Depending on selfCollision value if the collision models are attached to the same context (i.e. the same node in the scenegraph). If both models are included in a common "group", they won't collide
|
inlinevirtual |
Test if two elements can collide with each other.
This method should be implemented by models supporting self-collisions to prune tests between adjacent elements.
Default to true. Note that this method assumes that canCollideWith(model2) was already used to test if the collision models can collide.
Reimplemented in sofa::component::collision::geometry::TriangleCollisionModel< TDataTypes >, sofa::component::collision::geometry::TriangleCollisionModel< sofa::defaulttype::Vec3Types >, sofa::component::collision::geometry::PointCollisionModel< TDataTypes >, sofa::component::collision::geometry::PointCollisionModel< sofa::defaulttype::StdVectorTypes >, and sofa::component::collision::geometry::LineCollisionModel< TDataTypes >.
|
pure virtual |
Create or update the bounding volume hierarchy.
Implemented in sofa::component::collision::geometry::TriangleOctreeModel, sofa::component::collision::geometry::TriangleModelInRegularGrid, sofa::component::collision::geometry::TriangleCollisionModel< TDataTypes >, sofa::component::collision::geometry::TriangleCollisionModel< sofa::defaulttype::Vec3Types >, sofa::component::collision::geometry::TetrahedronCollisionModel, sofa::component::collision::geometry::SphereCollisionModel< TDataTypes >, sofa::component::collision::geometry::PointCollisionModel< TDataTypes >, sofa::component::collision::geometry::PointCollisionModel< sofa::defaulttype::StdVectorTypes >, sofa::component::collision::geometry::LineCollisionModel< TDataTypes >, sofa::component::collision::geometry::CylinderCollisionModel< TDataTypes >, sofa::component::collision::geometry::CubeCollisionModel, and sofa::component::collision::geometry::RayCollisionModel.
|
inlinevirtual |
Create or update the bounding volume hierarchy, accounting for motions within the given timestep.
Default to computeBoundingTree().
Reimplemented in sofa::component::collision::geometry::TriangleOctreeModel, sofa::component::collision::geometry::TriangleCollisionModel< TDataTypes >, sofa::component::collision::geometry::TriangleCollisionModel< sofa::defaulttype::Vec3Types >, sofa::component::collision::geometry::SphereCollisionModel< TDataTypes >, sofa::component::collision::geometry::PointCollisionModel< TDataTypes >, sofa::component::collision::geometry::PointCollisionModel< sofa::defaulttype::StdVectorTypes >, and sofa::component::collision::geometry::LineCollisionModel< TDataTypes >.
|
inline |
Helper method to get or create the previous model in the hierarchy.
|
inlineoverridevirtual |
Render the whole collision model.
Reimplemented from sofa::core::objectmodel::BaseObject.
Reimplemented in sofa::component::collision::geometry::TriangleCollisionModel< sofa::defaulttype::Vec3Types >, and sofa::component::collision::geometry::PointCollisionModel< sofa::defaulttype::StdVectorTypes >.
|
inlinevirtual |
Render an collision element.
Reimplemented in sofa::component::collision::geometry::CylinderCollisionModel< TDataTypes >, sofa::component::collision::geometry::TriangleCollisionModel< TDataTypes >, sofa::component::collision::geometry::TriangleCollisionModel< sofa::defaulttype::Vec3Types >, sofa::component::collision::geometry::TetrahedronCollisionModel, sofa::component::collision::geometry::SphereCollisionModel< TDataTypes >, sofa::component::collision::geometry::RayCollisionModel, sofa::component::collision::geometry::PointCollisionModel< TDataTypes >, and sofa::component::collision::geometry::PointCollisionModel< sofa::defaulttype::StdVectorTypes >.
|
inline |
Return true if there are no elements.
|
inline |
Return an iterator pointing after the last element.
|
inlinevirtual |
BaseMeshTopology associated to the collision model. TODO: epernod remove virtual pure method by l_topology.get as soons as new link will be available.
Reimplemented in sofa::component::collision::geometry::TriangleCollisionModel< TDataTypes >, sofa::component::collision::geometry::TriangleCollisionModel< sofa::defaulttype::Vec3Types >, sofa::component::collision::geometry::PointCollisionModel< TDataTypes >, sofa::component::collision::geometry::PointCollisionModel< sofa::defaulttype::StdVectorTypes >, and sofa::component::collision::geometry::LineCollisionModel< TDataTypes >.
const float * sofa::core::CollisionModel::getColor4f | ( | ) |
Get a color that can be used to display this CollisionModel.
Get contact friction (damping) coefficient.
|
inline |
Contact response algorithm.
Get contact coefficient of restitution.
|
inline |
Returns an int corresponding to the type of this. Useful for optimizations involving static_cast.
|
inlinevirtual |
Return the list (as a pair of iterators) of external children of an element.
External children are child elements of a different type than their parent (often corresponding to the final elements).
Default to empty (i.e. two identical iterators)
Reimplemented in sofa::component::collision::geometry::CubeCollisionModel.
CollisionModel * sofa::core::CollisionModel::getFirst | ( | ) |
Return the first (i.e. root) CollisionModel in the hierarchy.
|
inline |
Return the group IDs containing this model.
|
inlinevirtual |
Return the list (as a pair of iterators) of internal children of an element.
Internal children are child elements of the same type as their parent (often corresponding to non-final elements). This distinction is used to optimize the intersection tests inside the hierarchy, as internal children can be processed without dynamically retrieving a new intersection method.
Default to empty (i.e. two identical iterators)
Reimplemented in sofa::component::collision::geometry::CubeCollisionModel.
CollisionModel * sofa::core::CollisionModel::getLast | ( | ) |
Return the last (i.e. leaf) CollisionModel in the hierarchy.
|
inline |
Return the next (finer / lower / child level) CollisionModel in the hierarchy.
|
inline |
Get the number of contacts attached to the collision model.
|
inline |
Return the previous (coarser / upper / parent level) CollisionModel in the hierarchy.
|
inline |
Get distance to the actual (visual) surface.
|
inline |
Return true if this model process self collision.
|
inline |
Get the number of elements.
|
inline |
Get user data.
|
overridevirtual |
the component can insert itself directly in the right sequence in the Node so the Node does not have to test its type against all known types
Reimplemented from sofa::core::objectmodel::BaseObject.
|
inlinevirtual |
Return true if this CollisionModel should be used for collisions.
Default to true.
|
inline |
Get contact stiffness.
Checks if the element(index) is a leaf and a primitive of the collision model.
Default to true since triangle model, line model, etc. does not have this method implemented and they are themselves (normally) leaves and primitives
Reimplemented in sofa::component::collision::geometry::CubeCollisionModel.
|
inlinevirtual |
Return true if this CollisionModel is changing position between iterations.
Default to true.
|
inlinevirtual |
Return true if this CollisionModel is attached to a simulation. It is false for immobile or procedurally animated objects that don't use contact forces.
Default to true.
|
overridevirtual |
the component can remove itself directly in the right sequence in the Node so the Node does not have to test its type against all known types
Reimplemented from sofa::core::objectmodel::BaseObject.
|
inlinevirtual |
Set the number of elements.
Reimplemented in sofa::component::collision::geometry::TriangleCollisionModel< TDataTypes >, sofa::component::collision::geometry::TriangleCollisionModel< sofa::defaulttype::Vec3Types >, sofa::component::collision::geometry::TetrahedronCollisionModel, sofa::component::collision::geometry::SphereCollisionModel< TDataTypes >, sofa::component::collision::geometry::RayCollisionModel, sofa::component::collision::geometry::PointCollisionModel< TDataTypes >, sofa::component::collision::geometry::PointCollisionModel< sofa::defaulttype::StdVectorTypes >, sofa::component::collision::geometry::LineCollisionModel< TDataTypes >, sofa::component::collision::geometry::CylinderCollisionModel< TDataTypes >, and sofa::component::collision::geometry::CubeCollisionModel.
|
inlinevirtual |
Set true if this CollisionModel should be used for collisions.
void sofa::core::CollisionModel::setColor4f | ( | const float * | c | ) |
Set a color that can be used to display this CollisionModel.
|
inline |
Set contact friction (damping) coefficient.
|
inline |
|
inline |
Set contact coefficient of restitution.
|
inline |
Set contact stiffness.
|
inline |
Set the group IDs to this model.
|
inlinevirtual |
Set true if this CollisionModel is changing position between iterations.
|
inline |
Set the number of contacts attached to the collision model.
void sofa::core::CollisionModel::setPrevious | ( | CollisionModel::SPtr | val | ) |
Set the previous (coarser / upper / parent level) CollisionModel in the hierarchy.
|
inline |
Set of differents parameters.
|
inline |
set a value to bSelfCollision
|
inlinevirtual |
Set true if this CollisionModel is attached to a simulation.
|
inline |
Set user data.
sofa::core::CollisionModel::SOFA_ABSTRACT_CLASS | ( | CollisionModel | , |
objectmodel::BaseObject | |||
) |