sofa::helper::MarchingCubeUtility Class Reference

#include <MarchingCubeUtility.h>

Collaboration diagram for sofa::helper::MarchingCubeUtility:

Collaboration graph
[legend]

Data Structures

struct  GridCell

Public Types

typedef unsigned int PointID
typedef Vec< 3, int > Vec3i

Public Member Functions

 MarchingCubeUtility ()
 ~MarchingCubeUtility ()
void setDataResolution (const Vec3i &resolution)
void setDataVoxelSize (const Vector3 &voxelSize)
void setStep (const unsigned int step)
void setConvolutionSize (const unsigned int convolutionSize)
void run (const unsigned char *data, const float isolevel, sofa::helper::vector< PointID > &triangles, sofa::helper::vector< Vector3 > &vertices) const
 given a set of data (size of the data and size of the marching cube beeing defined previously), we construct the surface.
void run (const unsigned char *data, const float isolevel, sofa::helper::io::Mesh &m) const
 given a set of data (size of the data and size of the marching cube beeing defined previously), we construct a Sofa mesh.

Private Member Functions

void vertexInterp (const float isolevel, const Vector3 &p1, const Vector3 &p2, const float valp1, const float valp2, Vector3 &p) const
bool testGrid (const float v, const float isolevel) const
int polygonise (const GridCell &grid, const float isolevel, sofa::helper::vector< PointID > &triangles, std::map< Vector3, PointID > &map_vertices, std::map< PointID, Vector3 > &map_indices, unsigned int &ID) const
bool getVoxel (unsigned int index, const unsigned char *dataVoxels) const
void createConvolutionKernel (vector< float > &convolutionKernel) const
void applyConvolution (unsigned int x, unsigned int y, unsigned int z, const float *original_data, float *data, const vector< float > &convolutionKernel) const
void smoothData (float *data) const

Private Attributes

unsigned int cubeStep
unsigned int convolutionSize
Vec3i dataResolution
Vector3 dataVoxelSize

Detailed Description

Definition at line 45 of file MarchingCubeUtility.h.


Member Typedef Documentation

Definition at line 48 of file MarchingCubeUtility.h.

Definition at line 49 of file MarchingCubeUtility.h.


Constructor & Destructor Documentation

sofa::helper::MarchingCubeUtility::MarchingCubeUtility (  ) 

Definition at line 339 of file MarchingCubeUtility.cpp.

sofa::helper::MarchingCubeUtility::~MarchingCubeUtility (  )  [inline]

Definition at line 54 of file MarchingCubeUtility.h.


Member Function Documentation

void sofa::helper::MarchingCubeUtility::applyConvolution ( unsigned int  x,
unsigned int  y,
unsigned int  z,
const float *  original_data,
float *  data,
const vector< float > &  convolutionKernel 
) const [private]

Definition at line 604 of file MarchingCubeUtility.cpp.

References convolutionSize, and dataResolution.

Referenced by smoothData().

void sofa::helper::MarchingCubeUtility::createConvolutionKernel ( vector< float > &  convolutionKernel  )  const [private]

Definition at line 629 of file MarchingCubeUtility.cpp.

References convolutionSize.

Referenced by smoothData().

bool sofa::helper::MarchingCubeUtility::getVoxel ( unsigned int  index,
const unsigned char *  dataVoxels 
) const [inline, private]

Definition at line 107 of file MarchingCubeUtility.h.

Referenced by run().

int sofa::helper::MarchingCubeUtility::polygonise ( const GridCell &  grid,
const float  isolevel,
sofa::helper::vector< PointID > &  triangles,
std::map< Vector3, PointID > &  map_vertices,
std::map< PointID, Vector3 > &  map_indices,
unsigned int &  ID 
) const [private]

void sofa::helper::MarchingCubeUtility::run ( const unsigned char *  data,
const float  isolevel,
sofa::helper::io::Mesh &  m 
) const

given a set of data (size of the data and size of the marching cube beeing defined previously), we construct a Sofa mesh.

Definition at line 552 of file MarchingCubeUtility.cpp.

References sofa::helper::io::Mesh::getFacets(), sofa::helper::io::Mesh::getVertices(), and run().

void sofa::helper::MarchingCubeUtility::run ( const unsigned char *  data,
const float  isolevel,
sofa::helper::vector< PointID > &  triangles,
sofa::helper::vector< Vector3 > &  vertices 
) const

given a set of data (size of the data and size of the marching cube beeing defined previously), we construct the surface.

mesh is a vector containing the triangles defined as a sequence of three indices map_indices gives the correspondance between an indice and a 3d position in space

Definition at line 463 of file MarchingCubeUtility.cpp.

References convolutionSize, cubeStep, dataResolution, getVoxel(), sofa::defaulttype::Vec< N, real >::linearProduct(), polygonise(), sofa::helper::MarchingCubeUtility::GridCell::pos, smoothData(), and sofa::helper::MarchingCubeUtility::GridCell::val.

Referenced by sofa::component::topology::SparseGridTopology::constructCollisionModels(), sofa::component::topology::SparseGridTopology::getMesh(), and run().

void sofa::helper::MarchingCubeUtility::setConvolutionSize ( const unsigned int  convolutionSize  )  [inline]

void sofa::helper::MarchingCubeUtility::setDataResolution ( const Vec3i &  resolution  )  [inline]

void sofa::helper::MarchingCubeUtility::setDataVoxelSize ( const Vector3 &  voxelSize  )  [inline]

void sofa::helper::MarchingCubeUtility::setStep ( const unsigned int  step  )  [inline]

Definition at line 66 of file MarchingCubeUtility.h.

References cubeStep.

Referenced by sofa::component::topology::SparseGridTopology::updateMesh().

void sofa::helper::MarchingCubeUtility::smoothData ( float *  data  )  const [private]

Definition at line 580 of file MarchingCubeUtility.cpp.

References applyConvolution(), convolutionSize, createConvolutionKernel(), and dataResolution.

Referenced by run().

bool sofa::helper::MarchingCubeUtility::testGrid ( const float  v,
const float  isolevel 
) const [inline, private]

Definition at line 361 of file MarchingCubeUtility.cpp.

Referenced by polygonise().

void sofa::helper::MarchingCubeUtility::vertexInterp ( const float  isolevel,
const Vector3 &  p1,
const Vector3 &  p2,
const float  valp1,
const float  valp2,
Vector3 &  p 
) const [inline, private]

Definition at line 348 of file MarchingCubeUtility.cpp.

References dataResolution, dataVoxelSize, and PRECISION.

Referenced by polygonise().


Field Documentation

Definition at line 123 of file MarchingCubeUtility.h.

Referenced by applyConvolution(), createConvolutionKernel(), run(), and smoothData().

Definition at line 122 of file MarchingCubeUtility.h.

Referenced by run(), and setStep().

Definition at line 125 of file MarchingCubeUtility.h.

Referenced by setDataVoxelSize(), and vertexInterp().


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

Generated on Sun Nov 23 04:24:17 2008 for Sofa by  doxygen 1.5.7.1