图片转3D模型 img2threejs 开源

GitHub - img2threejs/img2threejs: Rebuild the object in a reference image as a code-only, procedural, quality-gated, animation-ready Three.js model. Token-efficient image-to-3D. · GitHub


img2threejs

将参考图片中的物体重建为纯代码、程序化、质量受控且可用于动画的 Three.js 模型。刻意追求 token 高效------这是通过代码进行重建,而非摄影测量、网格提取或下载美术资源包。

许可证 :Apache 2.0 | 版本 ​ | 欢迎 PR ​ | 运行时工具 ​ | 赞助 ​ | 脚本

由 Atlas Cloud 赞助 | 由 Tripo 赞助 | 由 Hyper3D 赞助

每日 / 每周趋势

Python: hoainho%2Fimg2threejs | Trendshift | img2threejs%2Fimg2threejs | Trendshift

全语言: img2threejs%2Fimg2twojs | Trendshift | img2threejs%2Fimg2threejs | Trendshift

通过代码将参考图片重建为可在浏览器中实时运行的动画就绪 Three.js 模型。

打开实时演示画廊

画廊中的每个模型都是生成的代码,在您的浏览器中运行。没有网格文件,无需下载。

实时演示

完全由图元、程序化着色器和生成的几何体构建的重建模型。打开任何模型进行轨道旋转,检查其参考图并阅读生成的源代码。

演示 主题 构建版本 查看 源码
双剑战士 --- TypeScript 程序化表面 ⚠︎ 角色 v1.5.1 实时 代码
低多边形人形 --- 绑定角色 ⚠︎ 角色 v1.5.0 实时 代码
★ 爪子刀 | 多普勒红宝石 (崭新出厂) 物体 v1.4.4 实时 代码
AWP | 美杜莎 (略有磨损) · V2 重建 物体 V2 实时 代码
皮卡丘 10K Star 庆祝 ⚠︎ 角色 v1.5-beta 实时 代码
Glock-18 | 幽灵协议 (战痕累累) 物体 v1.4.1 实时 代码
经典刀 | 渐变之色 (略有磨损) 物体 v1.3 实时 代码
BMX 耐力自行车 物体 v1.3 实时 代码
M9 刺刀 | 多普勒第二阶段 物体 v1.3 实时 代码
索尼 WF-1000XM3 耳机 + 充电盒 物体 v1.2 实时 代码
ISSACA 12 号霰弹枪 物体 v1.2 实时 代码
Gerber 伞绳刀 物体 v1.2 实时 代码
哆啦A梦的房子 (等距立体模型) 物体 v1.2 实时 代码
战争运输车 "SECTOR 07" 物体 v1.2 实时 代码
加冕战利品箱 ⚠︎ 物体 v1.2 实时 代码

⚠︎ 标记表示该演示的注册状态仍是占位符而非最终版本------它可以渲染,但不是已完成的工作。"构建版本"列是每个演示自己的注册条目在 generatedWith 中记录的版本,而不是从日期推断的;awp-medusa-v2 记录为 V2,这是该演示的重建版本而非发布号。行按添加演示的提交时间从新到旧排序。

画廊源码位于 img2threejs/img2threejs-showcase。如果这个项目对你有用,请在此仓库上点个 Star 帮助他人发现它。


项目功能

你给它一张物体的参考图片。它会生成一个用 TypeScript 编写的 THREE.Group 工厂函数,该函数通过图元、程序化着色器和生成的几何体来重建该物体------并带有运行时层级结构(枢轴、插槽、碰撞体),因此结果是可用于动画的,而不是一个静止的块。

它运行在 Claude Code、Codex 或 OpenCode 下。它是代理无关的:无论文档在哪里提到"代理视觉"或"代理浏览器工具",它都使用宿主提供的任何工具------原生图像读取、浏览器 MCP、项目预览或用户提供的截图。

