hpp-fcl: hpp::fcl::BVHModelBase Class Reference

hpp-fcl 1.7.5 HPP fork of FCL -- The Flexible Collision Library

Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
hpp::fcl::BVHModelBase Class Referenceabstract
Construction of BVHModel

A base class describing the bounding hierarchy of a mesh model or a point cloud model (which is viewed as a degraded version of mesh) More...

`#include <hpp/fcl/BVH/BVH_model.h>`

Inheritance diagram for hpp::fcl::BVHModelBase:

## Public Member Functions
BVHModelType | getModelType () const
| Model type described by the instance. More...
| BVHModelBase ()
| Constructing an empty BVH. More...
| BVHModelBase (const BVHModelBase &other)
| copy from another BVH More...
virtual | ~BVHModelBase ()
| deconstruction, delete mesh data related. More...
bool | operator== (const BVHModelBase &other) const
| Comparison operators. More...
bool | operator!= (const BVHModelBase &other) const
| Difference operator. More...
OBJECT_TYPE | getObjectType () const
| Get the object type: it is a BVH. More...
void | computeLocalAABB ()
| Compute the AABB for the BVH, used for broad-phase collision. More...
int | beginModel (int num_tris=0, int num_vertices=0)
| Begin a new BVH model. More...
int | addVertex (const Vec3f &p)
| Add one point in the new BVH model. More...
int | addVertices (const Matrixx3f &points)
| Add points in the new BVH model. More...
int | addTriangles (const Matrixx3i &triangles)
| Add triangles in the new BVH model. More...
int | addTriangle (const Vec3f &p1, const Vec3f &p2, const Vec3f &p3)
| Add one triangle in the new BVH model. More...
int | addSubModel (const std::vector< Vec3f > &ps, const std::vector< Triangle > &ts)
| Add a set of triangles in the new BVH model. More...
int | addSubModel (const std::vector< Vec3f > &ps)
| Add a set of points in the new BVH model. More...
int | endModel ()
| End BVH model construction, will build the bounding volume hierarchy. More...
int | beginReplaceModel ()
| Replace the geometry information of current frame (i.e. should have the same mesh topology with the previous frame) More...
int | replaceVertex (const Vec3f &p)
| Replace one point in the old BVH model. More...
int | replaceTriangle (const Vec3f &p1, const Vec3f &p2, const Vec3f &p3)
| Replace one triangle in the old BVH model. More...
int | replaceSubModel (const std::vector< Vec3f > &ps)
| Replace a set of points in the old BVH model. More...
int | endReplaceModel (bool refit=true, bool bottomup=true)
| End BVH model replacement, will also refit or rebuild the bounding volume hierarchy. More...
int | beginUpdateModel ()
| Replace the geometry information of current frame (i.e. should have the same mesh topology with the previous frame). The current frame will be saved as the previous frame in prev_vertices. More...
int | updateVertex (const Vec3f &p)
| Update one point in the old BVH model. More...
int | updateTriangle (const Vec3f &p1, const Vec3f &p2, const Vec3f &p3)
| Update one triangle in the old BVH model. More...
int | updateSubModel (const std::vector< Vec3f > &ps)
| Update a set of points in the old BVH model. More...
int | endUpdateModel (bool refit=true, bool bottomup=true)
| End BVH model update, will also refit or rebuild the bounding volume hierarchy. More...
void | buildConvexRepresentation (bool share_memory)
| Build this Convex<Triangle> representation of this model. The result is stored in attribute convex. More...
bool | buildConvexHull (bool keepTriangle, const char *qhullCommand=NULL)
| Build a convex hull and store it in attribute convex. More...
virtual int | memUsage (const bool msg=false) const =0
virtual void | makeParentRelative ()=0
| This is a special acceleration: BVH_model default stores the BV's transform in world coordinate. However, we can also store each BV's transform related to its parent BV node. When traversing the BVH, this can save one matrix transformation. More...
Vec3f | computeCOM () const
| compute center of mass More...
FCL_REAL | computeVolume () const
| compute the volume More...
Matrix3f | computeMomentofInertia () const
| compute the inertia matrix, related to the origin More...
Public Member Functions inherited from hpp::fcl::CollisionGeometry
| CollisionGeometry ()
| CollisionGeometry (const CollisionGeometry &other)
| Copy constructor. More...
virtual | ~CollisionGeometry ()
virtual CollisionGeometry * | clone () const =0
| Clone *this into a new CollisionGeometry. More...
bool | operator== (const CollisionGeometry &other) const
| Equality operator. More...
bool | operator!= (const CollisionGeometry &other) const
| Difference operator. More...
virtual NODE_TYPE | getNodeType () const
| get the node type More...
void * | getUserData () const
| get user data in geometry More...
void | setUserData (void *data)
| set user data in geometry More...
bool | isOccupied () const
| whether the object is completely occupied More...
bool | isFree () const
| whether the object is completely free More...
bool | isUncertain () const
| whether the object has some uncertainty More...
virtual Matrix3f | computeMomentofInertiaRelatedToCOM () const
| compute the inertia matrix, related to the com More...

