summaryrefslogtreecommitdiff
path: root/python-zmesh.spec
diff options
context:
space:
mode:
Diffstat (limited to 'python-zmesh.spec')
-rw-r--r--python-zmesh.spec384
1 files changed, 384 insertions, 0 deletions
diff --git a/python-zmesh.spec b/python-zmesh.spec
new file mode 100644
index 0000000..e4399c5
--- /dev/null
+++ b/python-zmesh.spec
@@ -0,0 +1,384 @@
+%global _empty_manifest_terminate_build 0
+Name: python-zmesh
+Version: 1.6.2
+Release: 1
+Summary: Multilabel marching cubes and simplification of volumetric data.
+License: GPLv3+
+URL: https://github.com/seung-lab/zmesh/
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/f8/4d/3be291deda3cadf04fc346b52cc1ff12e7f5b8d1d9716ffbb0edf91a4ced/zmesh-1.6.2.tar.gz
+
+Requires: python3-numpy
+
+%description
+## zmesh: Multi-Label Marching Cubes & Mesh Simplification
+[![Tests](https://github.com/seung-lab/zmesh/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/seung-lab/zmesh/actions/workflows/test.yml) [![PyPI version](https://badge.fury.io/py/zmesh.svg)](https://badge.fury.io/py/zmesh)
+
+```python
+from zmesh import Mesher
+
+labels = ... # some dense volumetric labeled image
+mesher = Mesher( (4,4,40) ) # anisotropy of image
+
+# initial marching cubes pass
+# close controls whether meshes touching
+# the image boundary are left open or closed
+mesher.mesh(labels, close=False)
+
+meshes = []
+for obj_id in mesher.ids():
+ meshes.append(
+ mesher.get_mesh(
+ obj_id,
+ normals=False, # whether to calculate normals or not
+
+ # tries to reduce triangles by this factor
+ # 0 disables simplification
+ simplification_factor=100,
+
+ # Max tolerable error in physical distance
+ max_simplification_error=8,
+ # whether meshes should be centered in the voxel
+ # on (0,0,0) [False] or (0.5,0.5,0.5) [True]
+ voxel_centered=False,
+ )
+ )
+ mesher.erase(obj_id) # delete high res mesh
+
+mesher.clear() # clear memory retained by mesher
+
+mesh = meshes[0]
+mesh = mesher.simplify(
+ mesh,
+ # same as simplification_factor in get_mesh
+ reduction_factor=100,
+ # same as max_simplification_error in get_mesh
+ max_error=40,
+ compute_normals=False, # whether to also compute face normals
+) # apply simplifier to a pre-existing mesh
+
+# compute normals without simplifying
+mesh = mesher.compute_normals(mesh)
+
+mesh.vertices
+mesh.faces
+mesh.normals
+mesh.triangles() # compute triangles from vertices and faces
+
+# Extremely common obj format
+with open('iconic_doge.obj', 'wb') as f:
+ f.write(mesh.to_obj())
+
+# Common binary format
+with open('iconic_doge.ply', 'wb') as f:
+ f.write(mesh.to_ply())
+
+# Neuroglancer Precomputed format
+with open('10001001:0', 'wb') as f:
+ f.write(mesh.to_precomputed())
+```
+
+## Installation
+
+If binaries are not available for your system, ensure you have a C++ compiler installed.
+
+```bash
+pip install zmesh
+```
+
+## Performance Tuning & Notes
+
+- The mesher will consume about double memory in 64 bit mode if the size of the
+object exceeds <1023, 1023, 511> on the x, y, or z axes. This is due to a limitation
+of the 32-bit format.
+- The mesher is ambidextrous, it can handle C or Fortran order arrays.
+- The maximum vertex range supported `.simplify` after converting to voxel space is 2<sup>20</sup> (appx. 1M) due to the packed 64-bit vertex format.
+- There is a longstanding design flaw in `cMesher.hpp` that transposes the returned mesh and resolution. We're working on a backwards compatible solution. That's why you need to do `mesher.mesh(data.T)`.
+
+## Related Projects
+
+- [zi_lib](https://github.com/zlateski/zi_lib) - zmesh makes heavy use of Aleks' C++ library.
+- [Igneous](https://github.com/seung-lab/igneous) - Visualization of connectomics data using cloud computing.
+
+## Credits
+
+Thanks to Aleks Zlateski for creating and sharing this beautiful mesher.
+
+Later changes by Will Silversmith, Nico Kemnitz, and Jingpeng Wu.
+
+## References
+
+1. W. Lorensen and H. Cline. "Marching Cubes: A High Resolution 3D Surface Construction Algorithm". pp 163-169. Computer Graphics, Volume 21, Number 4, July 1987. ([link](https://people.eecs.berkeley.edu/~jrs/meshpapers/LorensenCline.pdf))
+2. M. Garland and P. Heckbert. "Surface simplification using quadric error metrics". SIGGRAPH '97: Proceedings of the 24th annual conference on Computer graphics and interactive techniques. Pages 209–216. August 1997. doi: 10.1145/258734.258849 ([link](https://mgarland.org/files/papers/quadrics.pdf))
+3. H. Hoppe. "New Quadric Metric for Simplifying Meshes with Appearance Attributes". IEEE Visualization 1999 Conference. pp. 59-66. doi: 10.1109/VISUAL.1999.809869 ([link](http://hhoppe.com/newqem.pdf))
+
+
+
+
+
+%package -n python3-zmesh
+Summary: Multilabel marching cubes and simplification of volumetric data.
+Provides: python-zmesh
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+BuildRequires: python3-cffi
+BuildRequires: gcc
+BuildRequires: gdb
+%description -n python3-zmesh
+## zmesh: Multi-Label Marching Cubes &amp; Mesh Simplification
+[![Tests](https://github.com/seung-lab/zmesh/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/seung-lab/zmesh/actions/workflows/test.yml) [![PyPI version](https://badge.fury.io/py/zmesh.svg)](https://badge.fury.io/py/zmesh)
+
+```python
+from zmesh import Mesher
+
+labels = ... # some dense volumetric labeled image
+mesher = Mesher( (4,4,40) ) # anisotropy of image
+
+# initial marching cubes pass
+# close controls whether meshes touching
+# the image boundary are left open or closed
+mesher.mesh(labels, close=False)
+
+meshes = []
+for obj_id in mesher.ids():
+ meshes.append(
+ mesher.get_mesh(
+ obj_id,
+ normals=False, # whether to calculate normals or not
+
+ # tries to reduce triangles by this factor
+ # 0 disables simplification
+ simplification_factor=100,
+
+ # Max tolerable error in physical distance
+ max_simplification_error=8,
+ # whether meshes should be centered in the voxel
+ # on (0,0,0) [False] or (0.5,0.5,0.5) [True]
+ voxel_centered=False,
+ )
+ )
+ mesher.erase(obj_id) # delete high res mesh
+
+mesher.clear() # clear memory retained by mesher
+
+mesh = meshes[0]
+mesh = mesher.simplify(
+ mesh,
+ # same as simplification_factor in get_mesh
+ reduction_factor=100,
+ # same as max_simplification_error in get_mesh
+ max_error=40,
+ compute_normals=False, # whether to also compute face normals
+) # apply simplifier to a pre-existing mesh
+
+# compute normals without simplifying
+mesh = mesher.compute_normals(mesh)
+
+mesh.vertices
+mesh.faces
+mesh.normals
+mesh.triangles() # compute triangles from vertices and faces
+
+# Extremely common obj format
+with open('iconic_doge.obj', 'wb') as f:
+ f.write(mesh.to_obj())
+
+# Common binary format
+with open('iconic_doge.ply', 'wb') as f:
+ f.write(mesh.to_ply())
+
+# Neuroglancer Precomputed format
+with open('10001001:0', 'wb') as f:
+ f.write(mesh.to_precomputed())
+```
+
+## Installation
+
+If binaries are not available for your system, ensure you have a C++ compiler installed.
+
+```bash
+pip install zmesh
+```
+
+## Performance Tuning & Notes
+
+- The mesher will consume about double memory in 64 bit mode if the size of the
+object exceeds <1023, 1023, 511> on the x, y, or z axes. This is due to a limitation
+of the 32-bit format.
+- The mesher is ambidextrous, it can handle C or Fortran order arrays.
+- The maximum vertex range supported `.simplify` after converting to voxel space is 2<sup>20</sup> (appx. 1M) due to the packed 64-bit vertex format.
+- There is a longstanding design flaw in `cMesher.hpp` that transposes the returned mesh and resolution. We're working on a backwards compatible solution. That's why you need to do `mesher.mesh(data.T)`.
+
+## Related Projects
+
+- [zi_lib](https://github.com/zlateski/zi_lib) - zmesh makes heavy use of Aleks' C++ library.
+- [Igneous](https://github.com/seung-lab/igneous) - Visualization of connectomics data using cloud computing.
+
+## Credits
+
+Thanks to Aleks Zlateski for creating and sharing this beautiful mesher.
+
+Later changes by Will Silversmith, Nico Kemnitz, and Jingpeng Wu.
+
+## References
+
+1. W. Lorensen and H. Cline. "Marching Cubes: A High Resolution 3D Surface Construction Algorithm". pp 163-169. Computer Graphics, Volume 21, Number 4, July 1987. ([link](https://people.eecs.berkeley.edu/~jrs/meshpapers/LorensenCline.pdf))
+2. M. Garland and P. Heckbert. "Surface simplification using quadric error metrics". SIGGRAPH '97: Proceedings of the 24th annual conference on Computer graphics and interactive techniques. Pages 209–216. August 1997. doi: 10.1145/258734.258849 ([link](https://mgarland.org/files/papers/quadrics.pdf))
+3. H. Hoppe. "New Quadric Metric for Simplifying Meshes with Appearance Attributes". IEEE Visualization 1999 Conference. pp. 59-66. doi: 10.1109/VISUAL.1999.809869 ([link](http://hhoppe.com/newqem.pdf))
+
+
+
+
+
+%package help
+Summary: Development documents and examples for zmesh
+Provides: python3-zmesh-doc
+%description help
+## zmesh: Multi-Label Marching Cubes &amp; Mesh Simplification
+[![Tests](https://github.com/seung-lab/zmesh/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/seung-lab/zmesh/actions/workflows/test.yml) [![PyPI version](https://badge.fury.io/py/zmesh.svg)](https://badge.fury.io/py/zmesh)
+
+```python
+from zmesh import Mesher
+
+labels = ... # some dense volumetric labeled image
+mesher = Mesher( (4,4,40) ) # anisotropy of image
+
+# initial marching cubes pass
+# close controls whether meshes touching
+# the image boundary are left open or closed
+mesher.mesh(labels, close=False)
+
+meshes = []
+for obj_id in mesher.ids():
+ meshes.append(
+ mesher.get_mesh(
+ obj_id,
+ normals=False, # whether to calculate normals or not
+
+ # tries to reduce triangles by this factor
+ # 0 disables simplification
+ simplification_factor=100,
+
+ # Max tolerable error in physical distance
+ max_simplification_error=8,
+ # whether meshes should be centered in the voxel
+ # on (0,0,0) [False] or (0.5,0.5,0.5) [True]
+ voxel_centered=False,
+ )
+ )
+ mesher.erase(obj_id) # delete high res mesh
+
+mesher.clear() # clear memory retained by mesher
+
+mesh = meshes[0]
+mesh = mesher.simplify(
+ mesh,
+ # same as simplification_factor in get_mesh
+ reduction_factor=100,
+ # same as max_simplification_error in get_mesh
+ max_error=40,
+ compute_normals=False, # whether to also compute face normals
+) # apply simplifier to a pre-existing mesh
+
+# compute normals without simplifying
+mesh = mesher.compute_normals(mesh)
+
+mesh.vertices
+mesh.faces
+mesh.normals
+mesh.triangles() # compute triangles from vertices and faces
+
+# Extremely common obj format
+with open('iconic_doge.obj', 'wb') as f:
+ f.write(mesh.to_obj())
+
+# Common binary format
+with open('iconic_doge.ply', 'wb') as f:
+ f.write(mesh.to_ply())
+
+# Neuroglancer Precomputed format
+with open('10001001:0', 'wb') as f:
+ f.write(mesh.to_precomputed())
+```
+
+## Installation
+
+If binaries are not available for your system, ensure you have a C++ compiler installed.
+
+```bash
+pip install zmesh
+```
+
+## Performance Tuning & Notes
+
+- The mesher will consume about double memory in 64 bit mode if the size of the
+object exceeds <1023, 1023, 511> on the x, y, or z axes. This is due to a limitation
+of the 32-bit format.
+- The mesher is ambidextrous, it can handle C or Fortran order arrays.
+- The maximum vertex range supported `.simplify` after converting to voxel space is 2<sup>20</sup> (appx. 1M) due to the packed 64-bit vertex format.
+- There is a longstanding design flaw in `cMesher.hpp` that transposes the returned mesh and resolution. We're working on a backwards compatible solution. That's why you need to do `mesher.mesh(data.T)`.
+
+## Related Projects
+
+- [zi_lib](https://github.com/zlateski/zi_lib) - zmesh makes heavy use of Aleks' C++ library.
+- [Igneous](https://github.com/seung-lab/igneous) - Visualization of connectomics data using cloud computing.
+
+## Credits
+
+Thanks to Aleks Zlateski for creating and sharing this beautiful mesher.
+
+Later changes by Will Silversmith, Nico Kemnitz, and Jingpeng Wu.
+
+## References
+
+1. W. Lorensen and H. Cline. "Marching Cubes: A High Resolution 3D Surface Construction Algorithm". pp 163-169. Computer Graphics, Volume 21, Number 4, July 1987. ([link](https://people.eecs.berkeley.edu/~jrs/meshpapers/LorensenCline.pdf))
+2. M. Garland and P. Heckbert. "Surface simplification using quadric error metrics". SIGGRAPH '97: Proceedings of the 24th annual conference on Computer graphics and interactive techniques. Pages 209–216. August 1997. doi: 10.1145/258734.258849 ([link](https://mgarland.org/files/papers/quadrics.pdf))
+3. H. Hoppe. "New Quadric Metric for Simplifying Meshes with Appearance Attributes". IEEE Visualization 1999 Conference. pp. 59-66. doi: 10.1109/VISUAL.1999.809869 ([link](http://hhoppe.com/newqem.pdf))
+
+
+
+
+
+%prep
+%autosetup -n zmesh-1.6.2
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-zmesh -f filelist.lst
+%dir %{python3_sitearch}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Wed May 31 2023 Python_Bot <Python_Bot@openeuler.org> - 1.6.2-1
+- Package Spec generated