FullPart:part 原生生成,微波炉的门当成独立件直接生成出来
EPPUR · 2026-06-27 · 8×H100 · env 复用 trellis2 · 复用开源 repo github.com/hkdsc/fullpart(MIT,基于 TRELLIS)
一句话:能。门是独立、完整、有厚度、全分辨率的 part
给定门的包围盒,FullPart 把微波炉的门生成成了一个独立的厚板件(带窗 + 把手,侧视是实打实的板,不是一张纸),机身另生成成一个带真实内腔的盒子。门和机身是两个分开的 mesh,能拼起来、能绕铰链转开露出内腔——正是之前 TRELLIS2 单图生成做不到的(那边门焊死在壳里、切不出实体门)。
核心结果:左=关门(完整微波炉)/ 中=门往外推(露出机身内腔,门是独立件)/ 右=门绕铰链转开 75°(露出整个内腔,像真能开合的微波炉)。
★ 必须说清的诚信点:门的"包围盒"是喂进去的,不是 FullPart 自己预测的
官方放出的 inference.py 输入 = 一张图 + 每个 part 的 3D 包围盒(.npy, shape (P,2,3))。part 布局(门在哪、多大)是输入,模型负责"在每个盒子里、照着图的样子,把那一件几何全分辨率生成出来"。
本实验的门盒子来自 PartNet-Mobility 微波炉 7167 的 GT 部件分解(door=link_0,revolute 铰链件),等于把"门在前脸那块薄板"这个先验喂给了模型。
repo README 自己也写了:从单图预测 part 盒子的那个生成器(vecset diffusion)还在整合、暂未开源。
所以本页证明的是:只要给对门的盒子布局,FullPart 能干净地把门生成成独立厚件。真正"单张野图 → 自动出门盒子"这一步还缺一个开源的盒子预测器 = 下一个决策点。
门(part 0):独立、完整、有厚度
门多视角:3806 v / 6694 f。side +X 视角看到实打实的板(厚度 z≈0.29),带窗口面板 + 把手,全分辨率密网格(wire)。不是一层表面壳。
机身(part 3):带真实内腔的盒子
机身:46498 v / 73114 f。前脸是个掏空的矩形内腔(线框图能看到内壁),旋钮 molded 在右侧。门关上时正好盖住这个腔口。
4 件一起看 + 输入
4 件 part:ASSEMBLY(拼装)/ part0 门 / part1 旋钮 / part2 旋钮 / part3 机身(带内腔)。每件都是独立带纹理 GLB。
喂给模型的 condition 图(从归一化 PNM 7167 mesh 渲的 3/4 正面 RGBA)。另配 4 件的包围盒 .npy。
官方 demo 先跑绿(toy_gun)
先按官方 inference.sh 原样跑 toy_gun,EXIT=0,产出 12 个独立带纹理 part,拼起来是一把完整玩具枪 → 证明 env/权重链路正确,再上微波炉。
toy_gun:左上 ASSEMBLY(12 件拼成完整玩具枪)+ 12 个独立 part(枪管/轮子/机身段…),每件全分辨率带纹理。
跑法与产物
| 项 | 值 |
| repo | EPPUR/experiments/fullpart_20260627/repo(hkdsc/fullpart,MIT) |
| 权重 | S1/S2 官方 gdrive(各 ~2.2/2.4G);TRELLIS-image-large 本机已有 symlink,没重下 |
| 微波炉输入构造 | prep_microwave.py(PNM URDF 分 link → 门/旋钮/旋钮/机身 4 件 → 归一化[-1,1] → 每件 AABB + 渲 3/4 RGBA 图) |
| 跑 | ATTN_BACKEND=xformers python inference.py --stage1.transformer-ckpt … --stage2.transformer-ckpt … --raw-path <prefix> --raw-sample-id … --output-dir … |
| 报告 | EPPUR/experiments/fullpart_20260627/REPORT_FullPart微波炉_20260627.md |
踩的坑(已修)
① import 期 segfault:part_data.py 里 decord 在 deepspeed 之前 import,两者 native 库冲突 → 进程在 import 期直接 core dump。修法 = 在 inference.py 最顶先 import deepspeed(早于 decord),一行 env 兼容垫片,没动流程。
② stage2 config 残留作者私人路径 ../tmp/interactive_quick_3d/weights/… → HFValidationError。指向的就是 TRELLIS slat enc/dec,本机已有,改成 pretrained_model/trellis/ckpts/…(README 本来就让你填这些路径)。
③ 缺 datasets/tyro/utils3d 三个纯 python 包,装进 trellis2,torch/xformers 没被动(前后都是 2.6.0+cu124)。
对主线的意义
这条路绕开了"切门":part 一开始就是独立件,管线可简化成 part 原生生成(FullPart)→ 判哪件动 + 关节 → 物理验证(fcl/pybullet)。但要变成真正"单图→仿真",还差一个开源/自建的"单图→part 盒子"预测器(FullPart 未放)——下一个决策点。
相关:切门 + GT 隔离实验 · ROUTE v2 MVR 微波炉 · OpenState 双态闭环