GLB Export Optimizer for Mascot Models
Project description
GLB Export Optimizer for Mascot Models
Cleans up Blender files and exports optimized GLB 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) - Exports with Draco mesh 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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file notso_glb-1.0.0.tar.gz.
File metadata
- Download URL: notso_glb-1.0.0.tar.gz
- Upload date:
- Size: 151.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.29 {"installer":{"name":"uv","version":"0.9.29","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ee127aae70ccfc817fb94a13d1ecf1a67f647fad97a8098e4695ff77afd0106
|
|
| MD5 |
08e2172b655ed4516ef05c17ac0bbf94
|
|
| BLAKE2b-256 |
3566bbfe0e520851c07615cfd86627c8b04799429a1761604efc929fef29d657
|
File details
Details for the file notso_glb-1.0.0-py3-none-any.whl.
File metadata
- Download URL: notso_glb-1.0.0-py3-none-any.whl
- Upload date:
- Size: 162.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.29 {"installer":{"name":"uv","version":"0.9.29","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe2a8e23984227c38ac84f6df6be385ebbf7194079dc91bd22d1c89029989c9f
|
|
| MD5 |
b2892f767f3d127db56351697e93163b
|
|
| BLAKE2b-256 |
f47a3b499f6f47715d2bf1486485c3b437d8ba97e7d2b46c3b504cab9ff55117
|