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.
  • Optional root-motion removal that re-centers a travelling clip in every frame.
  • 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, and target presets.
  • Master palettes: share a scene's exact indexed palette (a file or a fixed colour list) so 8-bit sheets line up with a DOS-style shared palette, with the transparent key at index 0.
  • 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.
Export and palettes Formats, depths, backgrounds, and adaptive / master / fixed palettes, plus building a master palette.
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.7

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.7
File Size Uploaded
framemill-0.1.7.tar.gz 442.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for framemill 0.1.7
File Interpreter ABI Platform
framemill-0.1.7-py3-none-any.whl Python 3 none any Details

Total release size: 533.6 kB

Release files / framemill-0.1.7.tar.gz

Download URL framemill-0.1.7.tar.gz
Size 442.4 kB
Tags Source
SHA-256 checksum
How to use checksums
7b4beedb261279bbb8053bfa43e7fcccd3b9adfeef2cc0c0b8a8c4ae2285055c
BLAKE2b-256 checksum
How to use checksums
0d4776f3805ae0bcb7a35e7ba1ca286ea9807a87b66fa7893965d06f642a6689
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.7-py3-none-any.whl

Download URL framemill-0.1.7-py3-none-any.whl
Size 91.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
26f3fc35b36f2e6718da4e829ab757602b497d27a73bd9278a6ff1a74ab84e42
BLAKE2b-256 checksum
How to use checksums
0f140e92a90517d4ed1ac41539a1f64c6f4a179055c09d185c5e4e36ced3353a
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

This release

0.1.7 This release

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

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