主题与细节精度

  • 物体与角色 :每个主题被分类为物体、角色或混合体。物体遵循硬表面管道;角色通过解剖学感知轨道(头部单元比例、面部特征点、姿势)进行路由,详见 grimoire/character/reconstruction.md
  • 细节优先分析 :在代码生成之前,管道会枚举一个 detailInventory(细节清单),列出定义身份的小细节(光泽、倒角/圆角、螺丝/铆钉、雕刻或绘制线条、轮廓、污渍和磨损)。每个细节必须映射到真实的组件或材质条目,并且在清单完成之前,严格的质量门控会阻止生成。分类法见 grimoire/intake/detail_inventory.md
  • 特定人物或角色的最大相似度 :一个可选择加入的投影优先路径将参数化模板拟合到图像特征点上,对照片进行去光照、相机匹配渲染,并将参考图投影到网格上。单张图像无法保证 100% 的相似度,因此管道会报告每个区域的置信度,并在重要时要求更多视角。详情见 grimoire/character/likeness_maximization.md
  • 多视图轮廓雕刻 :一个可选择加入的 geometryDescriptor.visualHull 将至少两个确定的正交二值轮廓相交到一个有边界、已焊接的体素网格中。它将未见区域记录为低置信度,而不是凭空捏造隐藏细节。模式和运行时检查:grimoire/scripts.md
  • CS2 武器审查门控 :刀和 Glock-18 路线使用特定系列的组件契约。审查记录精确层级、系列身份、绘制区域和投影覆盖率、每个区域的置信度、近似说明和版本化的审查场景元数据;组件覆盖率和去贴图线框门控防止用令人信服的纹理代替真实结构。随 CS2 领域插件一起提供;参见其 docs/cs2/review-gates.md
  • 可恢复的本地工作流forge/state.py 为通用配置文件和每个已注册的领域(仓库内的角色,以及来自 plugin-character 等插件安装的角色)记录一个有序的、有证据支持的 intake/pass 检查清单。forge/next.py --state 从该检查清单恢复,同时现有的规范、渲染和审查门控保持权威性。
  • 材质参考管道 :每个可见材质区域都可以被裁剪、分析、针对版本化的 Three.js 材质注册表进行解析、拟合到 ObjectSculptSpec 中、从受控相机视图渲染,并且只有在每个区域比较门控通过后才被接受。参见 docs/materials/README.md
  • Python 辅助的浏览器渲染 :Python 可以编排相机批次、哈希、清单和确定性诊断,但目标浏览器 Three.js 路由仍然是渲染的权威。参见 grimoire/build/python_threejs_render_bridge.md

工作原理

一个分阶段的雕刻管道将参考图片转化为规范(spec),然后一次生成并视觉审查一个构建阶段(build pass)------线框(blockout)→ 结构(structural)→ 形态(form)→ 材质(material)→ 表面(surface)→ 光照(lighting)→ 交互(interaction)→ 优化(optimization)------自我纠正,直到每个定义身份的特征通过其阈值。

→ 完整的管道图、门控、自我纠正逻辑和 token 效率设计:docs/ARCHITECTURE.md

一个分阶段的雕刻管道将参考图片转化为规范,然后一次生成并视觉审查一个构建阶段------线框 → 结构 → 形态 → 材质 → 表面 → 光照 → 交互 → 优化------自我纠正,直到每个定义身份的特征通过其阈值。确定性的 Python 脚本处理验证和门控;模型 token 只花在视觉判断和代码上。

→ 完整的管道图、门控、自我纠正逻辑、脚本参考和 token 效率设计:docs/ARCHITECTURE.md


快速开始

安装​ --- 将此文件夹放在你的技能(skills)目录下:

复制代码
git clone https://github.com/img2threejs/img2threejs.git ~/.claude/skills/img2threejs

如果你使用多个宿主,请保留一个单独的签出版本,并将每个入口点通过符号链接指向它,这样它们就不会分叉:

复制代码
~/.claude/skills/img2threejs -> <你的签出目录>
~/.codex/skills/img2threejs  -> <你的签出目录>

**添加领域插件(可选)**​ --- 领域知识(目前是 CS2 皮肤)存在于已安装的插件中,而不是在这个签出目录中。安装 img2 工具一次,然后向其中添加插件:

复制代码
npx github:img2threejs/img2 install   # ~/.img2,插件注册表和 `img2` 启动器
img2 add img2threejs/plugin-cs2       # 克隆最新标签,固定 SHA,链接宿主技能
img2 doctor                           # 对每个已安装插件进行故障响亮的静态审计

