GeoTex: UV Unwrapping for Python via Geogram
GeoTex is a minimal Python wrapper that exposes the UV atlas generation functions from Geogram. Given a triangulated 3D mesh, it produces per-corner UV coordinates packed into a texture atlas, ready to be used for texture mapping or baking.
Installation
Install from PyPI:
pip install geotex
Or install the latest version directly from GitHub:
pip install git+https://github.com/vork/geotex.git
Usage
Basic example
import numpy as np
import geotex
# Define a simple mesh (a single triangle here, but any triangulated mesh works)
vertices = np.array([
[0.0, 0.0, 0.0],
[1.0, 0.0, 0.0],
[0.0, 1.0, 0.0],
], dtype=np.float64)
faces = np.array([
[0, 1, 2],
], dtype=np.uint32)
# Generate UV atlas with default settings
uv = geotex.make_atlas(vertices, faces)
# uv has shape (len(faces) * 3, 2):
# one (u, v) coordinate per face corner, in [0, 1] x [0, 1]
print(uv.shape) # (3, 2)
print(uv)
Cube mesh example
import numpy as np
import geotex
vertices = np.array([
[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], # bottom face
[0, 0, 1], [1, 0, 1], [1, 1, 1], [0, 1, 1], # top face
], dtype=np.float64)
faces = np.array([
[0, 1, 2], [0, 2, 3], # bottom
[4, 5, 6], [4, 6, 7], # top
[0, 1, 5], [0, 5, 4], # front
[2, 3, 7], [2, 7, 6], # back
[0, 3, 7], [0, 7, 4], # left
[1, 2, 6], [1, 6, 5], # right
], dtype=np.uint32)
uv = geotex.make_atlas(vertices, faces)
print(uv.shape) # (36, 2) — 12 triangles × 3 corners
Choosing a parameterizer and packer
# Use LSCM parameterization with the tetris packer
uv = geotex.make_atlas(
vertices, faces,
parameterizer="lscm",
packer="tetris",
)
# Control the hard-angle threshold (in degrees) used to split charts
uv = geotex.make_atlas(vertices, faces, hard_angles_threshold=60.0)
API Reference
geotex.make_atlas
geotex.make_atlas(
vertices,
faces,
hard_angles_threshold=45.0,
parameterizer="abf",
packer="xatlas",
verbose=False,
) -> np.ndarray
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
vertices |
np.ndarray (N, 3), float64 |
— | 3D vertex positions of the mesh. |
faces |
np.ndarray (M, 3), uint32 |
— | Triangle indices into vertices. |
hard_angles_threshold |
float |
45.0 |
Dihedral angle threshold (degrees) above which an edge is treated as a hard seam, splitting the atlas into separate charts. |
parameterizer |
str |
"abf" |
Algorithm used to flatten each chart. One of "abf" (Angle-Based Flattening), "lscm" (Least-Squares Conformal Maps), or "spectral_lscm". |
packer |
str |
"xatlas" |
Algorithm used to pack the flattened charts into the unit square. One of "xatlas" or "tetris". |
verbose |
bool |
False |
Print Geogram progress information to stdout. |
Returns
np.ndarray of shape (M * 3, 2) and dtype float64 — one (u, v) coordinate per face corner, with values in [0, 1].
License
The project is licensed under BSD 3.
Geogram is also licensed under BSD 3.
Release files for geotex 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| geotex-0.1.3.tar.gz | 40.9 kB | Details |
Built distributions (wheels)
Total release size: 146.3 MB
Release files / geotex-0.1.3.tar.gz
| Download URL | geotex-0.1.3.tar.gz |
|---|---|
| Size | 40.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1a56afda16e40390c7f31f584bdf25ba6297d463a5ff14329785f64da2e6421b
|
|
BLAKE2b-256 checksum How to use checksums |
c15724b288479bc11684b14c514001b3b4f5d8414a3954390690051d0b7375be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / geotex-0.1.3-cp313-cp313-win_amd64.whl
| Download URL | geotex-0.1.3-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 7.0 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
383b9775e8cf33fb1142de80ccf1248e91182041213bf9fe3229adec3eb1bc07
|
|
BLAKE2b-256 checksum How to use checksums |
c4801c5950873c60372b1f846e4d783301e9323e093318448262a1280e3455a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / geotex-0.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | geotex-0.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 9.6 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
d89e73e4997a05f8b2664127cb171eb013ade0e38efc0f7d967bea1eda1a2eb7
|
|
BLAKE2b-256 checksum How to use checksums |
4a69d2849b4e769e91eee098415e63a6476be34235d34e6b484dfffa0b6c5955
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / geotex-0.1.3-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | geotex-0.1.3-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 7.8 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
eea08546090ed15dd7662d413efc9a62f6d7e5d78e2069654a8f96d4ed379aad
|
|
BLAKE2b-256 checksum How to use checksums |
bc2d6e2f8f100bcf8ebb85241cd2574295ad21c646bb231b4c8ce953a534c94d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / geotex-0.1.3-cp312-cp312-win_amd64.whl
| Download URL | geotex-0.1.3-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 7.0 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
8e20bcb3c58a137ed11e4e5b8ddeb2c5ffbdbcf8556ab8e167e406bc52d3a5a3
|
|
BLAKE2b-256 checksum How to use checksums |
47769d05c99257702ca6bc8953f65e1001eb39d3e654d4868e95e4614d1439e3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / geotex-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | geotex-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 9.6 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
77874d75e34f17f088e014b4cfd549a0d77a9a00c4b26a2a6e9d9a8ab81c7be1
|
|
BLAKE2b-256 checksum How to use checksums |
e5ceafcd8633e5ba3a38160ef49ca112ccd07ba49efaefaf220a151adcdf5960
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / geotex-0.1.3-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | geotex-0.1.3-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 7.8 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
685a7c0aef820544f9dea875bad2c836828e775462bcdd41ceef09aa708665d7
|
|
BLAKE2b-256 checksum How to use checksums |
cab33162e34d274433036ef1f8c1311882660d9fc638f0981564639ae9b6325c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / geotex-0.1.3-cp311-cp311-win_amd64.whl
| Download URL | geotex-0.1.3-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 7.0 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
176abf87bd3e15e7bc1356ef34afac514c74fe3b44b2009847859f2dbb9b2ee1
|
|
BLAKE2b-256 checksum How to use checksums |
a8cc1cd30a71b20d2de738aed2b49cf1f041c16c5228b794eb1eb91ad8b9fba9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / geotex-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | geotex-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 9.6 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
469a4c656433f725b6ffc3f87a35d740dd6ed4329a803bf8e5cee6e2a88a670d
|
|
BLAKE2b-256 checksum How to use checksums |
fc3349eefaffb2d1d39df354527cfb2b7c83d9834e7310472097e5d4c9832661
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / geotex-0.1.3-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | geotex-0.1.3-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 7.8 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
9a66543cdf1af6d444aa505a384b354244d8a9fd3251676b99825302a4a91e92
|
|
BLAKE2b-256 checksum How to use checksums |
6b44eb90eea9522c1cbd68e3b5b9a6c154b691c7e117077073a52929f04f2d77
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / geotex-0.1.3-cp310-cp310-win_amd64.whl
| Download URL | geotex-0.1.3-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 7.0 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
bf2fcdf943745210b59e9c0ae4d6ff47671dfe0a090e31ae0919c0ab97620c52
|
|
BLAKE2b-256 checksum How to use checksums |
5aa65fa26cce81983df59e953dacf605585acd54cad1db59b2680055ded9611a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / geotex-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | geotex-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 9.6 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
61c555988664ea26aefbc43b1f7db7c0837d9e8743b87f405ed8a19f16cb4c20
|
|
BLAKE2b-256 checksum How to use checksums |
8a73f4067a6a8d3a66904357715b968b5b01fc280b8b21720b3966c75022b134
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / geotex-0.1.3-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | geotex-0.1.3-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 7.8 MB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
23945a845d3c24ed9274dc7082f8a329625a8afca8071fd2f6d8578e47b4d45c
|
|
BLAKE2b-256 checksum How to use checksums |
e3bdd99778221deb1ce4173f27809c33100be50279a0069725ee778fa58b1539
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / geotex-0.1.3-cp39-cp39-win_amd64.whl
| Download URL | geotex-0.1.3-cp39-cp39-win_amd64.whl |
|---|---|
| Size | 7.0 MB |
| Tags | CPython 3.9 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
a3be84720f354a0fdc2be3bf583b4f13255c9d996e8410d5cbf96c418c0de48c
|
|
BLAKE2b-256 checksum How to use checksums |
1ccb8b8241abcd7b7f7f720295117a76aa7d551e51e14ee713019ac121e1d910
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / geotex-0.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | geotex-0.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 9.6 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
750791605117777a51cb4c6619270be54dd7290c64c0c6f12ab15bdf75dfb58c
|
|
BLAKE2b-256 checksum How to use checksums |
f0c90f869a89d28ae60989305c2793ea3c1560219c5d6e8dcb156635673731c7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / geotex-0.1.3-cp39-cp39-macosx_11_0_arm64.whl
| Download URL | geotex-0.1.3-cp39-cp39-macosx_11_0_arm64.whl |
|---|---|
| Size | 7.8 MB |
| Tags | CPython 3.9 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
14ebdc52259e7f3153cb7908c74e74991b4699c2d3a15bb3da244bb1ff0bfd37
|
|
BLAKE2b-256 checksum How to use checksums |
7f34fb970a9ad7f46632cb7a1cd5f762fe88ff1a6d5088e7e357f7a1b5317285
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / geotex-0.1.3-cp38-cp38-win_amd64.whl
| Download URL | geotex-0.1.3-cp38-cp38-win_amd64.whl |
|---|---|
| Size | 7.0 MB |
| Tags | CPython 3.8 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
8d4511ba843c9a7739ff7772924eef6a6d2cb2c366f277aa7117025209445ef7
|
|
BLAKE2b-256 checksum How to use checksums |
26ec13f13b6cea903891d9983aa35e4ca11406fd93fc6121e439e4380caec690
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / geotex-0.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | geotex-0.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 9.6 MB |
| Tags | CPython 3.8 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
67288bdc5dbf50a653cc0cc8badbf239c83a71d288637d0a40237856e8009d51
|
|
BLAKE2b-256 checksum How to use checksums |
f03e8a40662b99c4d58052577ce3cf2211e6aa05996f65ee6134b52528b48ca9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / geotex-0.1.3-cp38-cp38-macosx_11_0_arm64.whl
| Download URL | geotex-0.1.3-cp38-cp38-macosx_11_0_arm64.whl |
|---|---|
| Size | 7.8 MB |
| Tags | CPython 3.8 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
bddf385876c9ad309473ede56d54df4cb4c005ca8d8c1e8853d26a976a5ddad6
|
|
BLAKE2b-256 checksum How to use checksums |
d06f07d092c4059eeaa4369b5f535c48e95a911a30d141041fa6c77742b340ce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|