Skip to main content

Pure Python client for mat-vis PBR textures — HTTP range reads, zero deps

Project description

mat-vis-client

Pure Python client for mat-vis — PBR texture data distributed as Parquet files on GitHub Releases.

  • Zero dependencies — stdlib only (urllib). No pyarrow, no numpy, no binary wheels.
  • HTTP range reads — fetch a single texture channel with one ranged GET against a consolidated Parquet asset. No whole-archive downloads.
  • Local cache — results cached under ~/.cache/mat-vis/ with a configurable soft cap.
  • Search — filter materials by category, roughness / metalness ranges, source, tier.
  • MaterialX export — synthesized UsdPreviewSurface documents or original upstream authored documents (gpuopen).
  • Format adapters — three.js, glTF 2.0 KHR_materials_pbrSpecularGlossiness, MaterialX.

Install

pip install mat-vis-client

Python 3.10+.

Quick start

from mat_vis_client import MatVisClient

client = MatVisClient()  # latest release
png = client.fetch_texture("ambientcg", "Rock064", "color", tier="1k")

with open("rock.png", "wb") as f:
    f.write(png)

Search

results = client.search(
    category="stone",
    roughness_range=(0.4, 0.9),
    source="ambientcg",
)
for r in results:
    print(r["id"], r["category"], r["roughness"])

Categories come from the release manifest (metal, wood, stone, fabric, plastic, concrete, ceramic, glass, organic, other). Inspect them at runtime with client.categories().

MaterialX

Synthesized UsdPreviewSurface wrapper — always available:

src = client.mtlx("ambientcg", "Rock064", tier="1k")
src.export("./out")        # writes .mtlx + referenced PNGs
xml = src.xml              # raw MaterialX XML

Original upstream document (gpuopen materials only; None elsewhere):

orig = client.mtlx("gpuopen", "<uuid>").original
if orig is not None:
    orig.export("./out")

Bulk prefetch

n = client.prefetch("ambientcg", tier="1k")  # download + cache every material

CLI

mat-vis-client list                              # sources × tiers
mat-vis-client materials ambientcg 1k            # IDs
mat-vis-client fetch ambientcg Rock064 color 1k -o rock.png
mat-vis-client search metal --roughness 0.2:0.6
mat-vis-client prefetch ambientcg 1k

Environment variables

Variable Default Purpose
MAT_VIS_CACHE ~/.cache/mat-vis Cache directory
MAT_VIS_CACHE_MAX_SIZE 5GB Soft cap — warning only, no eviction
MAT_VIS_MAX_FETCH_SIZE 500MB Hard cap per range-read (OOM defense)
MAT_VIS_MAX_RETRIES 5 Rate-limit retry attempts
MAT_VIS_BACKOFF_BASE 1.0 Exponential backoff base (seconds)
MAT_VIS_NO_UPDATE_CHECK Disable the once-a-day PyPI update check
MAT_VIS_UPDATE_CHECK Force update check even when stderr is not a TTY

Rate limits

Backed by GitHub's unauthenticated rate limit (60 req/h). The client:

  • Caches signed CDN URLs for 4 min to skip the github.com redirect
  • Retries 429 / 503 / rate-limited 403 with Retry-After / X-RateLimit-Reset honoring
  • Raises mat_vis_client.RateLimitError when retries are exhausted

Adapters

from mat_vis_client import to_threejs, to_gltf, export_mtlx

scalars = {"roughness": 0.5, "metalness": 0.0}
textures = client.fetch_all_textures("ambientcg", "Rock064", tier="1k")

three = to_threejs(scalars, textures)
gltf = to_gltf(scalars, textures)

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mat_vis_client-0.4.0.tar.gz (61.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mat_vis_client-0.4.0-py3-none-any.whl (27.0 kB view details)

Uploaded Python 3

File details

Details for the file mat_vis_client-0.4.0.tar.gz.

File metadata

  • Download URL: mat_vis_client-0.4.0.tar.gz
  • Upload date:
  • Size: 61.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mat_vis_client-0.4.0.tar.gz
Algorithm Hash digest
SHA256 15069539fa671ebbe322a737534def0c18c17e46f62eb5fdf71f37facea297b6
MD5 ea868645a18f1981deaa01e9069c5c08
BLAKE2b-256 1b6fe03788351e3a01a6c34ae01c6c871f1a4a148e95758eb1fb12e71809e397

See more details on using hashes here.

Provenance

The following attestation bundles were made for mat_vis_client-0.4.0.tar.gz:

Publisher: pypi.yml on MorePET/mat-vis

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mat_vis_client-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: mat_vis_client-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 27.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mat_vis_client-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a459e08a3365840235036ea75e6a0c88c20e764224d7afe7c4e3cc5c43337051
MD5 6ce846982b3b0bca8ce9750b9706aeba
BLAKE2b-256 268a52f87af96929d7869f6b8d1abe3761f77f312f324b6419e578cb784ca3a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for mat_vis_client-0.4.0-py3-none-any.whl:

Publisher: pypi.yml on MorePET/mat-vis

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page