什么是 3MF?正在取代 STL 的 3D 打印格式
STL 那些没人提的硬伤
自 1987 年以来,STL 一直是 3D 打印的默认文件格式。这在科技界简直是天荒地老了。一个当初为价格堪比一套房子的光固化成型机设计的格式,如今却成了价格低于一部智能手机的桌面打印机的默认格式。它的弊端已经暴露无遗。STL 从来就不是为了承载颜色、材料属性、纹理贴图或打印设置而设计的。 想知道 STL 文件里到底有什么吗?用文本编辑器打开一个看看。你会发现一个简单粗暴的三角形列表。仅此而已。3D 模型上的每个表面都被打碎成平面的三角形面片,每个面片由三个顶点和一个法线向量描述。这个格式没有单位的概念,这一直是让人头疼的根源。一个描述为 10 个单位宽的立方体,可能是 10 毫米,也可能是 10 英寸,你只有等切片软件猜对了才知道。这就是为什么同一个 STL 文件,在一个切片软件里导入时可能像个娃娃屋,在另一个里却成了个庞然大物。 而且它完全不能存储颜色信息。如果你想在像 Bambu Lab X1C 或 Prusa XL 这样的现代机器上打印多色模型,你必须把模型按颜色拆分成多个独立的 STL 文件,或者使用其他格式。STL 规范里也没有关于材料、填充或支撑的字段。每次你切片一个 STL 文件,都得从零开始。 3MF 联盟——由微软、Autodesk、Dassault Systèmes、惠普等公司于 2015 年创立——着手收拾这个烂摊子。他们的解决方案就是 3D 制造格式(3D Manufacturing Format),这是一种现代化的容器,能将几何结构、颜色、材料、打印设置和元数据打包成一个干净利落的文件。
3MF 文件里到底有什么?
从结构上说,3MF 文件本质上就是一个改了后缀名的 ZIP 压缩包。如果你把任何 .3mf 文件重命名为 .zip 并解压,你会看到一个结构清晰的文件夹,里面包含 XML 文件、纹理图片和一个清单文件。这种开放式结构是它最大的优势。核心的几何结构存在一个名为 3dmodel.model 的文件中,用一种可读的 XML 格式编写,任何开发者都可以实现它而无需支付授权费。 在这个压缩包内部,基础的 3MF 规范定义了一套丰富的数据: 它像 STL 一样,以索引三角形列表的形式存储几何结构,但有一个关键区别:单位在 XML 头文件中被明确定义。一个标记为毫米的模型将始终以正确的尺寸导入,终结了猜来猜去的烦恼。 它原生支持颜色和材料。可以为单个三角形或整个对象指定特定的颜色(以 RGBA 十六进制值的形式)或材料。“材料与属性”扩展功能更进一步,支持渐变、复合材料和其他复杂的分配方式。 作者姓名、创建日期和描述等元数据都可以直接嵌入。对于需要追踪零件历史的打印工场和产品团队来说,这非常宝贵。 最重要的是,它有“打印票据”(Print Tickets)。这个扩展功能让切片软件可以将层高、填充百分比、支撑设置和打印机配置文件直接嵌入文件中。当你打开一个从 Bambu Studio 保存的 3MF 文件时,预期的打印设置会随文件一同保存。 单个 3MF 文件还可以描述整个构建板,包含多个已正确定位和定向的对象,每个对象都有自己的设置。一个 STL 描述一个网格;一个 3MF 可以描述一整个生产批次。对于复杂模型,由于高效的 XML 压缩,文件大小通常比二进制 STL 更小,所以一个 45 MB 的 STL 可能会变成一个 38 MB 的 3MF。
主流切片软件如今如何处理 3MF
现在,所有正经的切片软件都已标准支持 3MF,但支持的深度各不相同。有些只是把它当作另一种几何格式,而另一些则充分利用了它的全部功能。 **Bambu Studio** 拥有当今市场上最好的 3MF 支持,没有之一。当你保存项目(文件 > 保存项目)时,它会写入一个全面的 3MF 文件,包含完整的打印板布局、多色打印的耗材分配、所有支撑绘制数据以及每一项切片设置。把这个文件发给另一个 Bambu Lab 用户,他们一键就能完美复现你的打印。这正是 3MF 格式设计的初衷。 **Prusa Slicer** 的支持也很到位。它的项目文件(文件 > 项目另存为)就是 .3mf 文件,其中嵌入了打印配置文件、修改器网格和每个对象的设置。对于任何比简单单色打印更复杂的项目,这都是保存工作的正确方式。使用普通的“将打印板导出为 STL”选项会丢掉所有这些宝贵的信息。 **Ultimaker Cura** 从 3.0 版本开始支持 3MF 导入,从 4.x 版本开始支持导出。对于几何结构和基本设置,其实现相当可靠,但在保留像修改器网格这类 Cura 特定功能方面,不如 PrusaSlicer 的原生格式稳定。 **Microsoft 3D Builder**,作为 Windows 10 和 11 的自带应用,原生读写 3MF。这并不奇怪,因为微软是 3MF 联盟的联合创始人和该格式的早期拥护者。 **Fusion 360** 可以直接从“制造”工作区(制造 > 3D 打印)导出 3MF。它能正确处理单位,并能将多实体组件导出为单个 3MF 文件中的独立对象。 记住,并非所有 3MF 文件都生而平等。一个来自 Fusion 360 的 3MF 文件将包含纯粹的几何数据和单位信息。而一个来自 Bambu Studio 的 3MF 项目文件,除了这些,还包含一套完整的打印设置。格式本身支持所有这些,但文件内容的丰富程度取决于导出它的应用程序往里放了多少数据。
3MF、STL、OBJ 对比:何时使用哪种格式
3D 打印界有三种主要的文件格式,知道该用哪一种是避免挫败感的关键。 **STL** 是最基础的通用格式,这使它成为确保最大兼容性的最稳妥选择。如果你要把模型上传到像 Printables 或 Thingiverse 这样的公共库,STL 是你唯一能确定每个人都能打开的格式。它最大的限制也正是它的优点:除了原始几何数据,它什么都不包含。没有设置或颜色信息会被误解。对于简单的单色打印,并且你打算自己在切片软件里配置所有东西,STL 完全够用。 **OBJ** 是当你需要颜色和纹理信息用于 3D 打印之外的应用(如渲染或游戏开发)时的首选格式。它存储顶点颜色和用于纹理映射的 UV 坐标,并链接到一个 MTL 材料文件和图片文件(如 PNG)。它的弱点在于它是一堆必须一起传输的零散文件。任何找过丢失的 .mtl 文件或纹理贴图的人都懂这种痛。你必须自己把它们打包成 zip 文件,才能防止它们失散。 **3MF** 是当你希望你的设置和意图随模型一同传输时的正确格式。对于多色或多材料打印,它必不可少。对于与合作者共享一个完整配置的项目,它简直是救星。它也是许多专业打印服务(如惠普的 Multi Jet Fusion)所要求的格式。 这里有一个简单原则:用 3MF 来保存你自己的项目文件,以及与同一生态系统内的人共享完整的打印任务。用 STL 来面向所有人发布几何模型。当你有纹理贴图且目标是渲染引擎(不一定是打印机)时,用 OBJ。 像 CocoConvert 这样的工具可以在这些格式之间转换几何结构。但没有任何工具能凭空创造出源文件中没有的打印设置。将 STL 转换为 3MF 会给你一个包含几何结构的有效 3MF 文件,但“打印票据”部分将是空的,因为 STL 里什么都没有。
STL 与 3MF 互转:你实际得到了什么
从 STL 转换为 3MF 是一个常见操作,但理解这个过程中实际发生了什么很重要。 当你将 STL 转换为 3MF 时,转换器会读取三角形网格,并用 3MF 的 XML 格式重写它。最重要的收获是获得了一个明确的单位定义。CocoConvert 默认使用毫米,这也是大多数消费级切片软件所期望的。几何结构本身被精确保留——没有三角形被改变,也没有进行网格修复。你得到一个任何现代切片软件都能正确打开的有效 3MF 文件。 你得不到的是 STL 原本就没有的东西。没有颜色数据,没有材料分配,也没有打印设置。新的 3MF 文件导入 Bambu Studio 或 PrusaSlicer 时,会像你导入原始 STL 一样,只是一个原始对象。那为什么还要多此一举呢?因为有些工作流程特别要求 3MF 作为输入,例如某些 CAD 系统或像惠普的 SmartStream 3D Build Manager 这样的打印管理平台,这种转换就至关重要了。 反向转换——从 3MF 到 STL——则是一种有损转换。你得到了几何结构,但所有的颜色数据、材料分配、构建板布局和打印设置都被剥离掉了。如果你转换一个包含多个对象的 3MF 项目文件,你通常会收到多个 STL 文件(每个对象一个),CocoConvert 就是这样处理的。通常这正是想要的结果。 对于 3MF 到 OBJ 的转换,顶点颜色通常能被正确映射。但是,如果你的 3MF 使用了带有 UV 映射 PNG 的 Texture 3MF 扩展,过程会更复杂。在依赖它进行关键工作流程之前,一定要在你的目标应用程序中验证输出结果。 没有自动转换器能可靠地修复损坏的几何结构。如果你的源 STL 有非流形边、反转的法线或破洞,这些缺陷会一并带到 3MF 文件中。最佳实践是在转换前,先用像 Meshmixer(分析 > 检查器)或 Microsoft 3D Builder 的自动修复功能来修复你的模型。
3MF 在专业和工业流程中的应用
当业余爱好者还在争论文件格式时,工业界已经用行动投了票。3MF 是为严肃的生产流程而设计的,正是在这些领域,它的优势变得不容置疑。 惠普的 Multi Jet Fusion 打印机,作为大量专业尼龙零件背后的主力机型,就使用 3MF 作为其原生语言。要在 HP Jet Fusion 5200 上打印一个全彩零件,你需要一个带有体素级颜色数据的 3MF 文件。根本没有任何 STL 工作流程能实现这一点。除了 3MF 别无选择。 在生产环境中,“打印票据”功能是颠覆性的。工程师可以指定 0.1 毫米的层高以保证公差,使用陀螺仪填充以增强强度,设置 4 层壁厚来加固结构墙,然后将所有这些都保存在一个 3MF 文件中。这个文件被送到打印工场,每个操作员无需触碰任何设置就能生产出完全相同的零件。这几乎杜绝了因手动配置而出错的可能。 像 Autodesk Fusion 360 和 PTC Creo 这样的 CAD 软件导出 3MF 时会带有正确的单位元数据,这解决了一大类问题。任何见过因为一个零件用英寸建模而另一个用毫米建模导致整批生产报废的人,都知道这有多关键。切片软件猜错单位可能导致灾难性的装配问题和真金白银的浪费。3MF 强制性的单位声明则完全避免了这种情况。 3MF 联盟还在通过新的扩展功能不断突破极限。“切片”扩展允许将预先切好的层数据嵌入文件,直接向机器发送可供打印的指令。草案中的“体积”扩展则旨在定义连续的材料渐变,从而制造出能从刚性过渡到柔性的零件。这些都不是为了打印桌面小玩具;它们是专业增材制造的未来。
如何使用 CocoConvert 转换 3MF 文件
CocoConvert 是一款用于处理 3MF 转换的简单直接的工具。它支持 STL 到 3MF、OBJ 到 3MF、3MF 到 STL 以及 3MF 到 OBJ。你只需上传文件,选择一种格式,然后下载结果。 这里有几个技巧可以确保你的转换顺利进行。 当从 **STL 转换为 3MF** 时,输出文件的单位会被设置为毫米。这通常是你想要的结果。但是,如果你的原始 STL 是用英寸建模的(在一些美国的 CAD 工作流程中很常见),那么它导入到切片软件里时看起来会特别小。如果一个本应是 50 毫米宽的零件显示为 1.97 毫米,问题就出在这里。你需要在切片软件里将其放大 25.4 倍,或者更好的做法是,在转换前从你的 CAD 软件中重新以毫米为单位导出原始文件。 对于 **3MF 到 STL** 的转换,记住一个包含许多对象的大型项目文件会生成一个包含多个 STL 文件的 ZIP 压缩包。3MF 中的每个网格对象都会变成一个独立的 STL 文件。如果你的目标是得到一个合并后的单一网格,你需要在转换后使用像 Meshmixer 或 Blender 这样的工具来合并它们。 CocoConvert 支持最大 500MB 的文件。这对于大多数 3D 打印模型来说绰绰有余,但高分辨率扫描或非常复杂的装配体有时可能会超过这个限制。如果你有一个特别大的文件,可以尝试在导出前在源应用程序中降低网格分辨率。 同样重要的是,要用对的工具做对的事。CocoConvert 是一个强大的几何转换器,而不是切片软件或网格修复工具。它不会生成打印设置,也不会修复损坏的几何结构。对于这些任务,请使用你的切片软件的项目保存功能或像 Meshmixer 这样的专用修复工具。如果需要干净、可靠的格式转换,CocoConvert 就是你的不二之选。