diff options
author | CoprDistGit <infra@openeuler.org> | 2023-05-31 08:09:47 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-05-31 08:09:47 +0000 |
commit | 34f70a5a22f7589a0d5ad1d2def7d401265978fa (patch) | |
tree | 4bf38b1b217ca06a850f27b2538966ac634022b5 | |
parent | 76c416872f7e220f9cbf8e3a8980aefe4b299042 (diff) |
automatic import of python-zmesh
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-zmesh.spec | 384 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 386 insertions, 0 deletions
@@ -0,0 +1 @@ +/zmesh-1.6.2.tar.gz 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 +[](https://github.com/seung-lab/zmesh/actions/workflows/test.yml) [](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 & Mesh Simplification +[](https://github.com/seung-lab/zmesh/actions/workflows/test.yml) [](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 & Mesh Simplification +[](https://github.com/seung-lab/zmesh/actions/workflows/test.yml) [](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 @@ -0,0 +1 @@ +0c55a7acebe55b062364bf5ab41eeafb zmesh-1.6.2.tar.gz |