SOFA plugin: BulletCollisionDetection  master
Open source framework for multi-physics simuation
sofa::component::collision::TBulletConvexHullModel< TDataTypes > Class Template Reference

#include <BulletConvexHullModel.h>

Inheritance diagram for sofa::component::collision::TBulletConvexHullModel< TDataTypes >:

Public Attributes

sofa::core::objectmodel::Data< SReal > margin
 Margin used for collision detection within bullet. More...
 
Data< bool > computeConvexHullDecomposition
 compute convex hull decomposition using HACD More...
 
Data< bool > drawConvexHullDecomposition
 draw convex hull decomposition using More...
 
Data< VecCoordCHPoints
 points defining the convex hull More...
 
Data< bool > computeNormals
 set to false to disable computation of triangles normal More...
 
Data< bool > positionDefined
 set to true if the collision model position is defined in the mechanical object More...
 
Data< SReal > concavityThreeshold
 Threshold used in the decomposition. More...
 
- Public Attributes inherited from sofa::core::CollisionModel
CollisionElementActivermyCollElemActiver
 
- Public Attributes inherited from sofa::core::objectmodel::BaseObject
Data< bool > f_listening
 
- Public Attributes inherited from sofa::core::objectmodel::Base
std::vector< lifecycle::DeprecatedData * > m_oldAttributes
 
Data< int > d_messageLogCount
 
Data< std::string > name
 
Data< bool > f_printLog
 
Data< sofa::core::objectmodel::TagSetf_tags
 
Data< sofa::type::BoundingBoxf_bbox
 
Data< sofa::core::objectmodel::ComponentStated_componentState
 
std::string m_definitionSourceFileName
 
int m_definitionSourceFilePos
 
std::string m_instanciationSourceFileName
 
int m_instanciationSourceFilePos
 

Protected Attributes

Coord _bary
 
btTransform _bt_trans
 
core::behavior::MechanicalState< DataTypes > * _mstate
 
std::stack< btCollisionShape * > _garbage
 
btCompoundShape _bt_cshape
 
sofa::core::topology::BaseMeshTopologybmsh
 
std::vector< std::vector< type::Vec3 > > _ch_deco_pts
 
std::vector< std::vector< sofa::type::Vec< 3, int > > > _ch_deco_tri
 
std::vector< std::vector< type::Vec3 > > _ch_deco_norms
 
std::vector< type::Vec< 4, float > > _ch_deco_colors
 
- Protected Attributes inherited from sofa::core::CollisionModel
Data< bool > bActive
 
Data< bool > bMoving
 
Data< bool > bSimulated
 
Data< bool > bSelfCollision
 
Data< SReal > proximity
 
Data< SReal > contactStiffness
 
Data< SReal > contactFriction
 
Data< SReal > contactRestitution
 
Data< std::string > contactResponse
 
Data< sofa::type::RGBAColorcolor
 
Data< std::set< int > > group
 
Size size
 
Data< Size > d_numberOfContacts
 
SingleLink< CollisionModel, CollisionModel, BaseLink::FLAG_DOUBLELINK|BaseLink::FLAG_STRONGLINK > previous
 
SingleLink< CollisionModel, CollisionModel, BaseLink::FLAG_DOUBLELINK > next
 
int enum_type
 
void * userData
 
SingleLink< CollisionModel, sofa::core::objectmodel::BaseObject, BaseLink::FLAG_STOREPATH|BaseLink::FLAG_STRONGLINK > l_collElemActiver
 
- 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::DataTrackerCallbackm_internalEngine
 
VecData m_vecData
 
MapData m_aliasData
 
VecLink m_vecLink
 
MapLink m_aliasLink
 
- Protected Attributes inherited from BulletCollisionModel
btCollisionObject * _bt_collision_object {nullptr}
 
bool _handled {false}
 

Public Member Functions

 SOFA_CLASS (SOFA_TEMPLATE(TBulletConvexHullModel, TDataTypes), sofa::core::CollisionModel)
 
virtual void init ()
 
virtual void reinit ()
 
virtual void resize (int size)
 
void draw (const core::visual::VisualParams *vparams)
 
virtual void computeBoundingTree (int)
 
virtual bool canCollideWithElement (int index, CollisionModel *model2, int index2)
 
core::behavior::MechanicalState< DataTypes > * getMechanicalState ()
 
const core::behavior::MechanicalState< DataTypes > * getMechanicalState () const
 
