Skip to main content

GLB Export Optimizer for Mascot Models

Project description

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.

Useful Links

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

notso_glb-1.0.1.tar.gz (150.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

notso_glb-1.0.1-py3-none-any.whl (160.8 kB view details)

Uploaded Python 3

File details

Details for the file notso_glb-1.0.1.tar.gz.

File metadata

  • Download URL: notso_glb-1.0.1.tar.gz
  • Upload date:
  • Size: 150.0 kB
  • Tags: Source
  • Uploaded using 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}

File hashes

Hashes for notso_glb-1.0.1.tar.gz
Algorithm Hash digest
SHA256 dbd889613808f9796c2c963053bc660c64e7e4f72eeae54d2e5dfc64ac6d5853
MD5 9ce2288980a430e994f8710ccd21956d
BLAKE2b-256 3b06d1b4a90c575704364f4528539c525c7f69d03ff3410fb9f5d8166433b30f

See more details on using hashes here.

File details

Details for the file notso_glb-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: notso_glb-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 160.8 kB
  • Tags: Python 3
  • Uploaded using 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}

File hashes

Hashes for notso_glb-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 602bd75de039359c03945e400c37ca8849f3ba6a52fda5f15a546bc609ecd000
MD5 419296b6e7c1fa7d882c691874c321b8
BLAKE2b-256 2ef9f699ec689cddd24c6325232811297e9e20dc19256b4c65a08e43a010ec8d

See more details on using hashes here.

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