[](https://ci.appveyor.com/project/jpcy/xatlas) [](https://trav
npm install xatlas-web  
A cleaned up version of thekla_atlas.
Mesh charting, parameterization and atlas packing. Suitable for generating unique texture coordinates for baking lightmaps.
#### Example - Cesium Milk Truck
| Viewer | Random packing | Brute force packing |
|---|---|---|
|  | !Random packing | !Brute force packing |
#### Example - Godot Third Person Shooter demo

#### Graphite/Geogram
!Graphite/Geogram
1. Create an empty atlas with xatlas::Create.
2. Add one or more meshes with xatlas::AddMesh.
3. Call xatlas::Generate. Meshes are segmented into charts, which are parameterized and packed into an atlas.
The xatlas::Atlas instance created in the first step now contains the result: each input mesh added by xatlas::AddMesh has a corresponding new mesh with a UV channel. New meshes have more vertices (the UV channel adds seams), but the same number of indices.
Cleanup with xatlas::Destroy.
Instead of calling xatlas::Generate, the following functions can be called in sequence:
1. xatlas::ComputeCharts: meshes are segmented into charts.
2. xatlas::ParameterizeCharts: charts are flattened into 2D parameterizations.
3. xatlas::PackCharts: charts are packed into one or more atlases.
All of these functions take a progress callback. Return false to cancel.
You can call any of these functions multiple times, followed by the proceeding functions, to re-generate the atlas. E.g. calling xatlas::PackCharts multiple times to tweak options like unit to texel scale and resolution.
See the viewer for example code.
1. Create an empty atlas with xatlas::Create.
2. Add one or more meshes with xatlas::AddUvMesh.
3. Call xatlas::PackCharts.
* Segmentation: improve chart merging by using similar metrics to chart growing
* Segmentation/Parameterization: detect geometry with zero Gaussian curvature (e.g. a cylinder) and unwrap as a single chart
* Viewer: better lightmap baking
* Viewer: chart picking in scene and texture views
Ignacio Castaño's blog post on thekla_atlas
P. Sander, J. Snyder, S. Gortler, and H. Hoppe. Texture Mapping Progressive Meshes
K. Hormann, B. Lévy, and A. Sheffer. Mesh Parameterization: Theory and Practice
P. Sander, Z. Wood, S. Gortler, J. Snyder, and H. Hoppe. Multi-Chart Geometry Images
D. Julius, V. Kraevoy, and A. Sheffer. D-Charts: Quasi-Developable Mesh Segmentation
B. Lévy, S. Petitjean, N. Ray, and J. Maillot. Least Squares Conformal Maps for Automatic Texture Atlas Generation
O. Sorkine, D. Cohen-Or, R. Goldenthal, and D. Lischinski. Bounded-distortion Piecewise Mesh Parameterization
Y. O’Donnell. Precomputed Global Illumination in Frostbite
Lightmaps - An OpenGL sample demonstrating path traced lightmap baking on the CPU with Embree
Microsoft's UVAtlas - isochart texture atlasing.
simpleuv - Automatic UV Unwrapping Library for Dust3D.
Ministry of Flat - Commercial automated UV unwrapper.
Lightmapper - Hemicube based lightmap baking. The example model texture coordinates were generated by thekla_atlas.
aobaker - Ambient occlusion baking. Uses thekla_atlas.
seamoptimizer - A C/C++ single-file library that minimizes the hard transition errors of disjoint edges in lightmaps.
Gazebo model by Teh_Bucket