virtual void initBullet ()
 
virtual void updateBullet ()
 
virtual ~TBulletConvexHullModel ()
 
void handleEvent (sofa::core::objectmodel::Event *ev)
 
virtual void setMargin (SReal margin)
 
const Coordcenter () const
 
const Quaternionorientation () const
 
- Public Member Functions inherited from sofa::core::CollisionModel
 SOFA_ABSTRACT_CLASS (CollisionModel, objectmodel::BaseObject)
 
void bwdInit () override
 
bool empty () const
 
Size getSize () const
 
bool getSelfCollision () const
 
void setSelfCollision (bool _bSelfCollision)
 
Size getNumberOfContacts () const
 
void setNumberOfContacts (Size i)
 
virtual void resize (Size s)
 
Iterator begin ()
 
Iterator end ()
 
CollisionModelgetNext ()
 
CollisionModelgetPrevious ()
 
void setPrevious (CollisionModel::SPtr val)
 
virtual bool isActive () const
 
virtual void setActive (bool val=true)
 
virtual bool isMoving () const
 
virtual void setMoving (bool val=true)
 
virtual bool isSimulated () const
 
virtual void setSimulated (bool val=true)
 
virtual void computeContinuousBoundingTree (SReal, int maxDepth=0)
 
virtual std::pair< CollisionElementIterator, CollisionElementIteratorgetInternalChildren (Index) const
 
virtual std::pair< CollisionElementIterator, CollisionElementIteratorgetExternalChildren (Index) const
 
virtual bool isLeaf (Index) const
 
virtual bool canCollideWith (CollisionModel *model)
 
virtual bool canCollideWithElement (Index, CollisionModel *, Index)
 
virtual void draw (const core::visual::VisualParams *, Index)
 
CollisionModelgetFirst ()
 
CollisionModelgetLast ()
 
DerivedModel * createPrevious ()
 
virtual sofa::core::topology::BaseMeshTopologygetCollisionTopology ()
 
const float * getColor4f ()
 
void setColor4f (const float *c)
 
void setProximity (const SReal a)
 
void setContactResponse (const std::string &a)
 
int getEnumType () const
 
void SetUserData (void *pUserData)
 
void * GetUserData ()
 
bool insertInNode (objectmodel::BaseNode *node) override
 
bool removeInNode (objectmodel::BaseNode *node) override
 
SReal getProximity () const
 
SReal getContactStiffness (Index) const
 
void setContactStiffness (SReal stiffness)
 
bool isContactStiffnessSet () const
 
SReal getContactFriction (Index) const
 
void setContactFriction (SReal friction)
 
SReal getContactRestitution (Index) const
 
void setContactRestitution (SReal restitution)
 
std::string getContactResponse () const
 
const std::set< int > & getGroups () const
 
void addGroup (const int groupId)
 
void setGroups (const std::set< int > &ids)
 
SReal getProximity () const
 
SReal getContactStiffness (Index) const
 
void setContactStiffness (SReal stiffness)
 
bool isContactStiffnessSet () const
 
SReal getContactFriction (Index) const
 
void setContactFriction (SReal friction)
 
SReal getContactRestitution (Index) const
 
void setContactRestitution (SReal restitution)
 
std::string getContactResponse () const
 
const std::set< int > & getGroups () const
 
void addGroup (const int groupId)
 
void setGroups (const std::set< int > &ids)
 
- 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)
 
void setSrc (const std::string &v, const BaseObject *loader, std::vector< std::string > *attributeList=nullptr)
 
BasefindLinkDestClass (const BaseClass *destType, const std::string &path, const BaseLink *link) override
 
virtual std::string getPathName () const override
 
SReal getTime () const
 
const BaseContextgetContext () const
 
BaseContextgetContext ()
 
const BaseObjectgetMaster () const
 
BaseObjectgetMaster ()
 
const VecSlavesgetSlaves () const
 
BaseObjectgetSlave (const std::string &name) const
 
virtual void addSlave (BaseObject::SPtr s)
 
virtual void removeSlave (BaseObject::SPtr s)
 
virtual void handleTopologyChange ()
 
virtual void handleTopologyChange (core::topology::Topology *t)
 
void parse (BaseObjectDescription *arg) override
 
void updateInternal ()
 
virtual void storeResetState ()
 
virtual void reset ()
 
virtual void cleanup ()
 
SReal getTime () const
 
