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.
Metadata
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 | Provenance | Actions |
|---|---|---|---|---|
| geotex-0.1.3.tar.gz | 40.9 kB | Without provenance | Details for geotex-0.1.3.tar.gz |
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
|
Security for geotex 0.1.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.