Description
Class for wrapping the NvConvexDecomposition code by John W.
Ratcliff.
#include <ChCConvexDecomposition.h>
Public Member Functions | |
ChConvexDecompositionJR () | |
Basic constructor. | |
virtual | ~ChConvexDecompositionJR () |
Destructor. | |
virtual void | Reset (void) |
Access directly the wrapped J.W.Ratcliff convex decomposition object although it shouldn't be necessary, since this class already provide wrapping to all the functions). More... | |
virtual bool | AddTriangle (const ChVector<> &v1, const ChVector<> &v2, const ChVector<> &v3) |
Add a triangle, by passing three points for vertexes. More... | |
virtual bool | AddTriangleMesh (const geometry::ChTriangleMesh &tm) |
Add a triangle mesh soup, by passing an entire ChTriangleMesh object. More... | |
void | SetParameters (float mskinWidth, unsigned int mdecompositionDepth, unsigned int mmaxHullVertices, float mconcavityThresholdPercent, float mmergeThresholdPercent, float mvolumeSplitThresholdPercent, bool museInitialIslandGeneration, bool museIslandGeneration) |
Set the parameters for this convex decomposition algorithm. More... | |
virtual int | ComputeConvexDecomposition () |
Perform the convex decomposition. More... | |
virtual unsigned int | GetHullCount () |
Get the number of computed hulls after the convex decomposition. | |
virtual bool | GetConvexHullResult (unsigned int hullIndex, geometry::ChTriangleMesh &convextrimesh) |
Get the n-th computed convex hull, by filling a ChTriangleMesh object that is passed as a parameter. | |
virtual bool | GetConvexHullResult (unsigned int hullIndex, std::vector< ChVector< double > > &convexhull) |
Get the n-th computed convex hull, by filling a vector of points of the vertexes of the n-th hull that is passed as a parameter. | |
virtual void | WriteConvexHullsAsWavefrontObj (ChStreamOutAscii &mstream) |
Save the computed convex hulls as a Wavefront file using the '.obj' fileformat, with each hull as a separate group. More... | |
Public Member Functions inherited from chrono::collision::ChConvexDecomposition | |
ChConvexDecomposition () | |
Basic constructor. | |
virtual | ~ChConvexDecomposition () |
Destructor. | |
virtual bool | AddTriangle (const geometry::ChTriangle &t1) |
Add a triangle, by passing a ChTriangle object (that will be copied, not referenced). More... | |
virtual bool | WriteConvexHullsAsChullsFile (ChStreamOutAscii &mstream) |
Write the convex decomposition to a ".chulls" file, where each hull is a sequence of x y z coords. More... | |
Member Function Documentation
◆ AddTriangle()
|
virtual |
Add a triangle, by passing three points for vertexes.
Note: the vertexes must be properly ordered (oriented triangle, normal pointing outside)
Implements chrono::collision::ChConvexDecomposition.
◆ AddTriangleMesh()
|
virtual |
Add a triangle mesh soup, by passing an entire ChTriangleMesh object.
Note 1: the triangle mesh does not need connectivity information (a basic 'triangle soup' is enough) Note 2: all vertexes must be properly ordered (oriented triangles, normals pointing outside). Note 3: the triangles must define closed volumes (holes, gaps in edges, etc. may trouble the decomposition)
Reimplemented from chrono::collision::ChConvexDecomposition.
◆ ComputeConvexDecomposition()
|
virtual |
Perform the convex decomposition.
This operation is time consuming, and it may take a while to complete. Quality of the results can depend a lot on the parameters. Also, meshes with triangles that are not well oriented (normals always pointing outside) or with gaps/holes, may give wrong results.
Implements chrono::collision::ChConvexDecomposition.
◆ Reset()
|
virtual |
Access directly the wrapped J.W.Ratcliff convex decomposition object although it shouldn't be necessary, since this class already provide wrapping to all the functions).
Reset the input mesh data
Implements chrono::collision::ChConvexDecomposition.
◆ SetParameters()
void chrono::collision::ChConvexDecompositionJR::SetParameters | ( | float | mskinWidth, |
unsigned int | mdecompositionDepth, | ||
unsigned int | mmaxHullVertices, | ||
float | mconcavityThresholdPercent, | ||
float | mmergeThresholdPercent, | ||
float | mvolumeSplitThresholdPercent, | ||
bool | museInitialIslandGeneration, | ||
bool | museIslandGeneration | ||
) |
Set the parameters for this convex decomposition algorithm.
Use this function before calling ComputeConvexDecomposition().
- Parameters
-
mskinWidth Skin width on the convex hulls generated mdecompositionDepth Recursion depth for convex decomposition. mmaxHullVertices Maximum number of vertices in output convex hulls. mconcavityThresholdPercent The percentage of concavity allowed without causing a split to occur. mmergeThresholdPercent The percentage of volume difference allowed to merge two convex hulls. mvolumeSplitThresholdPercent The percentage of the total volume of the object above which splits museInitialIslandGeneration will still occur. Whether or not to perform initial island generation on the input mesh. museIslandGeneration Whether or not to perform island generation at each split. Currently disabled.
◆ WriteConvexHullsAsWavefrontObj()
|
virtual |
Save the computed convex hulls as a Wavefront file using the '.obj' fileformat, with each hull as a separate group.
May throw exceptions if file locked etc.
Implements chrono::collision::ChConvexDecomposition.
The documentation for this class was generated from the following files:
- /builds/uwsbel/chrono/src/chrono/collision/ChCConvexDecomposition.h
- /builds/uwsbel/chrono/src/chrono/collision/ChCConvexDecomposition.cpp