- Public Member Functions inherited from sofa::core::objectmodel::Base
virtual const BaseClassgetClass () 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
 
void setName (const std::string &n)
 
void setName (const std::string &n, int counter)
 
std::string getTypeName () const
 
virtual std::string getClassName () const
 
virtual std::string getTemplateName () const final
 
std::string getNameSpaceName () const
 
void setDefinitionSourceFileName (const std::string &sourceFileName)
 
const std::string & getDefinitionSourceFileName () const
 
void setDefinitionSourceFilePos (const int)
 
int getDefinitionSourceFilePos () const
 
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::TagSetgetTags () const
 
bool hasTag (Tag t) const
 
void addTag (Tag t)
 
void removeTag (Tag t)
 
ComponentState getComponentState () const
 
bool isComponentStateValid () const
 
bool isComponentStateInvalid () const
 
 SOFA_ATTRIBUTE_DEPRECATED__TOBASECONSTRAINT () virtual const behavior
 
virtual bool parseField (const std::string &attribute, const std::string &value)
 
virtual bool hasField (const std::string &attribute) const
 
void parseFields (const std::list< std::string > &str)
 
virtual void parseFields (const std::map< std::string, std::string * > &str)
 
void writeDatas (std::map< std::string, std::string * > &str)=delete
 
void writeDatas (std::ostream &out, const std::string &separator=" ")
 
BaseDatafindData (const std::string &name) const
 
std::vector< BaseData * > findGlobalField (const std::string &name) const
 
BaseLinkfindLink (const std::string &name) const
 
std::vector< BaseLink * > findLinks (const std::string &name) const
 
virtual void updateLinks (bool logErrors=true)
 
BaseData::BaseInitData initData (::sofa::core::objectmodel::Data< T > *field, const char *name, const char *help, ::sofa::core::objectmodel::BaseData::DataFlags dataflags)
 
BaseData::BaseInitData initData (Data< T > *field, const char *name, const char *help, bool isDisplayed=true, bool isReadOnly=false)
 
Data< T >::InitData initData (Data< T > *field, const T &value, const char *name, const char *help, bool isDisplayed=true, bool isReadOnly=false)
 
void addData (BaseData *f, const std::string &name)
 
void addData (BaseData *f)
 
void removeData (BaseData *f)
 
void addAlias (BaseData *field, const char *alias)
 
void addLink (BaseLink *l)
 
void addAlias (BaseLink *link, const char *alias)
 
const VecDatagetDataFields () const
 
const MapDatagetDataAliases () const
 
const VecLinkgetLinks () const
 
const MapLinkgetLinkAliases () const
 
virtual bool findDataLinkDest (BaseData *&ptr, const std::string &path, const BaseLink *link)
 
bool findLinkDest (T *&ptr, const std::string &path, const BaseLink *link)
 
const sofa::core::objectmodel::TagSetgetTags () const
 
bool hasTag (Tag t) const
 
void addTag (Tag t)
 
void removeTag (Tag t)
 
ComponentState getComponentState () const
 
bool isComponentStateValid () const
 
bool isComponentStateInvalid () const
 
 SOFA_ATTRIBUTE_DEPRECATED__TOBASECONSTRAINT () virtual const behavior
 
- Public Member Functions inherited from BulletCollisionModel
 BulletCollisionModel ()
 
virtual ~BulletCollisionModel ()
 
btCollisionObject * getBtCollisionObject ()
 
const btCollisionObject * getBtCollisionObject () const
 
bool handled () const
 
void setHandled (bool h)
 

Static Public Member Functions

template<class T >
static bool canCreate (T *&obj, core::objectmodel::BaseContext *context, core::objectmodel::BaseObjectDescription *arg)
 
- Static Public Member Functions inherited from sofa::core::objectmodel::BaseObject
static bool canCreate (T *, BaseContext *, BaseObjectDescription *)
 
static T::SPtr create (T *, BaseContext *context, BaseObjectDescription *arg)
 
- Static Public Member Functions inherited from sofa::core::objectmodel::Base
static const BaseClassGetClass ()
 
static std::string shortName (const T *ptr=nullptr, BaseObjectDescription *=nullptr)
 

Protected Member Functions

void draw_without_decomposition (const core::visual::VisualParams *vparams)
 
void draw_decomposition (const core::visual::VisualParams *vparams)
 
 TBulletConvexHullModel ()
 
 TBulletConvexHullModel (core::behavior::MechanicalState< DataTypes > *_mstate)
 
