将 OBJ 转换为 STL — 免费在线转换

轻松将您的 Wavefront OBJ 文件转换为 Stereolithography 格式。安全、快速、完全免费。

将您的3D文件拖放到此处

或点击浏览

转换为:
1

上传 OBJ

从您的设备拖放或选择 OBJ 文件。

2

转换为 STL

选择 STL 作为输出格式,然后点击立即转换。

3

下载文件

新转换的 STL 文件将立即可供下载。

作者:Huy Nguyen · ·

网上下载的 3D 模型大多是 OBJ,Blender、ZBrush 以及各种模型素材站给你的也是 OBJ。而切片软件和打印服务要的是 STL。这一页存在的理由就是这个落差,来到这里的人基本都是准备拿去打印的。

这个转换是一次收窄。OBJ 是纯文本,可以带四边面和多边面、UV 坐标、顶点法线、多个命名对象,还会用一行引用外部材质文件。STL 则只是一串三角面,别的什么都没有:没有颜色、没有材质、没有对象名、没有单位。与其听人说转换有多快,不如先弄清你究竟会丢掉哪些东西。

所以我们今天专门做了一个把上面这些全带齐的 OBJ,用这个页面背后同一个转换器跑了一遍,再把结果放回 Blender 5.1 里数了一遍。下面每一个数字都来自这次实测。

这次实测保住了什么,丢了什么

输入是一个 8,685 字节的 OBJ,里面有两个命名对象:一块由 6 个四边面组成的底板,和一根 32 边的柱销,柱销两端各是一个完整的 32 边形面。合起来 72 个顶点、40 个面,外部 MTL 里有两种颜色材质,每个对象一套 UV,40 条顶点法线,并且以米为单位建模,所以尺寸是 0.12 x 0.08 x 0.06。

输入输出结论
40 个面:38 个四边面加 2 个 32 边形端面136 个三角面是转换,不是丢失。38 个四边面变成 76 个三角面,两个端面变成 60 个
72 个顶点,坐标精确同样 72 个顶点,坐标分毫不差保住了。文件里写了 408 条顶点记录,但它们会合并回 72 个
两个命名对象 BasePlate 和 RedPin合成一个网格丢了。STL 根本没有对象或分组这个概念
外部 MTL 里的两种材质什么都没有丢了。STL 完全无法存颜色和材质
每个对象一套 UV,共 159 个纹理坐标什么都没有丢了。STL 里没有放 UV 的字段
40 条顶点法线每个三角面一条平面法线被替换。STL 只按面存法线,不按顶点存
0.06 的高度在 Y 轴上同样 0.06 的高度,转到了 Z 轴保住并且旋转正确,见下文
8,685 字节文本6,884 字节二进制 STL这次小了约 21%,原因见下文

四边面和多边面会被切成三角面,而且数量可以算出来

这是最常见的意外。很多人打开转好的 STL,看到面数暴涨,就以为转换器偷偷加了细分或者加了细节。其实没有。

STL 只能描述三角面。一个四边面必须切成两个,一个 n 边面切成 n 减 2 个。我们的文件有 38 个四边面和 2 个 32 边形端面,所以算式是 38 乘 2 再加上 2 乘 30,等于 136。转出来的 STL 正好是 136 个三角面,文件 6,884 字节,也就是 84 字节文件头加每个三角面 50 字节,和二进制 STL 的结构一个字节都不差。

除此之外什么都没变。先在 Blender 里把源文件三角化,就已经是 136 个三角面,转换之后还是 136 个,所以既没有新增细节,也没有被简化。想提前知道数量,数一下自己的四边面和多边面,按上面的算式算就行。

多个对象会合成一个

底板和柱销进去时是两个分开命名的对象,出来时变成了一个网格。这是格式本身决定的,不是转换器的取舍:一个 STL 文件就是一长串三角面,没有任何地方可以记录某一批面属于同一个部件。

实际用起来往往没问题,因为切片软件通常能在一个 STL 里认出彼此分离的实体并重新拆开。真正会出问题的情况是:各个零件需要不同的打印参数或不同的耗材,或者你想在热床上分别摆放它们。那就从建模软件里把每个对象各自导出一个 STL,或者改用 3MF,它是会保留独立对象的。

材质、UV,以及那个你上传不了的 MTL 文件

OBJ 自己并不装材质。它只是用一行字引用放在旁边的 MTL 文件,颜色和贴图名字都在那个文件里。我们这份 MTL 定义了一种灰色树脂和一种红漆。

我们只上传了 OBJ 本身,单文件上传也只能传这一个,转换照样成功。对于 STL 这个目标格式,这完全不吃亏,因为 STL 本来就没有放颜色和材质的字段。有没有 MTL,转出来的 STL 是一样的。

如果你要的就是外观,那 STL 从一开始就选错了。要给彩色打印机用,3MF 可以按对象存颜色,也是支持彩色的切片软件期待的格式。要保住贴图,就从 OBJ 转成 GLB 或 FBX,本站都支持,并且把 OBJ 留着当母版。

单位:以米建模的 OBJ 会变成一个小点

OBJ 和 STL 都不记录长度单位。文件里的数字是什么意思,完全由读它的程序决定,而切片软件一律按毫米理解。

