| 拡張子 | .3mf |
|---|---|
| MIMEタイプ | application/vnd.ms-package.3dmanufacturing-3dmodel+xml、application/vnd.ms-printing.printticket+xml、model/3mf |
| 開発者 | 3MF Consortium |
| 初版 | 2015年4月29日 |
| 最新版 |
1.2.3 (2018年8月16日) |
| 包含物 | 3Dプリンター data |
| 包含先 | Open Packaging Conventions |
| 派生元 | ZIP, XML |
| オープン フォーマット | Yes |
| ウェブサイト | 3MF Specification |
3MF(3D Manufacturing Format)は、3MFコンソーシアムによって開発・公開されている3Dファイルフォーマット規格である。
3Dプリンターなどの積層造形(アディティブ・マニュファクチャリング)専用に設計されたXMLベースのデータ形式である。従来のSTL形式などの一般的なフォーマットとは異なり、3Dモデルの形状データに加え、ノズル(ホットエンド)や造形トレイ(ベッド)の温度設定、積層速度、複数素材(マルチマテリアル)を使用する領域、サポート構造といった「製造時の各種パラメーター(特徴)」をすべて一つのファイル内に埋め込むことができる。これにより、デザイン(設計データ)を配布・共有する際、これらの製造設定を別途やり取りする必要がなくなるのが特徴である。また、3MFは他のCADフォーマットと比較して、システムへの組み込み(実装)がはるかに容易になるよう設計されている。
開発を主導する3MFコンソーシアムは、CADソフトウェアの開発企業や関連企業で構成されている。2015年の設立当初は、Autodesk、ダッソー・システムズ、FIT AG、PTC、HP、Microsoft、Shapeways、SLMなどが参加していた。その後、マテリアライズ、 3Dシステムズ、シーメンス・デジタルインダストリーズ・ソフトウェア、 Stratasysといった積層造形ビジネスの主要企業も順次参画している。コンソーシアムは主要な仕様書の公開だけでなく、3MFファイル形式のC++による実装の管理も行っている。
2022年にはLinuxのオープン標準プロジェクトの一部となり、さらに2025年には国際標準規格「ISO/IEC 25422:2025」として正式に制定された。
以下は、3MF委員会によって公開された3MFの特徴である。
以下は、1×2×3の直方体を記述したシンプルな3MFファイルの例である(内部のXMLデータはZIP形式で格納される)。
<?xml version="1.0" encoding="UTF-8"?>
<model unit="mm"
xml:lang="ja-JP"
xmlns="http://schemas.microsoft.com/3dmanufacturing/core/2015/02">
<metadata name="Copyright">
Copyright (c) 2015 3MF Consortium. All rights reserved.
</metadata>
<resources>
<object id="1" type="model">
<mesh>
<vertices>
<vertex x="0" y="0" z="0" />
<vertex x="1" y="0" z="0" />
<vertex x="1" y="2" z="0" />
<vertex x="0" y="2" z="0" />
<vertex x="0" y="0" z="3" />
<vertex x="1" y="0" z="3" />
<vertex x="1" y="2" z="3" />
<vertex x="0" y="2" z="3" />
</vertices>
<triangles>
<triangle v1="3" v2="2" v3="1" />
<triangle v1="1" v2="0" v3="3" />
<triangle v1="4" v2="5" v3="6" />
<triangle v1="6" v2="7" v3="4" />
<triangle v1="0" v2="1" v3="5" />
<triangle v1="5" v2="4" v3="0" />
<triangle v1="1" v2="2" v3="6" />
<triangle v1="6" v2="5" v3="1" />
<triangle v1="2" v2="3" v3="7" />
<triangle v1="7" v2="6" v3="2" />
<triangle v1="3" v2="0" v3="4" />
<triangle v1="4" v2="7" v3="3" />
</triangles>
</mesh>
</object>
</resources>
<build>
<item objectid="1" />
</build>
</model>
</syntaxhighlight>