Skip to content

Commit cc396d2

Browse files
committed
prepare for iso2mesh 1.9 release - Century Egg
1 parent 67ae478 commit cc396d2

8 files changed

+161
-31
lines changed

AUTHORS.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
The author of "Iso2mesh" toolbox is Qianqian Fang.
1+
The author of "Iso2Mesh" toolbox is Qianqian Fang.
22
Qianqian is currently an Assistant Professor at the
33
Department of Bioengineering of Northeastern University.
44

ChangeLog.txt

+31-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,39 @@
11
============================================================================
22

3-
Iso2mesh - a compact, powerful yet simple-to-use 3D mesh generator
3+
Iso2Mesh - a compact, powerful yet simple-to-use 3D mesh generator
44

55
----------------------------------------------------------------------------
66

7-
Iso2mesh ChangeLog (key features marked by *):
7+
Iso2Mesh ChangeLog (key features marked by *):
8+
9+
2018/07/19 (1.9.0, codename: Century Egg - final)
10+
11+
2018-07-19*[67ae478] update jsonlab to v1.8
12+
2018-07-19 [0af072c] compiling jmeshlib and tetgen1.5 from source
13+
2018-07-19 [c75ce08] use meshfix 1.2 from an old copy
14+
2018-07-18 [f49286b] use system binaries first, then use locally built suffix-less binaries, then prebuilt ones
15+
2018-07-18 [8d015f4] add makefile to compile all external tools and copy exe to bin
16+
2018-07-18*[17bf732] add source codes for embedded tool for deployment
17+
2018-06-27 [2baaf0d] fix bugs in meshinterp and meshremap when elemid contains nan
18+
2018-06-26 [3413cf6] add meshremap and meshinterp to map values between a pair of meshes
19+
2018-05-30 [f111940] add examples for readnirfast and savenirfast
20+
2018-05-30*[6ec9dbc] support importing and exporting NIRFAST mesh files
21+
2018-05-25 [312d1ff] nodevolume can be calculated using elemvolume
22+
2018-05-02 [39bc663] fix missing command in the meshconn output
23+
2018-04-11 [65a0f2a] Update tetgen1.5 executable for Windows to TetGen v1.5.1-beta1
24+
2017-11-08*[98d9fb4] add extrudesurf function to expand an open surface into a solid
25+
2017-10-02 [9f5e9f1] support cone trunk in meshacylinder
26+
2017-09-13 [914d9e9] Fix bug in surf2mesh
27+
2017-08-30*[a6070a9] add top and bottom faces for extrudecurve
28+
2017-08-06 [6cd2747] merge phong's surfboolean, make s2m/surf2mesh support tetgen1.5
29+
2017-07-19 [f6d8d7f] remove isoloated nodes for cell represented surfaces
30+
2017-06-29 [4ff9ed9] support removing duplicated nodes in cell face input
31+
2017-06-20 [dab6afe] close open surfaces by the bounding box
32+
2017-06-20 [059f98a] support initial angle in orthdisk
33+
2017-06-12 [5d22c41] apply a patch from Riccardo to correct surface orientation
34+
2017-05-29 [48f30d5] update meshfix binary for windows, add 64bit meshfix from https://github.com/MarcoAttene/MeshFix-V2.1/
35+
2017-05-11 [d11dbc4] add new function to create extruded surfaces from orthogonal 2D spline curves
36+
2017-03-05 [41da47d] create 10-node tet from 4-node tet
837

938
2017/01/16 (1.8.0, codename: Deviled Egg - final)
1039
1.**robust surface boolean operator based on Cork

Content.txt

+51
Original file line numberDiff line numberDiff line change
@@ -706,6 +706,27 @@
706706
row represents a triangle denoted by the indices of the 3 nodes
707707

708708

709+
==== function [node,face,elem]=meshcylinders(c0, v, len, varargin) ====
710+
711+
[node,face]=meshcylinders(c0, v, len, r,tsize,maxvol,ndiv)
712+
or
713+
[node,face,elem]=meshacylinder(c0, v, len, r, tsize,maxvol,ndiv)
714+
[nplc,fplc]=meshacylinder(c0, v, len,r,0,0,ndiv);
715+
716+
create the surface and (optionally) tetrahedral mesh of a 3D cylinder
717+
718+
719+
input:
720+
c0, cylinder list axis's starting point
721+
v: directional vector of the cylinder
722+
len: a scalar or a vector denoting the length of each
723+
cylinder segment along the direction of v
724+
tsize, maxvol, ndiv: please see the help for meshacylinder for details
725+
726+
output:
727+
node, face, elem: please see the help for meshacylinder for details
728+
729+
709730
=== # Mesh decomposition and query ===
710731

