Ochrestack

Exportmint for Blender

Blender 5.2 with Blender Studio's Rain standing among ten game props (a street lantern, a sofa, a corset on a stand, an antique camera, a BoomBox, a fox and more). Her scarf has just been recoloured red and the BoomBox moved. On the right, the Exportmint sidebar tab: '11 exporters: 9 up to date, 2 changed', the BoomBox row reading 'Changed: BoomBox: transform changed', the CH-rain row reading 'Changed: GEO-rain-scarf: material MAT-rain.scarf changed', and the button 'Export Changed (2)'

Re-exporting the same assets many times is cumbersome. Exportmint re-exports only the collections that changed, in one click, and writes a manifest of every file it wrote or left alone.

$12, one-time, every future version included, source included (GPL-3.0-or-later). Blender 4.2 LTS and later; tested on 4.2.23 LTS and 5.2.3 LTS.

Buy for $12

Polar checkout · 14-day refund · no license check, no account · details

Above: one .blend with 11 Collection Exporters, one for Rain and one for each of ten props. Her scarf colour was changed and the BoomBox moved; the tab names both, with the reason, and Export Changed will write those two files and leave the other nine alone.

How these images were made

Every image and GIF on this page is a capture of a real Blender 5.2.3 LTS window on Linux at 1920x960, with Exportmint 1.1.0 installed from its zip through Blender's extension installer. The character is Rain, Blender Studio's free production rig (CC BY 4.0, credit below), in her own file as downloaded from studio.blender.org; her character collection, CH-rain, got a glTF 2.0 Collection Exporter (skinning on, renderable objects only, no animation). Around her are ten CC0 models from the Khronos glTF Sample Assets, one collection and one exporter each: six glTF 2.0, three FBX, one USD. The mouse and keyboard input is scripted: the BoomBox is clicked and moved 0.4 m with G, X, 0.4, Enter; Rain's scarf is clicked, then recoloured from a script (a Hue/Saturation node added in her scarf material, as you would add it in the Shader Editor); Export Changed and Select in Outliner are real clicks. After every step a check compared Exportmint's own state with what the screen shows: 11 checks, all passed. The GIFs are cut from screen recordings of the same session, in real time, except where a caption says otherwise.

Where it matters. Since Blender 4.2, File > Export All Collections writes every file, every time. Blender's FBX exporter writes different bytes on every export, so after Export All, every FBX file you did not touch shows up as modified in git and is imported again by the engine. Export All Collections also exports only the scene that is active in the window, so an edit in another scene leaves its export out of date. Exportmint checks every scene, writes only what changed, and leaves every other file with its bytes and its date.
Screen recording: the BoomBox is clicked and moved along X, and its row in the Exportmint tab turns 'Changed: BoomBox: transform changed' while the button reads Export Changed (1); Rain's scarf is clicked and turns red, her CH-rain row turns 'Changed: GEO-rain-scarf: material MAT-rain.scarf changed' and the button reads Export Changed (2); Export Changed is clicked, and the Last run box appears: '2 written, 9 unchanged, 0 failed, 0 blocked', every row back to Up to date
Two edits, one click: 2 written, 9 unchanged. Real time, except the wait while Blender's glTF exporter writes the two files (about 13 seconds from click to summary on this machine, most of it Rain's 70 MB glTF), which is cut.
Who needs it, and who doesn't. Since Blender 4.2, Collection Exporters store a format, path and settings on each collection, and File > Export All Collections re-exports every one in one click. Free batch exporters also export many files in one click. A buyer with a handful of collections who is happy to rewrite them all does not need Exportmint. With Exportmint you pay for five things: knowing which exports are stale and why; re-exporting only those, so unchanged files are left alone and the engine and version control see only real changes; one list of every export in the file; a manifest of each run; and the same run from the command line across many .blend files. Files are written by Blender's own exporters with the settings in the Collection Exporters panel, so Exportmint never improves or repairs an exporter's output. Something the change check does not cover can be missed (see Known limits), and Export All is always one click away.

What it does

In Blender, for real

The tab at its real size on a wide screen, before the edits, after them, and after Export Changed. Tap an image for the full Blender window.

