Skip to main content

GLB Export Optimizer for Mascot Models

Cleans up Blender/glTF files (.blend, .glb, .gltf) and exports optimized glTF — GLB, glTF, or embedded — for web delivery.

uvx notso-glb [OPTIONS] FILE

Screenshot with cli options

PyPI Downloads Docker License Python 3.11

Install

uv tool install notso-glb
# Or install directly from GitHub:
uv tool install -p3.11 git+https://github.com/kjanat/notso-glb

then just run notso-glb from the command line.

Upgrade

uv tool upgrade notso-glb

Docker

Available from Docker Hub and GitHub Container Registry:

# Docker Hub
docker pull kjanat/notso-glb

# GitHub Container Registry
docker pull ghcr.io/kjanat/notso-glb

Usage (docker)

Mount your files directory to /data:

# Process a file (output to input_optimized.glb by default)
docker run --rm -v "$(pwd)":/data kjanat/notso-glb model.blend

# Specify output file
docker run --rm -v "$(pwd)":/data kjanat/notso-glb input.glb -o output.glb

# With options
docker run --rm -v "$(pwd)":/data kjanat/notso-glb model.blend --no-draco --no-webp

# Show help
docker run --rm kjanat/notso-glb --help

Features

Optimizations:

  • Detects bloated props (high-vert non-skinned meshes, repetitive geometry)
  • Detects skinned meshes with non-root parents (glTF spec issue)
  • Detects unused UV maps (TEXCOORD bloat)
  • Detects duplicate names and sanitization collisions
  • Removes unused vertex groups (bone weight bloat)
  • Marks static bones as non-deform (animation bloat)
  • Removes bone shape objects (Icosphere artifacts)
  • Resizes textures to max 1024px (optional POT enforcement)
  • Compresses meshes with gltfpack by default (bundled WASM fallback); falls back to Draco when gltfpack is unavailable, and auto-detects existing Draco to avoid double compression
  • Exports with WebP textures

Bloat Detection:

  • CRITICAL: Props >2000 verts, repetitive detail (many islands with high verts)
  • WARNING: Props >1000 verts, scene total >15000 verts, non-root skinned meshes

Experimental Auto-fix (--autofix):

  • BMesh cleanup (remove doubles, degenerate geometry, loose verts)
  • Decimate bloated props to ~1600 verts
  • Auto-rename duplicate objects/meshes/materials/actions (using pointer ID)
  • Remove unused UV maps

Usage

See CLI.md

Requirements

  • Blender 5.0+
  • Python 3.11 (same as bundled with Blender)
  • uv (optional, for easy install/upgrade)
  • gltfpack (optional, for extra compression - WASM fallback included)

Development Setup

For local development, download the gltfpack WASM binary:

# Download latest WASM from npm
uv run scripts/update_wasm.py

# Or check current version
uv run scripts/update_wasm.py --show-version

# Download specific version
uv run scripts/update_wasm.py --version 1.0.0

The WASM binary (src/notso_glb/wasm/gltfpack.wasm) is not committed to git and must be downloaded locally. CI/CD pipelines handle this automatically.

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

This project uses Blender as a Python module (bpy), which is also GPL-3.0 licensed.

Metadata

Release files for notso-glb 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for notso-glb 1.0.1
File Size Uploaded
notso_glb-1.0.1.tar.gz 150.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for notso-glb 1.0.1
File Interpreter ABI Platform
notso_glb-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 310.8 kB

Release files / notso_glb-1.0.1.tar.gz

Download URL notso_glb-1.0.1.tar.gz
Size 150.0 kB
Tags Source
SHA-256 checksum
How to use checksums
dbd889613808f9796c2c963053bc660c64e7e4f72eeae54d2e5dfc64ac6d5853
BLAKE2b-256 checksum
How to use checksums
3b06d1b4a90c575704364f4528539c525c7f69d03ff3410fb9f5d8166433b30f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / notso_glb-1.0.1-py3-none-any.whl

Download URL notso_glb-1.0.1-py3-none-any.whl
Size 160.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
602bd75de039359c03945e400c37ca8849f3ba6a52fda5f15a546bc609ecd000
BLAKE2b-256 checksum
How to use checksums
2ef9f699ec689cddd24c6325232811297e9e20dc19256b4c65a08e43a010ec8d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0.0

2 release files

0.1.0

2 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