Class MarchingCubes

Class Documentation

class MarchingCubes

Performs the marching cubes algorithm to generate a mesh layer from a TSDF.

Implementation taken from Open Chisel https://github.com/personalrobotics/OpenChisel

Public Functions

MarchingCubes()
virtual ~MarchingCubes()

Public Static Functions

static void meshCube(const Eigen::Matrix<FloatingPoint, 3, 8> &vertex_coordinates, const Eigen::Matrix<FloatingPoint, 8, 1> &vertex_sdf, TriangleVector *triangles)
static void meshCube(const Eigen::Matrix<FloatingPoint, 3, 8> &vertex_coords, const Eigen::Matrix<FloatingPoint, 8, 1> &vertex_sdf, VertexIndex *next_index, Mesh *mesh)
static int calculateVertexConfiguration(const Eigen::Matrix<FloatingPoint, 8, 1> &vertex_sdf)
static void interpolateEdgeVertices(const Eigen::Matrix<FloatingPoint, 3, 8> &vertex_coords, const Eigen::Matrix<FloatingPoint, 8, 1> &vertex_sdf, Eigen::Matrix<FloatingPoint, 3, 12> *edge_coords)
static Point interpolateVertex(const Point &vertex1, const Point &vertex2, float sdf1, float sdf2)

Performs linear interpolation on two cube corners to find the approximate zero crossing (surface) value.

Public Static Attributes

int kTriangleTable[256][16]
int kEdgeIndexPairs[12][2]