用 Astra 生成的 3D 模型没法直接打印,于是做了个在浏览器里跑的转换器

7 小时 59 分钟前
 xiaowh521

GPT-6 Astra 生成 3D 的输出是 GLB ,带 PBR 贴图,网页里转着看很漂亮——但切片软件不吃这个格式。Bambu Studio 、PrusaSlicer 、Cura 认的是 STL / 3MF / OBJ / STEP ,没有一个收 GLB 。想打印就得先转。

麻烦的是这不是改个后缀的事。glTF 规范规定 Y 轴朝上、单位是米; STL 既不带坐标轴也不带单位,全靠读的人猜。所以一个 GLB 走了不处理这层的工具,出来的模型是躺着的,而且小 1000 倍——1 米被当成 1 毫米。

在线转换那些基本都要把文件传到服务器,免费额度还卡在 5–25 MB 。转个几何体而已,没必要把文件交出去。

所以做了 https://convertstl.com/zh ,解析和导出都在标签页里完成,没有上传,也没有服务端的体积上限。

几个自己觉得有点意思的地方:

所有模型进来先归一化到同一个坐标空间( Z 轴朝上、毫米),导出时按目标格式反向变换一次。这样避免了「输入格式 × 输出格式」的转换矩阵——加一个新格式只要写它自己的读和写,不用管跟其他 N 个格式怎么两两配对。上面 GLB 那个坑就是这层在兜。

STEP / IGES 不是网格。 它们是 B-rep (参数曲面),要显示或打印必须先三角化。这一步把 OpenCascade 那个 C++ CAD 内核编译成 wasm 塞进浏览器,7.3 MB ,按需加载——只转网格格式完全不会下载它,只有真拖了 STEP 进来才触发。

STL / OBJ / PLY 这三个本身不带坐标轴和单位,读的时候只能猜。干脆把这两个猜测做成界面上的开关("读取为 Z 朝上 / Y 朝上"、"mm / cm / m / in"),切换时不重新解析文件,只把那个规范化节点重新包一层。

实测量级:150 MB 、300 万三角面的 STL ,加载 + 修复(焊接重复顶点、删退化三角形)+ 导出,全程约 1 分钟。

已知的不足,先自己说:

贴图和颜色会丢。STL 本身只有几何;我这边导出的 3MF 也只写几何和毫米单位、不写材质。所以它解决的是"能不能进切片软件"和"尺寸朝向对不对",不解决保留颜色。要彩色打印目前还得走原软件。 大文件吃内存,150 MB 那个量级标签页会涨到 GB 级,低配机器会卡 修复只焊接重复顶点、清退化面,不填补真实破洞(缺三角形那种)。面板会给出 open edges 修复前后的数字,数字不降就说明是真洞 不支持 SolidWorks / Blender / SketchUp 原生格式,那几个要先从原软件导出 中文界面是我自己过的,可能有生硬的地方

技术栈:Next.js + three.js ,静态页部署在 Cloudflare Workers ,重的库都在客户端,服务端只发静态文件。没有账号,没有付费档。

欢迎挑毛病,尤其是格式解析对不对——手头测试文件有限,碰到真实文件很可能有翻车的。

320 次点击
所在节点    分享创造
2 条回复
andforce
7 小时 56 分钟前
最优雅的方式是,GPT-6 + Blender+MCP ,可用预览、打印
tool3d
7 小时 45 分钟前
你让 GPT-6 Astra 强制转换成 STL,估计也能转,把需求描述清楚就行.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1242744

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX