指南

OBJ 与 STL:何时 OBJ转STL

更新 · 仅网格 OBJ 到 STL

把 OBJ 的几何、材质和可编辑性,和只剩三角形的 STL 打印流程放在一起比。然后在浏览器里私下 OBJ转STL。

OBJ 和 STL 都描述表面,但它们不能互换。OBJ 是 Wavefront 家族里灵活的网格文件。STL 是面向制造和切片软件的三角形列表。快要打印时,转换是对的一步。还需要 STL 装不下的信息时,转换是错的一步。这个页面是做决定用的,不是转换工具的第二份拷贝。

每种文件用来做什么

还在建模、拆物体、指定材质时,用 OBJ。Bambu Studio、Cura 或 PrusaSlicer 需要一个能放到热床上的实体时,用 STL。很多流程两份都留:项目里放 OBJ(如果有,连同 MTL),打印配置旁边放一份二进制 STL。因为 STL 下载了就把 OBJ 删掉,是后来想要回 UVs 和物体名时丢东西的方式。

OBJ 本工具的 STL
典型用途 编辑、渲染、交换网格 切片和打印
面 多边形,按面存储 只有三角形
多个物体 一个文件里的命名物体 合成一份三角形列表
材质 常常是单独的 MTL 丢掉
UVs 和贴图 可以引用 丢掉
单位 你建模时用的那种 不存储;我们把数字缩向毫米
修复 不会自动做 不会自动做

合并这件事要紧。手办加单独底座的 OBJ,进来时可能是两个物体。转换写出一个 STL,切片软件就导入一个物体。如果要两次打印,就导出两个 OBJ,分别转换。物体名不会变成单独的 STL 文件。

转换丢掉什么

三角形留下。位置会缩放,默认还会旋转,让你选的朝上轴指向 Z。其他东西不在这个 MVP 的范围内。

OBJ 里的平滑组和顶点法线不是能来回保留的功能。STL 每个三角形存一条面法线,由导出器根据角点计算。切片软件不会像渲染器使用光滑 OBJ 的法线那样使用它。

UVs、贴图文件名和 MTL 是故意忽略的。一种线材颜色的打印不需要它们。全彩流程需要,所以不该假装这个页面的 STL 还带着它们。留着 OBJ。

如果你的导出写了顶点色,也不会复制。曲线和单独的点会跳过。文件没有面时,转换会停下并说明。STL 里没有可以诚实放进去的东西。

STL 里没有层级,也没有动画。摆好姿势的角色应该按你要的姿势从 Blender 导出,并应用修改器,让 OBJ 里已经是最终表面。

转换不承诺什么

有人把“我导出了 STL”当成“这个网格能打印”。这是两句话。非流形的边、外壳上的洞、翻过去的一块、比喷嘴还薄的壁,都会还在。包围盒可以看起来完美,切片软件仍然拒绝文件。在 Blender 或其他网格工具里修好,再导出。本站不跑修复内核,条款里用更直白的话说的是同一件事。

缩放是另一个假承诺。STL 不会记住你的意思是毫米。转换按你选的单位把数字写大或写小,切片软件再把那些数字读成毫米。选和 OBJ 一致的单位。工具页上的盒子是让你在打印机之前看到结果。

一条实用规则

只要下面有一条成立,就留着 OBJ:你还会改网格,你还在渲染它,它有不止一个你可能分开打印的物体,或者你在意它的材质。屏幕上的下一个应用是切片软件时,再做 STL。改了单位或修好网格时,做一份新的 STL。不要堆一叠从没核对过毫米尺寸的来历不明的 STL。

如果还不确定拿到的是哪种文件,读 什么是 OBJ 和 什么是 STL。如果你已经知道要打印文件,转换步骤 就是这张表的 Blender 到切片软件版本。

二进制为什么是默认,写在 二进制与 ASCII STL。只有想把坐标当文本读的时候才用 ASCII。对切片软件来说,二进制不是 OBJ 的较差副本,而是你刚刚决定要做的那份文件。

问题

有了 STL 之后该删掉 OBJ 吗?

如果还可能改模型、再渲染,或按另一种缩放重新导出,就不要删。STL 是打印副本。OBJ 仍然是信息更多的网格文件。

转成 STL 会补洞吗?

不会。面是复制过去的。OBJ 里的洞在 STL 里还是洞。修复是建模软件或你信任的网格工具里的另一步。

颜色会留下吗?

在这个转换里不会。材质、MTL、UVs 和顶点色都会忽略。STL 是一层三角形外壳。

用你的 OBJ 做一份 STL