指南

什么是 STL 文件:OBJ转STL 的结果

更新 · 仅网格 OBJ 到 STL

理解 STL 的三角形、没有单位的缩放、二进制文件和切片流程。然后在浏览器里私下从 OBJ 得到 STL。

STL 是切片软件期望的三角形文件。这个名字常被展开成光固化(stereolithography),来自早期的树脂工艺,但格式活得比那一台机器更久。今天它是把形状交给 Bambu Studio、UltiMaker Cura 或 PrusaSlicer 的乏味而可靠的方式。它不是建模格式。它不记得你的材质。它不记得你的单位。它记得的是角。

三角形,而且只有三角形

每条记录是一个面片:一条法线和三个顶点。没有要保留的四边形,没有 n 边形,也没有曲线。本站读 OBJ 时,多边形先拆成三角形,再把那些三角形写出去。工具页上的三角形数量就是这个数。它不会和还把四边形算成一个面的建模软件里的“多边形数量”对上。六个四边形的立方体是十二个三角形。这是对的,不是复制出了错。

法线是面的方向。切片软件更在意外壳是否闭合、朝向是否一致,而不是法线数字本身有多精确。工具试图区分内外时,一致的绕序仍然重要。这个导出器根据角点顺序计算法线。它不会编造缺失的面。

我们写的 STL 里没有纹理坐标,也没有颜色。更广的世界里存在一些冷门扩展。那不是这个转换产出的,也不该指望切片软件去遵守。和这份文件匹配的心理模型是一种线材颜色。

故意没有单位

人们真正实现的规范里没有毫米标志。FDM 社区的惯例是一个单位等于一毫米。顶点在 25 的文件,按这个惯例就是 25 mm 的顶点,哪怕作者的意思是 25 米或 25 英寸。毫米与米 这篇指南讲的是把正确的惯例烤进数字。那之后,STL 仍然“不知道”。下一个程序必须共享这个惯例。

这也是为什么转换里的包围盒比文件头里的一句话更有用。二进制文件头是 80 字节,常常是空的,或填着工具名。不要把“这是英寸”的唯一副本存在那里。把它存在你自己的笔记里,也存在已经和毫米一致的坐标里。

二进制、ASCII 和切片软件

同样的三角形可以打包成二进制,也可以拼成 ASCII 文本。二进制更小,是默认下载。ASCII 可读,也更占地方。二进制与 ASCII STL 讲这个选择。字节完好时,上面点名的切片软件都能打开。ASCII 文件如果被改了换行或小数点的文本编辑器弄坏,可能打不开。重新导出,而不是手改一个大 STL。

导入切片软件不是最后的考试。看它报告的尺寸。看模型是不是站着。看层预览里有没有你没打算要的缝。STL 在几何上可以合法,打印仍然可以很差。薄壁、重叠的物体、敞开的底,都会在那里露出来。把这些问题带回网格,不要指望把同一张破表面再导出一次就会长好。

STL 应该从哪里来

对本站来说,STL 应该来自 Wavefront OBJ 网格。那就是 什么是 OBJ 里写的、带 v 和 f 行的文件。它不该来自 PNG、JPG 或 STEP 实体。我们不把图片体素化,也不剖分 CAD 边界模型。如果你的设计工具只有实体,就在那里按你能接受的弦高公差剖分或导出 OBJ,然后再转换。你得到的三角形数量,是你向那个工具要的剖分。我们不会为了让它更光滑而加三角形。

拿到文件之后,打印流程就是普通的那一套。确认毫米,摆方向,必须的话加支撑,切片,打印。如果还会再改形状,留着 OBJ。OBJ 与 STL 解释为什么这两份文件应该并排放着,而不是一份替换另一份。从 Blender 开始的逐步说明是 如何 OBJ转STL。

问题

STL 知道模型是毫米吗?

不知道。格式存的是坐标和面法线。切片软件通常假设是毫米。本站的单位菜单会在写入之前改变数字。

合法的 STL 就一定能打印吗?

不一定。文件可以是合法的三角形列表,仍然有洞、相交的壳,或太薄的壁。转换不会修复其中任何一项。

二进制还是文本?

两者都是 STL。这里默认二进制,因为切片软件期望它,文件也更小。ASCII 是文本形式。见二进制与 ASCII 的指南。

从 OBJ 得到 STL