STL 转 GLB 转换器
拖入 .stl 文件,直接在浏览器中转换为 .glb。文件不会离开你的电脑。
为什么要把 STL 转换为 GLB?
要在商店商品页、作品集或文档页面中加入打印零件的 3D 预览,就需要 GLB——<model-viewer> 不能原生加载 STL。这种转换是让可打印的 STL 嵌入任何网站或 AR 查看器的最简单方法。
谁会做这种转换
在商品页面嵌入预览的 Etsy / Thangs / Printables 卖家、在个人网站展示打印成品的创客,以及想通过移动端链接一键体验 AR 的爱好者。
常见问题
- STL 的法线是逐面的——除非先焊接顶点(Blender:Merge by Distance),否则生成的 GLB 会呈现棱面着色。
- GLB 把所有几何体嵌入一个文件。高面数的打印模型体积会迅速膨胀;移动端可考虑 Draco 压缩。
- STL 本身没有材质信息,所以不会保留任何材质——除非重新制作,否则会是平淡的默认灰色 PBR 表面。
本工具的技术说明
Three.js STLLoader → 焊接顶点后的 BufferGeometry → GLTFExporter 二进制输出。内嵌默认的 metallic-roughness 材质,模型开箱即可渲染。
STL 与 GLB 有什么区别?
所有 3D 打印切片软件都能识别的三角网格格式。只有几何——没有单位、颜色或装配体。
- 通用 3D 打印格式——Cura、PrusaSlicer、Bambu Studio 都支持 STL
- 小巧、简单,加载极快
- 非常适合网格处理流程、仿真前处理器和快速预览
- 三角化近似——曲面会损失精度
- 没有颜色、材质或装配体数据
- 按惯例每个文件只有一个壳体(多实体会被合并)
二进制 glTF——3D 界的 JPEG。自包含、体积小,在 Web、AR 和所有现代 3D 引擎中都能原生加载。
- 所有内容(几何、纹理、材质、动画)打包在一个文件中
- 小巧快速——专为流式传输和 Web 分发设计
- Blender、Unity、Unreal、three.js、<model-viewer>、Android ARCore……都原生支持
- PBR 材质(金属度-粗糙度)在任何地方渲染效果都一致
- 二进制——无法手动编辑
- 在传统 CAD 流程中较少见
深入了解这两种格式
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 上传。
GLB 的由来
glTF 2.0 于 2017 年由 Khronos Group 批准,并迅速成为 W3C 推荐的 Web 3D 格式。GLB 是“一个文件装下一切”的二进制封装——几何、纹理、动画和场景图全部放在单个 .glb 中。由于 <model-viewer>、Android Scene Viewer 和所有现代游戏引擎几乎同时加入支持,它的普及呈爆发式增长。
- PBR 材质模型假定纹理处于线性空间——DCC 工具导出的已烘焙 gamma 的颜色贴图,在 Web 查看器中会显得发白褪色。
- 如果没有预加载解码器,Draco 网格压缩反而会拖慢加载;除非确实需要节省带宽,否则请关闭它。
- Y 轴朝上还是 Z 轴朝上:glTF 严格采用右手系、Y 轴朝上。Blender、3ds Max 和大多数 CAD 导出在导入时需要翻转坐标轴,否则模型会侧躺。
实际用途:电商产品页(IKEA、Amazon、Shopify 3D)、Android AR 快速查看、基于 <model-viewer> 的文档、NFT 市场以及实时配置器。只要 3D 资产需要在浏览器标签页中无插件渲染,答案就是 GLB。
如何将 STL 转换为 GLB
- 1将 .stl 文件拖到页面上。二进制和 ASCII STL 均可。全部在本地运行。
- 2在 3D 中预览网格,确认几何体正确。
- 3点击“下载 GLB”。可嵌入 three.js、<model-viewer>、Unity、Unreal 或 Android ARCore。
常见问题解答
为什么要把 STL 转换为 GLB?
STL 是 3D打印的交换格式,没有材质和颜色。GLB 是网页原生 3D 格式——体积小、单文件自包含,能在所有浏览器和 AR 运行环境中原生渲染。如果想在网上展示模型,GLB 就是你需要的格式。
GLB 会比 STL 小吗?
大致相当。二进制 STL 和 GLB 都紧凑地存储顶点;GLB 多了少量场景元数据,但顶点索引压缩得更高效。预计相差 ±20%。
会添加材质吗?
GLTFExporter 会写入默认的 PBR metallic-roughness 材质,让模型可见。STL 不含材质数据,所以没有什么可保留的——请在目标引擎中设置合适的材质。
可以把 GLB 放进 <model-viewer> 做网页 AR 按钮吗?
可以——这正是最典型的用法。再配合兼容 Android ARCore 的 Scene Viewer 链接,任何移动浏览器都能一键进入 AR。
会上传任何内容吗?
不会。Three.js 在你的浏览器中载入 STL,并通过 GLTFExporter 重新导出为 GLB。文件不会离开你的设备。