已安装的领域插件贡献其自己的检查清单步骤、证据收集、规范增强(质量下限仅提升),以及一个阻塞性的审查门控------并通过 forge/state.py init --profile <id> 注册其配置文件。未安装插件时,通用(generic)和角色(character)可用;缺少插件(cs2、animated-character)的配置文件会响亮地失败,并指明已安装的内容,绝不会静默降级。img2 remove <id> 可以干净地反向操作。编写自己的插件:工具仓库的 docs/WRITING_A_PLUGIN.md

调用​ --- 在 Claude Code 中,附加或指向一个物体图片并运行:

复制代码
/img2threejs 将此物体重建为 Three.js 模型,保持比例、角度和颜色。

这就足够了:技能会对主题进行分类,运行细节清单,并自行控制每个阶段的门控。

遵循管道​ --- 技能验证图片,编写评估和规范,逐阶段生成工厂函数,并在每一步向你展示并排比较,直到渲染匹配。

对于多会话重建,首先创建一个本地状态索引:

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

更严格地驱动它

单行命令将判断权留给技能。当你已经知道你的主题"正确"意味着什么时,请明确说明------下面每一行都映射到管道中的真实门控或工件,因此它会改变被强制执行的内容,而不仅仅是添加形容词:

复制代码
/img2threejs 将这张图片中的主题重建为程序化 Three.js 模型。

保真度   保持比例和轮廓与参考一致。首先枚举定义身份的细节------倒角和圆角、
        面板接缝、紧固件、雕刻或绘制的线条、光泽与哑光区域、磨损------并丢弃
        任何无法放置在真实组件上的细节,而不是伪造它。
材质     从参考像素中推导表面处理类别和渐变停止点,而不是凭记忆。标记任何
        无法在色调映射中存活的颜色。
运行时   为任何应该移动的部分暴露枢轴和插槽,加上用于循环空闲动画的 userData.tick。
门控     运行 --strict-quality,在并排审查通过之前不要推进阶段。对图像无法
        显示的任何内容报告每个区域的置信度。

根据主题有用的补充:

  • 特定人物或角色 --- 最大化相似度:将参数化模板拟合到特征点,对参考进行去光照和相机匹配,然后投影。告诉我哪些区域是推断的。
  • 动物或生物 --- 这是一个生物,不是人形------使用四足身体计划和身体单元比例系统。
  • 饱和阳极氧化或糖果色涂层 --- 涂层是糖果涂层,不是宝石金属。保持色调;不要让环境偷走它。
  • 成本上限 --- 保持低工作量并跳过演示合成器;我只需要评估渲染。

脚本从技能根目录运行,只需要 Python 3.10+ ------ 无需安装任何东西。

复制代码
python3 forge/stage1_intake/probe_image.py <image>
python3 forge/stage2_spec/new_pre_spec_assessment.py "名称" --image <image> --out assessment.json
python3 forge/stage2_spec/new_sculpt_spec.py "名称" --image <image> --assessment assessment.json --out spec.json
python3 forge/stage2_spec/validate_sculpt_spec.py spec.json --strict-quality
python3 forge/stage3_build/generate_threejs_factory.py spec.json --out src/createObjectModel.ts

工厂生成器会重复严格的质量门控,并且是故障封闭的(fail-closed):失败时返回 BLOCKED,附带规范工件、失败指标、原因和下一步操作,并且不写入工厂。--allow-nonstrict 仅用于显式遗留测试夹具,绝不用于生产输出。


GLB 参考路线的复制粘贴提示

从 GLB 参考而不是照片重建角色是一条不同的路线,有自己的门控------GLB 是一种测量工具,永远不会被发布。三个提示涵盖了它,每个都在自己的复制块中:

提示 使用场景 不使用场景
Build 你有 GLB 且尚未构建表面 没有 GLB,或者构建已完成但看起来不对
Polish 构建完成但结果看起来不像 GLB 表面从未构建------那是构建重跑,不是润色
Animation 人物静止时看起来正确且已通过构建门控 表面未受门控,或 joint_loops.py 失败------那是表面发现,权重调整无法解决