## Public Attributes
Vec3f * | vertices
| Geometry point data. More...
Triangle * | tri_indices
| Geometry triangle index data, will be NULL for point clouds. More...
Vec3f * | prev_vertices
| Geometry point data in previous frame. More...
int | num_tris
| Number of triangles. More...
int | num_vertices
| Number of points. More...
BVHBuildState | build_state
| The state of BVH building process. More...
shared_ptr< ConvexBase > | convex
| Convex<Triangle> representation of this object. More...
Public Attributes inherited from hpp::fcl::CollisionGeometry
Vec3f | aabb_center
| AABB center in local coordinate. More...
FCL_REAL | aabb_radius
| AABB radius. More...
AABB | aabb_local
| AABB in local coordinate, used for tight AABB when only translation transform. More...
void * | user_data
| pointer to user defined data specific to this object More...
FCL_REAL | cost_density
| collision cost for unit volume More...
FCL_REAL | threshold_occupied
| threshold for occupied ( >= is occupied) More...
FCL_REAL | threshold_free
| threshold for free (<= is free) More...

## Protected Member Functions
virtual void | deleteBVs ()=0
virtual bool | allocateBVs ()=0
virtual int | buildTree ()=0
| Build the bounding volume hierarchy. More...
virtual int | refitTree (bool bottomup)=0
| Refit the bounding volume hierarchy. More...

## Protected Attributes
int | num_tris_allocated
int | num_vertices_allocated
int | num_vertex_updated

## Detailed Description

A base class describing the bounding hierarchy of a mesh model or a point cloud model (which is viewed as a degraded version of mesh)

## Constructor & Destructor Documentation

## ◆ BVHModelBase() [1/2]

hpp::fcl::BVHModelBase::BVHModelBase | ( |  | ) |

Constructing an empty BVH.

## ◆ BVHModelBase() [2/2]

hpp::fcl::BVHModelBase::BVHModelBase | ( | const BVHModelBase & | other | ) |

copy from another BVH

## ◆ ~BVHModelBase()

virtual hpp::fcl::BVHModelBase::~BVHModelBase | ( |  | ) |
| inlinevirtual

deconstruction, delete mesh data related.

## Member Function Documentation

## ◆ addSubModel() [1/2]

int hpp::fcl::BVHModelBase::addSubModel | ( | const std::vector< Vec3f > & | ps | ) |

Add a set of points in the new BVH model.

## ◆ addSubModel() [2/2]

int hpp::fcl::BVHModelBase::addSubModel | ( | const std::vector< Vec3f > & | ps,
|  | const std::vector< Triangle > & | ts
| ) |  |

Add a set of triangles in the new BVH model.

## ◆ addTriangle()

int hpp::fcl::BVHModelBase::addTriangle | ( | const Vec3f & | p1,
|  | const Vec3f & | p2,
|  | const Vec3f & | p3
| ) |  |

Add one triangle in the new BVH model.

## ◆ addTriangles()

int hpp::fcl::BVHModelBase::addTriangles | ( | const Matrixx3i & | triangles | ) |

Add triangles in the new BVH model.

## ◆ addVertex()

int hpp::fcl::BVHModelBase::addVertex | ( | const Vec3f & | p | ) |

Add one point in the new BVH model.

