爱意满满的作品展示区。
xiaowh521

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

  •  
  •   xiaowh521 · 5h 42m ago · 283 views

    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 ,重的库都在客户端,服务端只发静态文件。没有账号,没有付费档。

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

    2 replies    2026-09-17 16:36:46 +08:00
    andforce
        1
    andforce  
       5h 39m ago
    最优雅的方式是,GPT-6 + Blender+MCP ,可用预览、打印
    tool3d
        2
    tool3d  
       5h 29m ago
    你让 GPT-6 Astra 强制转换成 STL,估计也能转,把需求描述清楚就行.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3108 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:05 · PVG 22:05 · LAX 07:05 · JFK 10:05
    ♥ Do have faith in what you're doing.