Class that can generate Mesh objects from Cube objects.
More...
#include <avogadro/qtgui/meshgenerator.h>
|
Vector3f | normal (const Vector3f &pos) |
|
float | offset (float val1, float val2) |
|
unsigned long | duplicate (const Vector3i &c, const Vector3f &pos) |
|
bool | marchingCube (const Vector3i &pos) |
|
|
static const float | a2fVertexOffset [8][3] |
|
static const int | a2iVertexOffset [8][3] |
|
static const int | a2iEdgeConnection [12][2] |
|
static const float | a2fEdgeDirection [12][3] |
|
static const int | a2iTetrahedronEdgeConnection [6][2] |
|
static const int | a2iTetrahedronsInACube [6][4] |
|
static const long | aiTetrahedronEdgeFlags [16] |
|
static const int | a2iTetrahedronTriangles [16][7] |
|
static const long | aiCubeEdgeFlags [256] |
|
static const int | a2iTriangleConnectionTable [256][16] |
|
- Author
- Marcus D. Hanwell
This class implements a method of generating an isosurface Mesh from volumetric data using the marching cubes algorithm. In the case of the MeshGenerator class it expects a Cube as an input and an isosurface value. The tables and the basic code is taken from the public domain code written by Cory Bloyd (marchingsource.cpp) and available at, http://local.wasp.uwa.edu.au/~pbourke/geometry/polygonise/
You must first initialize the class and then call run() to actually polygonize the isosurface. Connect to the classes finished() signal to do something once the polygonization is complete.
Constructor. Can be used to initialize the MeshGenerator.
- Parameters
-
cube | The source Cube with the volumetric data. |
mesh | The Mesh that will hold the isosurface. |
iso | The iso value of the surface. |
- Returns
- True if the MeshGenerator was successfully initialized.
Initialization function, set up the MeshGenerator ready to find an isosurface of the supplied Cube.
- Parameters
-
cube | The source Cube with the volumetric data. |
mesh | The Mesh that will hold the isosurface. |
iso | The iso value of the surface. |
Use this function to begin Mesh generation. Uses an asynchronous thread, and so avoids locking the user interface while the isosurface is found.
- Returns
- The Cube being used by the class.
- Returns
- The Mesh being generated by the class.
- Returns
- The minimum value of the progress value.
- Returns
- The maximum value of the progress value.
void progressValueChanged |
( |
int |
| ) |
|
|
signal |
The current value of the calculation's progress.
Vector3f normal |
( |
const Vector3f & |
pos | ) |
|
|
protected |
Get the normal to the supplied point. This operation is quite expensive and so should be avoided wherever possible.
- Parameters
-
pos | The position of the vertex whose normal is needed. |
- Returns
- The normal vector for the supplied point.
float offset |
( |
float |
val1, |
|
|
float |
val2 |
|
) |
| |
|
protected |
Get the offset, i.e. the approximate point of intersection of the surface between two points.
- Parameters
-
val1 | The position of the vertex whose normal is needed. |
- Returns
- The normal vector for the supplied point.
bool marchingCube |
( |
const Vector3i & |
pos | ) |
|
|
protected |
Perform a marching cubes step on a single cube.
The value of the isosurface.
Whether the winding and normals are reversed
The cube that we are generating a Mesh from.
The mesh that is being generated.
The step size vector for cube
The minimum point in the cube.
The dimensions of the cube.
const float a2fVertexOffset[8][3] |
|
staticprotected |
The documentation for this class was generated from the following file: