news 2026/9/27 15:18:09

AI Agent 的 3D 建模雕刻刀 img2threejs:一张照片生成 3D 模型(以 opencode 为例)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI Agent 的 3D 建模雕刻刀 img2threejs:一张照片生成 3D 模型(以 opencode 为例)

1. 一张照片变 3D 模型,为什么我盯上了 img2threejs

先说结论:img2threejs 是一个跑在 AI Agent 环境里的 3D 建模 Skill,你给它一张参考图,它输出一段完全由 Three.js 原语拼装的 TypeScript 代码,浏览器打开就能旋转缩放。它适合谁?适合已经在用 opencode、Claude Code 这类编程 Agent、又需要快速拿到可交互 3D 展示模型的人。不适合谁?不适合想要照片级写实网格、或者想脱离 Agent 单独跑脚本的人。

传统路子有三条,每条都硌脚。摄影测量要环绕拍几十张,单张图直接没戏;AI 网格生成吐出来的往往是黑盒文件,想改一个倒角都得重新生成;手工建模更别提,一个产品展示模型够画一整天。img2threejs 换了个思路,叫「代码重建」——没有导入的网格,没有下载的美术资源包,所有东西都是代码,可 diff、可版本控制、可直接在浏览器里跑。

它的工程特色很鲜明:机械活全下沉到纯 Python 标准库脚本(验证、门控、规格编写、对比图打包),模型 Token 只花在「看图说像不像」这一件事上。生成过程分阶段推进:粗模、结构、形体、材质、表面、光照、交互、优化,每一步都要 Agent 对比参考图和渲染图打分,过了才解锁下一步,没过就自我修正。

这篇我聚焦一件事:在 opencode 里把 img2threejs 接上 TaoToken 的统一 Key/API 通道,从 settings.json 骨架写到端到端验证,让你跑通一次「一张照片生成 Three.js 可渲染 3D 模型」。配置片段可以直接复制。

2. 前置准备:Skill 目录、版本基线与 TaoToken 通道

2.1 装 Skill 到全局目录

img2threejs 以 Skill 形式被 Agent 加载,先建全局 skills 目录。Windows 下:

mkdir %USERPROFILE%\.agents\skills\ cd %USERPROFILE%\.agents\skills\ git clone --branch v1.4.3 --depth 1 https://github.com/img2threejs/img2threejs.git

macOS / Linux 把%USERPROFILE%换成$HOME即可。为什么锁 v1.4.3?因为它是目前唯一的正式治理基线,也就是经过完整验证流程、可作为生产依赖的版本。beta 版(v1.5.0-beta.1、v1.4.4-beta.2)属于预发布,别拿来当生产依赖。

克隆完打开文件管理器,能看到 img2threejs 躺在全局 skills 目录里,这一步就对了。

2.2 为什么走 TaoToken 统一通道

opencode 支持自定义模型提供方,但如果你同时用多个模型(一个负责视觉判断、一个负责代码生成),逐个配 Key、逐个改 baseURL 会很碎。TaoToken 提供统一的 API 通道,一个 Key 覆盖多模型,baseURL 指向https://taotoken.net/api,opencode 的 settings.json 里只维护一份凭据就行。

先去控制台建 Key:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=opencode_img2threejs

建完在 API Keys 页面复制:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=opencode_img2threejs

注意:Key 只显示一次,复制后先存到密码管理器,别直接贴进会提交到 git 的文件里。

2.3 模型选择的关键点

img2threejs 的核心依赖是 Agent 的视觉能力——它要「看」参考图和渲染图的对比图来打分。所以你必须选一个具备视觉能力的多模态模型,比如 MiMmo-2.5、Kimi-3 这类。纯文本模型跑这个 Skill 会在第一步就卡住,因为它读不了图。

3. 可复制配置:opencode settings.json 骨架

opencode 的配置文件放在用户配置目录下,Windows 是%USERPROFILE%\.config\opencode\settings.json,macOS / Linux 是~/.config/opencode/settings.json。下面是一份可直接改用的骨架,重点是 provider 段和模型段。

{ "provider": { "taotoken": { "type": "openai-compatible", "baseURL": "https://taotoken.net/api", "apiKey": "sk-你的TaoToken密钥", "models": { "vlm-primary": { "id": "你的多模态模型ID", "vision": true, "maxTokens": 8192 }, "coder-secondary": { "id": "你的代码模型ID", "vision": false, "maxTokens": 16384 } } } }, "defaultModel": "taotoken/vlm-primary", "skills": { "globalDir": "~/.agents/skills", "enabled": ["img2threejs"] }, "permissions": { "fileRead": "ask", "shellExec": "ask" } }

几个参数说明,别填错:

字段作用常见坑
baseURL统一 API 入口结尾不要多加/v1,按文档给的写
apiKeyTaoToken 密钥别带引号外的空格
vision是否具备视觉能力跑 img2threejs 必须为 true
globalDirSkill 扫描目录要和 2.1 的克隆路径一致
permissions权限策略首次跑建议 ask,确认行为后再放宽