711732
==== function facecell=finddisconnsurf(f) ====
@@ -1799,6 +1820,21 @@
17991820
newval=meshremap(value_src,id,ww,e2,size(n2,1)); % map to target
18001821

18011822

1823+
==== function [node,face]=extrudesurf(no,fc,vec) ====
1824+
1825+
[node,face]=extrudesurf(no,fc,vec)
1826+
1827+
create a enclosed surface mesh by extruding an open surface
1828+
1829+
1830+
input:
1831+
1832+
output:
1833+
node: 3D node coordinates for the generated surface mesh
1834+
face: triangular face patches of the generated surface mesh, each
1835+
row represents a triangle denoted by the indices of the 3 nodes
1836+
1837+
18021838
=== # File I/O ===
18031839

18041840
==== function saveasc(v,f,fname) ====
@@ -1950,6 +1986,21 @@
19501986
(optional)
19511987

19521988

1989+
==== function savemsh(node,elem,fname,rname) ====
1990+
1991+
savemsh(node,elem,fname,rname)
1992+
1993+
save a tetrahedral mesh to GMSH mesh format
1994+
1995+
author: Riccardo Scorretti (riccardo.scorretti<at> univ-lyon1.fr)
1996+
1997+
input:
1998+
node: input, node list, dimension (nn,3)
1999+
elem: input, tetrahedral mesh element list, dimension (ne,4) or (ne,5) for multi-region meshes
2000+
fname: output file name
2001+
rname: name of the regions, cell-array of strings (optional)
2002+
2003+
19532004
==== function savevrml(node,face,elem,fname) ====
19542005

19552006
savevrml(node,face,elem,fname)

README.txt

+71-22
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
----------------------------------------------------------------------
2-
= Iso2mesh: an image-based 3D surface and volumetric mesh generator =
2+
= Iso2Mesh: An Image-based 3D Surface and Volumetric Mesh Generator =
33
----------------------------------------------------------------------
44

55
*Author: Qianqian Fang <q.fang at neu.edu>
66
Department of Bioengineering
77
Northeastern University
88
360 Huntington Ave, Boston, MA 02115
9-
*Version: 1.8.0 (Deviled Egg)
9+
*Version: 1.9.0 (Century Egg)
1010
*License: GPL v2 or later (see COPYING)
1111
(this license does not cover the binaries under the bin/
1212
directory, see Section III for more details)
@@ -19,25 +19,27 @@
1919

2020
== # Introduction ==
2121

22-
"Iso2mesh" is a MATLAB/Octave-based mesh generation toolbox,
22+
"Iso2Mesh" is a MATLAB/Octave-based mesh generation toolbox,
2323
designed for easy creation of high quality surface and
2424
tetrahedral meshes from 3D volumetric images. It contains
2525
a rich set of mesh processing scripts/programs, working
2626
either independently or interacting with external free
27-
meshing utilities. Iso2mesh toolbox can directly convert
27+
meshing utilities. Iso2Mesh toolbox can directly convert
2828
a 3D image stack, including binary, segmented or gray-scale
2929
images such as MRI or CT scans, into quality volumetric
3030
meshes. This makes it particularly suitable for multi-modality
3131
medical imaging data analysis and multi-physics modeling.
3232
Above all, iso2mesh is open-source. You can download it for
3333
free. You are also allowed to extend the toolbox for your
34-
own research and share with other users. Iso2mesh is
34+
own research and share with other users. Iso2Mesh is
3535
cross-platform and is compatible with both MATLAB and GNU Octave
3636
(a free MATLAB clone).
3737

3838
The details of this toolbox can be found in the following
39-
paper:
39+
papers:
4040