它们强制 GLB 真正携带的每个参数------尺寸、比例、每带宽度和质心、基础颜色、粗糙度和金属度------达到测量值,并附带证明它已着陆的检查。有三件事不是 1:1 的,每个提示都说明了:绑定和动画通常不存在于资源中(skinCount: 0, animationCount: 0),纹理图像和法线贴图根据此技能的纯代码契约被故意不复制,并且任何比节点单元格大小更精细的东西根本无法携带。

这些是参考资料,不是保证。它们被写成通用的,因此其中的测量值来自一个角色,只是为了展示要测量什么------而不是要复制的值。运行与您情况匹配的那个,而不是按顺序运行所有三个;每个都注明了不合时宜使用的成本。

有关逐脚本参考、完整脚本表和预期工件,请参阅 docs/ARCHITECTURE.md


为什么它是 token 高效的

大多数图像转 3D 代理循环通过要求模型执行机械工作来消耗 token------每次都重新读取整个模型、对像素评分、手动验证 JSON、重新运行已经做过的步骤。img2threejs 将所有这些推入确定性脚本,并且只在实际需要判断的地方花费模型 token。

  • 脚本执行,模型判断:Python 脚本处理验证、门控、规范编写、PBR 提取、比较表打包和管道状态。它们从不给视觉评分。模型的 token 只用于一件事:查看单个并排表并决定通过或失败。
  • 零依赖,零安装混乱 :每个脚本都是纯 Python 3.10+ 标准库。没有 pip,没有 PIL,没有 numpy,没有 Playwright。PNG 读写使用 structzlib 完成。无需安装意味着无需在上下文中调试。
  • 阶段门控生成:代码生成器只发出当前解锁的构建阶段。模型不会在每次迭代时重新生成或重新读取整个模型------每个步骤都是小而有限的。
  • 在代码生成之前快速失败:严格的质量门控在生成一行 Three.js 代码之前阻止浅层规范,因此你永远不会花费 token 去渲染一个从一开始就被低估的模型。
  • 每次审查一张图片:每个阶段仅从打包的比较表(参考图与渲染图并排)进行判断,而不是一堆零散的截图。
  • 文本输出,而非二进制:结果是可差异比较的 TypeScript 加上 JSON 规范------小巧、可审查、可版本控制,而不是多兆字节的网格文件。

净效果:你仍然可以从图像中获得忠实的 3D 模型,但昂贵的模型上下文被保留用于视觉判断和代码,而不是簿记。有关每个阶段和每个周期的完整 token 细分,请参阅 docs/TOKEN_COST.md


脚本

脚本 作用
stage1_intake/probe_image.py 图像元数据和明显的技术问题(不是视觉检查)。
stage2_spec/new_pre_spec_assessment.py 对物体进行分类,评估复杂度,发出质量契约。
stage2_spec/new_sculpt_spec.py 根据评估编写 ObjectSculptSpec。
stage2_spec/validate_sculpt_spec.py 验证规范;--strict-quality 在代码生成之前阻止浅层规范。
stage1_intake/extract_pbr_evidence.py 每个裁剪区域的参考衍生 PBR 证据(推理,不是逆向渲染)。
stage1_intake/material_region_analysis.py 裁剪材质区域,运行纹理/PBR 证据,并解析注册表配置文件。
stage2_spec/apply_material_analysis.py 将区域分配、先验、贴图和来源连接到 ObjectSculptSpec。
stage3_build/orchestrate_passes.py 锁定的阶段状态:状态、检查、同步。
stage3_build/generate_threejs_factory.py 为当前解锁的阶段发出 Three.js Group 工厂。
stage4_review/material_views.py 发出多角度、缩放、显微镜、环境和捕获回读契约。
stage4_review/material_comparator.py 比较可见材质裁剪并分类每通道不匹配。
stage4_review/material_feedback.py 通过现有的停止策略应用有界的、材质范围的纠正。
stage4_review/material_gate.py 在注册表、裁剪、渲染、兼容性和比较证据通过之前阻止材质阶段。
stage4_review/make_comparison_sheet.py 打包一个用于审查的参考与渲染对照表。
stage4_review/append_review.py 记录每个阶段的审查:分数、决定、证据。
_shared/feature_acceptance_policy.py 强制执行每个特征分数阈值的内部助手。
stage1_intake/build_detail_inventory.py 将参考图切片为区域并搭建细节清单。
stage1_intake/extract_landmarks.py 叠加特征点网格并为角色搭建解剖块。
stage1_intake/solve_camera_pose.py 发出参考相机块,以便渲染可以进行相机匹配。
stage1_intake/delight_albedo.py 在纹理投影之前从照片中近似中性反照率。
stage3_build/bake_projected_texture.py 发出用于照片纹理投影的投影/UV 烘焙描述符。
stage5_rig/rig_spec.py 从组件树派生并验证骨架,使骨骼不能偏离几何体。
stage5_rig/geodesic_skinning.py 通过实体测量的距离计算顶点权重;使刚性角色远离平滑蒙皮。
stage5_rig/validate_rig_payload.py 在绑定 THREE.Skeleton 之前的阻塞负载完整性门控。
stage1_intake/extract_hair_evidence.py 头发/皮肤分割、带状覆盖、发际线、高光带、根到尖端的差异。
stage4_review/scalp_exposure.py 硬性门控:在几何体上找到秃斑,在任何渲染之前。
stage4_review/hair_gate.py 软性门控:头发覆盖、发际线和高光偏移与参考的比较。
stage4_review/interior_difference.py 轮廓内的外观差异,按高度分带。每个视觉阶段都需要。
_shared/chirality.py 可导入的左右约定,以及两个手性缺陷需要的两个门控。
_shared/pipeline_routing.py 故障封闭的武器/角色路由;低置信度解析为请求输入。

