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
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 (
TEXCOORDbloat) - 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
POTenforcement) - 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.
Useful Links
- glTF 2.0 Specification
- glTF 2.0 API Reference Guide
- Khronos Resources
- Blender 5.0 glTF 2.0
- Blender 5.0 Python API Documentation
- Blender 5.0 Reference Manual
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)
| File | Size | Uploaded | |
|---|---|---|---|
| notso_glb-1.0.1.tar.gz | 150.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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}
|