41+
*Anh Phong Tran and Qianqian Fang, "Fast and high-quality tetrahedral \
42+
mesh generation from neuroanatomical scans," arXiv preprint arXiv:1708.08954, 2017
4143
*Qianqian Fang and David Boas, "Tetrahedral mesh generation from volumetric binary and \
4244
gray-scale images," Proceedings of IEEE International Symposium on Biomedical Imaging \
4345
(ISBI 2009), pp. 1142-1145, 2009
@@ -49,8 +51,8 @@ Creation of high-quality surface and tetrahedral meshes
4951
from volumetric images has been a challenging task.
5052
There are very limited software and resources available
5153
for this purpose. Commercial tools, such as Mimics
52-
and Amira, are both expensive and limited in functionalities.
53-
Iso2mesh was developed as a free alternative to these
54+
and Simpleware, are both expensive and limited in flexibility.
55+
Iso2Mesh was developed as a free alternative to these
5456
expensive commercial tools and provides researchers a highly
5557
flexible, modular and streamlined image-based mesh
5658
generation pipeline. Intuitive interfaces and rich
@@ -69,7 +71,8 @@ the image->mesh and mesh->image conversion, including
6971
* vol2mesh (v2m): convert a 3D volumetric image into a tetrahedral mesh
7072
* vol2surf (v2s): extract triangular surfaces from a 3D image volume
7173
* surf2mesh (s2m): create a tetrahedral mesh from a triangular surface mesh
72-
* surf2vol (s2v): rasterize a close-surface into a volumetric image
74+
* surf2vol (s2v): rasterize a close-surface to a volumetric image
75+
* mesh2vol (m2v): rasterize a tetrahedral mesh to a volumetric image
7376

7477
Most of these function are associated with several meshing
7578
options and parameters to give users full control to mesh
@@ -115,14 +118,60 @@ function list and detailed help information in the following URL:
115118

116119
http://iso2mesh.sf.net/cgi-bin/index.cgi?Doc/FunctionList
117120

