Skip to main content

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)

Source distribution for geotex 0.1.3
File Size Uploaded
geotex-0.1.3.tar.gz 40.9 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for geotex 0.1.3
File
geotex-0.1.3-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
geotex-0.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
geotex-0.1.3-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
geotex-0.1.3-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
geotex-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
geotex-0.1.3-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
geotex-0.1.3-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
geotex-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
geotex-0.1.3-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
geotex-0.1.3-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
geotex-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
geotex-0.1.3-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
geotex-0.1.3-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
geotex-0.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details
geotex-0.1.3-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
geotex-0.1.3-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
geotex-0.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ x86-64 Details
geotex-0.1.3-cp38-cp38-macosx_11_0_arm64.whl CPython 3.8 CPython 3.8 macOS 11.0+ ARM64 Details

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

Release history Release notifications | RSS feed

This release

0.1.3 This release

19 release files

0.1.1

19 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page