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.6.3.tar.gz (93.0 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.6.3-py3-none-any.whl (36.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mat_vis_client-0.6.3.tar.gz
  • Upload date:
  • Size: 93.0 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.6.3.tar.gz
Algorithm Hash digest
SHA256 368f285cc9c729ec7d098b84fec2e8aa04266d9a53131800316204e7fd42b2f2
MD5 ab9a73e408719a7f7d505650d2f2bda4
BLAKE2b-256 2d00b4ec7c496a06789b8b24212ca6bd9d72550bd592f33d8f28c68a7b65afdb

See more details on using hashes here.

Provenance

The following attestation bundles were made for mat_vis_client-0.6.3.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.6.3-py3-none-any.whl.

File metadata

  • Download URL: mat_vis_client-0.6.3-py3-none-any.whl
  • Upload date:
  • Size: 36.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.6.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0be7339f51ce6afb06753d17e70e2c55b51b6a1805c93f76f01b357a057ecd46
MD5 2f55682f518183bd703c0b0a23fa5e69
BLAKE2b-256 5629b21821002e1f4ede632f7a155b1244a3a7e4ca168364419ac3071ae0b180

See more details on using hashes here.

Provenance

The following attestation bundles were made for mat_vis_client-0.6.3-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