← 返回物理 demo 主页
一句话: 单张静态家电照片 → 端到端产出带纹理、能开合的 3D 可动资产。关键招:用 gpt-image-2 把"关闭态"图编辑成"打开态"图(它擅长编辑、不擅长分割),双态对比反推关节,驱动带纹理 mesh,再用幻化开合态闭环对照 + 物理护栏 #47。这是我们自己的端到端生成,#47 退为护栏。
管线:A 关→开图 → B 双态读关节 → C 带纹理mesh → C2 驱动 → D 闭环+#47护栏
🎬 主线动画 Demo(想象→重建→铰接→物理在环)
5 镜头:①想象(gpt-image 闭→开)②重建+切件(TRELLIS2+P3-SAM/gpt-5.5)③铰接=对齐多态想象(ghost)④物理在环 #47(穿模红→夹紧绿零穿模)⑤成品 reel。镜头3/4 为新渲(真 mesh/真关节/真#47,无伪造)。
| ③ 铰接·多态对齐(新渲) | ④ 物理在环 #47(新渲) |
 |  |
★ DEMO 成品(2026-06-21 逐例修正后)
单图 → gpt-image 开态 → TRELLIS2 忠实几何+内腔 → P3-SAM 切件 → gpt-5.5 选件(支持多件/多类型)→ 接缝铰轴 → 开合。下面是逐例修正后的 4 个**可开合**资产(覆盖 侧铰门 / 底掀门 / 抽屉+门多关节 / 顶翻盖):
| 物体 | 关节 | 开↔闭动图 | 静帧 |
| 微波炉 | 门(竖铰,水平扫)+转盘 |  |  |
| 烤箱 Oven | 掀门(底横铰) |  |  |
| 木柜 cabinet | 抽屉(prismatic)+门(revolute) |  |  |
| 藏宝箱 chest(非PM) | 盖(顶横铰) |  |  |
★ 物理校正器 #47(逐例修正点):
• Oven 修正:动件原只含门的薄面片(看着是"框架在动")→ 改为整块门板(含门体)一起开合。
• cabinet 修正:门段 P3-SAM 把门和右侧壁切在一起 → 按空间过滤只取门板,侧壁不再跟着转。
• chest 用 #47 演示:生成的盖偏大,直接闭到 −110° 会嵌进箱壁(红显穿透,6.3×接触基线);#47 用体素碰撞可行区把闭合夹到 −48°,盖搁在箱沿不穿模(2.0×基线)——这就是物理校正器:把生成式预测的关节范围夹到物理成立的区间。
诚实:几何/纹理为 TRELLIS2 生成(块状感、薄片瑕疵难免);冰箱为已知 hard case(深腔/平板门),单列下文。URDF:chest/cabinet 已导出可 pybullet 加载(见下)。
★ 成品:可交互带纹理可动资产(拖动旋转)
Microwave · 打开态(关节驱动,门左甩)
同一资产的两态(body + door 独立节点,UV 纹理保留)。GLB 各 ~33MB,首次加载需几秒。曝光已调亮(原纹理偏暗)。
★ 改进选件(多视角+失败重试)+ 更多 diverse 例子(2026-06-21)
方法学升级: gpt-5.5 选件改成多视角渲染(前/侧/俯/其它)+ 选完做污染校验 + 不合格自动换角度重试(≤3)+ 对横跨整体的污染段做空间拆分。解决了 cabinet 那类"单视图信息不全/段被污染"的问题。
结果:4 个 diverse 件全部分解合理——laptop(盖)/ toilet(座圈+盖)/ scissors(两半刀)/ desklamp(5 段臂)。这是改进的核心价值。
| 物体 | 分解(动件) | 开↔闭 | 诚实状态 |
| laptop | 盖(竖铰) | 
 | 分解+铰对;闭合角欠转(只合一半,待用 motion_observed 校准) |
| toilet | 座圈 + 盖(各横铰) | 
 | ✅修:座圈+盖共用座圈根部横铰;盖往前下盖到马桶上(足迹重合0.99,曾误向后倒已修) |