这是一个精选的选择------forge/ 包含大约 90 个模块。带有每个标志的可执行参考是 grimoire/scripts.md,逐门控契约是 grimoire/review/gates_reference.md。其余的 grimoire/ 包含每个门控应用的标准(验证、预规范评估、程序化模式、材质和光照真实感、附件正确性、动作就绪模型、自我纠正)。


可选的参考保真度工具

纯标准库核心可以使用隔离的证据层,而无需承担运行时依赖:SAM2 组件蒙版、Depth Anything V2 相对深度先验、MediaPipe 面部/姿势特征点、Chrome DevTools 诊断、Three.js 场景检查、Playwright 跨浏览器后备和版本感知的 Context7 检索。这些工具从不批准阶段或静默提供几何体。安装、路由、来源规则和确切命令:docs/integrations/reference_fidelity_tooling.md

可选的 GLB 基线角色管道

integrations/glb_character_pipeline 从用作测量工具的多部分 GLB 及其漫反射图像重建角色,并发出演示实际发布的程序化 TypeScript------运行时不会获取任何 .glb.bin。它带有自己的 pyproject.toml/uv.lock,因此纯标准库的 forge 核心保持无依赖,并在伴随的展示签出上通过 IMG2THREEJS_SHOWCASE_ROOT 操作。

它仅适用于构建有 GLB 可测量的情况------否则完全跳过它,改用核心图像驱动管道。精确复现 girl-character 发布的 crossSections.ts(748 个环,86,240 个环点)。方法和每个阶段的原理:PIPELINE.md


你将获得什么

  • 一个 ObjectSculptSpec JSON:完整的组件树、材质、重复系统、插槽以及每个阶段记录的审查历史。
  • 一个 TypeScript createObjectNameModel(spec, options) 工厂函数,返回 THREE.Group,其中 root.userData.sculptRuntime 暴露节点、插槽、碰撞体和销毁组。
  • 对于角色构建,root.userData.rig:骨骼、一个共享的 Skeleton、骨骼顺序和索引映射,以及根据每个蒙皮网格是否实际绑定计算出的绑定标志。
  • 渲染和比较表,记录每个阶段的保真度。有关逐脚本参考和输出工件的完整列表,请参阅 docs/ARCHITECTURE.md

路线图

