img2threejs:把一张图片变成可编辑、可动画的 Three.js 代码模型

开源发现

img2threejs:把一张图片变成可编辑、可动画的 Three.js 代码模型

栏目:开源发现

摘要

img2threejs 是一个面向 Codex、Claude Code 和 OpenCode 的开源工具,可把单张参考图重建为结构化、可编辑、可动画的 Three.js TypeScript 模型,并提供浏览器转换器与在线 Demo。

本文目录

img2threejs:一张图,直接重建成可编辑的 Three.js代码模型

做网页3D时,真正麻烦的往往不是“有没有模型”,而是模型进项目之后还能不能继续改。常见的图片转3D工具会给你一个网格文件,视觉上能用,但零件层级、旋转轴、材质逻辑和交互结构通常都藏在黑盒里。img2threejs选择了另一条路线:它不把结果做成一个不可读的 mesh,而是根据参考图片,直接重建为由 TypeScript和 Three.js组成的程序化3D模型。

它的定位很明确:给 Codex、Claude Code、OpenCode这类编程 Agent一张物体图片,让 Agent分析轮廓、比例、结构、材质和细节,再把这些信息写成 Three.js代码。最终得到的是一个可以继续开发的 `THREE.Group`,而不是只能导入和摆放的静态资产。

img2threejs 将台灯参考图重建为程序化 Three.js 模型的官方展示

img2threejs 官方展示:台灯程序化重建结果

它不是“一键生成3D”,而是一套重建流程

img2threejs的重点不在某一个生成模型,而在整套工作流。官方流程会先检查参考图是否适合重建,再建立对象规格,随后按 blockout、structure、form、material、surface、lighting、interaction、optimization等阶段逐步推进。每一步都能拿当前渲染结果和参考图对照,结构不对就继续修,细节不够就补,而不是一次生成后直接结束。

这套流程对编程 Agent很重要。视觉模型很容易在第一轮产出一个“看起来差不多”的对象,但真正进入网页或游戏后,问题会很快暴露:轮子没有独立层级、门没有正确铰链、材质全混在一起,或者某些关键结构只在正面看起来像。img2threejs把这些问题提前放进规格和质量门槛里处理。

项目还会整理 `detailInventory`,把螺丝、倒角、刻线、光泽差异、表面磨损等影响辨识度的细节列出来,再要求这些细节落到真实组件、材质或几何结构上。对于机械物件、产品外观和风格化道具,这种做法比单纯追求第一眼相似更实用。

最有价值的是“代码可编辑”

img2threejs的核心产物是一个 TypeScript factory,返回结构化的 `THREE.Group`。模型可以保留命名部件和父子层级,也可以暴露 pivots、sockets、colliders等运行时信息。这意味着你拿到模型之后,还能继续写逻辑。

轮子可以围绕自己的轴旋转,门可以围绕铰链开合,某个附件可以挂到指定 socket上,碰撞检测也能直接引用对应部件。需要改尺寸、换颜色、调整材质,甚至批量生成不同版本时,都可以继续改代码,而不是重新回到3D软件里处理整个模型。

这种资产也天然适合进入 Git。尺寸变化、材质参数、层级调整都能做 diff、review和回滚。对本来就使用 Three.js的项目来说,这一点比“多得到一个3D文件格式”更有意义。

img2threejs 将相机参考图重建为可编辑 Three.js 模型的官方展示

img2threejs 官方展示:相机程序化重建结果

单张图片有边界,但项目没有假装这些边界不存在

单张图片无法提供背面、底部和遮挡区域的真实信息,img2threejs也不会把这些未知部分包装成完全准确的重建。官方流程会保留不确定性,必要时通过多视角图片补充证据。正面、侧面和顶部参考越完整,几何关系越容易做准。

因此它并不是 Blender或其他专业 DCC工具的替代品。电影级角色、精细拓扑、复杂雕刻仍然需要传统3D工作流。img2threejs更适合浏览器里的交互资产、产品展示、小游戏道具、机械对象、教学演示,以及需要快速生成多个程序化变体的场景。

和 Codex配合,可以直接做成一条3D资产生产线

一个很实用的用法,是先准备一张轮廓清楚、结构明确的 low-poly或产品参考图,再把它交给 img2threejs。Agent完成重建后,还可以继续让 Codex为这个模型做 asset editor,把尺寸、材质、动作和其他参数暴露到浏览器界面里。

这样得到的不是一张3D效果图,而是一个可以继续旋转、动画、改参数、加交互、做变体的对象。ImageGen一类工具也可以放在流程最前面,用来生成更容易解析的参考图,但它不是 img2threejs的必要依赖;已有照片同样可以直接使用。

安装和调用

最直接的做法,是把仓库放到 Agent的 skills目录。Claude Code可以直接克隆项目:

bash
git clone https://github.com/img2threejs/img2threejs.git ~/.claude/skills/img2threejs

如果同时使用 Codex,可以让两个 Agent共用同一份 checkout:

bash
ln -s <your-checkout> ~/.codex/skills/img2threejs

调用时不需要写很长的提示词。给出参考图,再说明要保留比例、角度和颜色即可:

text
/img2threejs Rebuild this object as a Three.js model, keep the proportions, angles, and colours.

多轮或跨会话任务还可以保存本地状态,让下一次继续时直接知道当前进度:

bash
python3 forge/state.py init --reference <image> --profile character --spec object-sculpt-spec.json
python3 forge/next.py --state .img2threejs/state.json

项目把规格验证、阶段状态和部分检查交给确定性脚本处理,把模型上下文更多留给视觉判断和代码生成。这种设计不花哨,但很符合 Agent实际工作的方式:该让脚本做的事情,不反复消耗模型上下文。

现在还有浏览器版转换器和在线 Demo

除了 GitHub仓库,img2threejs目前还有官方网页转换器和 Live Demo Gallery。网页端可以直接加入一张清晰的硬表面物体图片,生成过程会准备图像、建立程序化规格,并在浏览器里用 WebGL渲染结果。官方 Demo Gallery则展示了不同对象从参考图到程序化 Three.js模型的完整效果,模型全部在浏览器中实时运行。

这也让项目从“一个给 Agent用的 Skill”向更完整的图片转 Three.js工具链靠近。真正有意思的地方仍然没变:产物不是一个封闭的3D文件,而是可以读、可以改、可以动画、可以继续交给 Agent处理的代码。对于网页3D、小游戏和交互产品来说,这种资产形态往往比单纯追求高面数更实用。

© 2026 DGNEWLIVE 保留所有权利.