先记住一句话

NeRF 用神经网络隐式表示连续 radiance field,3DGS 用显式可优化高斯集合快速 rasterize;world model 则学习带时间与动作条件的状态转移,而不只是静态新视角渲染。

多视角图像 / 轨迹3D 或 latent 表示相机 ray / 动作条件渲染 / rollout像素 loss / control objective
NeRFray samples → MLP → volume composite
|
3DGSGaussians → projection → alpha blend
|
World modelstate + action → next state / observation
前两条主要改变观察视角;第三条沿时间推进,并要求动作真正改变预测。

1. Novel view synthesis 的输入输出

给定同一静态场景的多张图片及相机内外参,目标是在未拍摄的相机位姿合成图片。监督信号仍是 2D 像素,但不同视角共享同一个 3D 场景,因此正确模型必须建立跨视角一致表示。

常见假设包括:相机标定较准、场景在拍摄期间近似静态、视角覆盖足够,以及外观变化可由 view direction 建模。动态物体、曝光变化和稀疏视角会破坏这些假设。

例 1:一条相机 ray

相机原点 $o=[0,0,0]$,单位方向 $d=[0,0,1]$,ray 为 $r(t)=o+td$。在深度 $t=[1,2,3]$ 采样,3D 点依次为 $[0,0,1]$、$[0,0,2]$、$[0,0,3]$;这些坐标和观察方向一起输入 NeRF。

2. NeRF:坐标进去,密度和颜色出来

NeRF 用 MLP 表示连续函数:

$$F_\theta(\mathbf x,\mathbf d)\rightarrow (\sigma,\mathbf c)$$

$\mathbf x$ 是 3D 位置,$\mathbf d$ 是观察方向;密度 $\sigma$ 通常只依赖位置,颜色 $\mathbf c$ 可依赖方向以表达高光。

对相机每条 ray,在多个深度采样点查询 MLP,再按体渲染累积:

$$C(\mathbf r)=\int T(t)\sigma(\mathbf r(t))\mathbf c(\mathbf r(t),\mathbf d)\,dt$$

$T(t)$ 表示 ray 到该点尚未被遮挡的透射率。渲染颜色与真实像素做 MSE,梯度穿过积分和 MLP,最终场景结构在无需直接 3D 标签的情况下被优化出来。

原始 NeRF 对坐标做高频 positional encoding,否则普通 MLP 更容易学习低频平滑函数。它的表示连续且画质好,但每个像素要沿 ray 多次查询网络,训练和渲染很慢。

例 2:离散体渲染

三个采样点的 alpha 为 $[0.2,0.5,1]$,标量颜色 $[1,0.6,0.2]$。权重 $w_i=T_i\alpha_i$:

$T_1=1,w_1=0.2$。

$T_2=(1-0.2)=0.8,w_2=0.8\times0.5=0.4$。

$T_3=0.8(1-0.5)=0.4,w_3=0.4\times1=0.4$。

像素颜色 $C=0.2\times1+0.4\times0.6+0.4\times0.2=0.52$;权重和为 1。

3. 3D Gaussian Splatting:显式 primitives

3DGS 用大量各向异性 Gaussian 表示场景。每个 Gaussian 有中心、3D covariance/scale+rotation、opacity 和 view-dependent color coefficients。渲染时把 3D Gaussian 投影成屏幕上的 2D ellipse,按深度排序后 alpha composite。

3D Gaussian set
  → project to camera
  → tile/bin visible splats
  → depth-aware alpha blending
  → image

优化过程中可 densify 需要更多细节的区域,也可 prune 贡献小的 Gaussians。显式表示配合 GPU rasterization,使 3DGS 比原始 NeRF 更容易实时渲染。

例 3:front-to-back alpha blending

前后两个 splat 的 alpha 为 0.6、0.5,RGB 简化成标量颜色 1.0、0.2,黑背景:

$$C=0.6(1.0)+(1-0.6)0.5(0.2)=0.64$$