已发布:

  • v1.0 --- 物体管道:分阶段雕刻、渲染与参考审查循环、动作就绪层级。
  • v1.1 --- 细节优先分析:必需的细节清单,严格的质量门控。
  • v1.2 --- 人形角色生成器:解剖学轨道、比例锁定和特征放置阶段。
  • v1.3 --- 质量和效率:Divine Eye 确定性审查工具、输入完整性和几何真实性门控、参考基础的纹理和渐变分析、CIEDE2000 色彩数学。
  • v1.4 --- 武器更新 --- CS2 图像匹配重建:来源感知的 intake、投影优先的表面处理、特定系列的武器适配器以及结构审查门控。
  • v1.4.1 --- CS2 强化:显式组件覆盖、专用的 Glock-18 装配契约、去贴图线框证据和更严格的几何完整性检查。
  • 生物生成器 --- 4 种身体计划(四足 / 鸟类 / 有翼龙 / 蛇形)、animalAnatomy 规范、脊柱放样几何体、ΔE00 色彩门控。
  • v2.0 --- 插件更新 --- 领域注册表、基于拉取的规范增强(仅提升质量下限)、带有来源的发射目标套接字、每个插件的阻塞门控,以及 img2 工具(img2 install/add/doctor)。CS2 提取到 plugin-cs2animated-characterplugin-character 服务;基础名称不指定领域。最初为"程序化世界包"预留的"插件生态系统和 API"作为自己的主要版本率先发布。
  • v1.5 --- 角色更新 --- 从组件树派生并绑定到 SkinnedMesh 几何体的骨架、测地线蒙皮、作为五阶段子系统的头发(带有硬性头皮暴露门控)、手性门控、内部差异审查、锥形扫描图元、带有阻塞接受门控的材质管道,以及可恢复的工作流状态。不包括hairProfile 编译器、IK、姿势扫描门控、服装。

下一步​ --- 每个版本一个主题:

  • v2.1 --- 环境更新:建筑物、房间、街道、植被、地形感知和多物体重建。
  • v2.2 --- 游戏管道更新:Unity 和 Unreal 导出器、Blender 桥接、LOD 和碰撞网格生成。
  • v2.3 --- 动画更新:自动绑定、自动蒙皮权重、Mixamo 兼容性、面部绑定。
  • v2.4 --- AI Studio 更新:Web UI、批处理、视觉提示生成器、云渲染。
  • v3.0 --- 程序化世界更新:多视图重建、程序化城市生成、语义世界理解。

发展弧线:资产(v1.4--v1.5)→ 插件生态系统(v2.0)→ 世界(v2.1--v2.2)→ 生产(v2.3--v2.4)→ 从参考图像生成可玩世界的 AI 游戏资产生成平台(v3.0)。

完整路线图 ​ --- 每个版本的详细信息、四阶段长期展望和跟踪的能力差距:ROADMAP.md。技术规格:docs/UPGRADE_PLAN.md


关于局限性的诚实说明

单张图片无法揭示隐藏面或保证精确的几何体。该技能会明确说明输出何时是近似的、风格化的或低多边形的,并通过镜像可见面来推断不可见面,而不是伪造置信度。它对于硬表面物体很强;角色是风格化的重建,不是照片级的相似。如果技能认为"从这张图片无法达到请求的保真度",这是一个有效的、预期的结果。


Star 历史

如果 img2threejs 对你有用,请点个 Star 帮助他人找到它。

Star History Chart

支持项目

img2threejs 是免费和开源的。如果它节省了你的时间或进入了你的项目,请考虑支持持续开发:

ko-fi

VietQR / MoMo / PayPal 也适用 ------ 请参阅捐赠页面。

相关推荐
gyratesky1 小时前
支持独立部署的地图方案
前端·gis
老王以为1 小时前
走进AI Agent第三篇:让 Agent 记住你
前端·人工智能·机器学习
全栈技术负责人1 小时前
大模型流式输出核心技术:智能 Markdown 渲染引擎方案
前端·javascript·vue.js
码云之上1 小时前
让聊天机器人学会用工具,星悟接 MCP 的实践
前端·人工智能·前端框架
用户921080262861 小时前
从单线程到事件循环:彻底理解 JS 的同步、异步、微任务和宏任务
前端
不一样的少年_1 小时前
明明做了很多事,为什么简历看起来还是没含金量?
前端·后端·招聘
mashang1234567891 小时前
mac安装SnailGitLite并配置Beyond Compare
前端·macos
雪芽蓝域zzs1 小时前
第三十四节:用户新增编辑弹窗增加 el‑tree‑select 部门选择器
前端·javascript·vue.js
程序员老赵2 小时前
Docker 部署 go2rtc:轻松搭建摄像头多协议流媒体平台
前端·docker·直播