3MF — Modern 3D Printing Format with Colors, Materials and Support Structures

2026-03-1911 min read
3MF3D printingadditive manufacturingMicrosoftSTL alternative

3MF (3D Manufacturing Format) is the modern successor to STL, developed in 2015 by the 3MF Consortium under Microsoft's leadership. Where STL is bare 1987-era geometry without units, colors, or materials, 3MF is a ZIP container with an XML payload carrying the full 3D-printing manifest: triangle mesh, per-vertex and per-triangle colors, materials with physical properties, textures, supports, beam-lattice infill, scenes with multiple objects and transforms, plus printer and operator metadata. The format is built on Microsoft OPC (Open Packaging Convention) — the same container tech as DOCX and XLSX — enabling zero-cost reuse of existing ZIP/XML parsers. Modern slicers — Bambu Studio, PrusaSlicer 2.5+, Ultimaker Cura 5.x — use 3MF as the primary project format (preserving supports, orientation, slicing parameters), leaving STL for legacy exchange. On osm2cdr.ru threemf_exporter.py via Building3DExporter outputs OSM maps as 3MF with buildings colored by zoning type (residential / commercial / industrial / civic), which translates directly to multi-material printing on a Bambu Lab X1C with AMS.

Map generation of Ekaterinburg city center

History: from 2015 STL fatigue to industry default

By 2015 STL was 28 years old and had accumulated architectural problems impossible to fix without a breaking change. The file carried no units, no colors, no materials, no orientation, no hierarchy, no printer metadata — the slicer had to guess and warn the user. Indie 3D printers learned to live with it, but industrial 3D printing (Stratasys, HP, SLM Solutions) required a robust format with manifests and build planning. Concurrently Microsoft was building Windows 10 3D Builder — a built-in app for 3D printing scheduled for the 2015 anniversary update.

In April 2015 Microsoft initiated the 3MF Consortium and gathered the industry's founding members: Autodesk, Dassault Systèmes, FIT AG, HP Inc., Materialise NV, SLM Solutions, Stratasys, 3D Systems (the creators of STL!), Ultimaker, Siemens PLM, GE Additive. The 1.0 spec shipped May 2015. Windows 10 3D Builder in the August 2016 Anniversary Update used 3MF as its primary format.

Adoption rolled out in waves. By 2018, Cura and PrusaSlicer added 3MF reading; by 2020 they used 3MF as the "project file" — a format preserving the full slicing state. In 2022, Bambu Lab X1 launched with AMS (Automatic Material System) — a $1200 multi-material printer that immediately popularized colored 3D printing. Bambu Studio used 3MF as its native format from day one, and multicolor 3D printing went mainstream. The 1.4 spec (2024) added the Volumetric Extension and refined Beam Lattice.

3MF isn't an OGC standard (it's not a geoformat), but it's the de-facto STL replacement in industrial 3D printing and is rapidly displacing STL in hobby segments. AMS printers work with 3MF; STL printers convert STL to 3MF before slicing to add supports and save the project.

Inside the file: OPC container and 3dmodel.model

A 3MF file is a ZIP archive with the .3mf extension. Rename myfile.3mf to myfile.zip and unpack — you see the OPC (Open Packaging Convention) structure, the same as DOCX:

myfile.3mf (ZIP container)
├── [Content_Types].xml     — MIME types for files inside
├── _rels/
│   └── .rels                — relationships root package → 3D model
├── 3D/
│   ├── 3dmodel.model        — primary XML with geometry and materials
│   └── Textures/
│       └── building_tex.png — optional textures
├── Metadata/
│   └── thumbnail.png        — preview for slicer and file manager
└── Materials/               — optional external materials

The main file — 3D/3dmodel.model — is XML with namespace http://schemas.microsoft.com/3dmanufacturing/core/2015/02. Key differences vs STL:

  • unit attribute — the format explicitly carries units (millimeter, micron, centimeter, inch, foot, meter). STL doesn't — you have to guess.
  • <basematerials> — a material palette with colors and (optionally) physical properties.
  • Vertex deduplication — each vertex is defined once and reused across triangles via indices. STL duplicates vertices per triangle (3× overhead).
  • <build> section — describes the scene: which objects sit on the bed and with which transforms. You can place 5 copies of one building via 5 <item> entries with no geometry duplication.

