%global _empty_manifest_terminate_build 0 Name: python-xatlas Version: 0.0.7 Release: 1 Summary: Python bindings for xatlas License: MIT URL: https://github.com/mworchel/xatlas-python Source0: https://mirrors.nju.edu.cn/pypi/web/packages/eb/73/1eeaa80a9a72c513fa8e4ac720095a6bf19c473e73036f6e9ef0ffefa634/xatlas-0.0.7.tar.gz %description # Python bindings for xatlas (Unofficial) Python bindings for [xatlas](https://github.com/jpcy/xatlas), a library that generates texture coordinates for triangle meshes. ## Installation ### From source ```bash git clone --recursive https://github.com/mworchel/xatlas-python.git pip install ./xatlas-python ``` ### Using Pip ```bash pip install xatlas ``` ## Usage ### Parametrize a mesh and export it ```python import trimesh import xatlas # We use trimesh (https://github.com/mikedh/trimesh) to load a mesh but you can use any library. mesh = trimesh.load_mesh("input.obj") # The parametrization potentially duplicates vertices. # `vmapping` contains the original vertex index for each new vertex (shape N, type uint32). # `indices` contains the vertex indices of the new triangles (shape Fx3, type uint32) # `uvs` contains texture coordinates of the new vertices (shape Nx2, type float32) vmapping, indices, uvs = xatlas.parametrize(mesh.vertices, mesh.faces) # Trimesh needs a material to export uv coordinates and always creates a *.mtl file. # Alternatively, we can use the `export` helper function to export the mesh as obj. xatlas.export("output.obj", mesh.vertices[vmapping], indices, uvs) # Both `xatlas.parametrize` and `xatlas.export` also accept vertex normals ``` ### Parametrize multiple meshes using one atlas ```python mesh1 = trimesh.load_mesh("input1.obj") mesh2 = trimesh.load_mesh("input2.obj") atlas = xatlas.Atlas() atlas.add_mesh(mesh1.vertices, mesh1.faces) atlas.add_mesh(mesh2.vertices, mesh2.faces) # Optionally parametrize the generation with # `xatlas.ChartOptions` and `xatlas.PackOptions`. atlas.generate() vmapping1, indices1, uvs1 = atlas[0] vmapping2, indices2, uvs2 = atlas[1] ``` ### Repack multiple parametrized meshes into one atlas ```python vertices1, indices1, uvs1 = load_mesh_with_uvs("input1.obj") vertices2, indices2, uvs2 = load_mesh_with_uvs("input2.obj") atlas = xatlas.Atlas() atlas.add_uv_mesh(uvs1, indices1) atlas.add_uv_mesh(uvs2, indices2) atlas.generate() vmapping1, indices1, uvs1 = atlas[0] vmapping2, indices2, uvs2 = atlas[1] ``` ### Query the atlas ```python atlas.mesh_count # Number of meshes len(atlas) # Convenience binding for `atlas.mesh_count` atlas.get_mesh(i) # Data for the i-th mesh atlas[i] # Convenience binding for `atlas.get_mesh` atlas.width # Width of the atlas atlas.height # Height of the atlas atlas.utilization # Utilization of the first atlas atlas.get_utilization(i) # Utilization of i-th atlas # The image requires passing custom PackOptions: # pack_options = xatlas.PackOptions() # pack_options.create_image = True # atlas.generate(pack_options=pack_options) atlas.chart_image # Debug image of the first atlas atlas.get_chart_image(i) # Debug image of the i-th atlas ... # See xatlas documentation for all properties ``` ## License The xatlas Python bindings are provided under a MIT license. By using, distributing, or contributing to this project, you agree to the terms and conditions of this license. ## References Test model taken from the [ABC dataset](https://deep-geometry.github.io/abc-dataset/) %package -n python3-xatlas Summary: Python bindings for xatlas Provides: python-xatlas BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip BuildRequires: python3-cffi BuildRequires: gcc BuildRequires: gdb %description -n python3-xatlas # Python bindings for xatlas (Unofficial) Python bindings for [xatlas](https://github.com/jpcy/xatlas), a library that generates texture coordinates for triangle meshes. ## Installation ### From source ```bash git clone --recursive https://github.com/mworchel/xatlas-python.git pip install ./xatlas-python ``` ### Using Pip ```bash pip install xatlas ``` ## Usage ### Parametrize a mesh and export it ```python import trimesh import xatlas # We use trimesh (https://github.com/mikedh/trimesh) to load a mesh but you can use any library. mesh = trimesh.load_mesh("input.obj") # The parametrization potentially duplicates vertices. # `vmapping` contains the original vertex index for each new vertex (shape N, type uint32). # `indices` contains the vertex indices of the new triangles (shape Fx3, type uint32) # `uvs` contains texture coordinates of the new vertices (shape Nx2, type float32) vmapping, indices, uvs = xatlas.parametrize(mesh.vertices, mesh.faces) # Trimesh needs a material to export uv coordinates and always creates a *.mtl file. # Alternatively, we can use the `export` helper function to export the mesh as obj. xatlas.export("output.obj", mesh.vertices[vmapping], indices, uvs) # Both `xatlas.parametrize` and `xatlas.export` also accept vertex normals ``` ### Parametrize multiple meshes using one atlas ```python mesh1 = trimesh.load_mesh("input1.obj") mesh2 = trimesh.load_mesh("input2.obj") atlas = xatlas.Atlas() atlas.add_mesh(mesh1.vertices, mesh1.faces) atlas.add_mesh(mesh2.vertices, mesh2.faces) # Optionally parametrize the generation with # `xatlas.ChartOptions` and `xatlas.PackOptions`. atlas.generate() vmapping1, indices1, uvs1 = atlas[0] vmapping2, indices2, uvs2 = atlas[1] ``` ### Repack multiple parametrized meshes into one atlas ```python vertices1, indices1, uvs1 = load_mesh_with_uvs("input1.obj") vertices2, indices2, uvs2 = load_mesh_with_uvs("input2.obj") atlas = xatlas.Atlas() atlas.add_uv_mesh(uvs1, indices1) atlas.add_uv_mesh(uvs2, indices2) atlas.generate() vmapping1, indices1, uvs1 = atlas[0] vmapping2, indices2, uvs2 = atlas[1] ``` ### Query the atlas ```python atlas.mesh_count # Number of meshes len(atlas) # Convenience binding for `atlas.mesh_count` atlas.get_mesh(i) # Data for the i-th mesh atlas[i] # Convenience binding for `atlas.get_mesh` atlas.width # Width of the atlas atlas.height # Height of the atlas atlas.utilization # Utilization of the first atlas atlas.get_utilization(i) # Utilization of i-th atlas # The image requires passing custom PackOptions: # pack_options = xatlas.PackOptions() # pack_options.create_image = True # atlas.generate(pack_options=pack_options) atlas.chart_image # Debug image of the first atlas atlas.get_chart_image(i) # Debug image of the i-th atlas ... # See xatlas documentation for all properties ``` ## License The xatlas Python bindings are provided under a MIT license. By using, distributing, or contributing to this project, you agree to the terms and conditions of this license. ## References Test model taken from the [ABC dataset](https://deep-geometry.github.io/abc-dataset/) %package help Summary: Development documents and examples for xatlas Provides: python3-xatlas-doc %description help # Python bindings for xatlas (Unofficial) Python bindings for [xatlas](https://github.com/jpcy/xatlas), a library that generates texture coordinates for triangle meshes. ## Installation ### From source ```bash git clone --recursive https://github.com/mworchel/xatlas-python.git pip install ./xatlas-python ``` ### Using Pip ```bash pip install xatlas ``` ## Usage ### Parametrize a mesh and export it ```python import trimesh import xatlas # We use trimesh (https://github.com/mikedh/trimesh) to load a mesh but you can use any library. mesh = trimesh.load_mesh("input.obj") # The parametrization potentially duplicates vertices. # `vmapping` contains the original vertex index for each new vertex (shape N, type uint32). # `indices` contains the vertex indices of the new triangles (shape Fx3, type uint32) # `uvs` contains texture coordinates of the new vertices (shape Nx2, type float32) vmapping, indices, uvs = xatlas.parametrize(mesh.vertices, mesh.faces) # Trimesh needs a material to export uv coordinates and always creates a *.mtl file. # Alternatively, we can use the `export` helper function to export the mesh as obj. xatlas.export("output.obj", mesh.vertices[vmapping], indices, uvs) # Both `xatlas.parametrize` and `xatlas.export` also accept vertex normals ``` ### Parametrize multiple meshes using one atlas ```python mesh1 = trimesh.load_mesh("input1.obj") mesh2 = trimesh.load_mesh("input2.obj") atlas = xatlas.Atlas() atlas.add_mesh(mesh1.vertices, mesh1.faces) atlas.add_mesh(mesh2.vertices, mesh2.faces) # Optionally parametrize the generation with # `xatlas.ChartOptions` and `xatlas.PackOptions`. atlas.generate() vmapping1, indices1, uvs1 = atlas[0] vmapping2, indices2, uvs2 = atlas[1] ``` ### Repack multiple parametrized meshes into one atlas ```python vertices1, indices1, uvs1 = load_mesh_with_uvs("input1.obj") vertices2, indices2, uvs2 = load_mesh_with_uvs("input2.obj") atlas = xatlas.Atlas() atlas.add_uv_mesh(uvs1, indices1) atlas.add_uv_mesh(uvs2, indices2) atlas.generate() vmapping1, indices1, uvs1 = atlas[0] vmapping2, indices2, uvs2 = atlas[1] ``` ### Query the atlas ```python atlas.mesh_count # Number of meshes len(atlas) # Convenience binding for `atlas.mesh_count` atlas.get_mesh(i) # Data for the i-th mesh atlas[i] # Convenience binding for `atlas.get_mesh` atlas.width # Width of the atlas atlas.height # Height of the atlas atlas.utilization # Utilization of the first atlas atlas.get_utilization(i) # Utilization of i-th atlas # The image requires passing custom PackOptions: # pack_options = xatlas.PackOptions() # pack_options.create_image = True # atlas.generate(pack_options=pack_options) atlas.chart_image # Debug image of the first atlas atlas.get_chart_image(i) # Debug image of the i-th atlas ... # See xatlas documentation for all properties ``` ## License The xatlas Python bindings are provided under a MIT license. By using, distributing, or contributing to this project, you agree to the terms and conditions of this license. ## References Test model taken from the [ABC dataset](https://deep-geometry.github.io/abc-dataset/) %prep %autosetup -n xatlas-0.0.7 %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-xatlas -f filelist.lst %dir %{python3_sitearch}/* %files help -f doclist.lst %{_docdir}/* %changelog * Fri May 05 2023 Python_Bot - 0.0.7-1 - Package Spec generated