121+
== # Compiling Iso2Mesh ==
122+
123+
The default release of Iso2Mesh packages already contains pre-compiled
124+
binaries for a wide range of platforms (32/64bit Windows, 32/64bit Linux
125+
and Mac with 64bit Intel and 32 bit PowerPC CPUs). So, without needing
126+
to recompile, Iso2Mesh can be executed out-of-box on MATLAB or GNU Octave.
127+
128+
However, in the event that your operating system is not supported, or
129+
due to license restrictions, such as creating a release for various
130+
Linux distributions, you can recreate the mesh utility binaries under
131+
iso2mesh/bin folder by following the below commands:
132+
133+
git clone --recurse-submodules https://github.com/fangq/iso2mesh.git
134+
cd iso2mesh
135+
rm -rf bin/*.mex* bin/*.exe
136+
cd tools
137+
make clean
138+
make
139+
140+
This will download and recompile the below binaries in the bin folder:
141+
142+
cgalmesh
143+
cgalsurf
144+
cgalsimp2
145+
jmeshlib
146+
meshfix
147+
tetgen1.5
148+
cork
149+
150+
Once these binary files are recreated, you can run all the major functionalities
151+
of Iso2Mesh. The gtsset and gtrefine tools are depreciated and replaced by
152+
cork and tetgen.
153+
154+
To compile the above external tools, the below tools must be pre-installed
155+
(tested on Ubuntu 14.04 LTS, if you use another Linux distribution, the package
156+
names might be different)
157+
158+
libcgal-dev
159+
clang
160+
cmake
161+
162+
you can install these by
163+
164+
sudo apt-get install libcgal-dev clang cmake
165+
166+
on Ubuntu.
118167

119168
== # Acknowledgement ==
120169

121170
This toolbox interacts with a number external meshing tools
122171
to perform the essential functionalities. These tools are listed
123172
below:
124173

125-
=== bin/tetgen ===
174+
=== bin/tetgen and bin/tetgen1.5 ===
126175

127176
*Summary:tetgen is a compact and fast 3D mesh generator
128177
*License: GNU Affero General Public License version 3
@@ -182,31 +231,31 @@ other modules are under the Lesser General Public License (LGPL)
182231
::Via De Marini, 6 (Torre di Francia)
183232
::16149 Genoa - ITALY
184233

185-
=== bin/gtsset and bin/gtsrefine ===
186-
187-
*Summary: GTS is the GNU Triangulated Surface Library
188-
*License: LGPL (GNU Lesser General Public License)
189-
*URL:http://gts.sourceforge.net/
190-
*Author: GTS developers
191-
192234
=== bin/cork ===
193235

194236
*Summary: A robust surface mesh Boolean operation algorithm
195237
*License: LGPL (GNU Lesser General Public License)
196238
*URL:https://github.com/gilbo/cork
197239
*Author: Gilbert Bernstein
198240

241+
=== bin/gtsset and bin/gtsrefine ===
242+
243+
*Summary: GTS is the GNU Triangulated Surface Library
244+
*License: LGPL (GNU Lesser General Public License)
245+
*URL:http://gts.sourceforge.net/
246+
*Author: GTS developers
247+
199248

200-
Note: iso2mesh and the above meshing utilities are considered
249+
Note: Iso2Mesh and the above meshing utilities are considered
201250
as an "aggregate" rather than "derived work", based on the
202251
definitions in GPL FAQ (http://www.gnu.org/licenses/gpl-faq.html#MereAggregation)
203-
Therefore, the license of iso2mesh and these utilities are independent.
204-
The iso2mesh license only applies to the scripts and documentation/data
252+
Therefore, the license of Iso2Mesh and these utilities are independent.
253+
The Iso2Mesh license only applies to the scripts and documentation/data
205254
in this package and exclude those programs stored in the bin/ directory.
206255
The source codes of the modified meshing utilities are available
207-
separately at iso2mesh's website and retain their upstream licenses.
256+
separately at Iso2Mesh's website and retain their upstream licenses.
208257

209-
Your acknowledgement of iso2mesh in your publications or
258+
Your acknowledgement of Iso2Mesh in your publications or
210259
presentations would be greatly appreciated by the author of
211260
this toolbox. The citation information can be found in the
212261
Introduction section.

bin/README.txt

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
= External Utilities Used by Iso2mesh Toolbox =
1+
= External Utilities Used by Iso2Mesh Toolbox =
22

33
In this directory, you can find the precompiled binaries
44
that are used by iso2mesh (http://iso2mesh.sf.net). The
@@ -11,7 +11,8 @@ names and origins of these tools are explained below:
1111
# cgalsimp2.* - Surface Mesh Simplification Utility (built on CGAL)
1212
# tetgen.* - A Quality Tetrahedral Mesh Generator and 3D Delaunay Triangulator by Hang Si
1313
# tetview.* - A Mesh Graphing Utility by Hang Si
14-
# meshfix.* - Mesh Validation and Repairing Utility (build on JMeshLib) by Marco Attene
14+
# jmeshlib.* - Mesh Validation and Repairing Utility (build on JMeshLib) by Marco Attene
15+
# meshfix.* - Mesh Validation and Repairing Utility (build on Meshfix) by Marco Attene
1516
# cork.* - A robust surface mesh Boolean operation algorithm by Gilbert Bernstein (https://github.com/gilbo/cork)
1617

1718

doc/iso2mesh_workflow.jpg

-217 KB
Binary file not shown.

gendocs.sh

+3-3
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func_shortcut="v2m v2s s2m s2v m2v sms"
2727
func_mainfun="vol2mesh vol2surf surf2mesh surf2vol mesh2vol"
2828
func_backend="binsurface cgalv2m cgals2m vol2restrictedtri surf2volz mesh2mask"
2929
func_primitive="meshabox meshasphere meshanellip meshunitsphere meshacylinder
30-
meshgrid5 meshgrid6 latticegrid extrudecurve"
30+
meshgrid5 meshgrid6 latticegrid extrudecurve meshcylinders"
3131
func_inquery="finddisconnsurf surfedge volface extractloops meshconn
3232
meshcentroid nodevolume elemvolume neighborelem
3333
faceneighbors edgeneighbors maxsurf flatsegment orderloopedge
@@ -39,9 +39,9 @@ func_meshfix="meshcheckrepair meshreorient removedupelem
3939
surfaceclean getintersecttri delendelem surfreorient"
4040
func_remesh="meshresample remeshsurf smoothsurf sortmesh mergemesh
4141
meshrefine mergesurf surfboolean fillsurf highordertet
42-
meshinterp meshremap"
42+
meshinterp meshremap extrudesurf"
4343
func_fileio="saveasc savedxf savestl savebinstl saveinr saveoff
44-
savesmf savesurfpoly savegts readgts
44+
savesmf savesurfpoly savegts readgts savemsh
4545
savevrml readasc readinr readmedit readoff readsmf
4646
readtetgen deletemeshfile mcpath mwpath savemedit
4747
savejson loadjson saveubjson loadubjson savejmesh

0 commit comments

Comments
 (0)