framemill
Turn a rigged, animated 3D model into a directional 2D sprite sheet, driven by Blender in the background, wrapped in a small desktop app. No Blender knowledge required.
Point framemill at an animated .fbx / .glb / .gltf, choose how many directions and
frames you want, pick a preset, and get a game-ready sheet. It is built for the "I have a
Mixamo/Tripo model and want 8-direction sprites" workflow.
Why
Most 3D-to-sprite tools are Blender add-ons: you install them inside Blender and learn its UI. framemill is the opposite: a standalone GUI that runs Blender headless for you. The fiddly parts (consistent camera framing across an animation, high-quality Lanczos downscaling, sprite-sheet layout, legacy-engine TGA output) are handled for you.
Features
- Standalone desktop app (Windows / macOS / Linux). Blender runs in the background.
- Import FBX, glTF/GLB, OBJ; 1 / 4 / 8 / 16 directions; configurable frames and dimensions.
- Automatic preview, sprite/sheet views, instant direction switching, and playback.
- Direction order, row/column layout, loop or one-shot sampling, source-range trim, phase, reverse.
- Source-facing yaw, shared framing (fit or fixed world scale), anchors, and output offsets.
- Presets (Generic PBR, Tripo, Mixamo) plus full camera, lighting, and colour controls.
- Export dialog with a processed preview: PNG / TGA / BMP, 32/24/8-bit, alpha or colour-key backgrounds, edge bleed, dithering, custom palettes, and target presets.
- Versioned portable recipes and an optional JSON animation-metadata sidecar.
- A searchable in-app Help browser documenting every control.
Requirements
- Blender 4.2+ installed (framemill auto-detects it, or point it at the executable once). Blender is not bundled; install it from blender.org.
- For running from source: Python 3.10+.
Quick start
Install with pipx (Windows / macOS / Linux):
pipx install framemill
framemill # launches the GUI
Update with pipx upgrade framemill. A Linux AppImage and the wheel/sdist are on the
releases page. Prefer to run from
source?
git clone https://github.com/ghreprimand/framemill
cd framemill
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
python -m pip install -e .
framemill
Per-OS steps, update commands, and version pinning are in the installation guide.
Documentation
Detailed docs live in docs/:
| Guide | What it covers |
|---|---|
| Installation | pipx, AppImage, or from source; per-platform install and update commands; Blender setup. |
| Command line (CLI) | render, inspect, and every flag, for scripting and CI. |
| Settings reference | Every render and export control, its effect, and its default. |
| Recipes & metadata | The portable recipe file and the JSON metadata sidecar, field by field. |
| Direction & orientation | The South-is-front convention, sheet order, and matching your engine. |
| Architecture | How the model, Blender, compositor, and sheet pipeline fit together. |
The app also has a built-in Help browser (the Help button) with the same reference, searchable, covering every control.
Command line
framemill render walk.fbx -o hero --preset mixamo --angles 8 --frames 8 --format png,tga
framemill inspect walk.fbx
See the CLI reference for all commands and flags.
How it works
model.fbx ──> Blender (headless, render_sprites.py) ──> per-angle PNG frames
│
compositor.py (Pillow)
crop → Lanczos → tile
│
sheet.png / sheet.tga / .bmp
More detail in Architecture.
Contributing
See CONTRIBUTING.md for dev setup and testing notes.
License
framemill is free software licensed GPL-3.0-only. See LICENSE.
Copyright (C) 2026 Unfinished Works. You are free to use, study, share, and modify it. If you distribute it or a modified version, you must pass on those same freedoms under the GPL and make your source available; the GPL does not permit incorporating framemill into proprietary, closed-source software.
framemill is part of Unfinished Works.
Metadata
Release files for framemill 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| framemill-0.1.4.tar.gz | 433.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| framemill-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 519.9 kB
Release files / framemill-0.1.4.tar.gz
| Download URL | framemill-0.1.4.tar.gz |
|---|---|
| Size | 433.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
108ea2a47a29b7219e748f9a9fb3e6d42e5c3d1ab0afb3a194b65f65be5b83c8
|
|
BLAKE2b-256 checksum How to use checksums |
cd2e008d6ab9799c467e7491426b815b2e20cbb5f30886b601e497a7251b6f4b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.
Transparency logRelease files / framemill-0.1.4-py3-none-any.whl
| Download URL | framemill-0.1.4-py3-none-any.whl |
|---|---|
| Size | 86.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
baedf7615fd8f2ab221fc3a76f3bc092100a77332e41392c89a7ab211efb3676
|
|
BLAKE2b-256 checksum How to use checksums |
26fc4431f9593bc56ceec05ea87682073a51c9331ee0ca0d4519a6de6a208fda
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.
Transparency log