OBJ 转 STL 转换器
拖入 .obj 文件,直接在浏览器中转换为 .stl。文件不会离开你的电脑。
为什么要把 OBJ 转换为 STL?
切片软件仍然偏好 STL。在 Blender / ZBrush 中雕刻的模型通常先导出为 OBJ,到打印机的最后一步就是把这个 OBJ 转成二进制 STL。这是“在 DCC 里画好了,现在想打印”的标准交接流程。
谁会做这种转换
从 Blender 直接到打印机的爱好者、打印雕塑和手办的艺术家,以及从 Sketchfab 等网站下载 CC 许可 OBJ 素材并需要切片的任何人。
常见问题
- 非平面的 n-gon 在导入时会被三角化,打印表面上可能出现难看的扇形纹路。纯四边形的 Blender 导出效果最好。
- 多材质 OBJ 会丢失全部材质信息;STL 只包含几何。
- OBJ 没有单位声明,因此 STL 会沿用原文件的缩放,而这往往是随意的。请在切片软件中核对尺寸。
本工具的技术说明
Three.js OBJLoader 解析位置、法线和索引;STLExporter 写出二进制 STL。n-gon 在加载时三角化,因此导出结果是纯三角面。
OBJ 与 STL 有什么区别?
人类可读的 Wavefront 网格格式——在 3D 图形、游戏美术和资产流程中无处不在。与 .mtl 材质文件配套使用。
- 几乎所有 3D 工具都支持(Blender、Maya、3ds Max、Unity、Unreal……)
- 纯文本,便于 diff 和手动编辑
- 保留 UV 坐标和顶点法线,这一点 STL 做不到
- 通过配套的 .mtl 文件引用材质
- 文本格式——磁盘占用比二进制网格大
- 没有场景层级、动画和骨骼
- 材质存放在单独的文件中,容易丢失
所有 3D 打印切片软件都能识别的三角网格格式。只有几何——没有单位、颜色或装配体。
- 通用 3D 打印格式——Cura、PrusaSlicer、Bambu Studio 都支持 STL
- 小巧、简单,加载极快
- 非常适合网格处理流程、仿真前处理器和快速预览
- 三角化近似——曲面会损失精度
- 没有颜色、材质或装配体数据
- 按惯例每个文件只有一个壳体(多实体会被合并)
深入了解这两种格式
OBJ 的由来
由 Wavefront Technologies 在 1980 年代后期为其 Advanced Visualizer 软件创建。Wavefront 被并入 Alias(后来又归入 Autodesk)后,该格式依然公开,成为学术 3D 研究、业余建模和早期游戏美术的通用语言。正因为它的 ASCII 格式足够简单,每本图形学教材至今仍附带 OBJ 示例文件。
- .mtl 材质文件必须与 .obj 一起传递——请打包成 zip 发送,否则对方那边的纹理会消失。
- 规范中存在负索引和逐面法线,但许多导入器会悄悄读错。如果下游工具报错,请在 Blender 中往返一次后重新导出。
- 如果目标是游戏引擎,请在导出前三角化——Unity 和 Unreal 的 OBJ 导入器处理不了 n-gon。
实际用途:计算机图形学研究论文至今仍以 OBJ 作为网格的参考格式。爱好者模型市场(TurboSquid、CGTrader 的免费区)以 OBJ + MTL 包的形式分发。摄影测量流程(Meshroom、RealityCapture)以 OBJ 作为可移植的中间格式输出。当一个陌生人只说了一句“我需要一个 3D 模型”时,交给对方 OBJ 仍然是最稳妥的选择。
STL 的由来
由 3D Systems 于 1987 年为第一台商用光固化(立体光刻)设备发明(名称由此而来——“STereoLithography”)。它原本只是一个用完即弃的内部格式;近四十年后,它仍是 CAD 与市面上所有切片软件之间的默认交接格式,原因很简单:没有其他格式及时获得普遍支持。
- STL 没有单位——以英寸创建的文件在公制切片软件中重新打开,会按 1/25.4 的比例打印。切片前务必确认源单位。
- 非流形网格(孔洞、翻转的法线、内部壁面)切片时不会报错,但打印出来是无法挽救的废品。浪费耗材之前,请先运行网格修复工具。
- ASCII STL 比二进制 STL 大约 5×,却毫无好处——除非确实需要对文件做 diff,否则请始终导出二进制。
实际用途:所有 FDM 和 SLA 切片软件(Cura、PrusaSlicer、Bambu Studio、Lychee、Chitubox)都把 STL 作为首要输入格式。仿真前处理器(Ansys、Abaqus)也读取 STL 进行网格划分。按需制造服务(Shapeways、JLCPCB 的 3D 打印业务、Protolabs)直接接受 STL 上传。
如何将 OBJ 转换为 STL
- 1将 .obj 文件拖放到页面上(或点击浏览)。全部在浏览器中运行,无需上传。
- 2在 3D 中预览网格,确认外观正确。留意侧边栏中的三角面数。
- 3点击“下载 STL”保存为二进制 STL。在 Cura、PrusaSlicer 或 Bambu Studio 中打开即可打印。
常见问题解答
我的 OBJ 会被上传到任何地方吗?
不会。转换在浏览器中通过 Three.js 的 OBJ 加载器和 STL 导出器完成,不会向服务器发送任何内容。
会丢失材质/纹理信息吗?
会。STL 只包含几何,源 OBJ 中的 .mtl 材质、UV 和纹理数据都会被丢弃。如需颜色,请改为导出 3MF 或 GLB(本站即将支持)。
转换出的 STL 能直接打印吗?
如果 OBJ 网格是流形的(水密、无翻转法线),可以。如果切片软件报错,在 Blender 中载入 STL,执行 Mesh → Clean Up → Merge by Distance,再重新导出。
输出的是二进制还是 ASCII STL?
二进制——比 ASCII 小约 5×,在所有切片软件中加载更快。
Blender 的四边形网格怎么办?
Three.js 在导入时会自动将四边形和 n-gon 三角化。输出始终是纯三角面,符合 STL 的要求。