NeRF 与 3D 高斯泼溅
NeRF 与 3D 高斯泼溅 (3D Gaussian Splatting) - 神经渲染新范式
引言:新视角合成与神经渲染
新视角合成(Novel View Synthesis) 的目标:给定一个场景的若干张已知视角照片,合成出任意新视角下的图像。
传统做法(多视图立体 + 网格重建 + 纹理)在复杂几何、半透明、毛发、反射上很吃力。神经渲染换了思路:
不重建显式网格,而是学习一个可微的场景表示,让它在已知视角下渲染出的图像匹配照片;训练好后就能渲染新视角。
NeRF 用隐式神经场表示,3DGS 用显式高斯点云表示 —— 这是两者最根本的分野。
一、NeRF(Neural Radiance Fields)
核心思想:场景 = 一个 5D 连续函数
NeRF 用一个 MLP(多层感知机) 把场景表示为一个连续函数:输入空间位置与观察方向,输出该点的颜色与体密度。
- 输入:3D 位置 + 2D 观察方向 。
- 输出:RGB 颜色 (与视角相关,能表现高光/反射)+ 体密度 (与视角无关,是几何)。
- 整个场景就"编码"在 MLP 的权重 里 —— 这是隐式表示。
体渲染:如何从场看到像素
要渲染一个像素,从相机沿该像素方向投出一条光线 ,在光线上采样若干点,查询 MLP 得到各点 ,再用体渲染积分累积成像素颜色:
- :密度,越大越"实"。
- :透射率,光走到 处还剩多少没被挡住(前面越实、 衰减越快)。
- 直觉:每个采样点的贡献 = 它的颜色 × 它的密度 × 光能到达它的概率。离散化后就是沿光线的加权和( 合成)。
下图展示沿一条光线的采样、密度、透射率与权重:

训练:可微渲染 + 光度损失
整个渲染过程可微,于是用"渲染结果 vs 真实照片"的光度损失反传、优化 MLP 权重。相机位姿通常由 COLMAP 等 SfM 预先估计。
两个关键技巧
- 位置编码(Positional Encoding):直接把低维坐标喂 MLP 会丢高频细节(MLP 有低频偏好)。用一组不同频率的 把坐标升维:
才能重建清晰纹理与边缘。
- 分层采样(Hierarchical Sampling):先用 coarse 网络粗采样估计密度分布,再据此在"有内容"处 fine 网络加密采样,把算力花在刀刃上。
优缺点
| 优点 | 缺点 |
|---|---|
| 画质高、能表现视角相关效果与半透明 | 训练慢(原版数小时~一天) |
| 表示紧凑(一个 MLP,存储小) | 渲染慢:每像素每光线要几十~上百次 MLP 查询,难实时 |
| 连续表示、可插值 | 原版静态场景、单场景一模型 |
后续变体(简述)
- Instant-NGP:用多分辨率哈希编码替代纯 MLP,训练/渲染提速几个数量级(秒级训练)。
- Mip-NeRF / Mip-NeRF 360:解决多尺度走样、无界场景。
- 动态 NeRF、可泛化 NeRF 等大量后续工作。
二、3D 高斯泼溅(3D Gaussian Splatting, 3DGS)
3DGS(2023)针对 NeRF 的渲染慢痛点,换用显式表示 + 光栅化,实现实时渲染且质量相当。
核心思想:场景 = 一堆各向异性 3D 高斯
用大量(常数百万个)3D 高斯基元显式表示场景。每个高斯有:
| 参数 | 含义 |
|---|---|
| 位置 | 3D 中心 |
| 协方差 | 形状与朝向;分解为旋转 + 缩放 ()→ 各向异性椭球 |
| 不透明度 | 透明度 |
| 颜色(SH 系数) | 用球谐表示视角相关颜色 |
一个 3D 高斯在空间的分布:
一簇形状、朝向各异的各向异性 3D 高斯(协方差决定椭球的拉伸与旋转):