- Protected Member Functions inherited from sofa::core::CollisionModel
 CollisionModel ()
 
 ~CollisionModel () override
 
virtual void drawCollisionModel (const core::visual::VisualParams *vparams)
 
- Protected Member Functions inherited from sofa::core::objectmodel::BaseObject
 BaseObject ()
 
 ~BaseObject () override
 
virtual void doUpdateInternal ()
 
void changeContextLink (BaseContext *before, BaseContext *&after)
 
void changeSlavesLink (BaseObject::SPtr ptr, std::size_t, bool add)
 
void trackInternalData (const BaseData &data)
 
void cleanTracker ()
 
bool hasDataChanged (const BaseData &data)
 
- 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)
 
void initData0 (BaseData *field, BaseData::BaseInitData &res, const char *name, const char *help, BaseData::DataFlags dataFlags)
 
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)
 
- Protected Member Functions inherited from sofa::core::IntrusiveObject
virtual ~IntrusiveObject ()=default
 

Attribute details

◆ _bary

template<class TDataTypes >
Coord sofa::component::collision::TBulletConvexHullModel< TDataTypes >::_bary
protected

◆ _bt_cshape

template<class TDataTypes >
btCompoundShape sofa::component::collision::TBulletConvexHullModel< TDataTypes >::_bt_cshape
protected

◆ _bt_trans

template<class TDataTypes >
btTransform sofa::component::collision::TBulletConvexHullModel< TDataTypes >::_bt_trans
protected

◆ _ch_deco_colors

template<class TDataTypes >
std::vector<type::Vec<4,float> > sofa::component::collision::TBulletConvexHullModel< TDataTypes >::_ch_deco_colors
protected

◆ _ch_deco_norms

template<class TDataTypes >
std::vector<std::vector< type::Vec3 > > sofa::component::collision::TBulletConvexHullModel< TDataTypes >::_ch_deco_norms
protected

◆ _ch_deco_pts

template<class TDataTypes >
std::vector<std::vector< type::Vec3 > > sofa::component::collision::TBulletConvexHullModel< TDataTypes >::_ch_deco_pts
protected

◆ _ch_deco_tri

template<class TDataTypes >
std::vector<std::vector< sofa::type::Vec<3,int> > > sofa::component::collision::TBulletConvexHullModel< TDataTypes >::_ch_deco_tri
protected

◆ _garbage

template<class TDataTypes >
std::stack<btCollisionShape*> sofa::component::collision::TBulletConvexHullModel< TDataTypes >::_garbage
protected

◆ _mstate

template<class TDataTypes >
core::behavior::MechanicalState<DataTypes>* sofa::component::collision::TBulletConvexHullModel< TDataTypes >::_mstate
protected

◆ bmsh

template<class TDataTypes >
sofa::core::topology::BaseMeshTopology* sofa::component::collision::TBulletConvexHullModel< TDataTypes >::bmsh
protected

◆ CHPoints

template<class TDataTypes >
Data<VecCoord> sofa::component::collision::TBulletConvexHullModel< TDataTypes >::CHPoints

points defining the convex hull

◆ computeConvexHullDecomposition

template<class TDataTypes >
Data<bool> sofa::component::collision::TBulletConvexHullModel< TDataTypes >::computeConvexHullDecomposition

compute convex hull decomposition using HACD

◆ computeNormals

template<class TDataTypes >
Data<bool> sofa::component::collision::TBulletConvexHullModel< TDataTypes >::computeNormals

set to false to disable computation of triangles normal

◆ concavityThreeshold

template<class TDataTypes >
Data<SReal> sofa::component::collision::TBulletConvexHullModel< TDataTypes >::concavityThreeshold

Threshold used in the decomposition.

◆ drawConvexHullDecomposition

template<class TDataTypes >
Data<bool> sofa::component::collision::TBulletConvexHullModel< TDataTypes >::drawConvexHullDecomposition

draw convex hull decomposition using

◆ margin

template<class TDataTypes >
sofa::core::objectmodel::Data<SReal> sofa::component::collision::TBulletConvexHullModel< TDataTypes >::margin

Margin used for collision detection within bullet.

◆ positionDefined

template<class TDataTypes >
Data<bool> sofa::component::collision::TBulletConvexHullModel< TDataTypes >::positionDefined

set to true if the collision model position is defined in the mechanical object

Constructor details

