#include <CollisionModel.h>


Public Types | |
| typedef CollisionElementIterator | Iterator |
| typedef componentmodel::topology::BaseMeshTopology | Topology |
Public Member Functions | |
| CollisionModel () | |
| Constructor. | |
| virtual void | bwdInit () |
| Initialization method called at graph modification, during top-down traversal. | |
| virtual | ~CollisionModel () |
| Destructor. | |
| bool | empty () const |
| Return true if there are no elements. | |
| int | getSize () const |
| Get the number of elements. | |
| int | getNumberOfContacts () const |
| Get the number of contacts attached to the collision model. | |
| void | setNumberOfContacts (int i) |
| Set the number of contacts attached to the collision model. | |
| virtual void | resize (int s) |
| Set the number of elements. | |
| Iterator | begin () |
| Return an iterator to the first element. | |
| Iterator | end () |
| Return an iterator pointing after the last element. | |
| CollisionModel * | getNext () |
| Return the next (finer / lower / child level) CollisionModel in the hierarchy. | |
| CollisionModel * | getPrevious () |
| Return the previous (coarser / upper / parent level) CollisionModel in the hierarchy. | |
| void | setNext (CollisionModel *val) |
| Set the next (finer / lower / child level) CollisionModel in the hierarchy. | |
| void | setPrevious (CollisionModel *val) |
| Set the previous (coarser / upper / parent level) CollisionModel in the hierarchy. | |
| virtual bool | isActive () const |
| Return true if this CollisionModel should be used for collisions. | |
| virtual void | setActive (bool val=true) |
| Set true if this CollisionModel should be used for collisions. | |
| virtual bool | isMoving () const |
| Return true if this CollisionModel is changing position between iterations. | |
| virtual void | setMoving (bool val=true) |
| Set true if this CollisionModel is changing position between iterations. | |
| virtual bool | isSimulated () const |
| Return true if this CollisionModel is attached to a simulation. | |
| virtual void | setSimulated (bool val=true) |
| Set true if this CollisionModel is attached to a simulation. | |
| virtual void | computeBoundingTree (int maxDepth=0)=0 |
| Create or update the bounding volume hierarchy. | |
| virtual void | computeContinuousBoundingTree (double, int maxDepth=0) |
| Create or update the bounding volume hierarchy, accounting for motions within the given timestep. | |
| virtual std::pair < CollisionElementIterator, CollisionElementIterator > | getInternalChildren (int) const |
| Return the list (as a pair of iterators) of internal children of an element. | |
| virtual std::pair < CollisionElementIterator, CollisionElementIterator > | getExternalChildren (int) const |
| Return the list (as a pair of iterators) of external children of an element. | |
| virtual bool | isLeaf (int) const |
| Checks if the element(index) is a leaf and a primitive of the collision model. | |
| virtual bool | canCollideWith (CollisionModel *model) |
| Test if this model can collide with another model. | |
| virtual bool | canCollideWithElement (int, CollisionModel *, int) |
| Test if two elements can collide with each other. | |
| virtual void | draw (int) |
| Render an collision element. | |
| virtual void | draw () |
| Render the whole collision model. | |
| CollisionModel * | getFirst () |
| Return the first (i.e. root) CollisionModel in the hierarchy. | |
| CollisionModel * | getLast () |
| Return the last (i.e. leaf) CollisionModel in the hierarchy. | |
| template<class DerivedModel > | |
| DerivedModel * | createPrevious () |
| Helper method to get or create the previous model in the hierarchy. | |
| virtual Topology * | getTopology () |
| Topology associated to the collision model. | |
| virtual sofa::core::componentmodel::topology::BaseMeshTopology * | getMeshTopology () |
| BaseMeshTopology associated to the collision model. | |
| const float * | getColor4f () |
| Get a color that can be used to display this CollisionModel. | |
| void | setColor4f (const float *c) |
| Set a color that can be used to display this CollisionModel. | |
Experimental methods | |
| double | getProximity () |
| Get distance to the actual (visual) surface. | |
| double | getContactStiffness (int) |
| Get contact stiffness. | |
| void | setContactStiffness (double stiffness) |
| Set contact stiffness. | |
| double | getContactFriction (int) |
| Get contact friction (damping) coefficient. | |
| void | setContactFriction (double friction) |
| Set contact friction (damping) coefficient. | |
| std::string | getContactResponse () |
| Contact response algorithm. | |
Protected Attributes | |
| Data< bool > | bActive |
| flag indicating if this collision model is active and should be included in default collision detections | |
| Data< bool > | bMoving |
| flag indicating if this object is changing position between iterations | |
| Data< bool > | bSimulated |
| flag indicating if this object is controlled by a simulation | |
| Data< bool > | bSelfCollision |
| flag indication if the object can self collide | |
| Data< double > | proximity |
| Distance to the actual (visual) surface. | |
| Data< double > | contactStiffness |
| Default contact stiffness. | |
| Data< double > | contactFriction |
| Default contact friction (damping) coefficient. | |
| Data< std::string > | contactResponse |
| contactResponse", "if set, indicate to the ContactManager that this model should use the given class of contacts. | |
| Data< int > | group |
| If not zero, ID of a group containing this model. | |
| Data< defaulttype::Vec4f > | color |
| color used to display the collision model if requested | |
| int | size |
| Number of collision elements. | |
| CollisionModel * | previous |
| Pointer to the previous (coarser / upper / parent level) CollisionModel in the hierarchy. | |
| CollisionModel * | next |
| Pointer to the next (finer / lower / child level) CollisionModel in the hierarchy. | |
| int | numberOfContacts |
| number of contacts attached to the collision model | |
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:
Definition at line 63 of file CollisionModel.h.
Definition at line 67 of file CollisionModel.h.
Reimplemented in sofa::component::collision::FFDDistanceGridCollisionModel.
Definition at line 68 of file CollisionModel.h.
| sofa::core::CollisionModel::CollisionModel | ( | ) | [inline] |
| virtual sofa::core::CollisionModel::~CollisionModel | ( | ) | [inline, virtual] |
| Iterator sofa::core::CollisionModel::begin | ( | ) | [inline] |
Return an iterator to the first element.
Definition at line 124 of file CollisionModel.h.
Referenced by sofa::component::collision::VoxelGrid::add(), sofa::component::collision::RayTraceDetection::addCollisionModel(), sofa::component::collision::BruteForceDetection::addCollisionModel(), sofa::component::collision::BruteForceDetection::addCollisionPair(), sofa::component::collision::TriangleModel::computeBoundingTree(), sofa::component::collision::TetrahedronModel::computeBoundingTree(), sofa::component::collision::GridModel::computeBoundingTree(), sofa::component::collision::CubeModel::computeBoundingTree(), sofa::gpu::cuda::CudaCollisionDetection::PointRigidTest::init(), sofa::gpu::cuda::CudaCollisionDetection::SphereRigidTest::init(), sofa::gpu::cuda::CudaCollisionDetection::RigidRigidTest::init(), and sofa::component::collision::SphereTreeModel::loadSphereTree().
| virtual void sofa::core::CollisionModel::bwdInit | ( | ) | [inline, virtual] |
Initialization method called at graph modification, during top-down traversal.
Reimplemented from sofa::core::objectmodel::BaseObject.
Definition at line 86 of file CollisionModel.h.
References getColor4f().
| virtual bool sofa::core::CollisionModel::canCollideWith | ( | CollisionModel * | model | ) | [inline, 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).
Default to false if the collision models are attached to the same context (i.e. the same node in the scenegraph).
Definition at line 244 of file CollisionModel.h.
References bSelfCollision, sofa::core::objectmodel::BaseObject::getContext(), and group.
Referenced by sofa::component::collision::RayTraceDetection::addCollisionModel(), and sofa::component::collision::BruteForceDetection::addCollisionModel().
| virtual bool sofa::core::CollisionModel::canCollideWithElement | ( | int | , | |
| CollisionModel * | , | |||
| int | ||||
| ) | [inline, virtual] |
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::LineModel, and sofa::component::collision::PointModel.
Definition at line 261 of file CollisionModel.h.
Referenced by sofa::component::collision::PointModel::canCollideWithElement(), and sofa::component::collision::LineModel::canCollideWithElement().
| virtual void sofa::core::CollisionModel::computeBoundingTree | ( | int | maxDepth = 0 |
) | [pure virtual] |
Create or update the bounding volume hierarchy.
Implemented in sofa::component::collision::CubeModel, sofa::component::collision::RigidDistanceGridCollisionModel, sofa::component::collision::FFDDistanceGridCollisionModel, sofa::component::collision::GridModel, sofa::component::collision::LineModel, sofa::component::collision::PointModel, sofa::component::collision::RayModel, sofa::component::collision::SpatialGridPointModel, sofa::component::collision::TSphereModel< TDataTypes >, sofa::component::collision::SphereTreeModel, sofa::component::collision::TetrahedronModel, sofa::component::collision::TriangleModel, sofa::component::collision::TriangleOctreeModel, sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel, and sofa::gpu::cuda::CudaPointModel.
Referenced by computeContinuousBoundingTree().
| virtual void sofa::core::CollisionModel::computeContinuousBoundingTree | ( | double | , | |
| int | maxDepth = 0 | |||
| ) | [inline, virtual] |
Create or update the bounding volume hierarchy, accounting for motions within the given timestep.
Default to computeBoundingTree().
Reimplemented in sofa::component::collision::LineModel, sofa::component::collision::PointModel, sofa::component::collision::TSphereModel< TDataTypes >, sofa::component::collision::SphereTreeModel, sofa::component::collision::TriangleModel, and sofa::component::collision::TriangleOctreeModel.
Definition at line 194 of file CollisionModel.h.
References computeBoundingTree().
| DerivedModel* sofa::core::CollisionModel::createPrevious | ( | ) | [inline] |
Helper method to get or create the previous model in the hierarchy.
Definition at line 293 of file CollisionModel.h.
References sofa::core::objectmodel::BaseObject::getContext(), group, isMoving(), isSimulated(), previous, proximity, and setNext().
Referenced by sofa::component::collision::SpatialGridPointModel::computeBoundingTree().
| virtual void sofa::core::CollisionModel::draw | ( | ) | [inline, virtual] |
Render the whole collision model.
Reimplemented from sofa::core::objectmodel::BaseObject.
Reimplemented in sofa::component::collision::CubeModel, sofa::component::collision::RigidDistanceGridCollisionModel, sofa::component::collision::FFDDistanceGridCollisionModel, sofa::component::collision::GridModel, sofa::component::collision::LineModel, sofa::component::collision::PointModel, sofa::component::collision::RayModel, sofa::component::collision::RayPickInteractor, sofa::component::collision::TSphereModel< TDataTypes >, sofa::component::collision::SphereTreeModel, sofa::component::collision::TetrahedronModel, sofa::component::collision::TriangleModel, sofa::component::collision::TriangleOctreeModel, sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel, and sofa::gpu::cuda::CudaPointModel.
Definition at line 268 of file CollisionModel.h.
| virtual void sofa::core::CollisionModel::draw | ( | int | ) | [inline, virtual] |
Render an collision element.
Reimplemented in sofa::component::collision::CubeModel, sofa::component::collision::RigidDistanceGridCollisionModel, sofa::component::collision::FFDDistanceGridCollisionModel, sofa::component::collision::GridModel, sofa::component::collision::LineModel, sofa::component::collision::PointModel, sofa::component::collision::RayModel, sofa::component::collision::TSphereModel< TDataTypes >, sofa::component::collision::SphereTreeModel, sofa::component::collision::TetrahedronModel, sofa::component::collision::TriangleModel, sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel, and sofa::gpu::cuda::CudaPointModel.
Definition at line 265 of file CollisionModel.h.
Referenced by sofa::gpu::cuda::CudaPointModel::draw(), sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::draw(), sofa::component::collision::TriangleModel::draw(), sofa::component::collision::TetrahedronModel::draw(), sofa::component::collision::SphereTreeModel::draw(), sofa::component::collision::TSphereModel< TDataTypes >::draw(), sofa::component::collision::RayModel::draw(), sofa::component::collision::PointModel::draw(), sofa::component::collision::LineModel::draw(), sofa::component::collision::GridModel::draw(), sofa::component::collision::FFDDistanceGridCollisionModel::draw(), sofa::component::collision::RigidDistanceGridCollisionModel::draw(), and sofa::component::collision::CubeModel::draw().
| bool sofa::core::CollisionModel::empty | ( | ) | const [inline] |
Return true if there are no elements.
Definition at line 94 of file CollisionModel.h.
References size.
Referenced by sofa::component::collision::RayTraceDetection::addCollisionModel(), sofa::component::collision::BruteForceDetection::addCollisionModel(), sofa::component::collision::BruteForceDetection::addCollisionPair(), sofa::gpu::cuda::CudaPointModel::computeBoundingTree(), sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::computeBoundingTree(), sofa::component::collision::TriangleOctreeModel::computeBoundingTree(), sofa::component::collision::TriangleModel::computeBoundingTree(), sofa::component::collision::TetrahedronModel::computeBoundingTree(), sofa::component::collision::TSphereModel< TDataTypes >::computeBoundingTree(), sofa::component::collision::SpatialGridPointModel::computeBoundingTree(), sofa::component::collision::RayModel::computeBoundingTree(), sofa::component::collision::PointModel::computeBoundingTree(), sofa::component::collision::LineModel::computeBoundingTree(), sofa::component::collision::GridModel::computeBoundingTree(), sofa::component::collision::FFDDistanceGridCollisionModel::computeBoundingTree(), sofa::component::collision::RigidDistanceGridCollisionModel::computeBoundingTree(), sofa::component::collision::CubeModel::computeBoundingTree(), sofa::component::collision::TriangleModel::computeContinuousBoundingTree(), sofa::component::collision::TSphereModel< TDataTypes >::computeContinuousBoundingTree(), sofa::component::collision::PointModel::computeContinuousBoundingTree(), and sofa::component::collision::LineModel::computeContinuousBoundingTree().
| Iterator sofa::core::CollisionModel::end | ( | ) | [inline] |
Return an iterator pointing after the last element.
Definition at line 130 of file CollisionModel.h.
References size.
Referenced by sofa::component::collision::VoxelGrid::add(), sofa::component::collision::TriangleModel::computeBoundingTree(), sofa::component::collision::TetrahedronModel::computeBoundingTree(), sofa::component::collision::GridModel::computeBoundingTree(), sofa::component::collision::CubeModel::computeBoundingTree(), sofa::gpu::cuda::CudaCollisionDetection::PointRigidTest::init(), sofa::gpu::cuda::CudaCollisionDetection::SphereRigidTest::init(), sofa::gpu::cuda::CudaCollisionDetection::RigidRigidTest::init(), and sofa::component::collision::SphereTreeModel::loadSphereTree().
| const float * sofa::core::CollisionModel::getColor4f | ( | ) |
Get a color that can be used to display this CollisionModel.
Definition at line 39 of file CollisionModel.cpp.
References color, isActive(), isMoving(), isSimulated(), and setColor4f().
Referenced by bwdInit(), sofa::gpu::cuda::CudaPointModel::draw(), sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::draw(), sofa::component::collision::TriangleOctreeModel::draw(), sofa::component::collision::TriangleModel::draw(), sofa::component::collision::TetrahedronModel::draw(), sofa::component::collision::TSphereModel< TDataTypes >::draw(), sofa::component::collision::RayModel::draw(), sofa::component::collision::PointModel::draw(), sofa::component::collision::LineModel::draw(), sofa::component::collision::FFDDistanceGridCollisionModel::draw(), and sofa::component::collision::RigidDistanceGridCollisionModel::draw().
| double sofa::core::CollisionModel::getContactFriction | ( | int | ) | [inline] |
Get contact friction (damping) coefficient.
Definition at line 324 of file CollisionModel.h.
References contactFriction.
| std::string sofa::core::CollisionModel::getContactResponse | ( | ) | [inline] |
Contact response algorithm.
Definition at line 329 of file CollisionModel.h.
References contactResponse.
Referenced by sofa::component::collision::DefaultContactManager::createContacts().
| double sofa::core::CollisionModel::getContactStiffness | ( | int | ) | [inline] |
Get contact stiffness.
Definition at line 319 of file CollisionModel.h.
References contactStiffness.
| virtual std::pair<CollisionElementIterator,CollisionElementIterator> sofa::core::CollisionModel::getExternalChildren | ( | int | ) | const [inline, virtual] |
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::CubeModel, and sofa::component::collision::GridModel.
Definition at line 218 of file CollisionModel.h.
| CollisionModel* sofa::core::CollisionModel::getFirst | ( | ) | [inline] |
Return the first (i.e. root) CollisionModel in the hierarchy.
Definition at line 271 of file CollisionModel.h.
References getPrevious().
Referenced by sofa::component::collision::CarvingManager::doCarve(), and SofaFlowVR::FlowVRInputMesh::flowvrBeginIteration().
| virtual std::pair<CollisionElementIterator,CollisionElementIterator> sofa::core::CollisionModel::getInternalChildren | ( | int | ) | const [inline, virtual] |
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::CubeModel, sofa::component::collision::GridModel, and sofa::component::collision::SphereTreeModel.
Definition at line 206 of file CollisionModel.h.
| CollisionModel* sofa::core::CollisionModel::getLast | ( | ) | [inline] |
Return the last (i.e. leaf) CollisionModel in the hierarchy.
Definition at line 281 of file CollisionModel.h.
References getNext().
Referenced by sofa::component::collision::BruteForceDetection::addCollisionModel(), sofa::component::collision::BruteForceDetection::addCollisionPair(), and sofa::component::collision::RayTraceDetection::findPairsVolume().
| virtual sofa::core::componentmodel::topology::BaseMeshTopology* sofa::core::CollisionModel::getMeshTopology | ( | ) | [inline, virtual] |
BaseMeshTopology associated to the collision model.
Reimplemented in sofa::component::collision::FFDDistanceGridCollisionModel.
Definition at line 337 of file CollisionModel.h.
References sofa::core::objectmodel::BaseObject::getContext().
| CollisionModel* sofa::core::CollisionModel::getNext | ( | ) | [inline] |
Return the next (finer / lower / child level) CollisionModel in the hierarchy.
Definition at line 136 of file CollisionModel.h.
References next.
Referenced by sofa::component::collision::GridModel::draw(), sofa::component::collision::CubeModel::draw(), getLast(), sofa::component::collision::GridModel::resize(), and sofa::component::collision::CubeModel::resize().
| int sofa::core::CollisionModel::getNumberOfContacts | ( | ) | const [inline] |
Get the number of contacts attached to the collision model.
Definition at line 106 of file CollisionModel.h.
References numberOfContacts.
| CollisionModel* sofa::core::CollisionModel::getPrevious | ( | ) | [inline] |
Return the previous (coarser / upper / parent level) CollisionModel in the hierarchy.
Definition at line 142 of file CollisionModel.h.
References previous.
Referenced by sofa::component::collision::SpatialGridPointModel::computeBoundingTree(), sofa::component::collision::GridModel::computeBoundingTree(), sofa::component::collision::CubeModel::computeBoundingTree(), sofa::gpu::cuda::CudaPointModel::draw(), sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::draw(), sofa::component::collision::TriangleModel::draw(), sofa::component::collision::TetrahedronModel::draw(), sofa::component::collision::SphereTreeModel::draw(), sofa::component::collision::TSphereModel< TDataTypes >::draw(), sofa::component::collision::RayModel::draw(), sofa::component::collision::PointModel::draw(), sofa::component::collision::LineModel::draw(), sofa::component::collision::GridModel::draw(), sofa::component::collision::FFDDistanceGridCollisionModel::draw(), sofa::component::collision::RigidDistanceGridCollisionModel::draw(), sofa::component::collision::CubeModel::draw(), getFirst(), sofa::component::collision::TetrahedronModel::resize(), sofa::component::collision::GridModel::resize(), and sofa::component::collision::CubeModel::resize().
| double sofa::core::CollisionModel::getProximity | ( | ) | [inline] |
Get distance to the actual (visual) surface.
Definition at line 316 of file CollisionModel.h.
References proximity.
| int sofa::core::CollisionModel::getSize | ( | ) | const [inline] |
Get the number of elements.
Reimplemented in sofa::component::collision::TSphereModel< TDataTypes >, and sofa::component::collision::SphereTreeModel.
Definition at line 100 of file CollisionModel.h.
References size.
Referenced by sofa::component::collision::SpatialGridPointModel::computeBoundingTree(), sofa::gpu::cuda::CudaCollisionDetection::RigidRigidTest::fillInfo(), sofa::component::collision::RayTraceDetection::findPairsVolume(), and sofa::gpu::cuda::CudaCollisionDetection::RigidRigidTest::init().
| virtual Topology* sofa::core::CollisionModel::getTopology | ( | ) | [inline, virtual] |
Topology associated to the collision model.
Definition at line 334 of file CollisionModel.h.
References sofa::core::objectmodel::BaseObject::getContext().
| virtual bool sofa::core::CollisionModel::isActive | ( | ) | const [inline, virtual] |
Return true if this CollisionModel should be used for collisions.
Default to true.
Definition at line 162 of file CollisionModel.h.
References bActive, and sofa::core::objectmodel::BaseObject::getContext().
Referenced by sofa::gpu::cuda::CudaPointModel::draw(), sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::draw(), sofa::component::collision::TriangleOctreeModel::draw(), sofa::component::collision::SphereTreeModel::draw(), sofa::component::collision::GridModel::draw(), sofa::component::collision::FFDDistanceGridCollisionModel::draw(), sofa::component::collision::RigidDistanceGridCollisionModel::draw(), sofa::component::collision::CubeModel::draw(), getColor4f(), sofa::gpu::cuda::CudaCollisionDetection::PointRigidTest::init(), sofa::gpu::cuda::CudaCollisionDetection::SphereRigidTest::init(), and sofa::gpu::cuda::CudaCollisionDetection::RigidRigidTest::init().
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::CubeModel, sofa::component::collision::GridModel, and sofa::component::collision::SphereTreeModel.
Definition at line 228 of file CollisionModel.h.
| virtual bool sofa::core::CollisionModel::isMoving | ( | ) | const [inline, virtual] |
Return true if this CollisionModel is changing position between iterations.
Default to true.
Definition at line 171 of file CollisionModel.h.
References bMoving.
Referenced by sofa::gpu::cuda::CudaPointModel::computeBoundingTree(), sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::computeBoundingTree(), sofa::component::collision::TriangleOctreeModel::computeBoundingTree(), sofa::component::collision::TriangleModel::computeBoundingTree(), sofa::component::collision::TetrahedronModel::computeBoundingTree(), sofa::component::collision::TSphereModel< TDataTypes >::computeBoundingTree(), sofa::component::collision::SpatialGridPointModel::computeBoundingTree(), sofa::component::collision::RayModel::computeBoundingTree(), sofa::component::collision::PointModel::computeBoundingTree(), sofa::component::collision::LineModel::computeBoundingTree(), sofa::component::collision::FFDDistanceGridCollisionModel::computeBoundingTree(), sofa::component::collision::RigidDistanceGridCollisionModel::computeBoundingTree(), sofa::component::collision::TriangleModel::computeContinuousBoundingTree(), sofa::component::collision::TSphereModel< TDataTypes >::computeContinuousBoundingTree(), sofa::component::collision::PointModel::computeContinuousBoundingTree(), sofa::component::collision::LineModel::computeContinuousBoundingTree(), createPrevious(), sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::draw(), and getColor4f().
| virtual bool sofa::core::CollisionModel::isSimulated | ( | ) | const [inline, virtual] |
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.
Definition at line 182 of file CollisionModel.h.
References bSimulated.
Referenced by sofa::component::collision::RayTraceDetection::addCollisionModel(), sofa::component::collision::BruteForceDetection::addCollisionModel(), sofa::component::collision::BruteForceDetection::addCollisionPair(), createPrevious(), sofa::component::collision::SphereTreeModel::draw(), sofa::component::collision::GridModel::draw(), sofa::component::collision::FFDDistanceGridCollisionModel::draw(), sofa::component::collision::RigidDistanceGridCollisionModel::draw(), sofa::component::collision::CubeModel::draw(), and getColor4f().
| virtual void sofa::core::CollisionModel::resize | ( | int | s | ) | [inline, virtual] |
Set the number of elements.
Reimplemented in sofa::component::collision::CubeModel, sofa::component::collision::RigidDistanceGridCollisionModel, sofa::component::collision::FFDDistanceGridCollisionModel, sofa::component::collision::GridModel, sofa::component::collision::LineModel, sofa::component::collision::PointModel, sofa::component::collision::RayModel, sofa::component::collision::TSphereModel< TDataTypes >, sofa::component::collision::SphereTreeModel, sofa::component::collision::TetrahedronModel, sofa::component::collision::TriangleModel, sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel, and sofa::gpu::cuda::CudaPointModel.
Definition at line 118 of file CollisionModel.h.
References size.
Referenced by sofa::component::collision::GridModel::computeBoundingTree(), sofa::component::collision::CubeModel::computeBoundingTree(), sofa::component::collision::TetrahedronModel::resize(), sofa::component::collision::GridModel::resize(), and sofa::component::collision::CubeModel::resize().
| virtual void sofa::core::CollisionModel::setActive | ( | bool | val = true |
) | [inline, virtual] |
Set true if this CollisionModel should be used for collisions.
Definition at line 165 of file CollisionModel.h.
References bActive.
| void sofa::core::CollisionModel::setColor4f | ( | const float * | c | ) | [inline] |
Set a color that can be used to display this CollisionModel.
Definition at line 342 of file CollisionModel.h.
References color.
Referenced by getColor4f().
| void sofa::core::CollisionModel::setContactFriction | ( | double | friction | ) | [inline] |
Set contact friction (damping) coefficient.
Definition at line 326 of file CollisionModel.h.
References contactFriction.
| void sofa::core::CollisionModel::setContactStiffness | ( | double | stiffness | ) | [inline] |
Set contact stiffness.
Definition at line 321 of file CollisionModel.h.
References contactStiffness.
| virtual void sofa::core::CollisionModel::setMoving | ( | bool | val = true |
) | [inline, virtual] |
Set true if this CollisionModel is changing position between iterations.
Definition at line 175 of file CollisionModel.h.
References bMoving.
Referenced by main().
| void sofa::core::CollisionModel::setNext | ( | CollisionModel * | val | ) | [inline] |
Set the next (finer / lower / child level) CollisionModel in the hierarchy.
Definition at line 148 of file CollisionModel.h.
References next.
Referenced by createPrevious().
| void sofa::core::CollisionModel::setNumberOfContacts | ( | int | i | ) | [inline] |
Set the number of contacts attached to the collision model.
Definition at line 112 of file CollisionModel.h.
References numberOfContacts.
| void sofa::core::CollisionModel::setPrevious | ( | CollisionModel * | val | ) | [inline] |
Set the previous (coarser / upper / parent level) CollisionModel in the hierarchy.
Definition at line 154 of file CollisionModel.h.
References previous.
Referenced by sofa::component::collision::GridModel::computeBoundingTree(), and sofa::component::collision::CubeModel::computeBoundingTree().
| virtual void sofa::core::CollisionModel::setSimulated | ( | bool | val = true |
) | [inline, virtual] |
Set true if this CollisionModel is attached to a simulation.
Definition at line 185 of file CollisionModel.h.
References bSimulated.
Referenced by main().
Data<bool> sofa::core::CollisionModel::bActive [protected] |
flag indicating if this collision model is active and should be included in default collision detections
Definition at line 342 of file CollisionModel.h.
Referenced by isActive(), and setActive().
Data<bool> sofa::core::CollisionModel::bMoving [protected] |
flag indicating if this object is changing position between iterations
Definition at line 348 of file CollisionModel.h.
Referenced by isMoving(), and setMoving().
Data<bool> sofa::core::CollisionModel::bSelfCollision [protected] |
flag indication if the object can self collide
Definition at line 352 of file CollisionModel.h.
Referenced by canCollideWith(), sofa::component::collision::PointModel::canCollideWithElement(), and sofa::component::collision::LineModel::canCollideWithElement().
Data<bool> sofa::core::CollisionModel::bSimulated [protected] |
flag indicating if this object is controlled by a simulation
Definition at line 350 of file CollisionModel.h.
Referenced by isSimulated(), and setSimulated().
Data<defaulttype::Vec4f> sofa::core::CollisionModel::color [protected] |
color used to display the collision model if requested
Definition at line 367 of file CollisionModel.h.
Referenced by sofa::component::collision::SphereTreeModel::draw(), sofa::component::collision::GridModel::draw(), sofa::component::collision::CubeModel::draw(), getColor4f(), and setColor4f().
Data<double> sofa::core::CollisionModel::contactFriction [protected] |
Default contact friction (damping) coefficient.
Definition at line 358 of file CollisionModel.h.
Referenced by getContactFriction(), and setContactFriction().
Data<std::string> sofa::core::CollisionModel::contactResponse [protected] |
contactResponse", "if set, indicate to the ContactManager that this model should use the given class of contacts.
that this is only indicative, and in particular if both collision models specify a different class it is up to the manager to choose.
Definition at line 362 of file CollisionModel.h.
Referenced by getContactResponse().
Data<double> sofa::core::CollisionModel::contactStiffness [protected] |
Default contact stiffness.
Definition at line 356 of file CollisionModel.h.
Referenced by getContactStiffness(), sofa::component::collision::RayPickInteractor::RayPickInteractor(), and setContactStiffness().
Data<int> sofa::core::CollisionModel::group [protected] |
If not zero, ID of a group containing this model.
No collision can occur between collision models of the same group (allowing the same object to have multiple collision models
Definition at line 365 of file CollisionModel.h.
Referenced by canCollideWith(), and createPrevious().
CollisionModel* sofa::core::CollisionModel::next [protected] |
Pointer to the next (finer / lower / child level) CollisionModel in the hierarchy.
Definition at line 376 of file CollisionModel.h.
int sofa::core::CollisionModel::numberOfContacts [protected] |
number of contacts attached to the collision model
Definition at line 379 of file CollisionModel.h.
Referenced by getNumberOfContacts(), and setNumberOfContacts().
CollisionModel* sofa::core::CollisionModel::previous [protected] |
Pointer to the previous (coarser / upper / parent level) CollisionModel in the hierarchy.
Definition at line 373 of file CollisionModel.h.
Referenced by createPrevious(), getPrevious(), and setPrevious().
Data<double> sofa::core::CollisionModel::proximity [protected] |
Distance to the actual (visual) surface.
Definition at line 354 of file CollisionModel.h.
Referenced by createPrevious(), and getProximity().
int sofa::core::CollisionModel::size [protected] |
Number of collision elements.
Definition at line 370 of file CollisionModel.h.
Referenced by sofa::component::collision::CubeModel::addCube(), sofa::component::collision::SphereTreeModel::addSphere(), sofa::component::collision::TSphereModel< TDataTypes >::addSphere(), sofa::component::collision::SphereTreeModel::applyScale(), sofa::component::collision::TSphereModel< TDataTypes >::applyScale(), sofa::gpu::cuda::CudaPointModel::computeBoundingTree(), sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::computeBoundingTree(), sofa::component::collision::TriangleOctreeModel::computeBoundingTree(), sofa::component::collision::TriangleModel::computeBoundingTree(), sofa::component::collision::TetrahedronModel::computeBoundingTree(), sofa::component::collision::TSphereModel< TDataTypes >::computeBoundingTree(), sofa::component::collision::SpatialGridPointModel::computeBoundingTree(), sofa::component::collision::RayModel::computeBoundingTree(), sofa::component::collision::PointModel::computeBoundingTree(), sofa::component::collision::LineModel::computeBoundingTree(), sofa::component::collision::GridModel::computeBoundingTree(), sofa::component::collision::FFDDistanceGridCollisionModel::computeBoundingTree(), sofa::component::collision::RigidDistanceGridCollisionModel::computeBoundingTree(), sofa::component::collision::CubeModel::computeBoundingTree(), sofa::component::collision::TriangleModel::computeContinuousBoundingTree(), sofa::component::collision::TSphereModel< TDataTypes >::computeContinuousBoundingTree(), sofa::component::collision::PointModel::computeContinuousBoundingTree(), sofa::component::collision::LineModel::computeContinuousBoundingTree(), sofa::gpu::cuda::CudaPointModel::draw(), sofa::component::collision::TriangleModel::draw(), sofa::component::collision::TetrahedronModel::draw(), sofa::component::collision::TSphereModel< TDataTypes >::draw(), sofa::component::collision::RayModel::draw(), sofa::component::collision::PointModel::draw(), sofa::component::collision::LineModel::draw(), sofa::component::collision::CubeModel::draw(), empty(), end(), sofa::component::collision::SphereTreeModel::getInternalChildren(), sofa::component::collision::RayModel::getNbRay(), getSize(), sofa::component::collision::CarvingManager::init(), sofa::component::collision::SphereTreeModel::isLeaf(), resize(), sofa::component::collision::SphereTreeModel::setSphere(), sofa::component::collision::TSphereModel< TDataTypes >::setSphere(), sofa::component::collision::CubeModel::updateCubes(), sofa::component::collision::TriangleModel::updateFromTopology(), sofa::component::collision::FFDDistanceGridCollisionModel::updateGrid(), and sofa::component::collision::TriangleModel::updateNormals().
1.5.7.1