The Exportmint tab at real size: Export Changed (0), Export All, Check Now, Open Manifest, Add exporter to selected collections, '11 exporters: 11 up to date', then the rows AntiqueCamera, Avocado, BarramundiFish, BoomBox and CH-rain, each with a check mark, its format and path, and 'Up to date (exported 22:17)'
Before: 11 exporters, all up to date.
The same tab after the two edits: Export Changed (2), '11 exporters: 9 up to date, 2 changed', the BoomBox row reading 'Changed: BoomBox: transform changed (exported 22:17)' and the CH-rain row reading 'Changed: GEO-rain-scarf: material MAT-rain.scarf changed (exported 22:17)'
After two edits: each stale row says why.
The tab after Export Changed: the Last run box reads 'Last run: Export Changed at 22:19' and '2 written, 9 unchanged, 0 failed, 0 blocked' above Open Manifest; '11 exporters: 11 up to date'; BoomBox and CH-rain now read 'Up to date (exported 22:18)', the other rows still 'exported 22:17'
After Export Changed: 2 written, 9 unchanged. The untouched files keep their 22:17 export.
exportmint-manifest.txt in a text viewer: Blend file /home/artist/market-kit/rain_market.blend, Blender version 5.2.3 LTS, Run: Export Changed, start and finish times, Result: 2 written, 9 unchanged, 0 failed, 0 blocked; then Written (2): BoomBox, with its file, reason 'BoomBox: transform changed', size 10557908 bytes, SHA-256 and export time, and CH-rain, reason 'GEO-rain-scarf: material MAT-rain.scarf changed', size 70915256 bytes, SHA-256 and export time; then Unchanged (9), starting with AntiqueCamera, Avocado and BarramundiFish, each with size, SHA-256 and the time of its earlier export
The manifest of that run, as Open Manifest shows it in your text viewer: what was written and why, what was left alone, with sizes and SHA-256. The JSON beside it holds the same for scripts.
Screen recording of the whole Blender window: the arrow on the CH-rain row of the Exportmint tab is clicked; Rain is outlined in the viewport, the Outliner jumps to her collection with her meshes selected, and the status bar says 'Selected collection CH-rain in scene Market (19 visible objects)'
Select in Outliner on Rain's row: her collection becomes active, her 19 visible objects are selected. Real time.
A terminal in ~/market-kit running 'blender --background --command exportmint rain_market.blend props/demo_kit.blend; echo exit code'. For rain_market.blend: '0 written, 11 unchanged, 0 failed, 0 blocked' and its manifest. For props/demo_kit.blend, where the WaterBottle had been moved: Blender's glTF export log, then '1 written, 11 unchanged, 0 failed, 0 blocked', 'written: WaterBottle (glTF 2.0) ... WaterBottle: transform changed', its manifest, and 'export record: ... demo_kit.exportmint-record.json (the .blend file is not modified)'. Then 'Exportmint total: 1 written, 22 unchanged, 0 failed, 0 blocked; exit code 0' and 'exit code: 0'
The same check from a terminal, over two .blend files: Rain's file was already up to date; in the props file one moved prop is written. Exit code 0. Both .blend files had the same SHA-256 before and after the run.

Character: Rain Rig (CC) Blender Foundation | studio.blender.org, used under CC BY 4.0. We added a Collection Exporter to her collection and, for the demo, a Hue/Saturation node in her scarf material. Props: Lantern, WaterBottle, BoomBox, Avocado, AntiqueCamera, Fox, BarramundiFish, SheenChair, ToyCar and Corset from the Khronos glTF Sample Assets, each CC0 1.0. Rain and the props are not included with Exportmint.

How we tested

Time, measured both ways. Exportmint saves rewrites, not time: the change check reads every mesh.

KitBlenderFile > Export All CollectionsExport Changed, two edits
12 real props (demo kit)4.2.230.68 to 0.69 s0.42 to 0.43 s
12 real props (demo kit)5.2.30.86 to 0.87 s0.58 to 0.65 s
40 collections, 3.6M vertices, glTF4.2.23 / 5.2.31.47 s / 1.41 s2.72 s / 3.27 s
40 collections, 3.6M vertices, FBX4.2.23 / 5.2.37.28 s / 6.35 s2.99 s / 3.02 s

Details

Documentation

The full manual (README.md) is inside the zip: open the zip to read it, but install the zip itself, as it is. A one-page guide is online: Exportmint quick start.

Install

  1. Download exportmint-1.1.0.zip. Do not unzip it.
  2. In Blender 4.2 or newer, open Edit > Preferences > Get Extensions.
  3. Open the drop-down menu (⌄) at the top right, choose Install from Disk... and pick the zip.
  4. In the 3D Viewport, press N and open the Exportmint tab.

If Get Extensions asks about internet access, Continue Offline is fine: Exportmint needs none.

Words used on this page

Known limits