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.

近期下载者

相关文件


收藏者