- Notifications
You must be signed in to change notification settings - Fork23
mworchel/xatlas-python
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
(Unofficial) Python bindings forxatlas, a library that generates texture coordinates for triangle meshes.
git clone --recursive https://github.com/mworchel/xatlas-python.gitpip install ./xatlas-python
pip install xatlas
importtrimeshimportxatlas# 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
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]
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]
atlas.mesh_count# Number of mesheslen(atlas)# Convenience binding for `atlas.mesh_count`atlas.get_mesh(i)# Data for the i-th meshatlas[i]# Convenience binding for `atlas.get_mesh`atlas.width# Width of the atlasatlas.height# Height of the atlasatlas.utilization# Utilization of the first atlasatlas.get_utilization(i)# Utilization of i-th atlasatlas.get_mesh_vertex_assignement(i)# Returns two arrays, with the atlas index and# chart index of each vertex in the i-th meshatlas.get_mesh_chart_count(i)# Returns the number of charts of the i-th meshatlas.get_mesh_chart(i,j)# Returns the j-th chart of the i-th mesh# 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 atlasatlas.get_chart_image(i)# Debug image of the i-th atlas...# See xatlas documentation for all properties
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.
Test model taken from theABC dataset
About
Python bindings for xatlas
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
No packages published