图片转三维场景:费用与引擎接入实测
文章拆解开源项目 image-blaster 如何通过 Claude Code 技能串联多个服务,将图片生成可行走的三维环境。作者估算基础场景约需 1.34 美元、每个动态物体另加约 0.46 美元,并指出导入引擎前需要修正尺度。
完整中文译文
一张图,五分钟内变成能走进去的 3D 场景,image-blaster 的演示很容易让人心动。但真正决定它能否进入工作流的,是生成一次花多少钱,以及导出的资产能不能正确放进引擎。原文给出的结论是:固定成本约 1.34 美元,每个动态物体再加约 0.46 美元,接入引擎还要处理坐标修正。
这份分析的价值在于拆开了脚本、计费和资产格式。不过作者明确没有完整跑通流程,价格来自公开单价,部分接入建议也是推断。它适合帮助你评估原型方案,不能当作效果和成本的实测报告。
一张图生成的,其实是三类不同资产
image-blaster 是 Claude Code 的技能包,由 World Labs 团队成员开发,并非 World Labs 官方产品。原文记录它有 11.8k stars,采用 MIT 许可证,曾在 2026 年 5 月登上 Hacker News 首页。
使用方式是克隆仓库,在仓库里运行 claude,提供 World Labs 和 FAL 两个 API key,把图片放进 input/,再输入 blast it and confirm each step with me,让 Claude 逐步执行并请求确认。
它把几个服务串了起来,下面是原文按脚本整理的实际流水线:
input/ image
├─① clean plate / object cut-outs fal-ai/nano-banana-2/edit $0.08/img
├─② static environment World Labs marble-1.1 1,500 credits
│ └→ .spz (full_res + 500k + 100k + 150k downloaded)
│ └→ collider mesh .glb (100–200k triangles)
├─③ each dynamic object fal-ai/hunyuan-3d/v3.1/pro/... $0.375/call
│ (or .../rapid $0.225, fal-ai/meshy/v6 $0.80)
└─④ SFX fal-ai/elevenlabs/sound-effects/v2 $0.002/sec
要看的是第二步:静态环境同时输出 .spz 和碰撞网格,后者只有 10 万至 20 万个三角形,不等于完整的可见场景模型。
.spz 保存高斯泼溅数据,用来呈现环境外观;碰撞网格负责让角色别穿墙;独立生成的物体网格负责可移动道具。声音则是另外一组素材。画面看起来连成一体,不代表这些资产已经具备统一的几何、光照和交互行为。
成本主要跟物体数量走,失败也要付钱
按截至 2026-10-21 的公开价格,作者把费用拆成两部分:
固定费用是世界生成与相关费用,1,500 + 80 credits 折合 1.264 美元,再加一次 0.08 美元的背景清理,合计约 1.34 美元。原文没有单独解释其中 80 credits 的构成。
每个动态物体则需要一次抠图编辑、一次 3D 生成和碰撞音效:0.08 + 0.375 + 4 × 0.002 = 0.463 美元,约 0.46 美元。只看 Hunyuan 的调用价格,会漏掉前面的图像处理。
音效走 FAL 的 fal-ai/elevenlabs/sound-effects/v2,不能直接套 ElevenLabs 自有积分表。默认环境音参数是 --loop --count 2 --duration-seconds 10,每个物体则是 --count 4 --duration-seconds 1。
因此,控制预算首先要控制独立物体数量。重新生成网格再付 0.375 美元,重做抠图再付 0.08 美元;逐步确认有实际的成本意义。
还有一笔容易漏算:generate-world.mjs 只下载 assets.mesh.collider_mesh_url。要拿适合展示的静态 HQ mesh,需要另行导出,费用约 2.80 美元。它包含约 60 万个带纹理三角形,或约 100 万个带顶点颜色的三角形,最长可能等一小时,限制为每小时 4 次,并要求 Pro 计划。
这些都是结构估算,不是账单。作者没有计入重试和套餐差异;原文列出的权限区分是 Free 可生成但不能导出,Standard 支持 splat 和碰撞网格导出,Pro 增加 HQ mesh 与商业使用权。仓库的 MIT 许可也不能直接代替服务与资产的授权条件。
为什么内置查看器正常,放进 three.js 却可能错位
另一个关键问题是坐标。World Labs 文档说明,Marble SPZ 使用生成资产自身的坐标系,外部渲染时需要读取 assets.splats.semantics_metadata,把高斯中心和大小转换到以米为单位、与地面对齐的坐标。
文件能加载,不代表尺寸和地面位置已经正确。
原文称内置查看器会做修正,但导出流程没有替外部引擎完成这一步。可能出现的现象包括门高达 30 多个单位、场景悬空或下沉,以及道具对不上背景。下面是原文给出的 three.js 修正示例:
// three.js:加载器读取文件,不会修正坐标系
const world = await new SPZLoader().loadAsync(url);
const m = semantics.metric_scale_factor;
world.scale.setScalar(m);
world.position.y -= semantics.ground_plane_offset;
注意 metric_scale_factor 和 ground_plane_offset 两行;接入时还需要取得对应的 semantics 数据。作者建议碰撞网格也应用同样的比例,但明确承认这是推断,文档只直接说明了 splat。
坐标之外,还有几处接缝。背景若保留了一把椅子,再生成椅子网格,就会出现重影。按原文描述,splat 与网格的投影、受光和接触遮挡也不会自然一致;作者提出用 AO 贴片或网格覆盖接触区域补救,同样没有给出实测验证。
面数和声音也有边界。技能默认使用 50k 面,Hunyuan API 自身默认却是 500,000 面,近景主角物体需要单独检查。音效只提供环境循环与短促碰撞,没有滚动、持续发声或材质变化。非循环声音会经过 ffmpeg 裁剪和响度归一化,循环音则保留原样。
我的判断
我认同它的定位:用已有图片快速搭空间原型,检查构图、行走视角,或者向客户展示空间关系。把用途限定在这里,混合使用 splat、碰撞体和道具网格是合理取舍。
但「五分钟」是项目宣传,「比手工搭建快很多」是原文判断。作者没有端到端运行,也没有提供与手工搭建、现成资产拼装的耗时对照,所以目前只能视为经验判断。
原型生成速度和可交付资产质量,需要分开验收。 一旦要求可编辑模型、统一光照、可靠碰撞与明确商用权限,额外导出、修正和返工就会进入成本。原文把这些问题找了出来,但还没有证明解决它们需要多少时间。
能拿来做什么
- 做 three.js 空间原型时,先用一张图和少量动态物体验证流程,把约 1.34 美元固定费用、每物体约 0.46 美元增量和重试费用分别记账。
- 接入前保存
assets.splats.semantics_metadata,先核对尺寸、地面和道具位置,再继续写交互;碰撞体是否使用相同修正需要实际验证。 - 在 AI 执行抠图和生成前,先确认哪些物体留在静态背景、哪些需要独立交互,减少重影和无效调用。
- 验收时分别检查环境外观、碰撞、近景物体与声音。如果目标是传统网格资产,再单独评估 HQ mesh 的导出费用、等待时间和权限。