| desklamp | 5 段臂(头/颈/上臂/下臂/底座) | 
 | ✅修:gpt-5.5 读开态图得链+轴(base swivel-Y + 各臂 X横铰)+链式 FK;灯罩段已并入 head → 整盏灯协调折叠、灯罩跟着臂动 |
| scissors | 两半刀(选对) | 
 | ✅跑通:无静态基座的特殊拓扑,取一刀为基准、另一刀绕中轴螺丝开合 |
结论:改进选件(多视角+重试)真有效,把信息不全/复杂多关节都救了;持续弱点收敛为 ①闭合量自动估计 ②串联链需 kinematic-tree 父子 FK(门/盖单铰够用,链/共轴不够)。
★★★ 最新(2026-06-21):从「开态」mesh 切门 → 铰接(忠实几何+真内腔+干净整门)
动机: 闭态门贴在机身上,P3-SAM 切成横条(失败);开态门支棱出来、空间可分,应该好切。验证:成立。
结果: ①几何=TRELLIS2 开态 mesh(带纹理+真内腔,转盘/腔壁都在);②P3-SAM 在开态 mesh 上把门切出来(下图红色=整门;注:TRELLIS 把门建成双层,P3-SAM 分成外门片+内窗板两个 part,两层都归门才完整——否则内窗板会留在机身里浮成"中间板",已修);③门是独立可动件,绕正确的竖直铰(axis≈[−0.02,1.0,0.02])摆动。
这是之前所有路线都没同时做到的(DIPO=检索灰件方向错 / 融合=拉丝空壳 / primitive=几何丑 / FreeArt3D=门成碎条)——首次在同一资产上拿到「忠实几何 + 真内腔 + 干净整门 + 铰接」。
上排:门分割(红=完整门)+ 过接缝的竖直铰轴(俯视图证运动水平);下排:OPEN→半开→CLOSED(贴平)→CLOSED正面。门绕竖直轴水平扫、不脱离、不沉浮,闭合基本贴平。
关节精细化(2026-06-21,两步): ①铰轴位置 = 门与机身接缝线(取门上离机身最近 ~6% 顶点)——整门 PCA 估的轴没穿过真实接缝→门一转就脱离;改用接缝定位后铰边始终贴机身(脱离消除)。②铰轴方向强制竖直 [0,1,0]——接缝拟合的方向偏竖直 14°→门在斜面里扫、运动"不平";机身确认正立(extents X0.80×Y0.44)故竖直即真竖直→门在水平面里扫,运动变平(上排俯视图)。闭合角=自由边对齐机身宽度轴≈58°,门贴平盖开口(末张正面)。残余:门片略弧+边缘毛糙,非完全严丝合缝。下一步:导出 URDF。
★ 泛化测试(2026-06-21):同一路线换 4 个物体(含非 PM)
把核心路线(gpt-image 开态 → TRELLIS2 → P3-SAM 开态切件 → 接缝铰轴)原样搬到 4 个新物体:Oven(底铰掀门)/ Refrigerator(侧铰双门)/ StorageFurniture(柜)/ chest 藏宝箱(顶铰、非 PM)。每行 [动件=红 | OPEN | 驱动 half | 驱动 to close]。
结果一半成功一半失败(诚实):
✅ 几何生成 4/4 完全泛化(最难那半免费):都是忠实带纹理 mesh + 真内腔(烤架/冰箱隔板/箱内腔)。
❌ 自动"挑动件" 4/4 没挑对:chest→盖角小碎片 / Oven→门底边一条 / Refrigerator→顶板(还往上甩) / StorageFurniture→薄边。
根因: 微波炉能成是因为我人工判断了"门=part 94+0+83";通用打分器(平面度+位移+大小)不稳——P3-SAM 把门/盖过分割成多片,易抓到碎片/错件。结论:几何那半 TRELLIS 免费泛化;铰接那半卡在"哪些 part 组成动件"这个判断。修法=用 gpt-5.5 看分色图选 part(把微波炉里那步手动判断自动化),正是管线里已有的 VLM 能力。
修复(2026-06-21):接回已有的 gpt-5.5 流程选件 → 0/4 救成 3/4。 不再用瞎打分的几何挑件器,而是把开态 mesh 的 P3-SAM 分块染色+标号给 gpt-5.5(Stage B 同款视觉能力),让它回答"哪些编号块=动件 + 关节类型 + 铰边"(把微波炉里我手动那步自动化)。gpt-5.5 选件结果:Oven 门=[0,48,172]底横铰 / chest 盖=[1,2,292]后顶横铰 / Refrigerator 门=8块右竖铰 / StorageFurniture 门=7块。配合铰轴"吸附最近主轴":
✅ Oven:整扇掀门,绕底横铰 掉落↔合上。
✅ chest(非PM):整个盖,绕后顶横铰 开↔完全合上。
✅ Refrigerator:门绕竖铰 开↔合(双门当一体,非完美但闭合成立)。
⚠️ StorageFurniture:仍差——gpt 选件过多 + TRELLIS 对小柜的几何本身是灰糊团(几何质量问题,非选件问题)。
结论:几何半 TRELLIS 免费泛化 + 铰接半接 gpt-5.5 选件 → 路线真正泛化(3/4),且覆盖底/顶/侧三种铰。失败的 1 例是几何生成质量,不是管线逻辑。
gpt-5.5 选件后重跑:每行 [动件=红 | OPEN | 驱动 half | 驱动 to close]。Oven/chest/Refrigerator 动件红区=完整动件、能开合;StorageFurniture 几何糊。
注:几何 = 真实 TRELLIS2 生成(各 ~300 万面带纹理),非检索。动件红色区暴露了自动选件的失败模式。
★ 续(2026-06-21):清晰输入重生成 + 多关节 + 导出 URDF
按 ②清晰输入 → ③多关节 → ①导URDF 推进。
② 清晰输入图重生成(治 StorageFurniture 的灰糊几何)
换一张更清晰的橡木柜(木纹+铜把手,抽屉拉出+门开露隔板)重跑 → TRELLIS 几何干净了(对比之前小柜灰糊团):抽屉/门/内部隔板都清楚。证明"几何糊"是输入图问题,不是管线。
③ 多关节(每个动件独立关节,支持不同关节类型)
冰箱修正(逐例修 #1): 之前闭合转反/欠转(门往外甩、内部外露)。改:①两扇门各自独立 revolute;②扫角定准正确闭合=−90°(原态开~90°,反向转回贴平)。下图:正面/斜视都关成顶置冷冻冰箱;侧视上门残留小瑕(几何精度)。
Refrigerator:gpt-5.5 把上下两扇门分成两个独立 revolute 关节(上红/下蓝),不再当一体。
cabinet(上图):gpt-5.5 识别出两种不同关节类型——上抽屉=prismatic(滑出)、下门=revolute(竖铰),各自独立驱动。
诚实: 多关节"分解"(哪些件/各自类型/轴)✅ 成立;但逐件"闭合量"自动估计不稳(抽屉滑动量、门旋转角常偏)——和单关节时同一个弱点,是几何拟合细节,非分解逻辑。
① 导出 sim-ready URDF + pybullet 验证
把铰接结果写成 URDF(base + 各动件 link + revolute/prismatic joint,带 origin/axis/limit/质量惯量),pybullet 真加载+驱动。
✅ chest.urdf(2 link / 1 revolute):q=0=盖闭合(带纹理木箱)、驱动到 limit=盖开露内腔 → 真 sim-ready,引擎里能开合。
✅ cabinet.urdf(3 link / prismatic 抽屉 + revolute 门):加载成功、关节类型正确;但门 rest 姿态受坏闭合角影响偏歪(actuation 弱点的下游表现)。
Stage A · 关闭态 → 打开态(gpt-image-2 图像编辑,micu)
关闭微波炉 → gpt-image-2 编辑出门开 90°、露内腔+转盘、同物体同机位。5/5 类家电全成功(下图)。gpt-image 死在"分割"(画固定配色),但强在"开门"(图像编辑)——用它擅长的。
5 类:微波炉/洗碗机/烤箱/橱柜/冰箱,关→开。诚实:open 图会整体重取景/缩放(冰箱偶尔换成另一台),故下游不做像素 loss。
复杂例子(非 PM):多关节工具柜
红色滚轮工具柜(gpt-image text→image 生成的复杂闭态)→ 编辑开态:多个抽屉拉出到不同深度 + 两个下柜门同时打开露内层架,颜色/机位/背景/脚轮全保持。全图编辑(未用 mask)即保住身份。→ 开态生成不止单门家电,复杂多关节件(多 prismatic+多 revolute)也连贯打开。
更多多样关节(非容器)开态生成
6 件非容器、关节类型各异(closed | open):laptop 翻盖 / scissors 剪式 / eyeglasses 双铰折叠 / desklamp 多关节臂 / foldchair 折叠机构 / toilet 叠盖。6/6 全部正确打开——gpt-image-2 开态生成跨多样关节类型都成立(连折叠椅"折叠→展开"这种非平凡变换都对),不限于门/抽屉。
Stage B · 双态 → 关节参数 + 动件定位
每件 [关闭 | 打开(对齐) | diff热力图(点亮动件) | gpt-5.5 读关节]。VLM 读关节 5/5 准(类型/铰边/方向/角度)。双态比单图强在量化角度 + 消歧动件(门 vs 抽屉、左铰 vs 右铰)。诚实:diff 适合"指向"不适合"精确 mask"(open 重取景致全局残差);OpenState/OSH 无可调接口未接。
Stage C · #1 加纹理(TRELLIS2 官方 UV+PBR)
image→3D 出真 UV 纹理 mesh(2048² baseColorTexture,官方 to_glb 路径;之前只取 verts/faces 才是灰)。微波炉最佳、冰箱/烤箱良好。诚实:整体偏暗(pyrender 无 envmap)、几何仍块状(纹理不修分割)。
Stage C2 + D · 驱动 + 闭环对照 + 物理护栏 #47
每行 [输入照片 | gpt-image 开 | 驱动带纹理开(VLM 角) | #47 护栏后]。4/4 成:门切分(VLM bbox ∩ 前壳启发式)+ 套关节 + 带纹理开合渲染;与 gpt-image open 铰链侧/方向/内胆暴露 4/4 一致。
#47 物理护栏(Microwave 证伪): 左 closed(门橙色高亮)| 中 外开 100° = #47 OK(门-机身接触→0,干净分离)| 右 反向 85° = #47 BLOCK(门插进机身,红色穿透)。即使薄片门,#47 也能用接触信号拦"开错方向"。
★ 分割升级:P3-SAM + VLM 部件数约束(替掉 bbox 启发式)
动机: 上面 C2 的"门"是假分割(VLM 2D bbox ∩ 前壳启发式 → 无框薄片)。换成真 3D 分割:P3-SAM 切件(会过分割)+ VLM 部件数硬约束 merge(微波炉=门+机身 2 件)。
四栏前视:A GT 纹理(门左~78%+控制面板右~22%)| B P3-SAM 原始 9 件(绿=门/紫=控制面板/橙=门缝,门与面板被正确分开)| C merge 到 2(红=整扇门含银框,停在真实门缝;灰=机身)| D 旧 bbox 启发式(只涂内窗矩形,丢了整圈门框)。
新分割明显更好:门=带框真 3D 部件、有厚度(AABB Z 厚 0.159 vs 旧薄片 0.065)、边界贴合门缝;P3-SAM 在块状件上只过分割成 9 件、VLM 数约束 9→2 收得干净。
★ P3-SAM+VLM 分割结果(门红/机身灰,可交互)
诚实局限: 这是 fused 生成 mesh,门框与机身几何上本就焊在一起,P3-SAM 是软分割投影回面;门的"厚度"来自前面板+框,不是有内部空腔的真独立门壳。要做真物理扫掠还需沿铰链轴 detach 门。但作为 part 分割本身,已明显优于 2D bbox 启发式。
★ B 方案(原始 P3-SAM,不约束部件数)铰链化开态 · 可交互
直接用 P3-SAM 原始 9 件分割(不 merge 到 2),各 part 一色;门(P3-SAM 的 {前面板+玻璃窗+厚度块})绕左竖铰开 100° → 铰链化后的开态示意。拖动旋转可见门开、内腔露出、9 件分色保留。
关键修复: 之前铰链化开门露出的是闭态壳的空内部(TRELLIS 从关门图生成、没见过内部)。现把开态生成 mesh 里 gpt 已画好、TRELLIS 已抬成 3D 的真内腔(转盘+腔壁,~19万面)移植进来 → 开门可见真转盘+腔体,非空壳。无需 amodal 补全——内部本就生成好了,只是用对 mesh。诚实:两次生成尺度不同,内腔靠 bbox 归一对齐,是示意级非精配。
修法 #2 探索:双态 mesh 配准求关节(诚实负结果)
动机: 纯图读关节不够精确(轴心/角度),想改走"双态各 image→3D → 配准两 mesh 求门刚体变换"。命门 = 开态生成能否以闭态为条件(否则两次独立生成会发散)。
① 条件化尝试:gpt-image-2 mask 编辑(只改门区)
闭 | mask(黑=可编辑门区) | 开。门开了(左甩+内腔露出)且右控制面板/显示保持一致 → 门区内容锚定成功。但诚实:整体视角/画幅仍漂(开态 1254² vs 闭态 518²、机位偏正面)。
② 双态各跑 TRELLIS2(同 seed)→ 两 raw mesh
两 mesh 各自都是有效微波炉重建(闭=实心箱;开=带空腔+侧伸门 flap,生成无退化)。但 canonical 朝向+比例不同:闭 extents [1.00,0.76,0.52] vs 开 [0.81,1.00,0.43]——不是同一刚体的两姿态,是两个不同形状。
★ 开态 TRELLIS2 生成(带纹理,可交互,看门 flap+内腔)
拖动旋转。开态(右)= TRELLIS2 从 gpt-image 开态图重建,可见门 flap 向侧面伸出 + 前面空腔(门真被建成独立凸出件)。带纹理全质量生成(官方 to_glb,2048² UV 纹理,u2net 抠图,~270万面,各 ~42MB,首次加载需几十秒)。开态门 flap 有纹理、内腔可见。对比可见两态比例/朝向不同 = 配准失败根因。
③ ICP 机身配准 → 对不齐(#2 不成立的判据)
上排 overlay(灰=闭/红=开对齐):机身嵌不进、红箱相对转~30°;下排残差热力图:机身弥漫中等残差(非干净蓝)。fitness=0.50,1cm 内仅 30% 重合;门虽是最高残差(橙红 flap)但机身漂移使刚体变换无法干净求出。
结论(诚实):纯双态独立 image→3D 在自然照片对上做关节配准 = 不可靠。 根因:两张输入是不同相机视角 + TRELLIS 同 seed 锁不住输出 canonical 位姿/比例 → 两次生成发散,同 seed/mask 都救不回。
指向唯一稳的路 = 一次生成 + 图像监督:只生成闭态 mesh → P3-SAM(+VLM 部件数约束)切真门(修 part 分割)→ 位姿搜索同一扇门匹配 gpt-image 开态图(analysis-by-synthesis,绕开两次生成发散)。
★ DIPO:双态输入模型(gpt-image 开态解锁单图用)
动机: DIPO(NeurIPS 2025)本需"静止图+关节图"双态对,现实拿不到关节态;我们的 gpt-image 开态生成正好补上 → 把 DIPO 从"需双态"解锁成"单图可用"。喂我们的(真实闭照 + gpt-image 开图)对。
左上=输入双态对;右上=DIPO 生成的 3D 铰接物体(检索 PartNet-Mobility 真 part 组 URDF,闭|开);下=核心输出 bbox+关节轴(resting|articulated)。GPT-4o 推出 4 部件树 base→[door→handle, tray];扩散给参数化关节:door revolute 左竖铰 −60° / handle fixed / tray continuous 360°(自己推出了内部转盘!)。
DIPO 的 URDF 在 pybullet 开合动画抽帧(门开合 + 转盘转)。
gpt-image 开态成功解锁 DIPO,且没被 OOD 拖垮——DIPO 用 DINOv2 全局特征(224²)粗条件 + GPT-4o 推连通图 + PM/PM-X 扩散先验,gpt-image 的重取景/比例漂被下采样+先验吸收。
关节质量 > 我们的 diff+VLM(Stage B):直接给 4 部件 + 每关节 type/轴/range/origin,参数完整物理合理。
诚实代价:① 几何是检索的 PM 通用件(灰,非我们那台不锈钢微波炉)=关节准、外观=检索近似;② 仅 7 类;③ tray 360° 是类别先验注入="先验吃证据",前馈+检索方法固有。
两路互补→合体最优:DIPO 给准关节(运动学)+ TRELLIS 给真外观(几何),用 DIPO 关节参数驱动 TRELLIS 保真带纹理 mesh。
★★ 合体:DIPO 关节 + 我们的真外观(绕开 DIPO 检索几何)
这是核心交付。 DIPO 的几何是检索的 PM 通用件(非原物);我们只取 DIPO 的关节参数(运动学),套到我们 TRELLIS 的真不锈钢带纹理 mesh 上 → 准关节 + 真外观。
我们真微波炉(纹理保真,非 DIPO 灰件)+ DIPO 门关节(revolute 左竖铰 −60.35°)→ 门干净开合(前视 + 铰侧近景)。已修拉丝:初版在融合 mesh 上转门致门与机身共享边界顶点被拉成长条(3116 个跨物体长条三角);现先把门切成独立 submesh(不共享顶点)再转 → 跨部件拉丝消失(长条 3116→局部 ~80 个)。另修:把手(P3-SAM part 0,门右缘竖把手)原落在机身不动,现并入门组 → 把手随门一起摆(门=frame+玻璃窗+handle 整体,控制面板留机身)。导成 body + door(含handle)双节点。
★ 合体成品:真外观 + DIPO 关节(开态,可交互)
全分辨率带纹理 GLB(各 33-41MB,首次加载几十秒;抽稀会毁 UV 纹理故保全分辨率)。诚实:闭态壳实心、无真转盘,开门露出的是壳内壁(暗);内腔移植因两次生成 ICP fitness 仅 0.50 会出双壁伪影,未硬做不伪造;tray 未驱动(壳无可分离转盘)。
DIPO 连通图:base→door(revolute 竖直Y 0°→−60.4°)→handle(fixed);base→tray(continuous 竖直Y 0°→360°)。
★ 连通图推理:gpt-5.5 vs DIPO 的 GPT-4o
DIPO 用 GPT-4o 推部件连通图;我们试 gpt-5.5 在更复杂件上是否更全更准——结论:简单件运动学等价、粒度更细;复杂件明显更全。
微波炉:左 GPT-4o(DIPO)4 部件(base→[door rev→handle, tray cont])极简 | 右 gpt-5.5 8 部件(门+把手+门窗+控制面板+转盘+双脚)。关键运动学一致(门 revolute / 转盘 continuous),gpt-5.5 部件更细全。
复杂工具柜:gpt-5.5 推出 22 部件 / 11 可动关节——5 抽屉(红 prismatic)+ 2 门(蓝 revolute)全列出且类型全对,根挂 base、把手挂父件,连通正确。GPT-4o 式 4 部件输出做不到。诚实瑕疵:脚轮按先验补 continuous(轻微过推)、漏 1 个顶盖;无幻觉大件。边色:蓝rev/红pris/绿cont/灰fixed。
★ 逐部件生成 + 组装(绕开检索/融合,拿真内腔)
思路: 不用 DIPO 检索几何、不在融合 mesh 上切;而是 连通图给部件+bbox → 每部件一张隔离图(本地裁剪优先,省 gpt)→ 逐部件 image→3D(真实几何)→ 按 bbox 组装。双态价值:闭态见外壳、开态见内腔 → 每部件都有可见视角。
★ 核心证实:真内腔。 body_cavity 部件(从开态内腔照片 TRELLIS 生成)水平剖面(右)= 真凹陷腔体 + 底板圆形转盘(signed volume 负、非水密 Euler -3029)。对比 DIPO 检索的空灰盒、和我们之前融合壳的实心无腔——这条路真拿到了 真外观 + 真内腔 + 转盘。
逐部件生成(机身+腔体/门/把手/转盘)+ bbox 组装。诚实负面:① body_cavity 输入是开态图(门已甩开)→ TRELLIS 把机身+腔+那扇开门重建成一个 mesh,与单生的门冗余打架 → 要干净分件,机身输入须先把门 P 掉(需 1 次 gpt-image);② 门/把手隔离图质量糙(开态门极透视薄板);③ 组装是 bbox 硬塞,接缝/尺度未对齐(没做 ICP)。
成本实测(回答"调太多 gpt 是否太贵"):本次原型增量 gpt = 0 次(4 部件里 3 个用本地裁剪隔离、0 gpt;TRELLIS 本地 GPU 无 API 费)。门本该用 1 次 gpt-image 兜底,但本次图像端点全挂(micu 524 / vectorengine 429,60 次重试全败,外部故障非管线 bug,未伪造)。
→ 端点正常时单例预期 ~1 次 gpt-image(抠门)+ 图复用 0 次 gpt-5.5 ≈ $0.1–0.2/例。本地 mask 把"部件隔离 N 次 gpt"几乎全省了。单例不贵;规模化也可控。
★★★ FreeArt3D + gpt-image 多开度态(目前最优:保真几何+对的关节+内腔)
调研收敛路实测成立。 FreeArt3D(训练无关,把 TRELLIS 当 shape prior,SDS 联合优化 body/动件几何+关节)+ 我们 gpt-image 生成的多个不同开度态 → 一次拿到 保真几何 + 正确关节 + 内腔。同 TRELLIS 主干、关节是联合优化出来的(不靠外部猜)。
闭态=保真带纹理微波炉(真外观,非 DIPO 检索灰件);开态=门向左开 ~80°、露出内腔。关节方向对了(向左,和 gpt-image 一致;DIPO 是往前右甩=错,SPARK 精修也证实 DIPO 方向错)。补多开度态把 range 从 2 态 58° 提到 4 态 80°、方向也稳(缓解 FreeArt3D 的 2 态退化 caveat)。
▶ 动画:门开合(qpos 0↔5,~80°)+ 开态转台一圈——带纹理,看关节真动 + 内腔。(下方可交互 GLB 若加载慢/不出,以此动画为准。)
★ FreeArt3D 开态 ~80°(可交互,门左开露腔)
FreeArt3D SDS 联合优化出的带纹理可动资产(各 1.7MB,逐 qpos 状态)。拖动旋转:闭态真外观、开态门向左甩 ~80° 露内腔——保真几何 + 对的关节 + 内腔,一件齐。
内腔铁证:开门正视能看进凹陷的银色内腔(后壁+侧壁),body 非 watertight = 开口腔壳,符合微波炉。
2 态 vs 4 态(生死判据,实测坐实): 2 态:关节失败——动件体素被 purge 全删、open==closed(md5 相同)、角度仅 ~12°。4 态(gpt-image 补开度):关节成功——门分离为 revolute、左竖铰、range ~80°、open≠closed 门真转。12°→80°,正印证论文"2 态退化"caveat,加态即解。
诚实:gpt-image 控不准中间开度(要 30° 给近闭、要 60° 给 ~80°,只能双峰),但多一个开态变体就把 SDS 从失败救成功;视角不一致致初期匹配少(需改 3 处代码:死循环/2态 IndexError/输入硬编码);用的是 TRELLIS-1 官方权重非我们 TRELLIS2;单例 ~40min/H100。
对比总结: DIPO=检索灰件+方向错;我们融合(DIPO关节)=方向错+拉丝+空壳;SPARK 式可微精修=负结果(门轮廓占比小+DIPO关节方向错救不回);FreeArt3D 4 态 = 保真几何✅ + 向左对的关节✅ + ~80°✅ + 开门露腔✅。
赢家配方 = FreeArt3D(TRELLIS先验,训练无关)+ gpt-image 多开度态。
★★★ 简化路线:gpt-image+gpt-5.5 → ArtiCraft 式 sim-ready URDF(成了)
放弃 mesh 保真之战,改走 sim-ready。 gpt-image 双态(不变)+ gpt-5.5 结构树(不变)→ ArtiCraft 式物化:每 part = primitive(box/cylinder)+ 真 mass/inertia/collision + 关节(双态读数定轴/方向/range)→ sim-ready URDF。绕开了 mesh 分割/碎条/内腔/拉丝 所有硬坑。
2026-06-21 修正: 之前结果整台左右镜像翻转了(门渲染在右、面板在左)。根因=image-x→world-x 映射与"+Y=朝观察者"凑一起,正面视角变镜像。已对整资产做 YZ 面反射(所有 origin 的 x 取反 + 门铰轴 z 取反,开门方向保持一致)。现门(玻璃)在左、面板在右、门左铰向外开,与真机照片一致;#47 夹紧[0,100°]/零穿模 不变。
primitive 微波炉(pybullet):闭 | 半开见蓝色转盘 | 开 ~100°。5 link/4 joint(机身 + 2 脚 fixed + 门 revolute 左竖铰 + 转盘 continuous),SDK 真算 mass/inertia + 13 collision + damping/friction/effort。
▶ pybullet 门开合循环。#47 实测碰撞可行区 [-20°,182°] → clamp 到 [0°,100°];动态驱动门 100° + 转盘 229°,全程门-机身最小距 0.005mm,零穿模 = 真 sim-ready。
这条简化路线达成了前面所有 mesh 路线没做到的:干净、铰接正确(门左开+转盘)、物理可仿真、无穿模。 用 ArtiCraft 真 SDK(同 agent 的数据模型+编译器)按结构树+双态读数 grounding(非 LLM 凭空想象)。诚实:几何=primitive 盒/柱(非贴图 mesh),尺寸是标准微波炉比例×gpt-5.5 bbox 的合理近似。视觉后补(②Hunyuan3D-Paint 上纹理 / ③TRELLIS mesh 当 visual)。
② 视觉层:照片投影上外观(collision/sim 不动)
闭 | 半开 | 开+转盘:给 primitive 门/面板的前脸贴单应矫正后的照片(玻璃窗+把手+数显),其余面用照片采样的不锈钢/黑材质色 → 认得出是这台微波炉。collision 13 个逐字节不变、joint 不变、sim 仍零穿模(门 100°+转盘 229°,0.005mm)。
Hunyuan3D-Paint 没用(本地缺 + 它产整体单 mesh、切不到 5 个 link 局部坐标系=错工具)→ 走稳健兜底(单应投影+材质)。诚实:方盒贴图正脸像、斜视/门厚侧暴露"贴图盒"感,是 primitive 固有限制。要真几何外观再上 ③(TRELLIS mesh 按 bbox 切片当 visual)。
诚实边界(必读)
• 门切分已升级(见上"分割升级"节):从 C2 的 VLM bbox 启发式(无框薄片)换成 P3-SAM + VLM 部件数约束 → 带框真 3D 部件、有厚度、边界贴门缝,明显更好。残余局限:fused mesh 门框与机身焊在一起,是软分割投影,非真独立门壳;要做真物理扫掠仍需沿铰链 detach 门(下一步)。
• gpt-image open 重取景/偶尔换物体 → Stage D 只做视觉/开合程度对照,不做像素 loss。
• OpenState/OSH 学习预测器未接(无可调双图推理接口),关节读取靠 VLM(5/5 准)。
• #47 Fridge clamp 在信号噪声内,不夸大为真实物理修正;Microwave 可证伪可演示。
• 全程真调用真渲染,无 fallback、无伪造;curate 样例(4 类家电)。