如果你更习惯用命令行管理长期编码任务,也可以了解下 Coding Plan 的额度方案:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=opencode_img2threejs

配置写完后,opencode 启动时会读取这份文件。如果 Skill 没被识别,八成是globalDir路径写错,或者克隆时目录名被改过。

4. 端到端验证:从 /skills 到浏览器里的 3D 模型

4.1 确认 Skill 被加载

终端执行opencode,进入交互界面后输入/skills回车。列表里应该出现 img2threejs。用方向键选中它回车,对话框里会出现/img2threejs前缀,说明 Skill 已挂载。

4.2 发起第一次生成

准备一张测试图,比如下载一张跨维智能机器人的产品图,存到D:\test\robot.jpg。然后输入提示词:

/img2threejs 根据 D:\test\robot.jpg 这张图片建立 3D 模型

执行过程中如果弹出权限框,按回车选 Allow once,或右箭头选 Allow always 再回车——它需要读取你指定的图片文件。

4.3 切换视觉模型

如果你当前默认模型没有视觉能力,Agent 会提示读不了图。这时执行/model,切到具备视觉能力的多模态模型(MiMmo-2.5、Kimi-3 等),然后告诉它继续执行。Agent 检测到本地有 Python 后会接着往下跑。

有个细节值得知道:这个 Skill 不直接读 jpg,内部会转成 png 再处理,不过 Agent 会自动完成,你不用手动干预。

4.4 看输出文件

执行结束后 Agent 会告诉你模型文件的位置和说明。典型产物长这样:

文件用途
index.html浏览器查看器,直接打开即可看 3D 模型
createXxx.tsTypeScript 模块,可导入任意 Three.js 项目
object-sculpt-spec.json完整雕刻规格(部件层次、材质、光照)
assessment.json规格预评估(复杂度、解剖结构、质量承诺)

4.5 起服务看效果

进入生成目录,两种起服务方式:

# 方式一:node npx serve . # 方式二:Python,启动更快,推荐 python -m http.server 3000

浏览器访问http://localhost:3000,鼠标拖拽旋转、滚轮缩放、右键平移。以机器人为例,模型会被拆成几十个命名部件——躯干、头部、四肢各段、关节杆、地面等,材质和光照都在 spec 里定义好了。

4.6 迭代修正

第一次结果大概率不完美。我实测下来,机器人模型出现过腰部 45 度俯仰角双关节杆变成两根杆交叉、杆数量变 4、多余中间圆盘、手臂断开、手指异常等问题。处理方式是把渲染截图发给 Agent,让它继续改。中间还踩过一个坑:某次用了Object.assign给灯光设置位置,在 Edge 里直接失败导致整个脚本崩溃,页面一片黑——改成显式赋值就好了。

5. 本篇常见错排查

Skill 列表里没有 img2threejs。检查settings.json的skills.globalDir是否指向~/.agents/skills,以及克隆出来的目录名是否就是img2threejs。改过目录名的话,要么改回去,要么同步改配置。

Agent 说读不了图片。当前模型没有视觉能力。执行/model切到多模态模型,再让它继续。这是最高频的一个卡点。

Python 脚本报错找不到模块。img2threejs 是纯 Python 3.10+ 标准库实现,零依赖,不需要 pip 装任何东西。报模块缺失通常是 Python 版本低于 3.10,升级解释器即可。

浏览器打开一片黑。先看控制台报错。常见原因是灯光或相机初始化写法在部分浏览器不兼容,比如前面提到的Object.assign给灯光设位置。让 Agent 改成显式属性赋值。

模型看起来像别的动物。单张图无法揭示隐藏面,卧姿、特殊角度的参考图尤其容易跑偏。把渲染截图反馈给 Agent,明确说「关节错位」「嘴巴太长」「身体太长」这类具体问题,比笼统说「不像」有效得多。

端口被占用。python -m http.server 3000换成 3001 或其他空闲端口。

想验证模型本身是否正常。除了本地起服务,也可以在模型对话里贴渲染截图让模型帮你判断结构合理性:https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=opencode_img2threejs

6. 把这条链路固定下来

img2threejs 的价值不在于一次生成多完美,而在于它输出的是可维护、可审查、可动画化的 TypeScript 代码,而不是一个改不动的网格文件。配合 opencode 的 Skill 机制和 TaoToken 的统一通道,整条链路可以固化成:一张图 → 分阶段门控生成 → 浏览器预览 → 截图反馈迭代。

接入文档在这里,遇到 provider 配置细节可以对照:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=opencode_img2threejs

如果你用的是 Claude Code 而不是 opencode,Skill 加载方式略有差异,但 settings 里的 provider 段和模型选择逻辑是相通的,参考这份配置改路径即可:https://taotoken.net/claude-code-anthropic?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=opencode_img2threejs

最后给个实用建议:跑之前先把参考图裁成主体居中、背景干净的正方形,能明显减少隐藏面推断带来的偏差。生成后别急着改代码,先让 Agent 看对比图打分,把规格调对了再动 TypeScript,返工量会小很多。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!