这里用球谐表示随观察方向变化的颜色,与 PBR 的漫反射 IBL、全局光照 GI 的 Light Probe 是同一套球谐工具。
泼溅光栅化:为什么能实时
3DGS 不做光线步进,而是把 3D 高斯投影(splat)到屏幕当成 2D 高斯来光栅化:
- 3D 协方差经投影得到 2D 屏幕空间协方差(一个椭圆"泼点")。
- 按深度排序后做 α 混合(和半透明排序类似,呼应渲染管线)。
- 全程是光栅化 + 排序 + 混合,高度并行、GPU 友好 → 实时(而非 NeRF 的逐点 MLP 查询)。
训练:可微光栅化 + 自适应密度控制
- 从 SfM 稀疏点云初始化高斯,光栅化同样可微,反传优化每个高斯的参数。
- 自适应密度控制(Adaptive Density Control):细节不足处克隆/分裂出更多高斯,透明/冗余的剪枝掉 —— 动态调整高斯数量与分布。
优缺点
| 优点 | 缺点 |
|---|---|
| 实时渲染(光栅化,非逐点查询) | 存储大:数百万高斯,显存/磁盘占用高 |
| 训练相对快(分钟级)、质量与 NeRF 相当或更好 | 编辑困难(一堆无结构高斯点,不像网格好改) |
| 显式表示,易与传统光栅管线结合 | 原版静态场景为主;对未见区域/稀疏视角外推弱 |
三、NeRF vs 3DGS 对比
| 维度 | NeRF | 3D 高斯泼溅 |
|---|---|---|
| 表示 | 隐式(MLP 神经场) | 显式(3D 高斯点云) |
| 渲染方式 | 体渲染 + 光线步进(逐点查 MLP) | 泼溅光栅化 + 深度排序 α 混合 |
| 渲染速度 | 慢(原版难实时;Instant-NGP 提速) | 实时 |
| 训练速度 | 慢(原版;Instant-NGP 秒级) | 较快(分钟级) |
| 画质 | 高 | 高(相当或更好) |
| 存储 | 小(一个 MLP) | 大(数百万高斯) |
| 可编辑性 | 差(隐式) | 差~中(显式但无结构) |
| 与传统管线结合 | 难 | 较易(本质是光栅化基元) |
一句话:NeRF 用"隐式神经场 + 体渲染"换来紧凑表示但慢;3DGS 用"显式高斯 + 光栅化泼溅"换来实时但占空间。3DGS 目前是实时新视角合成的热门方向。
四、应用与生态
- 三维重建 / 场景捕捉:用手机/相机多角度拍摄即可重建可自由漫游的场景。
- 数字资产 / 文博 / 房产 / 影视:真实场景快速数字化。
- 发展方向(演进快,hedge):动态/4D(含时间的场景)、可编辑/可组合、大规模城市级、与网格/传统管线混合渲染、压缩与流式化等。
五、与传统渲染的关系
- 范式差异:传统实时渲染是"已知几何/材质 → 光栅化/光照";NeRF/3DGS 是"从照片反推场景表示 → 渲染新视角",属于逆向、数据驱动的路线。
- α 混合与排序:3DGS 的深度排序 + α 混合,与传统半透明渲染同源(见渲染管线)。
- 球谐(SH):3DGS 用 SH 表视角相关颜色,与 PBR 漫反射 IBL、全局光照 GI 的 Light Probe 是同一数学工具。
- 性能视角:3DGS 的实时性、存储与带宽权衡,同样适用性能分析的思路。
附:核心概念速查
| 概念 | 说明 |
|---|---|
| 新视角合成 | 由若干已知视角照片合成任意新视角图像 |
| NeRF | 用 MLP 把场景表示为 5D 连续场 |
| 体渲染 | 沿光线按透射率 + 密度 累积颜色 |
| 位置编码 | 用多频 sin/cos 升维,补回高频细节 |
| 分层采样 | coarse 估分布 → fine 加密,省算力 |
| 3DGS | 用大量各向异性 3D 高斯显式表示 + 泼溅光栅化 |
| 泼溅(Splatting) | 3D 高斯投影成 2D、排序 α 混合,实时 |
| 自适应密度控制 | 训练中克隆/分裂/剪枝高斯 |
| SH 颜色 | 球谐表视角相关颜色(同 PBR/GI 的 SH) |
总结
- NeRF 开创了神经渲染范式,用 MLP 将场景编码为隐式 5D 神经辐射场,通过可微体渲染从多视角照片训练,画质高但渲染慢。
- 3D 高斯泼溅(3DGS)以显式各向异性 3D 高斯基元替代隐式场,通过泼溅光栅化实现实时渲染,训练更快、质量相当。
- 位置编码和分层采样是 NeRF 的关键技巧,弥补了 MLP 的高频细节缺失并优化了采样效率。
- 3DGS 的球谐颜色表示与 PBR/全局光照中的球谐是同一数学工具,α 混合与半透明渲染同源。
- 表示方式的根本差异(隐式 vs 显式)决定了渲染速度、存储占用和可编辑性上的不同取舍。
- 当前方向包括动态/4D 场景、可编辑表示、大规模场景、压缩流式化以及与传统渲染管线混合。
