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. (You can still charge for it; "free" here means freedom, not price.)

framemill is part of Unfinished Works.

Metadata

Release files for framemill 0.1.1

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.1
File Size Uploaded
framemill-0.1.1.tar.gz 439.4 kB Details

Built distribution (wheel)

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

Total release size: 532.7 kB

Release files / framemill-0.1.1.tar.gz

Download URL framemill-0.1.1.tar.gz
Size 439.4 kB
Tags Source
SHA-256 checksum
How to use checksums
e0dd1234ecf8f62f75404ced4f997c54e76a77009bac69248e1fc16d02abefd3
BLAKE2b-256 checksum
How to use checksums
8d1c18e7d2c386259b6f705f89c1a838f0453ca320cc2a2ed727ada07424d3b2
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.1-py3-none-any.whl

Download URL framemill-0.1.1-py3-none-any.whl
Size 93.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
721d5db1e85ae8e16286734faf9eb94617d404d2ad6cf576df44ccfdbfa04034
BLAKE2b-256 checksum
How to use checksums
0935a03ee76901cb6cdb3433f2a86cd60810f15bae62106198da89e434d64a09
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

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

This release

0.1.1 This release

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