想象的表面
能不能让一个 VGGT 式的长视频前馈模型,一次前向就吐出 SDF 表面——并把相机没拍到的地方,像生成模型那样"想象"出来?
这页文档不写综述,写一次发散的设计空间探索。整篇只追一条线:让一个像 VGGT 那样吃长视频、不要位姿、一次前向的网络, 主输出既不是 pointmap 也不是高斯,而是一张连续的 SDF 表面—— 对扫到的地方忠于测量,对扫不到的地方合理地想象补全。 VGGT 仍是主体,3D 生成派是嫁接上来的器官,而不是反过来。
我会先把这个渴望逼成几条互相拉扯的约束,从中长出两个真正的难题—— 观测与想象之间的那道缝、以及在想象出来的体内怎么给 SDF 定号; 再沿不同哲学组装出五个候选架构,认真讨论 backbone 能不能从现有大模型蒸馏 / LoRA 出来。 目标读者:懂 NeRF / SDF / 3DGS / diffusion / transformer 的研究者。
§0三句话先讲清
① 想要的东西。 一个像 VGGT 那样"吃一段长视频 / 一堆无序图、一次前向、不要位姿"的模型, 但主输出是一张连续 SDF 表面(随时可抽 watertight mesh);对相机扫到的地方忠于观测、对扫不到的地方合理想象补全。 生成是嫁接到重建主体上的器官,而非像 Pixal3D 那样以生成为主体再加一条重建流。
② 这块地被占了多少。 比想象中挤,但核心那格仍空——最近的三个邻居各占住了两条边: Fus3D(VGGT+LoRA → 稠密 SDF,前馈、能隐式外推未观测,但物体尺度); Gen3R(VGGT 接视频扩散先验,场景级真生成补全,但出点云); Mix3R(冻结重建+冻结生成用注意力缝起来出 mesh,但要位姿)。再加上只重建的 IVGT 与出点云的 NOVA3R。 "前馈 + 出 SDF/mesh + 真·采样式补全 + 长视频/场景尺度"这一格,被四面夹住,却没人坐进去。
③ 它不是"VGGT+MILo"那么简单,难点也不在工程。 真正决定成败的是两道缝: 表层那道——观测可信度怎么平滑过渡到生成可信度(§4); 更里面那道——在从没被任何射线碰过的体内,SDF 凭什么"定号"、说哪边是内(§5)。 后者是定义问题不是估计问题,它把"要不要生成先验"从选择题变成了必答题。
§1把一个渴望,逼成两道难题
先把"我想要什么"翻译成硬约束,再看这些约束自己长出什么问题
"做一个像 VGGT 但出 SDF 还能补全"听起来浪漫,落到架构上得先拆成几条互相拉扯的约束。我数出六条:
- C1 · 前馈 / 摊销。 一次前向出结果,不做逐场景优化。这一条直接否决了 MILo / Radiance Meshes 的原生形态——它们都是 per-scene 优化(几十分钟到两小时)。我们只能借它们的表达和可微取面,不能借它们的训练范式。
- C2 · 长视频 / 任意视图数 / 无位姿。 VGGT 家族的看家本领:交替的 frame-wise / global attention、camera token、不需要 COLMAP。要"长",还得能 流式(StreamVGGT 的 causal + KV-cache)和 显存可控(VGGT-Long 分块闭环、FlashVGGT 描述符注意力)。
- C3 · 主输出是 SDF 表面。 不是点、不是高斯,是一个空间任一点都有值的连续场,随时取面出 watertight、可 UV、可仿真的 mesh。SDF 自带 Eikonal 正则、CSG 编辑、碰撞查询——这些是点 / 高斯给不了的。
- C4 · 观测区忠于测量。 相机看见的几何必须可信、metric-scale、不被生成幻觉污染。这是"重建"的底线。
- C5 · 未观测区生成补全。 绕不到的背面、被遮挡的内部、走廊尽头——要像 TRELLIS / TripoSplat 那样"从生成出发"补一个合理形状,而不是留洞或拉成漏斗。
- C6 · 一个模型、一个潜空间。 不要"VGGT 出几何 + 另接一个独立生成器"的拼盘,要深度结合:理想情况下观测与生成共享同一套 latent、同一个 decoder,"补全"就是"在同一张图上把空格填上"。
重建要"我只说我看见的",生成要"我替你脑补没看见的":一个保守、一个大胆。把这对矛盾压到一张连续 SDF 上,它会沿两条不同深度的接缝裂开——
- 表层的缝(§4): 在哪里、以多硬的方式,把"测出来的几何"交接给"编出来的几何",才不让交界处裂开、也不让幻觉渗回观测区。
- 更里的缝(§5): 在从没被任何射线碰过的体内,SDF 的符号(内 / 外)从哪来。这不是"估计得准不准",而是"压根有没有定义"。
这两道缝,是这一整页真正要回答的东西;剩下的(backbone、载体、取面、五个架构)都是为了把它们缝好而做的准备。
§2邻居在哪,空地在哪
诚实地标出已有工作的位置,才能看清那颗星要放进哪一格
在动手设计前,先做一件最容易被跳过、却最重要的事:把邻居的位置标出来。 我用两根轴张成一张图——横轴是"纯重建 ↔ 纯生成"(对未观测区域有多敢编), 纵轴是"输出点 / 高斯 ↔ 输出 SDF / mesh"(离干净表面有多近)。实心点是前馈,空心点是逐场景优化。 两根轴画不下第三件要紧事——尺度(物体 vs 场景 / 长视频),用点旁的"物 / 景"小字补上。
把这张图读成一句话:我们要的那颗星,由四条边界定,而每个邻居只占住其中两到三条。下表把最该正面对线的近邻摊开。
| 工作 | 它已经做到 | 它没做到 = 我们的差异点 |
|---|---|---|
| Fus3D ⚠ | VGGT backbone + LoRA 微调 + 卷积上采样头,把体积 latent 解成 64³ 稠密 SDF → Marching Cubes;前馈 <3 秒、免标定,还能隐式外推未观测处的 SDF | 物体尺度(Objaverse/DTU);补全是确定性回归非采样;64³ 偏低;不出高斯——但它已证明"冻结/LoRA VGGT + SDF 头"能跑 |
| IVGT | VGGT 谱系、pose-free,学一个可任意点查询的连续 SDF+color,抽 mesh,跨场景泛化;同一个场还顺带出 pose/NVS/depth/normal | 不补全未观测区;非长视频流式;没有生成先验 |
| Gen3R ⚠ | 把 VGGT 的 token 经 adapter 对齐到视频扩散外观 latent,联合生成几何+外观,场景级、真生成式补全未观测内容 | 输出 RGB 视频 + 深度 / 点云 / 位姿,不是 SDF/mesh,不能直接 marching——这正是我们用 SDF 切进去的缝 |
| Mix3R ⚠ | 用 Mixture-of-Transformers 在一个冻结前馈重建模型与一个冻结 3D 生成模型之间插全局注意力,两阶段出 mesh/3DGS | 需要位姿;物体/资产尺度;不是连续 SDF——但它把"冻结重建 + 冻结生成、用注意力缝"趟通了 |
| NOVA3R | 前馈、非像素对齐,scene token + flow-matching 3D decoder,连遮挡几何一起恢复,少重影;scene+object 两级 | 输出点云非 SDF/mesh;补全与重建未在同一表面场里统一 |
| TRELLIS / TRELLIS.2 | 结构化 latent(稀疏体素 SLAT),一份 latent 解 mesh/3DGS/RF;TRELLIS.2 的 O-Voxel 统一几何+PBR | object-centric 生成,不吃视频、不做 metric 重建——但它的 SLAT 正是 C6"共享潜空间"的现成答案 |
它不是泼冷水,是把护城河量准:四个邻居已经各自证明了我们想要的一部分能 work。 Fus3D 证明"VGGT 前馈出 SDF"能(还顺带隐式外推未观测);Gen3R 证明"前馈接生成先验、场景级补全"能;Mix3R 证明"冻结重建 + 冻结生成缝一起出 mesh"能;IVGT 与 NOVA3R 把 SDF 端与 amodal 端各自坐实。 于是剩下的科学问题被收窄成一句:把"连续 SDF/mesh"、"真·采样式补全"、"长视频/场景尺度"、"单次前馈"四件事压进同一个体积潜空间——而且在没被观测的体内还得稳定地定一个号(§5)。
§3三道根本张力
任何候选架构都要在这三道题上选边——选什么,就决定了它是谁
张力一 · 像素对齐 ↔ 体素 / 体积对齐
VGGT 的原生输出是逐像素的(每像素一个 pointmap / depth),feedforward 高斯派(pixelSplat → AnySplat)也大多逐像素放高斯。 但"SDF 本质上是个体积场"——把体积场硬塞进"每像素一个值"的容器,是范式不匹配。 VolSplat 已经论证逐像素的两个先天病:相机多看几眼的地方被不公平地塞更多基元;遮挡 / 无纹理区 2D 匹配出错。
把几何载体从逐像素挪到稀疏体素 / 体积 latent。VGGT 的逐像素 token 只当输入侧感知, 通过一次可微反投影 / 体素化(AnySplat 已有现成做法、Fus3D 也是先聚成体积 latent)聚到 3D 骨架上——之后 SDF、补全、取面全在这个 3D 容器里发生。 好处是它正好和 TRELLIS 的 SLAT、Atlas/NeuralRecon 的体素 TSDF 是同一种几何容器,重建端与生成端能共用一个体素 latent(直击 C6)。
张力二 · 重建保真 ↔ 生成可信
领域共识已经收敛出一个清晰配方(GEN3C / Bolt3D / GA-GS):观测区域钉死在测量上,生成只许在"洞"里发力。 GEN3C 维护一个显式 3D cache,从新视角渲染再 condition 一个 video diffusion,让模型"把全部生成力气花在没观测过的区域"; GA-GS 给每个基元一个可学的"authenticity 真实度标量"调 opacity,让模型自己学会"这块是真测的 / 这块是我编的"。 搬到 SDF 上,这道缝就是 §4 的主题——而且 SDF 的连续性会让它比点 / 高斯派缝得更干净。
张力三 · 可微取面:训练时 ↔ 推理时;而且要分清 GPU 批友好 ↔ CPU 瓶颈
MILo / Radiance Meshes / SDFRaster 把"可微取面"放进逐场景优化的循环里——每一步重抽 mesh、梯度回流。 前馈设定下这是奢侈的。但第一个洞察是:可微取面只在训练时需要——训练时网络出体素 SDF → 跑一次可微取面层 → 渲染 / 比对 → 梯度顺着取面层回流; 推理时一次前向出 SDF,最后跑一次(非可微也行)取面出 mesh。取面不再是瓶颈。
"取面层"不能随便挑,它分两类,而前馈训练里只有一类塞得进 forward:
- 格点类(GPU 批友好 ✓): Marching Cubes 的可微实现
DiffMC(DISO 包)、FlexiCubes、SparseFlex / Sparc3D(稀疏、可到 1024³、支持开表面)。固定连通性、纯 GPU、可 batch——前馈网络一个 batch 同时跑几十个场景时,唯一跟得上的取面层。 - Delaunay 类(CPU 瓶颈 ✗): MILo 的"高斯当 pivot → 在线 Delaunay → Marching Tet"、TetWeave 的"点 + 方向 SDF → 在线 Delaunay"。质量与自适应性极好,但 Delaunay 是 CPU 计算几何、连通性不可微、难 batch,放进前馈训练前向里会拖垮吞吐。
所以更准确的说法是:借 MILo 的"mesh-in-the-loop 监督思想",但用 DiffMC / FlexiCubes 这类格点取面来实现它,把 Delaunay 留给"推理时跑一次"或"per-scene 精修"。这条区分直接决定了候选 B、C 的可行性评分(§7)。
§4表层那道缝:观测可信度怎么过渡到生成可信度
§1 留下的第一道难题——它是整件事成败的咽喉
把它具体化。设在体素 $v$ 处要给出最终 SDF $\hat f(v)$,有两个来源: 观测推断 $f_{\text{obs}}(v)$(来自 VGGT 几何 + 多视图,只在被看见的体素可靠), 生成先验 $f_{\text{gen}}(v)$(来自补全模块,处处可用但不一定对)。再设一个可观测性 / 置信度场 $c(v)\in[0,1]$,融合写成
怎么学出一个好的 $c(v)$、又不让它退化成全 0 或全 1? 三个可操作的招:
- 用几何可观测性初始化 $c$,再学残差。 $c$ 不从零学——先用"该体素是否落在任一相机视锥内 + 被多少视图一致命中"算一个先验 $c_0$(免费、可微的几何量),网络只学一个修正项。避免冷启动退化。
- 给 $c$ 真值监督(GA-GS 式 authenticity)。 训练时我们知道哪些体素真被观测(有深度命中)、哪些是数据增强时人为遮挡的:观测体素 push $c\to1$,遮挡体素 push $c\to0$。让 $c$ 有真值,不靠它自发涌现。
- 交界带的 Eikonal + 法线一致正则。 在 $c$ 梯度大的地方(即缝)额外加 $\lVert\nabla\hat f\rVert=1$ 和法线连续 loss,强制 SDF 跨缝光滑。
点 / 高斯派做补全(NOVA3R / Bolt3D)时,"观测点"和"生成点"是两堆离散基元,交界靠数量和重叠勉强糊上,容易重影、穿插。 而 SDF 是连续场——观测与生成在它上面是同一个函数的两段,能用 Eikonal 强制它们在缝处一阶连续。这是"为什么要 SDF 而不是高斯"的最强论据之一。
§5更里那道缝:在想象出来的体内,怎么给 SDF 定号
§1 留下的第二道难题——本页认为这是整个方向最深、也最值得押的科学赌注
§4 的融合公式默认 $f_{\text{gen}}(v)$ 是个现成的带符号距离。但这里藏着整件事最硬的一块骨头。 把所有 SDF-原生的场景补全工作摆在一起看,会发现一个一致的"回避":它们几乎都不真输出带符号距离,而是退回无符号距离(UDF)或占据(occupancy)。 LT3SD(最像"SDF 原生 + 会补全"的场景生成器)用 truncated unsigned DF;XCube / SemCity / DynamicCity 这些能做场景补全的,用占据栅格。这不是巧合。
符号的意义是"这一点在表面里还是外"。在观测区,相机射线天然给了内外,符号是测出来的。 但在从没被任何射线碰过的体内(遮挡物体内部、走廊尽头的墙后),"哪边是内"没有任何观测依据——不是被估计错了,而是压根没定义,除非先假设一个 watertight 封闭先验。 IVGT 这类只重建的方法用一招聪明绕开:只给观测到的表面定号,没看见的地方干脆不承诺。但我们要补全,就必须在没人看见的体内主动承诺一个符号——这是重建方法从不必面对、而我们逃不掉的新问题。
这反过来点出,为什么"共享潜空间 + 生成先验"(候选 A)在这一点上比"逐体素回归"(候选 B)更对路:
- 让先验替你定号,而不是逐点猜。 一个在海量 watertight 形状上训练过的生成先验(TRELLIS / Hunyuan3D 的 latent),它的样本天生闭合带号。从这个分布里采样补全,等于借了训练集里千万个物体的"内外"来定号,而不是让网络在真空里逐体素赌正负。
- 把"是否已定号"也做成一个可查询量。 除了 SDF $f$ 与置信度 $c$,再让网络出一个符号可信度:观测区由射线钉死(高),纯想象区由先验给(低但非零)。下游要 watertight mesh 时用全部,要"只要测到的面"时按符号可信度阈值裁。
- 用闭合性当正则,而不是当假设。 对生成补全出的那部分,训练时加一个散度 / 闭合约束(鼓励 $\nabla f$ 沿物体边界自洽),让符号在想象区也保持全局一致,而不是逐片打架。
一句话:观测决定"面在哪",先验决定"哪边是内"。 谁能在没被看见的体内稳定地承诺一个符号、又不污染观测区,谁就真正解决了"前馈出 SDF 还能补全"这件事。
§6把系统拆成可替换的模块
七层。每层都有几个可选项;一套连贯的选法 = 一个候选架构
有了 §3 的三道选边、§4–§5 的两道缝,就能把系统拆成七个正交的模块层,列清每层的选项。下一节的五个候选架构,其实就是在这张"配置表"上走五条不同的路径。
L0 · Backbone:感知与几何先验从哪来
这是整栋楼的地基,也是"能不能从大模型蒸馏 / LoRA 出来"这个问题的主战场(§8 详谈)。几种现实选法:
- 直接冻结 / LoRA VGGT,外挂新 head。 这条已被 Fus3D 跑通:VGGT backbone + LoRA + 一个卷积 head 直接出 64³ SDF——它就是这一格的存在性证明。AnySplat / VGD 也示范了"VGGT 当老师、新 head 出高斯"。最省训练。
- 用 π³ 替 VGGT 拿置换等变(输入顺序不敏感)——对长视频里的回环、乱序帧很关键,避免"参考帧过拟合"。代价:π³ 出的是无参考帧的局部图,喂 SDF decoder 前要先拼到一个全局坐标系。
- 用 MapAnything 当 backbone 拿它的因子化 metric 输出(深度 + 局部射线 + 位姿 + 一个全局尺度因子)——这是离"metric SDF"最近的现成底座,还能可选地吃部分位姿 / 深度先验。
- 蒸出一个 causal 学生(StreamVGGT 式) 拿长视频流式 + KV-cache;配 FlashVGGT 描述符注意力 / VGGT-Long 分块闭环压显存。若目标是机器人 / AR 在线扫描,这条几乎必选。
L1 · 几何载体:transformer 的"空间记忆"长什么样
由张力一,我倾向把载体定在稀疏体素 / 体积 latent。具体形态有谱系:
- 稀疏体素 SLAT(TRELLIS)。 只在表面附近"活跃"的体素带一个局部 latent;内存随表面积涨。天然支持"一份 latent 解 SDF/mesh/3DGS/PBR"。我的默认
- 体积 latent 网格(Fus3D)。 把 VGGT 特征聚成一个低分辨率体积 latent,卷积上采样出 SDF 网格。已被验证能跑,但 64³ 分辨率偏低、需扩。
- 连续隐式场(IVGT)。 不显式存体素,存一个可被 MLP 在任意点查询的场。优雅、分辨率无关,但补全时"哪里是空的"不好定位。
- 半结构 VoxSet(LATTICE)/ 全局 scene token(NOVA3R)。 前者居于 vecset 与 SLAT 之间、支持 token 级 test-time scaling;后者视角无关、特别适合 amodal 补全,但离"可 marching 的体素场"远一点。
L2 · 表面表达 + 取面头:SDF 挂在什么支撑上
这是绿色心脏。四种支撑,各配一种取面(训练时用格点类可微,推理时再考虑 Delaunay,见 §3 张力三):
- 体素 SDF + DiffMC / FlexiCubes / SparseFlex。 SDF 存在(稀疏)体素顶点上。前馈训练里的取面 loss 首选这一类(纯 GPU 可 batch)。最成熟,是 image-to-3D 生成管线的标配。
- Delaunay-tet(预测点) + Marching Tet(MILo / TetWeave)。 网络预测一组点 + 每点(方向性)SDF → 在线 Delaunay → MT。无格、自适应——但 Delaunay 是 CPU 计算几何、难 batch,更适合"推理时跑一次"而非进前馈 loss。
- tet 辐射 / SDF 场(Radiance Meshes / SDFRaster)。 输出本身就是一个四面体场——既能精确快渲(Radiance Meshes 的 circumsphere 光栅化),又能 SDF→opacity 做 alpha 合成,还能环内 MT 出 mesh。一个基元同时满足"快渲 + SDF + 可微取面"。
- per-anchor SDF(DiGS / DiscretizedSDF 式)。 每个 anchor(体素 / 高斯)绑一个 SDF 标量,配中位数 / 投影一致性 loss 约束成全局一致场。最轻量。
L3 · 生成补全模块:想象力从哪注入
- 体素 latent diffusion(SLAT 式)。 在 L1 稀疏体素 latent 上做 rectified-flow / diffusion,条件是已观测体素,采样未观测体素。补全 = 同一 latent 空间的 inpainting。最贴 C6
- 视频扩散先验对齐(Gen3R 式)。 把几何 token 经 adapter 对齐到一个冻结视频扩散的外观 latent,让视频先验隐式补全——已在 VGGT 上跑通,只需把输出端换成 SDF。
- 全局 scene-token amodal(NOVA3R)。 用一个 diffusion 3D decoder 从全局 token 直接解出含遮挡几何的完整场。
- 条件化一个冻结 3D 生成器。 拿 TRELLIS / Hunyuan3D / Direct3D-S2 当冻结形状先验,外挂训练好的条件分支吃部分观测、吐完整形状——Hunyuan3D-Omni("3D 的 ControlNet",吃点云 / 体素 / bbox)、Points-to-3D(用部分点云 latent-inpainting 冻结 TRELLIS,还能直接吃 VGGT 点云)、Amodal3R(给 TRELLIS 加遮挡条件)已把这条路趟出来。
L4 缝合/定号 · L5 监督 · L6 部署
这三层分别在 §4–§5、§8、§9 展开,这里只列选项以备引用:缝合/定号 = {硬约束 · 置信度场 · 符号可信度 · latent inpainting · 3D cache};监督 = {格点取面 loss + MILo mesh 一致性 + Eikonal + 深度/法线 + 补全 loss + 教师蒸馏};部署 = {离线 · 流式 · 分块闭环}。
§7五个候选架构
从模块栈里走出的五条不同哲学路径——发散的核心在这一节
下面五个不是"五选一",而是五种把同一组零件组装起来的世界观。我刻意让它们在 L1/L2/L3 上分歧最大,好照出设计空间的边界。 每个都给:一句话哲学、配方、数据流图、利弊、与谁对线。
哲学:把"重建"和"生成"彻底统一成同一个稀疏体素 latent 上的一次条件采样。观测把 latent 填了一半,diffusion 把剩下一半梦出来——它们从来就是一回事。最贴近 C6,定号也最自然(先验天生闭合带号)。
对线:TRELLIS(借 SLAT 与先验)、Pixal3D(借视图对齐反投影)、AnySplat(借可微体素化)、Points-to-3D / Hunyuan3D-Omni(借"用部分点云条件化冻结生成器"给补全端兜底)。最该正面对的是 Gen3R——它几乎就是"候选 A 把 SLAT 换成视频扩散先验";我们的差异必须死死落在体积 SDF 输出 + 定号上,否则就被它覆盖。
哲学:保留 MILo 最美的部分——"训练里随时有可微 mesh、梯度从 mesh 回流"——但摊销成前馈。网络一次前向出 anchor + 每 anchor SDF,取面层只在训练时可微。补全做成一个"幻觉 head",专门预测表面背后的 SDF。
对线:MILo / TetWeave(借 mesh-in-loop 监督思想)、IVGT / Fus3D(借前馈出 SDF)。差异:取面层降级为训练 loss + 一个 amodal 幻觉 head。两难在于:用 Delaunay 当 loss 会卡 batch,换格点 DiffMC 又稀释了"MILo 亲儿子"的卖点。最稳妥、但补全上限低——更像"扎实占身位"。
哲学:赌 Radiance Meshes / SDFRaster 路线——四面体场是那个能把所有需求一口气满足的基元:既能精确快渲(比 3DGS 还快),又能在顶点上挂 SDF,又能环内可微取面。前馈预测一个 tet 场,生成模块负责把它延伸进未观测空间。
对线:Radiance Meshes / SDFRaster(借 tet 场表达与光栅化)、Radiant Foam(Voronoi 实时可微光追的近亲)、TetWeave(借 Delaunay 稳定化)。差异:把它们从逐场景优化变前馈,并加生成式延伸。潜在最优雅,也最冒险的一条。
哲学:不自己学先验,偷。冻结两个大模型当教师——VGGT 教"观测处的几何",一个原生 3D 生成器(TRELLIS / Hunyuan3D)教"未观测处的形状分布"——把它们的知识蒸进一个小而流式的学生 SDF 网络。把"蒸馏 / LoRA"用到极致。
对线:Fus3D(已把"冻结/LoRA VGGT + SDF 头"跑通,直接当起点)、Mix3R(已把"冻结重建 + 冻结生成、注意力缝"趟通,正是这里的双教师融合)、Gen3R(最接近的完整系统)、StreamVGGT / VGD / LoRA3D / Lyra(蒸馏机制与落地)。工程最可控、最快出原型——真正的创新留在"补全 + 尺度 + 定号",而非 backbone。
哲学:把 StreamVGGT 的"持久记忆"从 KV-cache 升级成一个持久的体素 SDF 记忆体。每来一帧:更新被看见体素的 SDF(观测);同时让一个补全模块持续"重梦" frontier 之外的体素(生成)。这是 NOVA3R 的 amodal + IVGT 的 SDF + StreamVGGT 的流式,三合一。
对线:StreamVGGT / STream3R / Point3R(流式持久记忆的现成模板)、NOVA3R(amodal 补全)、IVGT(前馈 SDF)、XStreamVGGT(KV 压缩)。这是终极形态,也是最难的;建议作为 D 或 A 验证后的"北极星",而非起点。
五个候选的配置矩阵
| 层 | A 半填半梦 | B 摊销 MILo | C tet 场 | D 蒸馏 | E 流式 amodal |
|---|---|---|---|---|---|
| L0 backbone | VGGT/π³ | VGGT | VGGT | VGGT(冻)→学生 | StreamVGGT |
| L1 载体 | 稀疏体素 SLAT | 体素 anchor | tet 顶点 | 体素 | 持久体素+全局 token |
| L2 表面/取面 | DiffMC | DiffMC(MILo 监督) | tet 场(SDFRaster) | 体素 SDF | 体素 SDF+取面 |
| L3 补全 | latent diffusion | 幻觉 head(回归) | 生成式延伸 tet | 蒸馏自生成器 | amodal diffusion |
| L4 缝合/定号 | inpainting+先验定号 | interior occupancy | frontier 延伸 | 双教师融合 | 硬约束+置信度 |
| L6 部署 | 离线/少步 | 离线 | 离线+实时渲 | 流式 | 流式在线 |
| 补全上限 | 高 | 低 | 中 | 中高 | 高 |
| 工程风险 | 中 | 低 | 高 | 低 | 很高 |
| 离原话 | 中 | 中 | 中 | 中 | 最近 |
§8能从大模型里"抠"出 backbone 吗?
蒸馏 / LoRA 的可行性——三条路里有两条已被端到端验证
答案是能。逐条给可操作的 recipe,并标清"已证 / 待补":
路 1 · 冻结 / LoRA VGGT + SDF head(已被 Fus3D 端到端验证)
这条不需要论证可行性——Fus3D 已经原样做出来了:VGGT 当 backbone、LoRA 微调、外挂一个卷积上采样 head,把体积 latent 解成 64³ SDF → Marching Cubes,前馈 <3 秒。 它就是"冻结/LoRA VGGT → 换上 SDF head"的存在性证明。更早的 LoRA3D(ICLR'25)证明了机理(冻结 DUSt3R/MASt3R + rank-16 LoRA + 任务 head,10 张无标定图自校准、不灾难遗忘);AnySplat / VGD 证明了"VGGT 当老师、新 head 出高斯";OV3DSeg-VGGT 甚至证明往冻结 VGGT 上挂一个全新语义 head 也 work。所以"VGGT → SDF head"在 backbone 层是已解的,剩下的是把 Fus3D 从 64³ 物体扩到场景 / 长视频。
VGGT 学到的是通用多视图几何对应,这部分我们完全想保留。要新增的只是"把几何读成 SDF"和"补全"两种新行为——这正是 LoRA 的甜区:底层表征不动,只用低秩增量教模型一个新的输出习惯。Fus3D 用的正是 LoRA 而非全量微调,训练成本只有从头训的零头。
路 2 · 蒸馏双向 VGGT → causal 学生(已被 StreamVGGT 验证)
StreamVGGT("Streaming 4D Visual Geometry Transformer")已经把"双向 VGGT 教师 → causal 学生 + KV-cache"打通;XStreamVGGT 再加 KV 剪枝 / 量化压住显存。 候选 E 直接站在它肩上:学生不仅蒸几何,还蒸"frontier 补全"行为。VGD 进一步证明把 VGGT 蒸成领域专用轻量模型能部署。所以"长视频流式 + 出 SDF"在 backbone 层没有原理障碍,是工程问题。
路 3 · 条件化一个冻结 3D 生成器(已有先例,但 metric 尺度仍是真空)
把"部分观测"灌进一个冻结生成器、让它补出其余——已经有一串现成做法,足以给这条路兜底:
- Hunyuan3D-Omni——号称"3D 的 ControlNet":一个训练好的统一控制 encoder,把点云 / 体素 / bbox / 骨架注入冻结的 Hunyuan3D 2.1 vecset 主干,缺输入也能优雅降级。这就是路 3 的"条件分支"模板。
- Points-to-3D——用部分点云对冻结 TRELLIS 做 latent-inpainting 式补全,保住可见区、补未观测区,而且明确能吃 VGGT 估的点云,object+scene 两级都行。几乎为补全端量身定做。
- Amodal3R(给 TRELLIS 加遮挡条件)、Step1X-3D(明说支持 2D-LoRA→3D 迁移)、少步蒸馏 MDT-dist / FlashVDM(把 TRELLIS / Hunyuan3D 的 flow 蒸到 1–2 步)——补全的速度与多样性也有了现成抓手。
原生 3D 生成器是 object-centric + canonical pose + 归一化 scale;我们的重建是 scene-level + metric scale + 任意位姿。 好消息:坐标系那一半已被破——Pixal3D 把生成从 canonical 改成视图对齐,Points-to-3D 用观测点云隐式带住坐标。 坏消息:没人把"已知的 metric 尺度"显式喂进生成先验——现有做法都靠点云隐式携带尺度,从没有一个"metric 锚点 token"或显式 scale-conditioning。 所以路 3 的残余风险,收窄成更准的一句:怎么让一个尺度归一化的物体先验,老老实实长在重建给定的 metric 坐标系里——值得单立一个"对齐 adapter"去啃。
§9横切的工程决策
不属于任何单层、但每个候选都躲不过的几件事
① Metric scale 从哪来
VGGT / MapAnything / MoGe-2 能出 metric-scale 几何,这是观测端 scale 的锚。生成端(TRELLIS 系)是归一化的,必须用观测端的 scale 去校准。建议:以观测 metric 为准,生成端永远被 rescale 到观测坐标系,而非反过来。
② 置换等变 / 参考帧(长视频的隐形杀手)
VGGT 有 reference-frame 偏向;π³ 用架构(置换等变、无参考帧)根除了它。长视频里相机会回环、乱序——若走 A/B/C,建议 backbone 用 π³,否则补全会被"第一帧过拟合"带偏;E 走 causal 则用 StreamVGGT 的时序锚定。
③ 取面只在训练可微(再强调一次)
DiffMC / FlexiCubes / SparseFlex 都在训练时进 loss、且 GPU 可 batch;推理时跑一次普通取面。别把可微取面误当成推理瓶颈而吓退;也别把 CPU 的 Delaunay 塞进前馈训练前向。
④ 数据:3D 真值永远不够
这是全领域的慢性病。我们的解法天然友好:观测端用海量 posed/unposed 视频自监督(多视图一致性 + VGGT 伪标注),生成端用教师当伪标注器(D 的核心)。真值 SDF 稀缺,但"教师 + 一致性"能撑起大部分监督。
⑤ 评估必须拆成两半
Chamfer / F-score 只衡量观测区;补全区没有真值,得借生成派的指标。建议报告分离指标:观测区精度(CD)+ 未观测区合理性(对合成遮挡场景的 amodal-CD + 感知分)。否则一个"只重建不补全"的模型会在传统指标上虚高。
§10还没想清楚的问题(诚实清单)
把不确定的地方摊开,它们就是路线图
- 在想象的体内"定号"(§5)。 本页认为这是最深的科学问题:它不是工程难点,是定义难点——没有先验就无解,所以它把"要不要生成先验"从选择题变成了必答题。怎么在 watertight 先验之外、还保证符号在 frontier 处一阶连续,是核心未知。
- 前馈一次同时出"互相一致的高斯 + SDF"——竟然没人做。 SurfelSplat 前馈出 surfel 但无 SDF;Fus3D / IVGT 前馈出 SDF 但无高斯;DiGS 是高斯+SDF 但逐场景优化。一个 pass 同时吐互相一致的高斯(做快渲监督)与 SDF(交付 mesh),是个干净的空白、也是个可立的贡献点。
- 把 metric 尺度灌进归一化物体先验(§8 路 3)。 坐标系那半已被 Pixal3D / Points-to-3D 破了;剩下的硬骨头是显式 metric scale——现有工作全靠点云隐式带尺度,没人做"metric 锚点 token"。也许答案是一个专门的"对齐 adapter"。
- metric 场景生成今天只活在"占据 / 体素"谱系。 XCube / SemCity / DynamicCity 是 metric 的,但出占据栅格;写实的 3DGS / triplane 场景生成器(Prometheus / WonderWorld / Director3D)几乎都尺度相对。想要"metric + 写实 + 会补全"的 SDF,得自己把这两个谱系焊起来。
- 缝的时序一致性。 流式重梦(E)怎么保证背面不会每帧被梦成不同形状?需把"已梦内容"锚进持久记忆,但又得允许新观测推翻旧梦——对硬约束与 diffusion 采样的交互提出新要求。
- 补全的"分辨率—速度—多样性"三角。 diffusion 补全要多步采样,和前馈 / 流式的低延迟天然冲突。MDT-dist / FlashVDM 把 3D flow 蒸到 1–2 步是希望,但补全的多样性会不会被蒸没?未知。
- 稀疏体素 SLAT 能否扩到大场景 metric。 TRELLIS 的 SLAT 是 object-centric。扩到房间 / 街道尺度且保持 metric,是 A 的成败手——可能需要多分辨率 / 分块 SLAT(VGGT-Long 式分块思想)。
§11如果只能押一条:我的下注
发散完了,收一个口
第一步押 D(蒸馏)。 工程风险最低,而且第一步已被证明能跑:复现并扩展 Fus3D(冻结/LoRA VGGT + SDF head)就是起点——不必再赌它 work 不 work,直接赌它能不能从 64³ 物体扩到场景 / 长视频。补全端先挂一个冻结 3D 生成器(按 Points-to-3D / Hunyuan3D-Omni 的条件化做法)。
它能在几周内回答现在最关键的问题——不再是"坐标系桥难不难"(已被 Pixal3D / Points-to-3D 破了一半),而是"显式 metric 尺度怎么灌进归一化的物体先验"。
第二步转 A(半填半梦)。 一旦尺度对齐摸清,把补全升级成 SLAT 上的 latent inpainting——这才是 C6"一个潜空间"的正解,补全上限最高、定号最自然,且顺带拿到 PBR / 高斯。但要警惕:Gen3R 已经是"A 的视频扩散版",我们的差异必须死死落在体积 SDF 输出 + 定号上。
北极星是 E(流式 amodal SDF)。 它逐字命中原话,是这个方向真正的"终局形态";但它把三个动态系统耦在一起,应当在 A 的表达和 D 的训练范式都验证之后再啃。
至于 B 和 C:B 是最稳妥的"MILo 亲儿子",适合先发一篇扎实的"前馈 mesh-in-the-loop"占身位——但 §3 已点出它有个两难(Delaunay 进不了 batch、换格点又稀释卖点),补全上限也低; C(tet 场)潜在最优雅,但"前馈吐 tet 顶点的翻面风险 + Delaunay 难 batch"让它成了最冒险的一条,值得一个敢赌的人单独探索。
要的不是"VGGT 接一个 MILo",而是让"看见"和"想象"在同一张 SDF 上无缝发生。 Fus3D 已证明前馈能"看见并出 SDF",Gen3R 已证明前馈能"想象整个场景",Mix3R 已证明"冻结重建 + 冻结生成"缝得起来—— 剩下的科学赌注收窄成一句:把连续 SDF/mesh、真采样式补全、长视频/场景尺度压进同一个体积潜空间,并在没被看见的体内稳定地定一个号。 那颗星还在虚框里空着——四面被夹,但没人坐进去。值得去放上那个点。
§R引用
每条均附 arXiv 号、对照摘要页 / 项目页核对;⚠ = 2026(及 2025 末)极新、独立信源较少,引用前以官方页为准
VGGT 家族 / 前馈几何 backbone
- VGGT Visual Geometry Grounded Transformer · CVPR 2025 Best Paper · 2503.11651
- π³ (Pi3) 置换等变、无参考帧 · 2507.13347 · StreamVGGT 流式 causal+KV-cache,蒸馏自 VGGT · 2507.11539
- VGGT-Long 分块闭环到公里级 · 2507.16443 · FlashVGGT 描述符注意力压显存 · 2512.01540 · XStreamVGGT KV 剪枝/量化
- MapAnything 通用前馈 metric、因子化输出 · 2509.13414 · 3DV 2026
- AnySplat VGGT 主干+三 head+可微体素化 · 2505.23716 · VolSplat 体素对齐而非像素对齐 · 2509.19297
- VGD VGGT 蒸馏轻量 GS · 2510.19578 · MoGe-2 单目 metric · 2507.02546 · STream3R 2508.10893 · Point3R 2507.02863
前馈出 SDF / 表面
- ⚠ Fus3D VGGT backbone+LoRA+卷积头 → 64³ SDF → MC,前馈 <3s、隐式外推未观测 · 2603.25827
- ⚠ IVGT 前馈 pose-free 连续 SDF+color,抽 mesh,跨场景泛化,只重建 · 2605.16258(GitHub: wzzheng/IVGT)
- 泛化前馈 SDF 谱系:SparseNeuS 2206.05737 · VolRecon 2212.08067 · ReTR 2305.18832 · UFORecon 2403.05086
- 前馈 TSDF:Atlas 2003.10432 · NeuralRecon 2104.00681 · FineRecon 2304.01480 · ⚠ SurfelSplat 前馈出 surfel(无 SDF)· 2604.08370
SDF / 可微取面 / mesh-in-the-loop / tet 场
- MILo Mesh-In-the-Loop(高斯当 pivot + per-Gaussian SDF + 可微 Delaunay+MT,~10× 少顶点)· 2506.24096
- ⚠ Radiance Meshes 恒密度 Delaunay tet + circumsphere 光栅化(无 SDF)· 2512.04076 · ⚠ SDFRaster tet 顶点 SDF + 光栅化 + 环内可微 MT · 2604.23537
- Radiant Foam Voronoi 实时可微光追 · 2502.01157 · TetWeave 2505.04590 · TeT-Splatting 2406.01579
- 取面层:FlexiCubes SIGGRAPH 2023 · DMTet 2111.04276 · DiffMC(DISO 包,CUDA 批友好可微 MC)· SparseFlex 2503.21732 · Sparc3D 2505.14521
- Gaussian↔SDF(逐场景):3DGSR 2404.00409 · GSDF 2403.16964 · DiGS 2509.07493
生成补全 / amodal / 场景生成
- ⚠ Gen3R VGGT+视频扩散先验,场景级真补全(出点/深度)· 2601.04090 · ⚠ Mix3R MoT 缝冻结重建+冻结生成 → mesh/3DGS · 2605.03359
- NOVA3R 前馈非像素对齐、scene token + flow-matching decoder,恢复遮挡(点云)· 2603.04179 · ICLR 2026
- GEN3C 3D cache + video diffusion 只补未观测 · 2503.03751 · Bolt3D 2503.14445 · See3D 2412.06699 · Lyra self-distill→3DGS 2509.19296
- ⚠ GA-GS 去动态物体+补其后,per-Gaussian authenticity 标量 · 2604.04331 · Amodal3R 给 TRELLIS 加遮挡条件 · 2503.13439
- SDF/占据 场景生成(会补全):LT3SD 隐树 + truncated UDF · 2409.08215 · XCube 稀疏体素层级、单扫补全、metric · 2312.03806
原生 3D 生成 / 结构化 latent / 条件化
- TRELLIS SLAT → mesh/3DGS/RF · 2412.01506 · ⚠ TRELLIS.2 O-Voxel 几何+PBR · 2512.14692 · ⚠ LATTICE 半结构 VoxSet · 2512.03052
- TripoSG 2502.06608 · Hunyuan3D 2411.02293 · Direct3D-S2 稀疏体素 1024³ · 2505.17412 · Step1X-3D(支持 2D-LoRA→3D)· 2505.07747
- 条件化 / 补全:⚠ Points-to-3D 部分点云 latent-inpaint 冻结 TRELLIS、吃 VGGT 点云 · 2603.18782 · Hunyuan3D-Omni「3D 的 ControlNet」· 2509.21245
- ⚠ TripoSplat 密度采样高斯生成 · 2605.16355 · ⚠ Pixal3D 视图对齐反投影(基座 Direct3D-S2)· 2605.10922
蒸馏 / LoRA / 少步
- LoRA3D 冻结 DUSt3R/MASt3R + rank-16 LoRA + 任务 head 自校准 · 2412.07746 · ICLR 2025 · OV3DSeg-VGGT 冻结 VGGT + 全新语义 head(2026)
- 少步补全:MDT-dist 3D flow 蒸到 1–2 步 · 2509.04406 · FlashVDM · 2503.16302
本页的设计推理建立在上述工作之上;每条引用均附 arXiv 号,并对照 arXiv 摘要页 / 项目页 / GitHub / OpenReview 核对过标题、作者与主张。标 ⚠ 的是 2026 年(及 2025 末)极新、独立信源较少的工作,正文对它们的描述以官方页为准。图为示意,所有架构均为设计推理,未经实现,非实验结果。