img2threejs:把图片重建为可编辑 Three.js 代码的 3D 生成工具,3500 Star
做过 3D 原型的人一定知道,无论是用 Blender 还是手写 Three.js,从零开始建模要花费非常多的时间。用 AI 图片转 3D 吧,出来的 .glb 文件你也改不了,想改材质、想加动画,得从头再弄一遍。
img2threejs 输出的不是网格文件,而是代码。它在 GitHub 上已经有 3500 个 Star,不是输出 .glb,而是输出你可以看到、可以修改的 TypeScript 代码。它就是把一张照片,重建为浏览器里能跑的 Three.js 代码。
实际使用体验
打开 Claude Code,找一张农村小房子的图片,让它做成立体的 3D。它先判断这张图能不能做 3D 重建,太模糊的、主体不明确的直接拦截。然后自动分析图片,将物体拆分成部件清单,各个零部件的外形、材质以及表面细节等全部整理成规格书。
然后就按照雕塑一样由大到小来雕刻:先画出大概的形状,然后添加细节,再进行细节刻画,给物体上色,最后打光。八个阶段依次进行,上一个没有通过下一个就不开始。每个阶段都有单独的验收标准,它把每一个阶段的结果在浏览器中渲染出来,并且与原始图像一起进行评分,不像就改,改到像了再继续。
AI 只做一件事,看图判断像不像,其他的活全交给确定性脚本。
核心设计
脚本干粗活,AI 只做视觉判断。 JSON 校验、状态管理、对比图打包等都由确定性的 Python 脚本来完成。AI 的 Token 只用在判断的地方——看一张对比图,给出 pass 或 fail。脚本运行一次几乎不花钱,不需要模型上下文,节省下来的 Token 都用在刀刃上。
规格不够详细就不让写代码。 一个物体有五个部分,但是规格只写了其中的一个,直接驳回。"不合格的 spec 不配写代码",从源头上杜绝了半吊子模型。
无依赖,只用标准库。 Python 脚本只使用标准库,PNG 读写用 struct 和 zlib,不需要安装 pip,也不需要 PIL,不需要去配置环境,直接运行就可以。
角色建模也有专属赛道。 从 v1.2 版本开始,图片进来要先进行分类:object、character 或者 hybrid。角色走独立赛道的时候,头身比、脸型特点、姿态对齐,并不是硬套物体流程。充电仓翻盖还预设了旋转节点,加开盖动画直接用。
细节一个都不能漏。 v1.1 加上细节优先分析,光泽、倒角、螺丝、刻线等每一个细节都要映射到真实的零部件上。生成的模型不是一坨死几何体,而是把旋转点、插槽、碰撞体都给出来了,用来做动画也方便。
安装与使用
打开 Claude Code 输入:
帮我安装 https://github.com/hoainho/img2threejs.git
然后在 Claude Code 中给一张图,运行下面的命令:
/img2threejs Rebuild this object as a Three.js model, keep the proportions, angles, and colours.
它会自动完成验证、评估、规格、生成等全部流程,你只需要提供图纸并说明需求,其余部分由它自己完成。
Python 脚本也可以单独运行,只需要 Python 3.10 以上版本,不需要安装任何依赖。生成的代码可以直接插入到自己的 Three.js 项目中,修改材质、调整光照、添加动画都可以。
注意事项
硬质表面物体的效果最好,角色建模是风格化的,并不是照片级别的逼真,作者自己说角色赛道是"风格化重建,不是照片级还原"。单张图看不出来背面的情况,用镜像来推断,README 里直接写上"不能保证 100% 还原"。
完整的物体一次大约为 80k-180k Token,角色为 150k-350k,消耗较大。AI 生成的模型在商用的时候要考虑到版权问题。
项目基于 MIT 协议开放。
开源地址:https://github.com/hoainho/img2threejs