后层贡献只有 $0.4\times0.5=0.2$ 权重;深度排序改变结果,因此不能随意交换 splat 顺序。

4. NeRF 与 3DGS 的核心取舍

NeRF3DGS
表示MLP 隐式连续函数显式 Gaussian 集合
渲染ray sampling + volume renderingproject + splat + alpha blend
速度原始版本慢适合实时 rasterization
存储/编辑网络参数紧凑但难直接编辑primitives 较直观,但数量和显存可很大

二者从图像监督学出的首先是“足以重建视图的 radiance representation”,不自动等于干净 mesh、物理材质或可碰撞几何。Floaters、错误深度或 view-dependent tricks 仍可能渲染得看似正确。

5. World model 多了哪一维?

静态场景表示回答 $p(o\mid camera)$;world model 还要建模时间和动作:

$$p(s_{t+1},o_{t+1}\mid s_{\le t},o_{\le t},a_{\le t})$$

其中内部状态 $s_t$ 可以是显式物理状态、紧凑 latent、token,或直接高维视频表示。模型可预测:

  • 像素未来:直观但计算贵,容易把容量花在纹理。
  • latent future:压缩、便于长 rollout,但 latent 必须保留决策相关信息。
  • 状态/奖励:适合规划,却依赖可获得的状态定义和监督。

例 4:动作条件的线性玩具 world model

状态是位置 $s_t=1.0$ m,动作是速度命令 $a_t=0.3$ m/s,$\Delta t=0.5$ s。若模型学到 $s_{t+1}=s_t+\Delta t\,a_t$:

$$s_{t+1}=1.0+0.5\times0.3=1.15\text{ m}$$

同一状态下动作 $-0.3$ 会预测 0.85 m;若模型忽略动作,两者无法区分,就不能用于控制。

6. “会生成视频”就是 world model 吗?

高质量视频生成说明模型掌握了大量视觉与运动统计,但用于控制还需要更严格条件:动作可控、跨长时域一致、对象恒常、几何与接触合理,并能表达不确定性。只生成看似真实的未来,不代表它能区分“我的动作造成什么变化”。

在 model-based control 中,可对候选动作 rollout,使用 reward/value 评分后选择;但模型误差会随 imagined horizon 累积,planner 也可能利用模型漏洞找到现实中无效的动作。

例 5:候选 rollout 与误差累积

两条动作序列的模型预测总 reward 分别为 3.2、2.7,planner 选第一条。但若每步状态预测有最多 0.05 m 偏差,10 步最坏线性累积可到 0.5 m。闭环重规划用真实新观测不断纠偏,通常比一次执行长计划稳健。

7. 与机器人的连接

机器人需要同时处理三种表示:空间几何决定“东西在哪里”,动力学决定“动作后会怎样”,策略决定“下一步做什么”。NeRF/3DGS 更靠近空间重建,world model 更靠近动力学预测;它们可共享视觉 encoder,但目标并不相同。

常见误解:

新视角渲染得逼真,不足以证明表示适合抓取或导航;控制关心的碰撞、尺度、遮挡后物体和接触状态可能并未被可靠恢复。

自测:先算后展开

1. NeRF 的 density 和 color 在体渲染中分别起什么作用?

Density 决定沿 ray 各处的吸收/遮挡和权重,color 是该处从指定方向观察的辐射颜色;二者共同积分成像素。

2. 3DGS 为什么能比原始 NeRF 快?

它用显式 Gaussian 投影和 GPU rasterization,而不是每个像素沿 ray 多次运行 MLP。

3. 一个用于控制的 world model 必须比视频生成多回答什么?

它必须可靠建模动作条件下的未来与不确定性,使预测能支持规划,而不只生成视觉上合理的无条件视频。

4. alpha=0.25 的前层后,背景还剩多少透射率?

$1-0.25=0.75$。

5. 每像素 64 个 NeRF 样本,800×600 图像需多少次场查询?

$800\times600\times64=30{,}720{,}000$ 次,说明原始逐 ray MLP 渲染昂贵。