A pedagogical survey · 2023.07 — 2026.05
生成式 3D Gaussian Splatting
从 2023 年 7 月 3DGS 诞生,到 2026 年 5 月 SIGGRAPH 出现 Pixal3D——
过去三年里所有把"文本/图/视频"变成 3DGS 的工作都聚集在四条家族支线上:
SDS 蒸馏、前馈重建、原生 3D 扩散、场景/4D 专门化。
本文给每一篇文章讲清楚一句话的关键想法、和邻居的区别,
必要时配交互 demo 和代码片段。预设读者:会基本的 NeRF、SDF、机器学习、微积分、线性代数。
不会 3DGS 也没关系——我们从头讲。
约 75 篇论文 · 5 个交互演示 · 8 段教学伪代码 · 最后更新 2026-05-19
§13DGS 是什么——故事的起点
Kerbl 等人 2023 SIGGRAPH 的 3D Gaussian Splatting for Real-Time Radiance Field Rendering
用了一个让人觉得"怎么没人早点试"的简单想法:
关键想法 · 一句话
把场景表示成几百万个三维高斯椭球,每个椭球记下它的位置、形状(协方差)、
不透明度、颜色(用球谐函数表示视角依赖);渲染时把每个椭球溅射 (splat) 到屏幕上做 alpha 合成。
对比 NeRF:NeRF 是隐式的——一个 MLP 接受 $(x, y, z, \theta, \phi)$ 返回颜色和密度,渲染时沿射线采 64–256 次。
3DGS 是显式的——场景就是一堆点状的原语 (primitive),每个原语自己说明自己长什么样。
两种方式数学上算的是同一个积分(体渲染方程的离散化),但显式让 GPU 能做光栅化式并行,
而不是逐像素逐采样点串行 MLP 查询。
一个 3D Gaussian 里到底存了什么
| 属性 | 含义 | 大小 |
| 位置 $\boldsymbol{\mu} \in \mathbb{R}^3$ | 椭球中心 | 3 floats |
| 四元数 $q$ | 旋转(保证协方差对称正定) | 4 floats |
| 缩放 $s$ | 三个主轴的长度 | 3 floats |
| 不透明度 $o \in [0,1]$ | 椭球中心处的不透明度 | 1 float |
| 球谐系数 (degree 3) | 视角依赖颜色,$16$ 个基 $\times$ 3 通道 | 48 floats |
合计约 59 个 float。每个 Gaussian 自身的形态由协方差矩阵决定:
$$ G(\mathbf{x};\boldsymbol{\mu},\Sigma) = \exp\!\left(-\tfrac{1}{2}(\mathbf{x}-\boldsymbol{\mu})^\top \Sigma^{-1}(\mathbf{x}-\boldsymbol{\mu})\right), \quad \Sigma = R(q)\,S\,S^\top R(q)^\top $$
渲染时按从远到近做 alpha 合成(标准体渲染方程的离散化):
$$ C(\mathbf{p}) = \sum_{i} c_i\, \alpha_i G_i(\mathbf{p}) \prod_{j\lt i} (1 - \alpha_j G_j(\mathbf{p})) $$
Demo 1 · $\alpha$ 合成 splatting(拖、调、看会发生什么)
每个椭圆是一个 2D Gaussian(3DGS 投影到屏幕后的样子)。试试把它们重叠,
切换"近→远"的错误排序,会看到颜色被反向叠加变错——这就是 3DGS 必须做深度排序的根本原因。
$\sigma$ scale 增大就是"densification 把每个 splat 撑大"。
核心前向:一段教学用伪代码
def render_3dgs(gaussians, K, RT, image_size):
# 1. 把所有 Gaussian 中心投影到屏幕,并把 3D 协方差投影为 2D 协方差 (EWA)
mu_2d, cov_2d, depth = project(gaussians.xyz, gaussians.cov_3d, K, RT)
# 2. 按深度排序(远到近)
order = depth.argsort(descending=True)
img = torch.zeros(*image_size, 3)
T = torch.ones(*image_size) # transmittance
for i in order:
# 3. 每个像素处 2D 高斯值 G_i(p) = exp(-0.5 (p-μ)ᵀ Σ⁻¹ (p-μ))
w = eval_2d_gauss(mu_2d[i], cov_2d[i])
a = gaussians.opacity[i] * w
c = sh_to_rgb(gaussians.sh[i], view_dir) # 视角相关颜色
# 4. 标准 alpha 合成
img = img + T[..., None] * a[..., None] * c
T = T * (1 - a)
return img
直觉
NeRF 在每条 ray 上做积分(采 64+ 个点 + MLP),3DGS 把这件事翻转:先放好所有 Gaussians,
每一帧渲染只需要查找哪些 Gaussian 落到这个像素,不需要 MLP forward。
这就是 3DGS 比 NeRF 快两个数量级的根本原因。
§2从"重建"到"生成"——四条家族支线
上面这一切都是重建:给你 30 张照片,重建出场景。但本综述的主题是生成——
给一段文本或一张图,吐出一个新场景。这是接下来四大家族要解决的问题:
- SDS 蒸馏 (§4 起):借 2D 扩散模型当裁判,反向梯度优化 Gaussians。DreamGaussian、GaussianDreamer…
- 前馈重建 (§10 起):训一个网络,输入图像直接吐 Gaussians,零优化。Splatter Image、MVSplat、LGM…
- 原生 3D 扩散 (§19 起):把 3DGS 编码成"长得像 tensor 的东西",在上面跑扩散。GaussianCube、TRELLIS…
- 场景/4D 专门化 (§28、§35 起):把上面任一条路线扩展到房间、室外、动态场景。CAT3D、L4GM、Pixal3D…
最重要的趋势
2023→2026 的弧线是:per-prompt 优化 (SDS) → 数据驱动前馈 → 原生 3D 扩散 → 结构化稀疏潜空间 → 显式像素-3D 对齐 (Pixal3D)。
每往后一波,速度提升 $10\text{-}1000\times$,质量提升一档。SDS 在 2025 之后基本退场。
§3全景地图与可筛选时间轴
先看一张总图,每一篇文章都属于一条家族支线,每个家族都在攻击 3DGS 生成的某一个核心难题。
可筛选时间轴
下面是所有出现过的主要工作。点 chip 筛选年份或家族。
年份
全部
2023
2024
2025
2026
家族
全部
3DGS 本体
SDS
前馈
扩散
场景
4D
| 时间 | 方法 | 家族 | 一句话 | 会议 / arXiv |
| 2023-07 | 3D Gaussian Splatting | 本体 | 把场景表示成几百万个椭球,实时光栅化 | SIGGRAPH'23 / 2308.04079 |
| 2023-09 | DreamGaussian | SDS | 第一个 3DGS + SDS,~2 分钟出 textured mesh | ICLR'24 Oral / 2309.16653 |
| 2023-09 | GSGen | SDS | 3DGS + 2D-SDS + 3D-SDS (Point-E),攻 Janus | CVPR'24 / 2309.16585 |
| 2023-10 | GaussianDreamer | SDS | Shap-E 初始化 + 2D-SDS 精修,~15 分钟 | CVPR'24 / 2310.08529 |
| 2023-11 | LucidDreamer (Liang) | SDS | ISM 替换 SDS,DDIM 确定性轨迹去模糊 | CVPR'24 / 2311.11284 |
| 2023-11 | LucidDreamer (Chung) | 场景 | 反复 inpaint + depth-lift 长场景 3DGS | CVPR'24 / 2311.13384 |
| 2023-11 | HumanGaussian | SDS | SMPL-X 初始化的文本→3D 人体 | CVPR'24 / 2311.17061 |
| 2023-12 | Splatter Image | 前馈 | U-Net 输出每像素一个 Gaussian,~10ms | CVPR'24 / 2312.13150 |
| 2023-12 | pixelSplat | 前馈 | 2 视图 + epipolar attention + 概率深度 | CVPR'24 Best Runner-up / 2312.12337 |
| 2023-12 | TriplaneGaussian | 前馈 | 显式 point + triplane 隐式特征 | CVPR'24 / 2312.09147 |
| 2023-12 | DreamGaussian4D | 4D | 静态 3DGS + HexPlane 时间变形场 | 2312.17142 |
| 2023-12 | 4DGen | 4D | 用户给视频,grounded 4D 生成 | 2312.17225 |
| 2023-12 | Align Your Gaussians | 4D | 组合 image / video / mv diffusion 三个先验 | CVPR'24 Highlight / 2312.13763 |
| 2024-01 | AGG (NVIDIA) | 前馈 | 位置/外观解耦的 coarse→fine 单图→3D | 2401.04099 |
| 2024-02 | LGM | 前馈 | 非对称 U-Net 吃 4 view diffusion → 3DGS | ECCV'24 Oral / 2402.05054 |
| 2024-03 | GaussianCube | 扩散 | OT 把 Gaussians 排进 voxel grid,3D U-Net | NeurIPS'24 / 2403.19655 |
| 2024-03 | MVSplat | 前馈 | plane-sweep cost volume,比 pixelSplat 小 $10\times$ | ECCV'24 Oral / 2403.14627 |
| 2024-03 | GRM | 前馈 | 纯 Transformer,0.1s 多视图重建 | ECCV'24 Oral / 2403.14621 |
| 2024-03 | CRM | 前馈 | U-Net 在 6 正交视图上 → triplane → mesh | ECCV'24 / 2403.05034 |
| 2024-04 | DreamScene | 场景 | FPS 时间步采样 + 三阶段相机 | ECCV'24 / 2404.03575 |
| 2024-04 | InstantMesh / MeshLRM | 前馈 | LRM 直接输出 mesh,~10s 单图→mesh | ECCV'24 / 2404.07191 · .12385 |
| 2024-04 | GS-LRM (Adobe) | 前馈 | 最朴素 ViT,硬扩规模,~0.23s | ECCV'24 Oral / 2404.19702 |
| 2024-04 | DreamScene360 | 场景 | 从全景图 lift 到 $360^{\circ}$ 3DGS | ECCV'24 / 2404.06903 |
| 2024-05 | CAT3D | 场景 | 多视图扩散把任意 pose 采样成一致图像 | NeurIPS'24 Oral / 2405.10314 |
| 2024-05 | Diffusion4D | 4D | fine-tune video diff 生成轨道视图 | NeurIPS'24 / 2405.16645 |
| 2024-05 | Unique3D | 前馈 | 30s 单图→mesh,RGB+normal 多视图 | NeurIPS'24 / 2405.20343 |
| 2024-06 | WonderWorld | 场景 | FLAGS 分层 surfel,10s 出可探索场景 | 2406.09394 |
| 2024-06 | Director3D | 场景 | Traj-DiT 联合生成相机轨迹 + 场景 | NeurIPS'24 / 2406.17601 |
| 2024-06 | L4GM (NVIDIA) | 4D | 第一个 "LRM for 4D",~1s 视频→动 GS | NeurIPS'24 / 2406.10324 |
| 2024-06 | 4Real | 4D | 纯靠 video diffusion 生成场景级 4D | NeurIPS'24 / 2406.07472 |
| 2024-08 | Stable Fast 3D | 前馈 | 0.5s 单图→PBR mesh + delight | 2408.00653 |
| 2024-08 | Atlas Gaussians | 扩散 | patch 隐变量 → 任意密度 Gaussians | ICLR'25 / 2408.13055 |
| 2024-09 | 3DTopia-XL | 扩散 | PrimX 微体素 + PBR 原生扩散 | CVPR'25 / 2409.12957 |
| 2024-10 | Long-LRM | 前馈 | 32 view、$960\times540$、1s 场景重建 | ICCV'25 / 2410.12781 |
| 2024-10 | PixelGaussian | 前馈 | Gaussian 数量自适应(不再一像素一个) | 2410.18979 |
| 2024-10 | L3DG · DiffGS | 扩散 | VQ-VAE 稀疏潜 / 神经函数 GS 扩散 | SIGGRAPH Asia'24 / 2410.13530 · .19657 |
| 2024-10 | NoPoSplat | 前馈 | 无位姿,photometric loss 训出 2-view GS | ICLR'25 Oral / 2410.24207 |
| 2024-11 | Edify 3D (NVIDIA) | 前馈 | RGB+normal 多视图扩散 + 重建 + PBR | 2411.07135 |
| 2024-11 | GaussianAnything | 扩散 | 点云结构潜 + cascaded 几何/纹理扩散 | ICLR'25 / 2411.08033 |
| 2024-11 | MVSplat360 | 前馈 | MVSplat → SVD latent,$360^{\circ}$ novel view 视频 | NeurIPS'24 / 2411.04924 |
| 2024-11 | CAT4D | 4D | CAT3D 的 4D 版,单目视频→deformable GS | 2411.18613 |
| 2024-12 | TRELLIS | 扩散 | 稀疏体素 SLAT,可解码 NeRF/GS/Mesh | CVPR'25 Spotlight / 2412.01506 |
| 2024-12 | Wonderland | 场景 | 用 video-diffusion latent 直接喂 LRM | 2412.12091 |
| 2025-01 | Hunyuan3D 2.0 | 扩散 | Tencent 开源 shape DiT + paint,工业级 | 2501.12202 |
| 2025-01 | DiffSplat | 扩散 | fine-tune SD 生成多视图 Gaussian 网格 | ICLR'25 / 2501.16764 |
| 2025-02 | TripoSG | 扩散 | Rectified Flow 移植到 3D shape | 2502.06608 |
| 2025-03 | Gaussian Atlas | 扩散 | 球面 OT 把 3D 拍成 2D,fine-tune SD | ICCV'25 / 2503.15877 |
| 2025-03 | Hi3DGen | 扩散 | normal map 作为图像→3D 的桥梁 | 2503.22236 |
| 2025-03 | Roblox Cube | 扩散 | 1.8B token-based 3D foundation model | 2503.15475 |
| 2025-03 | Bolt3D | 场景 | 2D latent diff 直接出 3DGS 场景,~6s | ICCV'25 / 2503.14445 |
| 2025-03 | SV4D 2.0 | 4D | SVD 规模多视图视频扩散,4D 工业级 | 2503.16396 |
| 2025-05 | Direct3D-S2 | 扩散 | 稀疏注意力解锁 $1024^3$ shape 扩散 | NeurIPS'25 / 2505.17412 |
| 2025-05 | Step1X-3D | 扩散 | 开源 TSDF + LoRA 控制,对标 Tripo 2.5 | 2505.07747 |
| 2025-05 | AnySplat | 前馈 | 任意未标定无位姿图像 → GS + 内外参 | SIGGRAPH Asia'25 / 2505.23716 |
| 2025-06 | StreamSplat | 4D | 未标定视频流 → 在线动 3DGS | ICLR'26 / 2506.08862 |
| 2025-06 | Hunyuan3D 2.1 / 2.5 | 扩散 | 开源 PBR、LATTICE 10B 形状基座 | 2506.15442 · .16504 |
| 2025-08 | 4DNeX | 4D | 单图→4D,6D (RGB+XYZ) 统一视频扩散 | 2508.13154 |
| 2025-09 | VolSplat | 前馈 | voxel-aligned 替代 pixel-aligned | NeurIPS'25 / 2509.19297 |
| 2025-10 | FlashWorld | 场景 | 7-9 秒文/图→场景,$\sim 100\times$ 提速 | ICLR'26 Oral / 2510.13678 |
| 2025-11 | Diff4Splat | 4D | video DiT latent → deformable 3DGS | 2511.00503 |
| 2025-11 | WorldGen (Meta) | 场景 | 文本→Unity/Unreal 可跑的世界 | 2511.16825 |
| 2025-12 | TRELLIS.2 | 扩散 | 4B 参数、$1536^3$、O-Voxel、PBR | 2512.14692 |
| 2026-01 | Pixel-to-4D | 4D | 单图→deformable GS 场景,可控相机 | 2601.00678 |
| 2026-02 | SR3R | 前馈 | 低分辨多视图 → 高分辨 3DGS 一步 | 2602.24020 |
| 2026-02 | SceneTransporter | 场景 | OT 路由解耦单图→多对象场景 | ICLR'26 / 2602.22785 |
| 2026-03 | Leveling3D | 前馈 | 前馈重建 + 多视图生成一体化 | 2603.16211 |
| 2026-03 | GaussianGPT | 扩散 | 自回归(不再 diffusion)出 GS 场景 | 2603.26661 |
| 2026-03 | LGTM | 前馈 | 带 texture 的"少而精" Gaussian,4K 前馈 | ICLR'26 / 2603.25745 |
| 2026-04 | GlobalSplat | 前馈 | 全局 token 解码到稀疏 Gaussians,4MB | 2604.15284 |
| 2026-05 | Pixal3D ⭐ | 扩散 | 像素对齐 3D 扩散,back-projection 锁正面 | SIGGRAPH'26 / 2605.10922 |
§4SDS 蒸馏家族:让 2D 扩散当裁判
2023 年我们没有足够大的 3D 数据集来从头训生成器。但 Stable Diffusion 看过几十亿张图。
DreamFusion 提出:让我维护一个 3D 表征,每次随机选个相机渲一张图,问 SD "这像不像我提示词描述的图?"
然后用 SD 的去噪梯度反向传播到 3D 参数。这就是 Score Distillation Sampling (SDS)。
$$ \nabla_\theta\,\mathcal{L}_\mathrm{SDS} = \mathbb{E}_{t,\varepsilon,c}\Big[\,w(t)\cdot\big(\varepsilon_\phi(x_t;y,t) - \varepsilon\big)\cdot \tfrac{\partial g(\theta,c)}{\partial \theta}\,\Big] $$
没有真值,只有"扩散模型希望它变成什么"这个伪信号。这套方法有四个臭名昭著的痛点:
| 痛点 | 表现 | 根因 |
| Janus(多面) | 人有四张脸,狗背上还长着头 | SD 训练数据偏向正面,SDS 平均所有视角朝这个 mode 收敛 |
| 慢 | NeRF + SDS 一个 prompt 1-10 小时 | NeRF 渲染贵 + SDS 梯度有噪需要几万步 |
| 过饱和 / 卡通化 | 颜色对比拉满,没细节明暗 | 需要 $\text{CFG} \approx 100$ 才能让 SDS 收敛,但 CFG 越高色彩越离开自然分布 |
| 过平滑 / 缺细节 | 表面糊,没有高频纹理 | SDS 每步对随机噪声取平均,高频被平均掉 |
Demo 2 · CFG 与饱和度
上半条是真实目标颜色梯度;下半条是不同 guidance scale 下 SDS / VSD 收敛到的样本。
SDS 必须把 CFG 拉到 ~100 才能让信号"够清楚",代价是颜色推出自然分布;
VSD/ISM 用 LoRA 跟踪当前渲染分布或 DDIM 反演确定性轨迹,让 CFG=7.5 就够。
CODE · SDS 梯度(PyTorch 风格伪代码)
def sds_step(gaussians, prompt, sd, cfg=100.):
# 1. 随机视角渲染一张图
cam = sample_camera()
img = render_3dgs(gaussians, cam)
latent = sd.encode(img)
# 2. 给 latent 加随机 step 的噪声
t = randint(20, 980)
eps = torch.randn_like(latent)
noisy = sd.add_noise(latent, eps, t)
# 3. 询问 SD:你猜噪声是什么?(classifier-free guidance)
eps_uncond = sd.predict(noisy, t, "")
eps_cond = sd.predict(noisy, t, prompt)
eps_hat = eps_uncond + cfg * (eps_cond - eps_uncond)
# 4. SDS 伪梯度 = (eps_hat - eps),对 Gaussians 反传
grad = (eps_hat - eps) * sd.w(t)
target = (latent - grad).detach()
loss = 0.5 * (latent - target).pow(2).mean()
loss.backward()
CODE · ISM (LucidDreamer-Liang) 替换 SDS 的那一行
# SDS 用随机 eps;ISM 用 DDIM 反演的"确定性" eps
noisy_det, _ = sd.ddim_invert(latent, t)
eps_t_minus = sd.predict(noisy_det, t - dt, prompt)
eps_t = sd.predict(noisy_det, t, prompt)
grad = (eps_t - eps_t_minus) * sd.w(t)
§5DreamGaussian — 2 分钟出 textured mesh
DreamGaussian
— Generative Gaussian Splatting for Efficient 3D Content Creation
DreamFusion + NeRF 一个 prompt 要 1.5 小时,且只能出体积场。我们能不能同时把它弄快、再吐一个 mesh?
关键想法:把 NeRF 换成 3DGS + 加一个 mesh-UV 第二阶段。
Stage 1:3DGS + SDS(文本→Stable Diffusion;图→Zero-1-to-3)+ 周期 densification/prune。
Stage 2:Gaussians marching-cube 出粗 mesh,UV 贴 Gaussian 颜色,再用 mesh 渲染走一遍 SDS。
第二阶段的关键洞察:优化一张纹理图比优化一个体积便宜得多。
vs DreamFusion:NeRF→3DGS + mesh 精修;vs GSGen/GaussianDreamer:不靠 3D 先验,靠"快+可 mesh 化"取胜;Janus 没解决。
§6GSGen & GaussianDreamer — 用 3D 先验治 Janus
这俩工作 2023-09 同时发表,思路相反但都用 3D 先验。
GSGen (Chen, CVPR'24)
持续用 Point-E 的 3D-SDS 作为 loss 里的一项(不只是初始化),整个优化过程被 3D 分布约束。
优点:3D 一致性最强。缺点:依赖 Point-E 质量;慢。
GaussianDreamer (Yi, CVPR'24)
用 Shap-E 生成一次粗 mesh,从上面采点初始化 Gaussians,然后只用 2D SDS 继续精修。
优点:简单快(15 min)。缺点:几何上限由 init 锁死。
GSGen
— Text-to-3D using Gaussian Splatting
在 2D-SDS 之外再加一项 3D-SDS(来自 Point-E 点云扩散),治 Janus。
GaussianDreamer
— Fast Generation from Text to 3D Gaussians
Shap-E mesh → noisy point growing → 转 Gaussians → SD-SDS。一切都靠"只在 init 用 3D 先验"。
§7LucidDreamer-Liang — ISM 替换 SDS
LucidDreamer (Liang et al.)
— Towards High-Fidelity Text-to-3D Generation via ISM
SDS 的过平滑来自"对随机噪声平均"。能不能把噪声变成确定的?
关键想法:Interval Score Matching——用 DDIM 反演把 latent 噪声变成确定性轨迹,
在两个 step 之间取 score 差。一旦轨迹确定,梯度就不再"平均掉"高频细节。
vs SDS:确定性轨迹,细节更清;vs VSD:不需要 LoRA fine-tune,比 ProlificDreamer 便宜。
注意和场景版的 另一个 LucidDreamer (Chung, §28) 是不同的论文。
§8GaussianDreamerPro & Hyper-3DG — 给 Gaussians 加结构
GaussianDreamerPro
— Text to Manipulable 3D Gaussians via Mesh Binding
关键想法:让 Gaussians贴在 mesh 上——保证几何意义、可动画化,副作用是杀掉到处乱漂的浮点云。
三阶段:粗 mesh → 每三角形绑一个 Gaussian → 交替优化,密集化只发生在需要细节的区域。
Hyper-3DG
— Text-to-3D Gaussian Generation via Hypergraph
关键想法:SDS 一次只看一个视图,捕捉不到 patch 之间的高阶相关(左腿和右腿应该匹配)——
把 Gaussians 分 patch,构造超图,超边连接语义相似的 patch;HGRefiner 在 SDS 步之间做结构正则。
§9HumanGaussian & CG3D — 注入领域先验
HumanGaussian
— Text-Driven 3D Human Generation with Gaussian Splatting
人体生成的"对的方法"是先把 Gaussians 撒在 SMPL-X 模板上(解决 Janus),
再用 RGB+Depth 双流 SDS 配合 Annealed Negative Prompt Guidance(抑制饱和)。
CG3D
— Compositional Generation of Multi-Object 3D Scenes
每个物体一个独立 Gaussian 场 + 6-DoF 位姿,组合场景级 SDS——支持物理可行的多对象组合。
为什么 2025 之后 SDS 几乎消失了?
SDS 必须 per-prompt 优化(即使只 2 分钟),开放词汇受限于 2D 扩散偏置。当 2024 后期视频/多视图扩散模型 + 大规模 3D 数据集出现,
直接训前馈/原生 3D 扩散变得可行。到 ICLR'26 几乎没有纯 SDS 新作。
§10前馈重建家族 — 一次前向得 3DGS
SDS 的 per-prompt 优化太慢。如果有几百万对 (multi-view images, ground-truth 3D),可以训一个网络
f(images) → Gaussians。测试时只跑一次前向,没有优化。这就是前馈家族。它沿四个轴演化:
- 输入视图数:1 → 2 → 4 → 32 → 任意
- 尺度:物体 → 有界场景 → $360^{\circ}$ 大场景
- 假设:要 pose → 不要 pose → 也不要内参
- 表征:pixel-aligned → voxel-aligned → global token
Demo 3 · 代价体 (Cost Volume) 平面扫描
沿一条 ray 假设不同深度 $d$,每个假设的 3D 点会被两个相机各自看到一组特征。
如果两边特征相似,说明这个深度正好在表面上。
当滑块 $d \approx 0.55$ 时相似度最高——这就是表面深度。
MVSplat 比 pixelSplat 小 $10\times$ 快 $2\times$,关键差异就是把"猜深度"交给经典 MVS 几何。
§11Splatter Image — 一张图 = 一组 Gaussian 像素
Splatter Image
— Ultra-Fast Single-View 3D Reconstruction
单图→3D 之前要么 SDS 慢,要么 PixelNeRF 慢渲染。能不能一次前向得 Gaussians?
关键想法:把"3D 表征"做成"一张图像"——每个输入像素回归一个 3D Gaussian 的全部参数
(深度偏移、缩放、四元数、$\alpha$、SH)。一个 U-Net 出多通道"Splatter Image",
反投回 3D 即得 Gaussian 云。588 fps 渲染,10 ms 重建。
vs PixelNeRF:3DGS 比 NeRF MLP 快两个数量级;vs DreamGaussian:零优化 vs 数分钟。
CODE · Splatter Image 的 per-pixel Gaussian 头
class SplatterImage(nn.Module):
def forward(self, image):
feat = self.unet(image) # [B, 256, H, W]
params = self.head(feat) # [B, 12, H, W]
depth, scale, quat, opacity, sh = split(params, [1, 3, 4, 1, 3])
# 反投:每像素 ray 沿深度推到 3D,得到 Gaussian 中心
rays = make_rays(image_size, intrinsics)
centers = camera_origin + rays * depth.exp()
return Gaussians(xyz=centers, scale=scale.exp(),
quat=quat / quat.norm(), opacity=opacity.sigmoid(),
sh=sh)
§12pixelSplat & MVSplat — 双视图场景重建
pixelSplat
— 3D Gaussian Splats from Image Pairs
2 张姿态已知的场景图直接回归深度会陷局部最优——一个小深度变动产生大像素位移,梯度无意义。
关键想法:① Epipolar Transformer,image A 的像素只沿其在 image B 上的极线 attention;
② 深度上分类 + 重参数化:每个深度桶都放一个 Gaussian,opacity = 概率——让 Gaussians "通过 opacity 出生/消失",
把不可微的硬采样变可微。
125M 参数;只能 2 视图;但首次让稀疏视图场景级 3DGS 鲁棒。
MVSplat
— Efficient 3D Gaussian Splatting from Sparse Multi-View Images
关键想法:把 pixelSplat 那一套花活全部替换成经典 MVS 代价体(plane sweep + 跨视图特征相似度),
$10\times$ 小、$2\times$ 快、质量更高。归纳偏置 = 经典几何,不是更复杂的 attention。
用"几何先验"代替"复杂学习模块":模型变小,效果反而更好。
CODE · MVS cost volume 构建
def build_cost_volume(features, intrinsics, extrinsics, depth_hyps):
B, V, C, H, W = features.shape
D = depth_hyps.shape[0]
cost = features.new_zeros(B, D, C, H, W)
for d in range(D):
depth = depth_hyps[d]
for v in range(1, V):
# 把 ref view 每像素 unproject 到 depth=d,再 project 到 src view
warped = homography_warp(features[:, v], depth, intrinsics, extrinsics[:, v])
cost[:, d] += (features[:, 0] - warped).abs()
cost[:, d] /= (V - 1)
return cost # [B, D, C, H, W]
§13LGM · GRM · GS-LRM — Transformer 三剑客
LGM
— Large Multi-View Gaussian Model
关键想法:非对称 U-Net 吃 4 个固定方位的 multi-view diffusion 输出(MVDream / ImageDream),
吐物体级高分辨率 3DGS,~5 秒。非对称(深 encoder + 浅 decoder)让 $512^2$ 训得动。
第一个把 Gaussians 推到 $512^2$ 分辨率训练;与多视图扩散无缝拼接。
GRM
— Large Gaussian Reconstruction Model
关键想法:纯 ViT,patch → cross-view attention → 每像素一个 Gaussian + windowed-attention 上采样器,0.1 秒重建。
把 LRM 的 triplane 换成 pixel-aligned Gaussians,去掉了 triplane 的分辨率瓶颈。
GS-LRM
— Large Reconstruction Model for 3D Gaussian Splatting
关键想法:最朴素的 transformer——patchify + 24 层 4096 维 ViT + Plücker 位置编码 + 线性解码。
什么花活都不要,靠堆 transformer 解决。在物体和场景上都能用(关键差异:以往 LRM 都只能物体)。
证明了大力出奇迹:plain transformer + 规模 > 任何特殊架构 (cost volume、epipolar attention)。
§14AGG & TriplaneGaussian — 混合显式/隐式
AGG
— Amortized Generative 3D Gaussians (NVIDIA)
单图 → coarse 点云(位置)+ texture triplane(颜色/形状)→ point-voxel super-resolver 上采样。
把 Gaussian 拆成"几何在哪"和"长什么样"两个子问题。
TriplaneGaussian (TGS)
— A New Hybrid Representation
两个 transformer decoder:point decoder 出显式点云 + triplane decoder 出隐式特征,每个点查 triplane 得 Gaussian 属性。点不一定在输入射线上,可以出现在遮挡区。
§15NoPoSplat & AnySplat — 抛弃位姿假设
NoPoSplat
— No Pose, No Problem
关键想法:不需要相机位姿——把"第一张图的相机系"当成 canonical,所有 Gaussian 都在这个系里预测,
只用 photometric loss 训。DUSt3R 风格 backbone + per-pixel Gaussian 头;
其他视图的 pose 通过预测出的 Gaussians 做后置 PnP 恢复。
惊喜:在低重叠场景下 pose-free 反而比 pose-required 基线好——因为 pose 估计本身在那种场景就不靠谱。
AnySplat
— Feed-Forward 3DGS from Unconstrained Views
任意数量、未标定、无位姿的图像 → 一次前向出 3DGS + 所有相机内外参。最接近"丢一段手机视频进去出 3D 场景"的前馈方法。
differentiable voxelization 把"每像素一个 Gaussian $\times$ 多视图" merge 到 voxel 里,保持计数有界。
§16InstantMesh · SF3D · Edify — 工业化前馈
InstantMesh
多视图扩散 + LRM + 可微等值面提取,~10 秒图→mesh。
Stable Fast 3D (SF3D)
0.5 秒单图→textured mesh,含 UV 解包 + delight,可重新打光。
Edify 3D (NVIDIA)
NVIDIA NIM 工业栈:多视图 RGB+normal 扩散 → 3D 重建 → PBR,~2 分钟。
§17Long-LRM & LGTM — 突破规模与分辨率
Long-LRM
把 GS-LRM 从 4 视图扩到 $32 \text{ view} \times 960 \times 540 \times 360^{\circ}$ 场景,1 秒内重建——比 per-scene 3DGS 快 $800\times$。
Mamba2 块(线性时间)交替 Transformer 块 + token merging + Gaussian pruning。
LGTM— Less Gaussians, Texture More
pixel-aligned 在 4K 时 OOM;让少而大的 Gaussian 携带一个 texture patch,4K 前馈可行。
§18VolSplat & GlobalSplat — 重新设计 Gaussian 计数
"每个输入像素一个 Gaussian"在 2024 是金科玉律,但有两个根本问题:(a) 视角浪费(平面也分配很多),(b) 遮挡处没有。2025–26 打破了这条规则:
PixelGaussian
在 pixel-aligned 之上加 splitting/pruning,按几何复杂度自适应分配 Gaussian。
VolSplat
直接预测一个 3D voxel 网格,每个 voxel 出一个 Gaussian——密度跟随场景几何,不跟随像素。
GlobalSplat
不要 pixel-aligned,也不要 voxel-aligned——把场景压成 ~256 个 global tokens,再解码到 $\le 16\text{K}$ Gaussians。
4 MB 资产,<78 ms 前向。
§19原生 3D 扩散:核心矛盾"3DGS 不像图像"
2D 扩散之所以好用,是因为像素在规则网格上 + 通道语义一致 + 邻居相关。3DGS 完全不满足:
- $N$ 可变(椅子 1k,房间 1M)——标准 diffusion 需要固定 shape
- 集合无序——diffusion 需要 canonical 顺序
- 59 个通道,含义混杂——简单拼接让噪声 schedule 失效
- 空间相关不在数组上——内存里挨着的两个 Gaussian 不一定在 3D 里挨着
每篇原生 3D 扩散论文都在回答一个问题:怎么把 Gaussians 变成 diffusion 喜欢的形状?
Demo 4 · 同一物体,四种表征方式
sparse SLAT 把 Gaussians 只放在表面相交的体素——这是 2025–26 的"获胜"思路。
Gaussian Atlas 完全相反,把 3D 压平到 2D 直接用 SD 预训练。
| 家族 | 把 Gaussians 变成… | 代表作 |
| 密集体素 | 把 N 个 Gaussian 用 OT 排进 $N^3$ 体素 | GaussianCube |
| 稀疏体素 + 特征 | 只在表面体素放,每个携带学到的潜变量 | L3DG, TRELLIS, TRELLIS.2 |
| 2D 投影 / atlas | 把 3D 拍到 2D 图上,复用 SD | Gaussian Atlas, DiffSplat, Atlas Gaussians |
| Triplane | 把 3D 渲到三个正交 2D 平面 | DirectTriGS |
| 函数 / 点云潜空间 | 把 Gaussian 表示成空间函数 / 点云 token | DiffGS, GaussianAnything |
§20GaussianCube — 最干净的"密集体素"答案
GaussianCube
— Structuring 3DGS using Optimal Transport for Generative Modeling
如何让 3DGS 这种"无序变长集合"在 standard 3D U-Net 上 diffusion?
关键想法:每个场景拟合固定数量个 Gaussians,然后用最优传输把它们安排到 $N^3$ 体素的各个格子里——
剩下的事情交给一个 vanilla 3D U-Net。
- densification-constrained fitting:每个训练样本完全相同的 Gaussian 数
- OT 把 Gaussians ↔ voxel 一一映射,邻居在 3D 里也是邻居
- 标准 3D U-Net 扩散,无任何特殊架构
把"3DGS 不像 tensor"的难题完全放在数据预处理里解决,模型本身不用改。
CODE · OT 把 Gaussians 排进 voxel grid
def gaussians_to_cube(gaussians, N=32):
voxel_centers = make_grid(N) # [N^3, 3]
# 1. 计算 N^3 × N^3 的传输代价矩阵(欧氏距离)
cost = torch.cdist(gaussians.xyz, voxel_centers)
# 2. 解最优传输:每 Gaussian 分到一个 voxel,每 voxel 一个 Gaussian
perm = hungarian(cost)
# 3. 重排,得到 [N, N, N, 14] tensor —— 长得像 3D 图像
cube = gaussians.params[perm].reshape(N, N, N, -1)
return cube
§21L3DG & DiffGS — VQ-VAE 和神经函数
L3DG— Latent 3D Gaussian Diffusion
第一个能做整个房间的 GS 扩散:VQ-VAE 压成稀疏潜网格,sparse-conv 扩散。
DiffGS— Functional Gaussian Splatting Diffusion
把 splat 表示成 三个空间函数(GauPF 概率、GauCF 颜色、GauTF 变换),diffusion 在 latent 上跑,采样时按需提取任意数量 Gaussian。
§22GaussianAnything — 永远点云结构的潜空间
GaussianAnything— Interactive Point Cloud Latent Diffusion
坚持 permutation-invariant:latent 是一组小的点云 token;cascaded diffusion 先生成几何潜再生成纹理潜。
所有阶段都真正对点的排列对称(GaussianCube/TRELLIS 都靠 voxel index 强加顺序)。
§23DirectTriGS · Gaussian Atlas · DiffSplat — 拍成 2D 用 SD
DirectTriGS
用 triplane(三张正交 2D 特征图)表示 Gaussian field;VAE 压缩后跑潜扩散。
Gaussian Atlas
最激进的 2D 投影:球面 OT 把 Gaussians 映到 2-球面,再拍成 2D 网格,直接 fine-tune Stable Diffusion 生成它。
DiffSplat · Atlas Gaussians
DiffSplat:fine-tune 文生图模型,让它生成多视图 Gaussian 网格图。Atlas Gaussians:少量 patch latents → 任意 UV 采样解码到无限 Gaussians。
§24TRELLIS & TRELLIS.2 — 当前王者
TRELLIS
— Structured 3D Latents for Scalable and Versatile 3D Generation
关键想法:SLAT = (稀疏激活的表面体素结构) + (每个 voxel 一个来自 DINO 多视图特征的潜向量)。
Rectified flow transformer 在 SLAT 上跑,再用不同 decoder 输出 NeRF / 3DGS / mesh。
- 用 DINO 在多视图渲染图上抽 voxel 特征
- 两个串联 rectified-flow transformer 分别去噪"哪些 voxel 激活"和"每个 voxel 的特征"
- 三个独立 decoder 分别输出 NeRF/GS/Mesh
结构和内容解耦:sparse voxel 管几何,pretrained 2D vision 特征管外观。这是 2025 整个领域的"获胜模板"。
CODE · SLAT 表示 (TRELLIS-style 简化)
class SLAT:
"""Sparse LAtent for 3D"""
coords: Tensor # [M, 3] int M 个激活 voxel 的整数坐标
latents: Tensor # [M, D] float 每个 voxel 一个 D 维特征
def encode(multi_view_images, vit_dino):
feats = [vit_dino(img) for img in multi_view_images]
voxels = surface_voxels(mesh)
for v in voxels:
v.latent = mean([sample(feats[k], project(v, cam_k)) for k in views])
return SLAT(voxels.coords, voxels.latents)
def generate(condition):
structure = flow_transformer_1(condition) # 哪些 voxel 激活
latents = flow_transformer_2(condition, structure) # 每个 voxel 的潜
return SLAT(structure, latents)
gs = decode_to_gaussians(slat)
mesh = decode_to_mesh(slat)
TRELLIS.2— Native and Compact Structured Latents
4B 参数,$1536^3$ 分辨率,原生 PBR (albedo+metallic+roughness+normal),含透明/开放表面——通过 "field-free" O-Voxel 和 $16\times$ sparse-VAE 实现。
放弃 SDF 隐场,只保留显式体素属性 + bidirectional mesh↔voxel 转换。
§25工业三剑客:Hunyuan · TripoSG · Step1X
这三个不是原生 Gaussian 扩散(原生表征都是 SDF/TSDF + 单独 paint),但定义了 2025–26 的工业基线。最终可导出 GS。
Hunyuan3D 2.0 / 2.1 / 2.5 / 3.0
最高调的开源工业 3D 生成栈:vector-set ShapeVAE → Hunyuan3D-DiT → Hunyuan3D-Paint。
2.5 上 10B 参数 LATTICE 骨干,3.0 达 $1536^3$。
TripoSG
把 Rectified Flow(SD3/FLUX 的同款)正经移植到 3D 形状,2M 资产精选数据集。
Step1X-3D
开源 TSDF + 单独纹理 + LoRA 控制,对标 Tripo 2.5 / Rodin 1.5。
§263DTopia-XL · Direct3D-S2 · Hi3DGen
3DTopia-XL
PrimX:每个原语是一个携带 SDF+RGB+material 的小 voxel;DiT 直接生成原语序列。
Direct3D-S2
Spatial Sparse Attention 让 $1024^3$ 体素 DiT 只用 8 张 GPU 就能训。
Hi3DGen
用 normal map 作为图像→3D 的桥梁:(image→normal) 和 (normal→3D) 分别训练,借力 2D normal 估计的细节先验。
§27GaussianGPT — 不做扩散,做自回归
GaussianGPT— Towards Autoregressive 3D Gaussian Scene Generation
关键想法:把 3DGS 离散 token 化(sparse-conv VQ-VAE),用 causal Transformer 做 next-token prediction。
支持任意截断/续写/温度采样——所有这些 diffusion 都不会原生支持。
第一篇真正"autoregressive 3DGS" foundation 模型——证明 diffusion 不是唯一的路。
§28LucidDreamer-Chung — 反复 inpaint + lift
物体方法不适用于场景:无界、相机轨迹复杂、inpainting、内存。从 §28 起的所有工作都在攻这四个问题。
LucidDreamer (Chung et al.)
— Domain-free Generation of 3D Gaussian Splatting Scenes
不用 SDS。两步循环:(1) 从新相机渲染当前点云 + SD inpainting 补孔,(2) monocular depth 把补出的 RGB 抬到 3D,对齐到已有点云。多轮后转 3DGS。
和 §7 的"另一个" LucidDreamer 是不同的论文(那是 SDS 物体版)。这是 inpaint 场景版。Janus 不存在因为每张新视图都是完整 2D 推理出来的。
§29DreamScene · DreamScene360 — FPS 与全景 init
DreamScene
Formation Pattern Sampling(多时间步 SDS 调度)+ 三阶段相机(物体→室内→全景)。后续版本 (2507.13985) 用 GPT-4 生成 layout。
DreamScene360 · SceneDreamer360
先生成 $360^{\circ}$ 全景图,monocular depth 把它抬成点云初始化 3DGS。规避相机轨迹问题(每个视角都是 pano 的一个窗)。
§30Director3D · SceneCraft — 学相机/学布局
Director3D
联合生成相机轨迹和 3DGS:Traj-DiT 把相机内外参当时序 token 去噪,GM-LDM 在轨迹子集上出 GS,SDS++ 在插值相机上精修。
SceneCraft
用 3D bounding-box 布局当结构条件,把多视图扩散和 ControlNet 串起来生成多房间复杂室内场景。
§31CAT3D & ReconFusion — 多视图扩散即先验
ReconFusion
3-9 张稀疏视图 → 让一个学习好的 "novel view diffusion prior" 在每个新相机上提供伪监督,正则化 NeRF/3DGS 重建。
CAT3D
把"3D 一致性"问题交给一个多视图扩散模型:给定输入图 + 目标位姿集,它联合采样多张一致图像,然后交给标准 3DGS 重建。一分钟出一个场景。
把"3D 一致生成"和"3D 重建"解耦,扔掉 SDS 优化循环——它是场景级的"获胜模板",后续 Bolt3D / FlashWorld 都沿用。
§32WonderJourney · WonderWorld — 永续探索
WonderJourney
每次生成一个"小场景块",LLM 决定下一个块是什么,VLM 验证后衔接成长漫游。
WonderWorld
10 秒内单图→可交互场景:Fast Layered Gaussian Surfels (FLAGS) 用扁平化分层 surfel 大幅加速。
§33Bolt3D & FlashWorld — 直接出 GS 场景
Bolt3D
用 2D latent diffusion 直接采样出一个完整 3DGS 场景,6.25 秒,没有任何 per-scene 优化。比基于多视图扩散 + 优化的方法便宜 $300\times$。
FlashWorld
7-9 秒文/图→场景。关键想法:在多视图生成的同时就生成 3DGS,而不是"先生成视图再重建"。比 WonderJourney 系列(~6 分钟)快 $100\times$。
Wonderland
让 LRM 直接吃 video-diffusion 的 latent(而不是 RGB)当输入,借助视频扩散的空间先验。
§34GaussianCity · WorldGen · SceneTransporter
GaussianCity
无界 $10 \text{ km}^2$ 城市单次前向:BEV-Point 中间表示保持显存常量;$60\times$ 快过 CityDreamer。
WorldGen (Meta)
文本→可在 Unity/Unreal 中直接跑的世界。模块化 pipeline:LLM 推理布局→骨架→扩散贴资产→分解到对象。
SceneTransporter
用最优传输把 DiT 里的 cross-attention 路由变成 1-to-1,从一张图分离出多个对象实例。
PhysGaussian
每个 Gaussian 既是渲染原语又是 MPM 仿真粒子——同一表示完成渲染和物理。
场景级的"获胜模板" (2025+)
多视图(或多视图视频)扩散一次性出 N 张一致图像,前馈 3DGS 重建一秒出场景。
CAT3D 是发明者,Bolt3D 把前馈做到 6 秒,FlashWorld 把"生成视图"和"生成 GS"合二为一。
per-scene SDS 在场景级已死。
§354D 的核心结构:canonical Gaussians $\times$ 形变场
几乎所有 4D-3DGS 工作都用同一套表示:维护一组规范坐标系下的静态 Gaussians,外加一个把它们从 $t=0$ 变形到 $t$ 的函数。
这个函数可以是 HexPlane(DG4D)、MLP(AYG/4Real)、或学到的 dense motion(4DGen)。
$$ G(\mathbf{x}, t) = G_0\big(\mathcal{D}(\mathbf{x}, t)\big), \quad \mathcal{D}\text{ 是形变场} $$
DreamGaussian4D
DreamGaussian 的 4D 版:静态 3DGS + HexPlane 形变场 + 视频扩散 SDS。把小时级降到分钟级。
4DGen
用户给一段单目视频做 grounding,不用让模型臆想 motion。
Align Your Gaussians (AYG)
同时用 text→image / text→video / text→multiview 三个扩散先验做 SDS;motion amplification 把动作放大。
§36STAG4D · SC4D · Animate3D — 中段精修
STAG4D
training-free:第一帧作为 temporal anchor 注入 self-attention,多视图扩散直接生成时空一致序列。
Animate3D
给定已有 3D 资产让它动:multi-view video diffusion + 4DGS 联合优化。
§37CAT4D · Diffusion4D — 多视图视频先验
CAT4D
CAT3D 的 4D 版:multi-view video diffusion 同时在任意相机和任意时间采样一致图像,deformable 3DGS 拟合。
Diffusion4D
fine-tune video diff 让它生成"绕轨"4D 视频,再 coarse-to-fine 4DGS 重建。
§38L4GM · 4Real · GenXD — 前馈与场景级
L4GM
第一个"前馈 4D 重建"模型:LGM + 时间 self-attention,~1 秒单目视频→动 GS。训练用 12M 视频。
4Real (Snap)
放弃多视图扩散,纯靠视频扩散(Snap Video)生成参考视频,再 freeze-time 子集重建出 canonical 3D,最后学时间形变场。
GenXD
3D 和 4D 是同一个问题,只是 "object motion strength = 0"。Multiview-temporal 模块解耦相机运动和物体运动。
§392025–26 前沿:Diff4Splat · 4DNeX · StreamSplat
SV4D 2.0
SVD 规模的多视图视频扩散,3D-attention + $\alpha$-blending;首个"生产级"开源 4D 模型。
4DNeX
单图→4D:fine-tune video diffusion 用统一 6D 表示 (RGB+XYZ),10M 4D 数据集。
Diff4Splat
video DiT latent → Video Latent Transformer 解释成时变点云特征 → 一次前向出 deformable 3DGS,30 秒。
StreamSplat
未标定视频流 → 在线 4D 3DGS。比优化方法快 $1200\times$。
Pixel-to-4D
单图 → deformable 3DGS scene + 可控相机 path,统一相机控制和图→视频生成。
§40Pixal3D — 2026 的主角 ⭐
Pixal3D
— Pixel-Aligned 3D Generation from Images
TRELLIS 系用 DINO 全局 embedding 做条件,输出与输入图常常"风格对但视角偏"。
能不能让 3D 表征的每个位置显式知道自己对应哪个像素?
关键想法:取消"图像通过 attention 注入 3D 扩散"的隐式条件——把每个图像特征显式
back-project 进 3D 特征体,建立像素 ↔ 体素的硬对齐,让正面达到近重建级保真度。
- 像素对齐稀疏 SDF VAE:每个候选体素在源图上 bilinear 采样对应像素的多尺度特征,构成 3D 特征体——天然 pixel-aligned。
- Back-Projection Conditioning:用相机几何把图像特征显式抬到每个 3D 位置(vs TRELLIS 用 cross-attention 隐式注入)。
- 两阶段稀疏扩散:先预测 coarse 结构,再 detail latent,最后解码出 mesh+PBR。
near-reconstruction-level 正面保真度 + 自然扩展到多视图、场景级(聚合 back-projected 特征体)。
背面仍是猜的,但远好于全局 embedding 条件。
CODE · Pixal3D 的 back-projection conditioning(核心思想)
def backproject_features(image, voxel_grid, K, RT):
# image: [H, W, C] 多尺度 2D 特征
# voxel_grid: [Nx, Ny, Nz, 3] 候选体素中心坐标 (世界系)
# 1. 把每个 voxel 中心投影到图像平面
cam_coords = (RT @ voxel_grid.reshape(-1, 3).T).T
pix = (K @ cam_coords.T).T
uv = pix[:, :2] / pix[:, 2:3] # 透视除法
# 2. 在该像素位置 bilinear 采样图像特征
feat = F.grid_sample(image.permute(2,0,1)[None], normalize_uv(uv))
# 3. 现在每个 voxel 都"知道"自己对应输入图哪个像素的特征
voxel_features = feat.reshape(Nx, Ny, Nz, C)
return voxel_features
# 在 latent diffusion 里,这个 voxel_features 不是被 attention 看一眼,
# 而是直接 concat 进 noisy latent 作为条件——这就是"显式对齐"。
为什么 Pixal3D 重要
它指明了 2026 的方向:不要再用全局 image embedding 当条件,
而要让 3D 表征的每个位置显式知道自己对应哪个像素。
这条原理跟 Gaussian 表示无关,TRELLIS 系的下一代极有可能照搬。
§41同时间窗口的其他亮眼工作
TRELLIS.2 (2025-12)
4B 参数、$1536^3$、O-Voxel 无场表示、原生 PBR 与透明材质。开源,MIT。详见 §24。
FlashWorld (ICLR'26 Oral)
从"先生成视图再 reconstruct"转向"边生成视图边 build GS",质量持平、速度 $100\times$。详见 §33。
GaussianGPT (2026-03)
用 next-token prediction 而不是 diffusion 生成 3DGS 场景;支持任意截断/续写/温度采样。详见 §27。
GlobalSplat (2026-04)
256 个 global token 直接解码到 $\le 16\text{K}$ Gaussians,4 MB 资产,<78 ms 前向。详见 §18。
如何站在 2026 看历史
回头看,从 2023-09 的 DreamGaussian 到 2026-05 的 Pixal3D,整个领域走的弧线是:
per-prompt 优化 → 数据驱动前馈 → 原生 3D 扩散 → 结构化稀疏潜空间 → 显式像素-3D 对齐。
SDS 退场,video diffusion 接管"补未见区域"的责任,sparse SLAT 接管"3D 怎么 tensor 化"的责任,
像素回投接管"生成保真度"的责任。
附录 A交互式方法对比
挑两个方法在五个轴上比一比:速度、质量、场景规模、多视角友好度、开源度(满分 9)。
Demo 5 · 雷达图对比
数值为主观估计,仅用于直觉比较,不代表精确 benchmark。
附录 B关键概念速查
SDS (Score Distillation Sampling)
用冻结的 2D 扩散模型当"裁判"。开放词汇 3D 的开端,但慢、Janus、过饱和。DreamFusion 起源。
VSD (Variational Score Distillation)
SDS 当 3D 是点估计;VSD 当分布。LoRA 跟踪当前渲染分布的 score,用差分代替随机噪声残差——CFG=7.5 就够,颜色自然。ProlificDreamer。
ISM (Interval Score Matching)
用 DDIM 反演把随机噪声换成确定性轨迹,再在两个 step 之间 score 差。保留 LucidDreamer 的细节,不需要 LoRA。
球谐函数 SH
用一组角度上的基函数(48 个系数 $\approx$ 3 阶)表示视角相关颜色。Gaussians 的颜色 $c(\mathbf{d}) = \sum_i Y_i(\mathbf{d}) c_i$。
Densification / Pruning
3DGS 优化里的两个 trick:梯度大的位置 split/clone 增加 Gaussians;$\alpha$ 小的删除。所有 SDS-3DGS 方法都用。
Plücker Ray Embedding
把每条 ray 用 6 维 Plücker 坐标(方向 + 方向 $\times$ 原点)编码——transformer 经典的相机注入方式。LGM / GS-LRM / GRM 全用。
Cost Volume (Plane Sweep)
沿 ray 假设 $D$ 个深度,每个深度上 warp 邻视图特征求相似度 → $[D, H, W]$ 张量。经典 MVS 几何,MVSplat 把它复活到 3DGS。
Rectified Flow
取代 DDPM 的一种 flow matching:训一个直线 ODE,从噪声到样本"走直线",采样步数极少。SD3 / FLUX 同款;TRELLIS、TripoSG 等都用。
SLAT (Structured Latent)
TRELLIS 提出的核心表征:稀疏体素 (3D 结构) + 每个 voxel 一个 latent(外观特征)。2025 年的事实标准。
Multi-View Diffusion
一种 2D 扩散变种,一次输出 4-16 张同一物体的不同视角图,跨视图自洽。MVDream / ImageDream / Zero123++ / Era3D。是 LGM / GRM / InstantMesh 等前馈模型的图像源。
Surfels / 2DGS
把 3D 椭球塌缩成 2D 圆盘,强制贴在表面——几何更准、可直接 mesh 化。WonderWorld、GaussianAnything 都用 surfel 变种。
附录 C参考文献(按家族)
3DGS 本体
综述
SDS 家族
前馈家族
原生 3D 扩散
场景级
4D 动态