marching_cubes_jgt
所属分类:3D图形编程
开发工具:Visual C++
文件大小:2970KB
下载次数:30
上传日期:2013-04-21 13:38:43
上 传 者:
wtt123
说明: 在MC(Marching Cubes)算法中,考虑了二义性的问题,是一个很好的程序
(MC (Marching Cubes) algorithm, consider the ambiguity problem, it is a good program)
文件列表:
二义性marching_cubes_jgt\arc.csg (40, 2006-04-27)
二义性marching_cubes_jgt\balls.csg (80, 2006-04-27)
二义性marching_cubes_jgt\balls_annulus.csg (136, 2006-04-27)
二义性marching_cubes_jgt\bottle.csg (73, 2006-04-26)
二义性marching_cubes_jgt\car.csg (264, 2006-04-27)
二义性marching_cubes_jgt\csg.h (6571, 2006-05-25)
二义性marching_cubes_jgt\cube_sphere.csg (48, 2006-04-27)
二义性marching_cubes_jgt\Doxyfile (8865, 2006-04-27)
二义性marching_cubes_jgt\drilled.csg (240, 2006-04-27)
二义性marching_cubes_jgt\fparser.h (4641, 2006-05-25)
二义性marching_cubes_jgt\gl2ps.c (159461, 2006-05-25)
二义性marching_cubes_jgt\gl2ps.h (5452, 2006-05-25)
二义性marching_cubes_jgt\LookUpTable.h (159229, 2006-05-25)
二义性marching_cubes_jgt\LookUpTableTest.cpp (56531, 2006-05-25)
二义性marching_cubes_jgt\LookUpTableTest.dsp (3439, 2004-08-20)
二义性marching_cubes_jgt\LookUpTableTest.vcproj (5105, 2006-05-25)
二义性marching_cubes_jgt\main.cpp (3643, 2006-05-25)
二义性marching_cubes_jgt\mainGLUI.cpp (42386, 2006-05-25)
二义性marching_cubes_jgt\Makefile (3823, 2006-05-25)
二义性marching_cubes_jgt\MarchingCubes.dsp (3796, 2004-08-20)
二义性marching_cubes_jgt\MarchingCubes.dsw (969, 2004-08-20)
二义性marching_cubes_jgt\MarchingCubes.sln (1828, 2006-05-25)
二义性marching_cubes_jgt\MarchingCubes.vcproj (5796, 2013-04-06)
二义性marching_cubes_jgt\MarchingCubesGLUI.dsp (4237, 2004-08-20)
二义性marching_cubes_jgt\MarchingCubesGLUI.vcproj (6909, 2006-05-25)
二义性marching_cubes_jgt\ply.c (95061, 2006-05-25)
二义性marching_cubes_jgt\ply.h (9348, 2006-05-25)
二义性marching_cubes_jgt\spheres_cylinder.csg (56, 2006-04-27)
二义性marching_cubes_jgt\sphere_torii.csg (56, 2006-04-27)
二义性marching_cubes_jgt\MarchingCubes.ncb (13831168, 2013-04-14)
二义性marching_cubes_jgt\MarchingCubes.suo (26624, 2013-04-14)
二义性marching_cubes_jgt\LookUpTableTest.vcproj.WWW-C6EE5ED92D2.Administrator.user (1433, 2013-04-14)
二义性marching_cubes_jgt\MarchingCubes.vcproj.WWW-C6EE5ED92D2.Administrator.user (1433, 2013-04-14)
二义性marching_cubes_jgt\MarchingCubesGLUI.vcproj.WWW-C6EE5ED92D2.Administrator.user (1433, 2013-04-14)
二义性marching_cubes_jgt\fparser.cpp (91872, 2013-03-15)
二义性marching_cubes_jgt\MarchingCubes.h (13441, 2013-04-06)
二义性marching_cubes_jgt\MarchingCubes.cpp (40474, 2013-04-06)
二义性marching_cubes_jgt (0, 2006-06-02)
Efficient Implementation of Marching Cubes' Cases
with Topological Guarantees
---------------------------------------------------
1. Authors
2. Introduction
3. Installation with the Makefile
4. Usage
5. Implementation
Authors
-------
Thomas Lewiner,
Hélio Lopes,
Antnio Wílson Vieira and
Geovan Tavares.
Introduction
------------
Those programs are simple illustrations of the Marching Cubes
algorithm and our extension of it. We present a small graphical
interface to look at each of the 733 cases of our extended lookup
table (luttest), a commandline and a graphical interface to
arching Cubes.
Requirements
------------
The graphical interfaces require the openGL libraries with the GLU,
glut and glui extension, available at:
http://glui.sourceforge.net/
The glui library we used is 2.2.
Installation with the Makefile
------------------------------
The make file has 3x2 targets:
- mcd :
- mc : the commandline interface to the Marching Cubes algorithm.
in debug mode (mcd) or optimized mode -O3 (mc).
- mcGLd
- mcGL : the graphical interface to the Marching Cubes algorithm.
in debug mode (mcGLd) or optimized mode -O3 (mcGL).
- luttestd :
- luttest : the graphical interface to see the 733 cases of our
extended lookup table, in debug mode (luttestd) or
optimized mode -O3 (luttest).
Usage
-----
The luttest program simply display in 3D the table entry given by
the corresponding case, subcase and configuration.
The mc program builds the approximation of an implicit surface at
a fixed resolution. The formula and the resolution are hard coded,
but they are easily accessible through the 'main.cpp' file.
The mcGL program offers different kinds of input, and visualizes or
save the output as a triangulated surface. The input can be an implicit
function given by its formula, preselected, or extracted from a CSG tree.
It can also be a trilinear function given by its coordinates at the cube
vertices, in order to simulate compare the ideal surface with its
triangulation in our tiling table. It can finally be an iso archive,
simply written in binary with the resolution over the X,Y and Z axis, and
the sequence of float values. The isosurface can be generated with the
classical Marching Cubes algorithm or with our extension.
usage ./mcGL [-i file.iso] [-c file.csg] [-f 'formula'] [-r[xyz] res] -R [-si file.iv] [-sp file.ply] [-q]
Implementation
--------------
The Marching Cubes algorithm is implemented as described in the paper :
@article{lewiner-lopes-vieira-tavares-03,
author = {Thomas Lewiner and Hélio Lopes and Antnio Wilson Vieira and Geovan Tavares},
year = 2003,
title = {Efficient Implementation of Marching Cubes Cases with Topological Guarantees},
journal = {Journal of Graphics Tools},
publisher = {A.K.Peters},
volume = 8,
number = 2,
pages = {1--15}
url = {http://www.carva.org/thomas.lewiner/marching_cubes_jgt.pdf},
}
The function parser is the one of Warp :
http://warp.povusers.org/FunctionParser/
The code is not I/O optimized, but it can be used as is for other
applications with the following use:
- first, set the global variables 'size_x', 'size_y' and 'size_z' to
the resolution of your grid.
- then, call the function 'init_all()', and fill the array 'data' with
the accessor 'set_data(float val, int I, int J, int K )'.
- the Marching Cubes algorithm can then be run on the grid by calling
'applyMC()'. The resulting triangulated surface can be read in the
arrays 'vertices' and 'triangles', conataining respectively 'nverts'
and 'ntrigs' valid elements. The mesh can be exported in Greg Turk's
PLY format or in Open Inventor / VRML 1.0 format using respectively
'writePLY(const char *fn, bool bin = false )', and
'writeIV (const char *fn )'.
- The intermediate data can be cleaned using 'clean_temps()', while the
resulting arrays are cleaned with 'clean_all()'.
Have fun!
Tomlew.
近期下载者:
相关文件:
收藏者: