3MF
Generated by scripts/gen-format-pages.py from docs/data/format-metadata/, FILE_FORMATS.csv and docs/formats-master.csv. Do not edit by hand: change the source, then run the script.
3mf Preview.
At a glance
| Original creator | The 3MF Consortium, a Joint Development Foundation project; its specification started from Microsoft's donation of its 3D file format work in progress |
| Purpose | Describes one or more 3D models, their content and appearance, so that design applications can send full-fidelity models to other applications, services and 3D printers. |
| Extensions | .3mf |
| Poka parser | poka-3mf |
| Viewer | poka-3d-viewer |
| Depth tier | Parser with a shared viewer (see Depth tiers) |
| Breadth tier | B2 Broad (see Breadth tiers) |
How much Poka reads
B2 Broad. The common content of the current and the common older versions is decoded. Some named features or versions are not, and are listed.
Confidence: medium (the reviewer read the code). Basis: Reviewed 2026-10-16: parsers/poka-3mf/src/main.rs only returns a Model marker with format 3mf and empty data; the real work is the vendored three.js loader desktop/src/js/vendor/three/3MFLoader.js (1478 lines, header lists supported features), called from viewer-3d.js (case 3mf) and shared by the web app. No unit tests and no corpus sample (poka-samples holds no .3mf), so nothing was run. Covers 3MF core (models, meshes, components, build) with base materials, plus part of the Materials and Properties extension.
What Poka does not read
- slice extension (sliced print layers)
- beam lattice extension
- boolean operations and volumetric extension
- production extension identifiers and secure content (signed or encrypted packages)
- Materials and Properties extension beyond 2D textures, colour groups and metallic display properties (composite and multi-property groups, translucent and specular display properties)
- model metadata such as title, designer and licence is parsed but not shown
- thumbnails and print tickets are not shown
- no corpus sample or test
- a bad file shows the loader error text in the 3D load failed overlay
Background
The Library of Congress lists Autodesk, Dassault Systèmes, FIT AG/netfabb, HP, Microsoft, Shapeways and SLM Solutions as members at the 2015 launch. A 3MF file is an Open Packaging Conventions package: a ZIP archive holding XML model parts. The Poka module only marks the file as 3MF; the frontend 3D viewer reads the package with the three.js 3MF loader.
Versions
| Version | Identifier | Poka | Note |
|---|---|---|---|
| 3MF core specification with the Materials and Properties extension | Partly read | The three.js loader reads models, meshes, components and base materials; of the Materials and Properties extension it reads 2D textures, colour groups and metallic display properties only (3MFLoader.js header). The Library of Congress gives 1.3.0 as the latest core version as of 7 October 2021. |
Libraries
Libraries Poka uses or has assessed for this format, with the status, licence and language the registry records.
- threemf2 (candidate; MIT OR Apache-2.0; Rust; https://github.com/vshashi01/threemf2) — Reads and writes 3MF with eager and lazy loading; API still changing.
- lib3mf (telecos/lib3mf_rust) (candidate; MIT; Rust; https://github.com/telecos/lib3mf_rust) — Pure Rust, no unsafe; supports several 3MF extensions. README says much of the code was produced by AI coding agents.
- lib3mf (3MF Consortium) (candidate; BSD-2-Clause; C++; https://github.com/3MFConsortium/lib3mf) — Reference implementation; reads and writes 3MF, with bindings in other languages.
Sources
- https://loc.gov/preservation/digital/formats/fdd/fdd000557.shtml
- parsers/poka-3mf/src/main.rs
- poka-interfaces: desktop/src/js/viewer-3d.js
- poka-interfaces: desktop/src/js/vendor/three/3MFLoader.js