Extensions expand the core spec: - Beam Lattice — describes lightweight infill via nodes and beams, for printing lattice structures without traditional infill patterns. - Production — multipart assemblies, build plates, multi-print scheduling. - Slice — pre-sliced layer stacks with G-code for proprietary slicers. - Volumetric — heterogeneous materials with density gradients (for biomedical and graded materials).

Map generation of Kaliningrad city center

Use cases

Multi-material colored print with AMS. Bambu Lab X1C with AMS loads 4 filament colors (residential / commercial / civic / industrial). Load the 3MF from osm2cdr, the slicer auto-distributes buildings across materials, generates G-code with filament swaps. The final model is a district color-coded by building type, no manual painting.

Architectural scale model. An architect exports a city block as 3MF with zoning colors. Prints on industrial FDM with PETG (stronger than PLA), presents a realistic colored model to a client without post-paint. 3MF carries production-grade metadata: printer operator, date, model version — important for qualified manufacturing.

Dental / medical printing. 3MF Volumetric Extension lets you describe models with density gradients — needed for dental implants with zonal hardness, biomedical scaffolds. STL can't.

Jewelry with lattice structures. Beam Lattice Extension describes lightweight infill via beam graphs — for printing intricate rings, lattice-watches on SLA with minimal material. The 3MF imports directly into Lychee Slicer / ChiTuBox without infill regeneration.

Education with colored city models. A geography teacher exports Venice from osm2cdr as 3MF, the school's Bambu A1 mini prints a model with 4 colors (water blue, residential cream, civic red, parks green). Hands-on classroom tool — visual cognition beats screen maps.

Game asset pipeline. 3MF isn't aimed at real-time graphics (use glTF), but it's convenient for photogrammetry-to-print: scan → mesh cleanup → export 3MF with baked vertex colors → photogrammetric print for miniatures and tabletop games.

Strengths and weaknesses

Strengths. Full manifests — units, materials, colors, supports, scene hierarchy in one file. OPC container lets you reuse ZIP parsers and embed textures, metadata, thumbnails. Active industry support — Bambu, Prusa, Ultimaker, HP, Stratasys commit to the spec. Vertex deduplication gives smaller file size vs STL for the same mesh (≈30–40% savings). Backward-compatible via core spec — extension features are gracefully ignored by older parsers. ZIP compression — even verbose XML compresses with DEFLATE to compact sizes.

Weaknesses. Not as universal as STL — slicers older than 2018 don't read 3MF. ZIP overhead for tiny models (1-2 triangles = 2 KB 3MF vs 200 bytes STL). XML verbosity at read time — 3MF parsing is slower than STL on the same geometry (mitigated by indexed access). Extensions multiply faster than legacy slicers can pick them up — Bambu may write 3MF with features Cura doesn't yet understand. Not aimed at real-time web preview (use glTF). Not a geoformat — no CRS metadata, coordinates in unit without projection.

3MF vs STL vs OBJ vs AMF

STL. 1987 universal. Bare geometry, no units, no colors. STL is read by all slicers, OBJ viewers, CAD packages. The choice for quick prototypes or legacy-tool compatibility.

OBJ. Wavefront 1989. A text format supporting materials via .mtl and UV textures. Good for 3D viz and game assets, but not optimized for printing — slicers read it without supports manifests or production metadata.

3MF. 2015, ZIP-XML, OPC container. Full manifests for 3D printing: materials, colors, supports, scene, slicing state. Native format for modern slicers. The choice for color printing, production work, and saved projects.

AMF (Additive Manufacturing Format). ASTM ISO/ASTM 52915, 2011. XML-based, supports colors and materials. Was a direct predecessor to 3MF, but the industry quickly switched to 3MF for better OPC packaging and Microsoft sponsorship. AMF is essentially dead in 2025.

PLY. Stanford 1994. Good for point clouds and vertex colors, but carries no materials or scenes. Used in photogrammetry pipelines (Meshroom, Reality Capture export PLY), not by slicers directly.

For production 3D printing with colors and materials — 3MF. For quick monochrome export — STL. For viz and game assets — OBJ / glTF.

Pipeline in OSM2CDR