◆ ~TBulletConvexHullModel()

template<class TDataTypes >
virtual sofa::component::collision::TBulletConvexHullModel< TDataTypes >::~TBulletConvexHullModel ( )
inlinevirtual

◆ TBulletConvexHullModel() [1/2]

◆ TBulletConvexHullModel() [2/2]

template<class TDataTypes >
sofa::component::collision::TBulletConvexHullModel< TDataTypes >::TBulletConvexHullModel ( core::behavior::MechanicalState< DataTypes > *  _mstate)
protected

Function details

◆ canCollideWithElement()

template<class TDataTypes >
virtual bool sofa::component::collision::TBulletConvexHullModel< TDataTypes >::canCollideWithElement ( int  index,
CollisionModel model2,
int  index2 
)
inlinevirtual

◆ canCreate()

template<class TDataTypes >
template<class T >
static bool sofa::component::collision::TBulletConvexHullModel< TDataTypes >::canCreate ( T *&  obj,
core::objectmodel::BaseContext context,
core::objectmodel::BaseObjectDescription arg 
)
inlinestatic

Pre-construction check method called by ObjectFactory. Check that DataTypes matches the MechanicalState.

◆ center()

template<class TDataTypes >
const Coord& sofa::component::collision::TBulletConvexHullModel< TDataTypes >::center ( ) const
inline

◆ computeBoundingTree()

template<class TDataTypes >
virtual void sofa::component::collision::TBulletConvexHullModel< TDataTypes >::computeBoundingTree ( int  )
inlinevirtual

◆ draw()

template<class DataTypes >
void sofa::component::collision::TBulletConvexHullModel< DataTypes >::draw ( const core::visual::VisualParams vparams)
virtual

Reimplemented from sofa::core::CollisionModel.

◆ draw_decomposition()

template<class DataTypes >
void sofa::component::collision::TBulletConvexHullModel< DataTypes >::draw_decomposition ( const core::visual::VisualParams vparams)
protected

◆ draw_without_decomposition()

template<class DataTypes >
void sofa::component::collision::TBulletConvexHullModel< DataTypes >::draw_without_decomposition ( const core::visual::VisualParams vparams)
protected

◆ getMechanicalState() [1/2]

template<class TDataTypes >
core::behavior::MechanicalState<DataTypes>* sofa::component::collision::TBulletConvexHullModel< TDataTypes >::getMechanicalState ( )
inline

◆ getMechanicalState() [2/2]

template<class TDataTypes >
const core::behavior::MechanicalState<DataTypes>* sofa::component::collision::TBulletConvexHullModel< TDataTypes >::getMechanicalState ( ) const
inline

◆ handleEvent()

template<class DataTypes >
void sofa::component::collision::TBulletConvexHullModel< DataTypes >::handleEvent ( sofa::core::objectmodel::Event ev)
virtual

◆ init()

template<class DataTypes >
void sofa::component::collision::TBulletConvexHullModel< DataTypes >::init ( void  )
virtual

◆ initBullet()

template<class DataTypes >
void sofa::component::collision::TBulletConvexHullModel< DataTypes >::initBullet ( )
virtual

Inits bullet collision shapes from the sofa shapes.

Implements BulletCollisionModel.

◆ orientation()

template<class TDataTypes >
const Quaternion& sofa::component::collision::TBulletConvexHullModel< TDataTypes >::orientation ( ) const
inline

◆ reinit()

template<class DataTypes >
void sofa::component::collision::TBulletConvexHullModel< DataTypes >::reinit
virtual

◆ resize()

template<class DataTypes >
void sofa::component::collision::TBulletConvexHullModel< DataTypes >::resize ( int  size)
virtual

◆ setMargin()

template<class TDataTypes >
virtual void sofa::component::collision::TBulletConvexHullModel< TDataTypes >::setMargin ( SReal  margin)
inlinevirtual

◆ SOFA_CLASS()

template<class TDataTypes >
sofa::component::collision::TBulletConvexHullModel< TDataTypes >::SOFA_CLASS ( SOFA_TEMPLATE(TBulletConvexHullModel< TDataTypes >, TDataTypes)  ,
sofa::core::CollisionModel   
)

◆ updateBullet()

template<class DataTypes >
void sofa::component::collision::TBulletConvexHullModel< DataTypes >::updateBullet ( )
virtual

Updates at each time step the bullet shapes from sofa shapes.

Implements BulletCollisionModel.