我们的模型是以米建模的,Blender 导出的文件或者游戏素材通常就是这样,尺寸是 0.12 x 0.08 x 0.06。STL 里存的是一模一样的数字,所以切片软件看到的是一个 0.12 毫米宽的东西,比喷嘴口还细。

这不是转换的错,再转一次也永远修不好,因为两个文件里都没有单位可以纠正。在切片软件里把模型放大 1000 倍,或者在建模软件导出前先设好单位比例。反过来,如果零件大得荒唐,那说明源文件本来是毫米,而中间有东西已经乘过一遍了,那就缩小。

朝向:零件是站着出来的,不是躺着

按惯例 OBJ 以 Y 轴为上,而 STL 按 Z 轴为上来读,所以这个转换必须把模型转过来。我们没有靠看图判断,而是直接把两个文件里的原始坐标读出来对比。

源 OBJ 里那 0.06 的高度在 Y 轴上。转出的 STL 里同样这 0.06 在 Z 轴上。把结果导回 Blender,世界空间尺寸是 0.120 x 0.080 x 0.060,对象本身没有任何旋转,也就是说它和建模时一样是正立的。

所以如果你的零件真的侧躺着出来,先怀疑模型而不是转换:本来就躺着建的网格,转完还是躺着。在热床上转一下方向就行,任何切片软件都是一键的事。

文件体积可能变大也可能变小

我们 8,685 字节的 OBJ 变成了 6,884 字节的 STL,小了约 21%。这既让以为二进制一定比文本小的人意外,也让听说过 STL 会让文件膨胀的人意外。

两种说法都只对一半。二进制 STL 会为每个用到某个顶点的三角面都重复写一遍这个顶点,没有共享顶点表,所以面数一多确实会膨胀。但 OBJ 是文本,而我们这份文件的字节大半花在 159 行 UV 和 40 行法线上,这些 STL 根本不需要。把它们去掉,对比结果就反过来了。

实用的判断是:只有几何数据的 OBJ 转成 STL 通常会变大,而带 UV、法线很多的 OBJ 可能会变小。如果快到上传上限了,老实减面,不要靠猜格式开销。

什么时候根本不该转成 STL

  • 你的切片软件可能并不需要你转。较新版本的 PrusaSlicer 和 Bambu Studio 可以直接打开 OBJ,如果你的流程就到切片为止,先试着直接拖进去,省掉这一道。
  • 要打彩色或者多材料,请改用 3MF。STL 会把颜色丢掉,而且之后再也没法从 STL 里把颜色找回来。
  • 想把模型当成带尺寸、带特征的实体来修改,任何网格格式都帮不了你。OBJ 和 STL 都是三角网格,在两者之间转换永远不会得到 STEP 或原生 CAD 文件那种可编辑的实体。
  • 如果网格有破洞、法线翻转或自交,转换一个都不会修。我们实测三角面数是一比一照搬的,所以之前切片软件不收的模型,转完照样不收。先修再转。
  • 如果你只是想看看文件或量一下尺寸,用查看器比转换快得多。

想自己在电脑上做同一件事

  • Blender 两边都能读写:文件、导入、Wavefront OBJ,然后文件、导出、STL。STL 导出面板里有场景单位的选项,这是处理米制模型最省事的地方,在它进切片软件之前就搞定。
  • 想先看看结果,Blender 也能替你三角化。加一个 Triangulate 修改器,或者在 OBJ 导出时勾上三角化网格,那时你看到的面数就是最终的三角面数。
  • 如果 OBJ 是很重的扫描网格,MeshLab 更合适,它打得开非常大的网格,也带着你打印前会想用的减面滤镜。
  • PrusaSlicer 和 Bambu Studio 都能导入网格再把整个热床导出成文件,所以在流程末端,切片软件本身就能当转换器用。

本站的限制,以及你的文件会怎样

  • 免费:每个文件最大 30 MB,每小时 10 次转换,同时最多 2 个任务,不需要注册。
  • Pro:每个文件最大 1 GB,每小时 50 次转换,同时最多 5 个任务。
  • 上传的文件和转换结果会在上传后 1 小时内从我们的服务器上删除。
  • 从 OBJ 出发,本站可以转成 STL、GLB、GLTF、FBX、DAE、PLY 和 USDZ。如果颜色或贴图必须保住,就从这些里面挑一个,不要选 STL。

2026 年 10 月 29 日实测:用 Blender 5.1 生成一个 8,685 字节的 OBJ,含两个命名对象、72 个顶点、40 个面(其中 38 个四边面和 2 个 32 边形端面)、一个外部 MTL 里的两种材质、每个对象各一套 UV,并以米为单位建模。在本站转换成 6,884 字节的二进制 STL,再导回 Blender 清点三角面、顶点、对象、材质和尺寸,并与两个文件里的原始坐标逐一核对。

常见问题

因为 STL 只存三角面。OBJ 里每个四边面会被切成两个三角面,每个 n 边面切成 n 减 2 个。我们的测试文件有 38 个四边面和 2 个 32 边形端面,一共 40 个面,转出来正好 136 个三角面:38 乘 2 再加 2 乘 30。既没有增加细节也没有删掉东西,只是用更多更小的面来描述同一个表面。