Our threemf_exporter.py (registered under format-id 3mf in ExporterRegistry) inherits from Building3DExporter. Pipeline:

  1. Building loading. PostGIS returns buildings via the WKB fast path (ST_AsBinary, ST_SimplifyPreserveTopology per zoom level). Buildings get tags building, building:levels, height for extrusion.
  2. Material classification. Each building gets a class:
  3. building tag apartments|residential|house|dormitory → material Residential (cream #C2A878)
  4. building tag commercial|retail|office|industrial|warehouse → material Commercial (steel-blue #4A90D9)
  5. building tag church|cathedral|mosque|temple|civic|government|public → material Civic (terracotta #E8505B)
  6. building tag garage|hut|shed or fallback → material Other (gray #8E8E8E)
  7. Extrusion. trimesh.creation.extrude_polygon turns each OSM polygon into a prism with real height. If height is missing — building:levels × 3 m or a type-based fallback.
  8. Mesh grouping. Triangles are grouped by material — each group becomes a separate <object> in 3MF resources with the correct pid (property id) and pindex (material index).
  9. Scene build. All material groups are placed on a single build plate via <build> items with identity transform. Origin — bottom-south-west bbox corner, Z-up.
  10. 3MF write. We use lib3mf (a C++ library from the 3MF Consortium with Python bindings) or trimesh's built-in 3MF writer to compose the OPC package: [Content_Types].xml, _rels/.rels, 3D/3dmodel.model with materials and mesh, optional Metadata/thumbnail.png (first-frame render).
  11. Validation. lib3mf validation checks XML schema compliance, watertightness per object, material-index sanity. If anything breaks — fallback to STL export with a warning.

Coordinates live in unit="meter" (fixed), Z-up. Slicer-friendly orientation: the model stands on the bed via identity transform in <build>. With ground_plate=true we add an extra <object> with a 2 mm base and material Ground (dark-gray #2C2C2C).

Typical output: Brest.3mf ≈ 800 KB for a 1 km² block (compressed, vs ≈ 2 MB for an equivalent STL).

Map generation of Vladivostok city center

FAQ

3MF vs STL — which to choose? If the slicer is modern (Bambu Studio, PrusaSlicer 2.5+, Cura 5.x) and you need colors or to save a project — 3MF. If the slicer is older than 2018 or you need universal exchange between tools — STL. For production / industrial — always 3MF.

Can I open 3MF in Blender / MeshLab? Blender 3.x+ opens 3MF natively (import → 3MF). MeshLab requires a plugin. Most 3D tools from 2020+ support 3MF via import.

What is Beam Lattice? A 3MF extension describing lightweight infill via a graph of nodes and beams. Prints intricate structures without traditional rectilinear infill. Useful for jewelry, biomedical scaffolds, ultra-light parts.

AMS multi-material setup. Bambu Lab AMS is a 4-slot filament carousel. Load a 3MF with 4 materials, Bambu Studio auto-assigns spools to slots and generates G-code with filament swaps. For osm2cdr.ru — Residential→slot 1, Commercial→2, Civic→3, Other→4.

Where does the thumbnail go in 3MF? Slicers and file managers (Windows Explorer on Win10+) read Metadata/thumbnail.png for preview without opening the model. Our exporter writes a 256×256 preview render of the first frame.

Can I embed a texture? Yes, via the 3MF Materials extension. Drop Textures/building.png into the OPC package, reference it via <texture2d> in materials. On osm2cdr we currently use only vertex/face colors via basematerials — texture export is on the roadmap.

Max area for 3MF export? Every format on osm2cdr.ru is paid: the full file comes after you sign in and pay, the price is shown before payment, and a demo file with the word “DEMO” cut out of the map downloads for free. Technical per-format limits are surfaced via /api/format-limits. Practical print limit — 3–5 km² on FDM, otherwise details get too small.

Is 3MF an ISO/ANSI standard? No, 3MF is a 3MF Consortium specification, not ISO-approved. But it's de-facto accepted across the industry. AMF (ISO/ASTM 52915) is formally standardized but lost the adoption race to 3MF.

Conclusion

3MF in 2026 is the default format for modern 3D printing. STL remains the universal fallback, but anything involving colors, materials, supports, and production manifests goes through 3MF. Bambu Studio, PrusaSlicer, and Cura use 3MF as the primary project format; AMS printers work with 3MF exclusively. For OSM maps this is especially valuable — buildings are typed by their building tags, and 3MF carries these classifications straight into the slicer, making colored 3D-printed districts a one-click job. On osm2cdr.ru this is available via /api/render?format=3mf or the landing page /formats/3mf/ — pick a bbox, download the 3MF, open it in Bambu Studio, hit Print.

Sources

← All articles