ZeroLOD

Documentation

Two ways to use ZeroLOD: the web demo for quick tests, and the CLI for studio pipelines.

Web demo

zerolod.gamecraft.se

Drop a mesh, get a ZIP. No install. Rate-limited to 1 job / 30 min. 5 MB max.

Studio CLI

Runs on your machine

Unlimited file size. Pipeline runs locally — no cloud wait. Requires a studio license key.

Need a studio license? alexander@gamecraft.se

CLI — studio usage

The CLI runs the full 6-platform pipeline locally on your machine. Processing time depends on your hardware — no upload wait, no cloud queue.

Install

git clone https://github.com/alxmss/LODBottleneckFactory
pip install -e .

Basic usage

zerolod hero_character.glb --key YOUR_STUDIO_KEY

Output is written to ./zerolod_out/hero_character_lods.zip by default. Store your key in the ZEROLOD_KEY env var to keep it out of shell history.

All options

FlagDefaultDescription
--keyZEROLOD_KEY envStudio license key
--presetbalancedDecimation preset (see below)
--out./zerolod_outOutput directory
--apihttps://zerolod-api.fly.devAPI base URL (override for staging)

Presets

balancedDefault. General-purpose across all 6 platforms.
mobilePrioritises polygon reduction for mobile targets.
aggressiveMaximum decimation, looser seam tolerance.

Example output

Platform   Faces       QA   Iters  Result
------------------------------------------------
pc         19636   0.0012      1  PASS
ps5        11781   0.0031      1  PASS
xbox       11781   0.0031      1  PASS
switch      4909   0.0089      2  PASS
ios         2945   0.0142      1  PASS
android     2945   0.0142      1  PASS

Bundle saved to: ./zerolod_out/hero_character_lods.zip

ZIP contents

Both the CLI and the web demo produce the same ZIP format.

{asset_name}_lods.zip
├── lods/
│   ├── {asset_name}_pc.glb
│   ├── {asset_name}_ps5.glb
│   ├── {asset_name}_xbox.glb
│   ├── {asset_name}_switch.glb
│   ├── {asset_name}_ios.glb
│   └── {asset_name}_android.glb
├── qa_report.json
├── heatmaps/
│   ├── view_00.png … view_11.png
│   ├── contact_sheet.png
│   └── worst_view.txt
└── report.html          (self-contained QA report)

REST API

Use the REST API to integrate ZeroLOD into your own tooling. The web demo uses these same endpoints.

Base URL

https://zerolod-api.fly.dev

Submit a mesh

POST/jobs

Upload a mesh and start the cloud pipeline. Returns a job_id immediately. No API key required — rate limited to 1 job / 30 min per IP. 5 MB file size limit.

FieldRequiredDescription
fileyesMesh file — OBJ, GLB, GLTF, PLY, STL, FBX
emailyesDownload link sent here when job completes
presetnobalanced (default) · mobile · aggressive
studio_profile_idnoPre-onboarded studio constraint profile ID
{ "job_id": "3f2a1c...", "status": "processing", "asset_hash": "sha256:..." }

Poll for result

GET/jobs/{job_id}/download
200Ready — body is the ZIP file
202Still processing — poll again in 3 s
422Pipeline failed — body contains detail
404Job not found

Validate license key

POST/validate

Called automatically by the CLI before each run. You can also call it directly to verify a key or integrate license checking into your own tooling.

{
  "key":               "YOUR_STUDIO_KEY",
  "asset_name":        "hero_character",
  "asset_hash":        "sha256:...",
  "face_count_source": 19636
}
{ "ok": true, "studio_id": "acme_games", "message": "License valid." }

Returns 401 if the key is unknown or revoked.

Quick example

# Submit (web API, max 5 MB)
curl -X POST https://zerolod-api.fly.dev/jobs \
  -F "file=@crate.glb" \
  -F "email=you@studio.com"

# → { "job_id": "abc123", ... }

# Poll until ready
curl https://zerolod-api.fly.dev/jobs/abc123/download \
  --output crate_lods.zip

Studio onboarding

POST/studios/{studio_id}/onboard

Upload a ZIP of 2–20 reference meshes (OBJ, GLB, PLY, STL) from your existing pipeline. ZeroLOD extracts your studio's topology style and constraint profile, which is applied automatically when you pass studio_profile_id to /jobs or --studio to the CLI. Requires a studio license key in the Authorization header.