## ◆ addVertices()

int hpp::fcl::BVHModelBase::addVertices | ( | const Matrixx3f & | points | ) |

Add points in the new BVH model.

## ◆ allocateBVs()

virtual bool hpp::fcl::BVHModelBase::allocateBVs | ( |  | ) |
| protectedpure virtual

Implemented in hpp::fcl::BVHModel< BV >.

## ◆ beginModel()

int hpp::fcl::BVHModelBase::beginModel | ( | int | num_tris = `0`,
|  | int | num_vertices = `0`
| ) |  |

Begin a new BVH model.

## ◆ beginReplaceModel()

int hpp::fcl::BVHModelBase::beginReplaceModel | ( |  | ) |

Replace the geometry information of current frame (i.e. should have the same mesh topology with the previous frame)

## ◆ beginUpdateModel()

int hpp::fcl::BVHModelBase::beginUpdateModel | ( |  | ) |

Replace the geometry information of current frame (i.e. should have the same mesh topology with the previous frame). The current frame will be saved as the previous frame in prev_vertices.

## ◆ buildConvexHull()

bool hpp::fcl::BVHModelBase::buildConvexHull | ( | bool | keepTriangle,
|  | const char * | qhullCommand = `NULL`
| ) |  |

Build a convex hull and store it in attribute convex.

Parameters

  keepTriangle | whether the convex should be triangulated.
  qhullCommand | see ConvexBase::convexHull.

Returns
  `true` if this object is convex, hence the convex hull represents the same object.

See also
  ConvexBase::convexHull

Warning
  At the moment, the return value only checks whether there are as many points in the convex hull as in the original object. This is neither necessary (duplicated vertices get merged) nor sufficient (think of a U with 4 vertices and 3 edges).

## ◆ buildConvexRepresentation()

void hpp::fcl::BVHModelBase::buildConvexRepresentation | ( | bool | share_memory | ) |

Build this Convex<Triangle> representation of this model. The result is stored in attribute convex.

Note
  this only takes the points of this model. It does not check that the object is convex. It does not compute a convex hull.

## ◆ buildTree()

virtual int hpp::fcl::BVHModelBase::buildTree | ( |  | ) |
| protectedpure virtual

Build the bounding volume hierarchy.

Implemented in hpp::fcl::BVHModel< BV >.

## ◆ computeCOM()

Vec3f hpp::fcl::BVHModelBase::computeCOM | ( |  | ) | const
| inlinevirtual

compute center of mass

Reimplemented from hpp::fcl::CollisionGeometry.

## ◆ computeLocalAABB()

void hpp::fcl::BVHModelBase::computeLocalAABB | ( |  | ) |
| virtual

Compute the AABB for the BVH, used for broad-phase collision.

Implements hpp::fcl::CollisionGeometry.

## ◆ computeMomentofInertia()

Matrix3f hpp::fcl::BVHModelBase::computeMomentofInertia | ( |  | ) | const
| inlinevirtual

compute the inertia matrix, related to the origin

Reimplemented from hpp::fcl::CollisionGeometry.

## ◆ computeVolume()

FCL_REAL hpp::fcl::BVHModelBase::computeVolume | ( |  | ) | const
| inlinevirtual

compute the volume

Reimplemented from hpp::fcl::CollisionGeometry.

## ◆ deleteBVs()

virtual void hpp::fcl::BVHModelBase::deleteBVs | ( |  | ) |
| protectedpure virtual

Implemented in hpp::fcl::BVHModel< BV >.

## ◆ endModel()

int hpp::fcl::BVHModelBase::endModel | ( |  | ) |

End BVH model construction, will build the bounding volume hierarchy.

## ◆ endReplaceModel()

int hpp::fcl::BVHModelBase::endReplaceModel | ( | bool | refit = `true`,
|  | bool | bottomup = `true`
| ) |  |

End BVH model replacement, will also refit or rebuild the bounding volume hierarchy.

## ◆ endUpdateModel()

int hpp::fcl::BVHModelBase::endUpdateModel | ( | bool | refit = `true`,
|  | bool | bottomup = `true`
| ) |  |

End BVH model update, will also refit or rebuild the bounding volume hierarchy.

