3MF Magic Solver - Import, Paint and Export Multicolor 3MF for 3D Printing
add-on
Any coloured model in, clean filaments out: imports 3MF painting exactly, paints from the shape in one click, turns textures into a filament print, repairs the mesh and exports painted 3MF, OBJ and STL.
A 3MF lands on your disk. Blender either refuses it, or opens a grey mesh with the colours gone. You wanted to change one thing and print it - instead you are rebuilding materials by hand.
3MF Magic Solver ("3Mffer") is the round trip. Drag the file into the viewport and the model arrives with everything it carried: colour groups, base materials, and the actual painting from Bambu Studio or PrusaSlicer, face by face. Click one preset and the model is painted from its own geometry. Export, and the slicer opens it coloured and not a grey blob you have to paint again.
Any coloured model, not only a 3MF. An OBJ or GLB scan with a photo texture, an FBX game asset, a PLY with a colour per vertex: Blender's own importer opens it, 3Mffer puts it in millimetres and captures the colour out of its materials, per triangle corner, so the texture becomes printable paint. Capture Colour from Materials does the same for any mesh already in the scene.
No tutorials, go fast. The panel is a five-step to-do list and each step ticks itself when it is really done: scene in millimetres, model loaded, painted, filaments within your slot count, exported.
A coloured model in, a clean filament print out.
Colour to filamentsA scan, a textured game asset or a GLB carries its colour as a photo. Give each triangle the nearest spool and it looks right on screen and prints badly: the shadows baked into the texture cost a spool of their own, and every speck of colour is a filament change on every layer it crosses.
Make Filament Version (new panel 2) turns that colour into a print:
- Baked shading is taken out first. Light makes a colour darker, it does not change its hue, so the lit and the shaded side of a red jacket end up as one red filament. A slider sets how hard.
- The filaments are picked by coverage and by how different they are, so a small white eye on a red figure still gets its own spool. A slot is only used for a colour that is really different: ask for 4, get 3 if the model has 3.
- Or use your spools: type the colours you have loaded, read them from a Bambu Studio, Orca, Creality Print or PrusaSlicer project, or take them from the model. With more spools than slots, the best ones for this model are picked.
- Patches smaller than the minimum area (1.5 sq mm by default) join the colour around them, and the borders are smoothed.
- It always starts again from the original colour, so you can try 3, then 5, then your own spools. Back to Full Colour puts the original back.
The panel then shows each filament and how much of the surface it covers.
Make it printable, in one clickMake Printable (panel 5) runs the repair ladder for you, gentlest first: Quick Fix, then Deep Fix, then Rebuild Solid if you allow it. It stops at the first step that leaves the mesh watertight and tells you which one it was. Rebuild Solid now carries the colour over per triangle corner, read from the nearest point of the old surface, so painted edges survive it.
Print sizeScale to Print Size sets the longest side, or the height, width or depth, to the millimetres you type. Put on the Plate sits the model on Z = 0, centred. A scan or a game asset arrives at whatever size its app used.
10 new presets, 29 in allMiniature, Toon, Rainbow Layers, Kawaii Pastel, Galaxy, Haunted Glow, Rusted Iron, Marble Statue, Snow Capped and Camo. The paint panel is now grouped: Materials and finishes, Figures, minis and fun, Terrain, tiles and parts, Light and checks.
Fixed- 1.1.x read colours from an ordinary 8-bit texture (PNG, JPG) lighter than they are. A 50% grey texel now stays 50% grey.
- 1.1.x showed painted colours lighter in the viewport than in the print. The paint is now stored the way Blender expects, so the viewport and the slicer agree. Scenes painted with 1.1 still open with the right colours.
A 3MF is a zip holding one or more models, a palette and - when it came out of a slicer - the painting itself. All of it is read:
- <basematerials> with a displaycolor per material;
- <m:colorgroup>, what Bambu Studio calls "standard 3mf colour import";
- paint_color, the PrusaSlicer / Bambu Studio MMU painting, decoded down its whole recursive split tree so the filaments land on the same faces they were painted on.
Objects made of <component> references are flattened with their transforms
- what the author modelled is what you get - and a Bambu, Orca or Creality project that hides its geometry in 3D/Objects/object_N.model is followed there. When the project declares its spools, the real filament colours come across with it. A 500 000-triangle painted Creality project imports in about 23 seconds with its palette intact.
Twenty-nine presets in four groups (materials and finishes; figures, minis and fun; terrain, tiles and parts; light and checks), no UVs, no textures, not one brush stroke. The colour comes out of the geometry:
- curvature tells a crevice from a ridge - and it is normalised on the model's own 90th percentile, so a soft organic sculpt and a hard-edged mechanical part both use the full range instead of washing out;
- thickness finds the walls too thin to print;
- ambient occlusion finds what sits buried in shadow;
- outward, height and normal fields do the rest.
Weathered rock, carved wood, gilded relief, mossy stone, lava, ice, antique silver, water and jewels, terrain, edge highlight, two-tone… and two that are diagnosis rather than decoration: thin-wall check and backlit, which colours the model by how much light gets through the wall.
Every button carries a chip made of that preset's own filaments, so you see the palette before you click. Filament slots folds a richer preset down to the number of spools you actually own, closest colours merged first.
Where the presets read the shape, this reads space: a texture sampled in millimetres, so a 40 mm tile is 40 mm on the printed part whatever the size of the model.
Load your own image - a licensed wood or stone photo, a scan, a height map, your own artwork - and it is wrapped triplanar: no UVs, no unwrapping, no seam. That matters, because a 3MF that came out of a slicer almost never carries usable UVs, and nobody should have to unwrap a downloaded model before they can put a texture on it. Paint with the photo's own colours, or use it as a pure height map and carve it in.
Brick, cells, marble, clouds, brushed metal, stripes and rings are built in for before you have picked an image - brick is the default because a running bond with mortar joints is pure geometry, which is what a procedural is genuinely good at. Depth can be negative, so the joints go in and the bricks stand proud.
Nothing here is destructive. The untouched vertex positions are stored on the mesh, so Reset Shape always puts the surface back; relief measured from the original never stacks on itself; and Clear Paint restores the colours the file arrived with, not a flat grey.
The same fields, moving the surface instead of colouring it: emboss the ridges, engrave the crevices, deepen the recesses by a millimetre you choose. Detail that survives even a single-filament print.
- Colour 3MF - standard 3MF plus a colour group, one object made of components, no Metadata folder. The slicer creates a filament slot per colour it finds. The universal one.
- Painted 3MF - a real paint_color per triangle plus the extruder map. The model opens already painted, ready to slice. Filament 1 is the object's own extruder and carries no attribute at all, exactly as the slicers write it themselves.
- OBJ + MTL - per-vertex colours in the OBJ, faces grouped per filament, MTL alongside. Past four filaments this is the one that works: the slicers read the colours from the vertices, not from the MTL, and their colour dialog opens fully populated.
- STL - geometry only, for a one-filament print.
- Full-colour 3MF - the whole colour, no palette. A captured texture is embedded as a texture (m:texture2d + a m:tex2coord per corner, the PNG in the zip), anything else as one colour per vertex. For UV inkjet, binder jet and PolyJet printers, and viewers. Reads back in lib3mf, the 3MF Consortium's reference library, with zero warnings. FDM slicers open it as geometry.
Paint that lives per triangle corner (a captured texture, a slicer's own painting) picks the filament per triangle from its own three corners, so a colour edge lands on the triangle edge instead of one triangle out.
Plus Bake Paint into Material Slots: one material per filament, which is the currency the rest of the pipeline speaks.
Slicers refuse a mesh with holes, zero-area faces or edges shared by three faces, even when it looks perfect in Blender. Check Mesh counts them and changes nothing. Then Quick Fix (weld, loose bits, zero-area faces, small holes, normals out), Deep Fix (repeated until nothing changes, plus duplicate faces and inner walls removed, crowded edges pruned back to two faces, every open loop capped, the big ones too) and, as the last resort, Rebuild Solid: a fresh closed skin on a voxel grid with the colours carried over and the old mesh kept as a hidden backup, for crossing surfaces and overlapping shells that no edge repair can touch. The first two are kept only where they measurably help; a clean mesh is left untouched.
Install RegoSplit or Rego Kit Card and two more buttons appear. Hand to RegoSplit bakes the paint into material slots and passes the model over for Split with Pins, or Separate by Color when your printer has no AMS. Hand to Rego Kit Card traces it into flat plates that snap together on one card. No re-export, no round trip through disk.
3Mffer imports and paints. Cutting, pinning and colour separation stay RegoSplit's job; flat kit cards stay Rego Kit Card's. Buy one, buy all three: nothing is duplicated.
What it is NOTHonest limits, so nobody buys the wrong thing:
- It reads geometry, colours and painting. Slicer settings, supports, plates and modifiers inside a project file are not imported.
- Preset painting is per vertex: a crisp boundary follows the mesh's own resolution. Subdivide first if you want a sharper line. A captured texture and a slicer's painting are per triangle corner and keep their edges.
- Colour work stops at filaments: Make Filament Version reduces a texture to the spools you have, but splitting colours into printable solids is RegoSplit's ground.
- The full-colour 3MF is written to specification and reads back in the 3MF Consortium's own library; it has not yet been opened on a full-colour printer's own software. Check it in yours before a long print.
- No brush. This add-on paints from the shape; hand painting is Blender's own vertex paint, which it reads and writes happily.
- Very heavy imports (500 k triangles and up) take tens of seconds. The painting is decoded exactly, not sampled.
- Slicer behaviour is claimed from the file formats and from files produced by Bambu Studio, Orca, Creality Print and PrusaSlicer. Always check the filament mapping in your slicer before a long print.
- Blender 4.2 LTS or newer (extension format)
- Windows, macOS, Linux
- No internet connection required, ever
3MF Magic Solver contains no artificial intelligence and no machine learning, and it has no network code at all: no telemetry, no analytics, nothing leaves your machine. It works fully offline.
On the development side I use AI tools the way I use every other tool in my kit - for coding assistance and for translation. I read and understand every line that ships and I take full responsibility for how it behaves. The 217 automated checks are there to back that up: they run headless on Blender 4.2, 4.5 LTS and 5.2, with the add-on installed from the zip, and check real results - every preset paints, every palette fits the slot count, all five exports write and read back, the paint_color encoder round-trips against the decoder over the whole filament range, a textured sphere exported as GLB, OBJ and PLY comes back with its colour matched to the texture corner by corner, and a deliberately broken mesh comes out of the repair ladder clean.
This is a beta, and I want to build it with you3MF Magic Solver is in beta. The version on sale is 1.2.0 beta. Everything on this page works today and is covered by automated tests (217 checks, run on Blender 4.2, 4.5 LTS and 5.2 with the add-on installed from the zip you download), but a beta can still have problems, above all with files I have never seen. A 3MF can come out of a dozen slicers, painted in a dozen ways, and I only find the awkward ones if you send them to me.
So if something goes wrong, please tell me in the comments on this page: what you dropped in, what came out and what you expected. Every report goes into the next update. Every future version is included: buy once, updated for good.
Known issues in 1.2.0 beta: none known yet.