Skip to main content

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.

framemill showing a rendered sprite sheet in the preview window

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.

Single-direction preview of a loaded model

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)

Source distribution for framemill 0.1.4
File Size Uploaded
framemill-0.1.4.tar.gz 433.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for framemill 0.1.4
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

This release

0.1.4 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

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