Image to Sculpt 让 Agent 从一张图做出 3D 雕塑
用户给一张图(AI 生成的角色、渲染图、手办或产品的照片、手绘稿,或者只有一个想法),要一个对得上这张图的 3D 模型时,用这个 Skill。它来自 gokayfem/image-to-sculpt,MIT 许可。
和直接调用"图生 3D"模型不同,它会证明结果像不像:
- 照片看得到的面,按照片自己的法线、轮廓和深度来贴合。
- 看不到的背面和侧面,用生成的多角度视图补。这些视图要先互相对得上才会被采用。
- 每一步都记录下来,最后在 Blender 里回放成延时视频,导出 GLB、OBJ、STL。
触发
用户说"把这张图做成 3D 模型""把这个手办 / 角色雕出来""要一个能 3D 打印的模型""做个雕刻过程的延时视频""看看这个模型和原画差多少"。
不适合:
- 场景和房间、头发丝那样细的结构、透明或镜面材质(开工前要先告诉用户)。
- 没有任何图片、只用文字生成 3D 的需求(先用
imagine生成一张图再走流程可以)。 - 绑骨骼、做动画、PBR 贴图、需要精确尺寸的工业零件。
硬性规则
- 花钱前先说清。 遮罩、深度、法线和生成视图都走 fal 的付费接口,一个模型通常约 2 美元。开工前告诉用户大概花多少,用
--budget设上限。每次调用的请求 id 先写进case.json再等结果,不盲目重复提交。 - 不显示密钥。
FAL_KEY只放环境变量,不打印、不写进文件或回复。 - 照片看得到的地方以照片为准。 生成视图只补照片看不到的部分,不用它们的深度,也不拿它们的法线去平均照片的法线。
- 每个生成视图都要重新找角度、先筛再用。 不相信请求时写的角度(实测常差 20 到 155 度);和其他视图对不上的(换了姿势、多了一条胳膊)要剔除并说明原因。
- 留一张视图做验证。 它不参与拟合,结果单独报告。
- 每个检查点都给用户看图。 先给标注好的对比图,再给数字;说不清的地方不要只报一个"质量分"。
- 说清哪些是猜的。 只有正面照时,背面是生成器猜出来的,交付时要讲明。
- 记录不改写。 每一步都在
build/steps/和build/log.jsonl里,修正就加新步骤,不改旧记录。
安装
先检查:
ls ~/.claude/skills/image-to-sculpt/SKILL.md ~/.agents/skills/image-to-sculpt/SKILL.md 2>/dev/null || claude plugin list 2>/dev/null | grep -i image-to-sculpt || echo "not installed"
没装的话,说明要装一个 Skill 和几个 Python 包,同意后:
| Agent | 安装 |
|---|---|
| Claude Code | claude plugin marketplace add gokayfem/image-to-sculpt,再 claude plugin install image-to-sculpt@image-to-sculpt;或复制 skills/image-to-sculpt 到 ~/.claude/skills/ |
| Codex、Cursor、Gemini CLI、Copilot | npx skills add gokayfem/image-to-sculpt |
| Codex(手动) | 复制 skills/image-to-sculpt 到 ~/.agents/skills/ |
| Gemini CLI(手动) | gemini extensions install https://github.com/gokayfem/image-to-sculpt |
运行环境:
- Python 3.10 以上:
pip install -r requirements.txt(numpy、scipy、scikit-image、Pillow、fal-client、matplotlib)。 - Blender 5.2 以上(
$BLENDER、PATH 上的blender或 macOS 应用)和ffmpeg,用于回放和出视频。 FAL_KEY环境变量,用于遮罩、深度、法线和生成视图。没有密钥时只能用带透明通道的 PNG 加用户自己的照片,或只做正面(背面靠猜)。
装好后自检(不会打印密钥):
python3 skills/image-to-sculpt/scripts/i2s.py doctor
按输入选路线
| 输入 | 做法 |
|---|---|
| AI 生成图或 3D 渲染的角色、生物、手办、产品 | new 后 run,主路线 |
| 真实物体的照片 | new --kind photo 后 run,用照片的真实焦距和深度定尺度 |
| 带透明通道的 PNG | 直接用透明通道当遮罩,省一次调用 |
| 一张图里有好几样东西 | prep --select "the red dragon" 指定主体 |
| 手绘稿、扁平插画 | prep --restyle,先转成 3D 渲染风格,保持姿势 |
| 同一物体的多张照片 | views --import DIR,用照片代替生成视图 |
| 只有一个想法 | imagine OUT.png "想法" 先生成一张干净的全身图 |
流程
python3 skills/image-to-sculpt/scripts/i2s.py new cases/owl --input owl.jpg --subject "carved wooden owl figurine"
python3 skills/image-to-sculpt/scripts/i2s.py run cases/owl
--subject 是你看图后自己写的一个短名词短语,会进到每个视图的提示词里。run 包含 new 之后的全部步骤,每步也能单独跑:
| 命令 | 做什么 | 做完给用户看什么 |
|---|---|---|
prep |
正面的遮罩、深度、焦距和法线 | ref/front_mask.png、ref/front_normals.png |
views |
默认 9 个生成视图加 1 个留作验证(--set minimal 只要 5 个) |
每一张视图,指出换了姿势、多了肢体、被裁掉的 |
hull |
给每个视图重新找角度、筛掉对不上的、雕出大形、找对称面 | case.json 里的实际角度和被剔除的视图 |
fit --stage all |
分 forms、surface、detail 三段共 38 次记录在案的贴合 | 各视图的对比图 |
cut、smooth |
打开手指、腿、手臂和身体之间该有的缝,去掉蹼状粘连和碎片 | 修改前后的对比图 |
check |
每个视图出一张对比图和指标(轮廓重合度、轮廓距离、法线角度、粗糙度、深度) | checks/sheet_*.png |
finish、blender、film |
最终表面;Blender 回放、360 度转台、.blend 和 GLB/OBJ/STL;延时视频和封面图 |
延时视频、各视图对照表 |
report |
out/REPORT.md、out/index.html 和每一步的曲线 |
报告 |
局部不好时针对性修:parts CASE --prompt "hands" 圈出区域,再 fit --stage focus --region hands、cut --region hands。没有修改前后的对比图,不能说已经修好。
参考文件
| 文件 | 什么时候看 |
|---|---|
references/inputs.md |
输入特殊时:遮罩、转风格、选主体、导入照片、只有想法 |
references/views.md |
生成、判断、定角度、筛选和补视图 |
references/fitting.md |
每次贴合做什么、参数、cut / smooth / focus |
references/checking.md |
读对比图和指标,决定下一步修哪里 |
references/blender-and-delivery.md |
回放、视频、导出、报告 |
references/lessons.md |
作者踩过的坑,以及上面规则的来由 |
输出格式
- 开工前:输入属于哪条路线、预计花费、超出能力范围的部分。
- 每个检查点:标注好的对比图,再附数字。
- 交付:延时视频、各视图对照表、指标表,GLB/OBJ/STL 路径,哪些部分是生成器猜的、哪里还弱。然后停下,由用户决定要不要继续改。
一句话
先说清花费和能力边界,每个检查点给图,生成视图先筛再用,交付时说清哪些是猜的。

评论(0)
还没有评论,来说第一句。