Visualization Library

A lightweight C++ OpenGL middleware for 2D/3D graphics
[Home] [Tutorials] [All Classes] [Grouped Classes]

vlVolume::MarchingCubes Class Reference

An efficient implementation of the Marching Cubes algorithm. More...

#include <MarchingCubes.hpp>

List of all members.

Classes

struct  Edge

Public Member Functions

 MarchingCubes ()
void run (bool generate_colors)
void reset ()
const vl::Collection
< VolumeInfo > * 
volumeInfo () const
vl::Collection< VolumeInfo > * volumeInfo ()
void updateColor (const vl::fvec3 &color, int volume_index)
void updateColor (const vl::fvec4 &color, int volume_index)
void updateAlpha (float alpha, int volume_index)
void setHighQualityNormals (bool hq)
 Select hight quality normals for best rendering quality, select low quality normals for best performances.
bool highQualityNormals () const
 Select hight quality normals for best rendering quality, select low quality normals for best performances.

Public Attributes

vl::ref< vl::ArrayFVec3mVertsArray
vl::ref< vl::ArrayFVec3mNormsArray
vl::ref< vl::ArrayFVec4mColorArray
vl::ref< vl::DrawElementsUIntmDrawElements

Protected Member Functions

void computeEdges (Volume *, float threshold)
void processCube (int x, int y, int z, Volume *vol, float threshold)

Static Protected Attributes

static const int mTriangleConnectionTable [256][16]
static const int mCubeEdgeFlags [256]


Detailed Description

An efficient implementation of the Marching Cubes algorithm.

Pictures from the Marching Cubes tutorial.

pagGuideMarchingCubes.jpg
pagGuideMarchingCubes_5.jpg
pagGuideMarchingCubes_1.jpg
pagGuideMarchingCubes_2.jpg
pagGuideMarchingCubes_3.jpg
pagGuideMarchingCubes_4.jpg

Constructor & Destructor Documentation

MarchingCubes::MarchingCubes (  ) 


Member Function Documentation

void MarchingCubes::run ( bool  generate_colors  ) 

void MarchingCubes::reset (  ) 

const vl::Collection<VolumeInfo>* vlVolume::MarchingCubes::volumeInfo (  )  const [inline]

vl::Collection<VolumeInfo>* vlVolume::MarchingCubes::volumeInfo (  )  [inline]

void MarchingCubes::updateColor ( const vl::fvec3 color,
int  volume_index 
)

void MarchingCubes::updateColor ( const vl::fvec4 color,
int  volume_index 
)

void MarchingCubes::updateAlpha ( float  alpha,
int  volume_index 
)

void vlVolume::MarchingCubes::setHighQualityNormals ( bool  hq  )  [inline]

Select hight quality normals for best rendering quality, select low quality normals for best performances.

bool vlVolume::MarchingCubes::highQualityNormals (  )  const [inline]

Select hight quality normals for best rendering quality, select low quality normals for best performances.

void MarchingCubes::computeEdges ( Volume vol,
float  threshold 
) [protected]

void MarchingCubes::processCube ( int  x,
int  y,
int  z,
Volume vol,
float  threshold 
) [protected]


Member Data Documentation

const int MarchingCubes::mTriangleConnectionTable [static, protected]

const int MarchingCubes::mCubeEdgeFlags [static, protected]

Initial value:

{
  0x000, 0x109, 0x203, 0x30a, 0x406, 0x50f, 0x605, 0x70c, 0x80c, 0x905, 0xa0f, 0xb06, 0xc0a, 0xd03, 0xe09, 0xf00,
  0x190, 0x099, 0x393, 0x29a, 0x596, 0x49f, 0x795, 0x69c, 0x99c, 0x895, 0xb9f, 0xa96, 0xd9a, 0xc93, 0xf99, 0xe90,
  0x230, 0x339, 0x033, 0x13a, 0x636, 0x73f, 0x435, 0x53c, 0xa3c, 0xb35, 0x83f, 0x936, 0xe3a, 0xf33, 0xc39, 0xd30,
  0x3a0, 0x2a9, 0x1a3, 0x0aa, 0x7a6, 0x6af, 0x5a5, 0x4ac, 0xbac, 0xaa5, 0x9af, 0x8a6, 0xfaa, 0xea3, 0xda9, 0xca0,
  0x460, 0x569, 0x663, 0x76a, 0x066, 0x16f, 0x265, 0x36c, 0xc6c, 0xd65, 0xe6f, 0xf66, 0x86a, 0x963, 0xa69, 0xb60,
  0x5f0, 0x4f9, 0x7f3, 0x6fa, 0x1f6, 0x0ff, 0x3f5, 0x2fc, 0xdfc, 0xcf5, 0xfff, 0xef6, 0x9fa, 0x8f3, 0xbf9, 0xaf0,
  0x650, 0x759, 0x453, 0x55a, 0x256, 0x35f, 0x055, 0x15c, 0xe5c, 0xf55, 0xc5f, 0xd56, 0xa5a, 0xb53, 0x859, 0x950,
  0x7c0, 0x6c9, 0x5c3, 0x4ca, 0x3c6, 0x2cf, 0x1c5, 0x0cc, 0xfcc, 0xec5, 0xdcf, 0xcc6, 0xbca, 0xac3, 0x9c9, 0x8c0,
  0x8c0, 0x9c9, 0xac3, 0xbca, 0xcc6, 0xdcf, 0xec5, 0xfcc, 0x0cc, 0x1c5, 0x2cf, 0x3c6, 0x4ca, 0x5c3, 0x6c9, 0x7c0,
  0x950, 0x859, 0xb53, 0xa5a, 0xd56, 0xc5f, 0xf55, 0xe5c, 0x15c, 0x055, 0x35f, 0x256, 0x55a, 0x453, 0x759, 0x650,
  0xaf0, 0xbf9, 0x8f3, 0x9fa, 0xef6, 0xfff, 0xcf5, 0xdfc, 0x2fc, 0x3f5, 0x0ff, 0x1f6, 0x6fa, 0x7f3, 0x4f9, 0x5f0,
  0xb60, 0xa69, 0x963, 0x86a, 0xf66, 0xe6f, 0xd65, 0xc6c, 0x36c, 0x265, 0x16f, 0x066, 0x76a, 0x663, 0x569, 0x460,
  0xca0, 0xda9, 0xea3, 0xfaa, 0x8a6, 0x9af, 0xaa5, 0xbac, 0x4ac, 0x5a5, 0x6af, 0x7a6, 0x0aa, 0x1a3, 0x2a9, 0x3a0,
  0xd30, 0xc39, 0xf33, 0xe3a, 0x936, 0x83f, 0xb35, 0xa3c, 0x53c, 0x435, 0x73f, 0x636, 0x13a, 0x033, 0x339, 0x230,
  0xe90, 0xf99, 0xc93, 0xd9a, 0xa96, 0xb9f, 0x895, 0x99c, 0x69c, 0x795, 0x49f, 0x596, 0x29a, 0x393, 0x099, 0x190,
  0xf00, 0xe09, 0xd03, 0xc0a, 0xb06, 0xa0f, 0x905, 0x80c, 0x70c, 0x605, 0x50f, 0x406, 0x30a, 0x203, 0x109, 0x000
}


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

Visualization Library v2010.06 Reference Documentation
Copyright 2005-2009 Michele Bosi. All rights reserved.
Updated on Tue Jun 1 00:57:39 2010.
Permission is granted to use this page to write and publish articles regarding Visualization Library.