## ◆ getModelType()

BVHModelType hpp::fcl::BVHModelBase::getModelType | ( |  | ) | const
| inline

Model type described by the instance.

## ◆ getObjectType()

OBJECT_TYPE hpp::fcl::BVHModelBase::getObjectType | ( |  | ) | const
| inlinevirtual

Get the object type: it is a BVH.

Reimplemented from hpp::fcl::CollisionGeometry.

## ◆ makeParentRelative()

virtual void hpp::fcl::BVHModelBase::makeParentRelative | ( |  | ) |
| pure virtual

This is a special acceleration: BVH_model default stores the BV's transform in world coordinate. However, we can also store each BV's transform related to its parent BV node. When traversing the BVH, this can save one matrix transformation.

Implemented in hpp::fcl::BVHModel< BV >.

## ◆ memUsage()

virtual int hpp::fcl::BVHModelBase::memUsage | ( | const bool | msg = `false` | ) | const
| pure virtual

Implemented in hpp::fcl::BVHModel< BV >.

## ◆ operator!=()

bool hpp::fcl::BVHModelBase::operator!= | ( | const BVHModelBase & | other | ) | const
| inline

Difference operator.

## ◆ operator==()

bool hpp::fcl::BVHModelBase::operator== | ( | const BVHModelBase & | other | ) | const

Comparison operators.

## ◆ refitTree()

virtual int hpp::fcl::BVHModelBase::refitTree | ( | bool | bottomup | ) |
| protectedpure virtual

Refit the bounding volume hierarchy.

Implemented in hpp::fcl::BVHModel< BV >.

## ◆ replaceSubModel()

int hpp::fcl::BVHModelBase::replaceSubModel | ( | const std::vector< Vec3f > & | ps | ) |

Replace a set of points in the old BVH model.

## ◆ replaceTriangle()

int hpp::fcl::BVHModelBase::replaceTriangle | ( | const Vec3f & | p1,
|  | const Vec3f & | p2,
|  | const Vec3f & | p3
| ) |  |

Replace one triangle in the old BVH model.

## ◆ replaceVertex()

int hpp::fcl::BVHModelBase::replaceVertex | ( | const Vec3f & | p | ) |

Replace one point in the old BVH model.

## ◆ updateSubModel()

int hpp::fcl::BVHModelBase::updateSubModel | ( | const std::vector< Vec3f > & | ps | ) |

Update a set of points in the old BVH model.

## ◆ updateTriangle()

int hpp::fcl::BVHModelBase::updateTriangle | ( | const Vec3f & | p1,
|  | const Vec3f & | p2,
|  | const Vec3f & | p3
| ) |  |

Update one triangle in the old BVH model.

## ◆ updateVertex()

int hpp::fcl::BVHModelBase::updateVertex | ( | const Vec3f & | p | ) |

Update one point in the old BVH model.

## Member Data Documentation

## ◆ build_state

BVHBuildState hpp::fcl::BVHModelBase::build_state

The state of BVH building process.

## ◆ convex

shared_ptr< ConvexBase > hpp::fcl::BVHModelBase::convex

Convex<Triangle> representation of this object.

## ◆ num_tris

int hpp::fcl::BVHModelBase::num_tris

Number of triangles.

## ◆ num_tris_allocated

int hpp::fcl::BVHModelBase::num_tris_allocated
| protected

## ◆ num_vertex_updated

int hpp::fcl::BVHModelBase::num_vertex_updated
| protected

## ◆ num_vertices

int hpp::fcl::BVHModelBase::num_vertices

Number of points.

## ◆ num_vertices_allocated

int hpp::fcl::BVHModelBase::num_vertices_allocated
| protected

## ◆ prev_vertices

Vec3f* hpp::fcl::BVHModelBase::prev_vertices

Geometry point data in previous frame.

## ◆ tri_indices

Triangle* hpp::fcl::BVHModelBase::tri_indices

Geometry triangle index data, will be NULL for point clouds.

## ◆ vertices

Vec3f* hpp::fcl::BVHModelBase::vertices

Geometry point data.

The documentation for this class was generated from the following file:

- include/hpp/fcl/BVH/BVH_model.h