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.1.tar.gz (61.3 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.1-py3-none-any.whl (27.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mat_vis_client-0.4.1.tar.gz
  • Upload date:
  • Size: 61.3 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.1.tar.gz
Algorithm Hash digest
SHA256 0095481056641c394c61f553b3a5138607406df2e78b7d1768ff7265e6822f5c
MD5 a5166889e9158c2465ba45e35e4b8ae1
BLAKE2b-256 58d575662a81af4a3af4b390c426b8a444e76dd4974b0db0c3b56a475e818a84

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: mat_vis_client-0.4.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1959b4cbec387057a87bb7aacf8fbe56efee97e8574373dfa600b93c9bf87b9d
MD5 4f19f64eb907431127b9d983b541fc93
BLAKE2b-256 d4e5fef74b593f8d93d1b51f0cde6909b25043287525e5715cab9954b9eac390

See more details on using hashes here.

Provenance

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