写在前面

图生三维大概有五个阶段:
第一阶段是古法时期(传统的多视图几何)[2010-2020]:使用SFM, MVS从图片中恢复相机位姿,然后生成稠密点云,现在已经非常的成熟,有colmap, openmvg等非常优秀的开源工具,还有视觉slam等一系列的工作(如果这种也算重建的话);
第二阶段是深度学习时期[2018-2021]:利用大量的二维数据进行单目深度估计,以及使用gan模型,进行3d gan生成的尝试;
第三阶段是神经渲染时期[2020-2023]:利用Nerf的可微分体渲染对单个场景进行过拟合,输出神经辐射场,随后也衍生出了 3DGS 等更高效的显式/混合表达;
第四个阶段是2D 先验(Diffusion)时期[2022-2024]:二维扩散模型的大火让研究者发现了从二维知识蒸馏监督三维生成的可行性,除了三渲二,还能“二训三”(代表就是引入 SDS 损失的 DreamFusion);
第五阶段是 3D 原生大模型(LRM/DiT)时期[2023-至今]:随着 3D VAE 的验证、DiT 架构的完善、海量 3D 数据的积累以及 Triplane 等高效结构的广泛应用,直接进行“三维监督三维”成为了主流,图生三维真正开启了前馈生成的大模型时代。

后续行文整体分为这几个部分:预备知识、神经渲染、表面重建、生成模型。预备知识会介绍基础的三维表征,如何从隐式空间中提取mesh,以及一些主流模型范式与架构;神经渲染部分介绍Nerf和3DGS的详细原理;表面重建讲为了拿到高质量mesh进行了哪些尝试;生成模型则主要概述上面第四阶段和第五阶段的代表作。

1. 预备知识

1.1 基础的三维表征方案

a、显式表征: 多边形网格、点云、体素
显式表示(比如网格)对于人类很直观,但对于神经网络来说非常难生成和优化(因为点和面的数量、连接关系一直在变,不连续)。
b、隐式表征
神经网络更喜欢连续的,可微的表达, 即用隐式函数来表示3D表面。即定义一个 3D 空间的函数 $f(x,y,z)$,当这个函数的值等于某个特定常数 $c$ 时(通常是 $0$),这些点的集合就构成了物体的表面(Level set,水平集)。

SDF (Signed Distance Fields) 是一种特殊的隐式表示。对于空间中的任意一点 $(x, y, z)$,SDF 会输出一个数值 $D$:数值大小代表这个点距离物体表面最近的绝对距离,符号的正负代表这个点在物体内部($D < 0$)还是外部($D > 0$)。$D = 0$:点正好在物体的表面上(零面,Zero-level set)。

根据不同任务的需求,SDF 还可以变形:

  • TSDF (Truncated SDF,截断符号距离场):很多时候我们只关心物体表面附近的细节,离表面太远的空间毫无意义。TSDF 设置了一个阈值 $t$,把距离限制在 $[-1, 1]$ 之间。离表面远的统统截断,节省算力(常用于 Kinect 等深度相机的实时 3D 重建)。
  • Occupancy Fields (占用场):最暴力的简化版。不关心距离是多少,只关心“是”或“否”。如果在物体内或表面 ($SDF \le 0$),值为 $1$;如果在外部,值为 $0$。(这里引入了 场 的概念,场的介绍在第二章。)

c、参数化表示
比如参数化曲线和曲面Beizer curves, Catmull-Rom splines, B-spline curves, NURBS, etc.,但是和本次内容不太相关,跳过了。

当然了nerf,3dgs其实都是三维表征方案,但是它们可太不基础了:)

1.2 Marching Cubes

TL;DR: Marching Cubes是一种等值面提取(Isosurface Extraction)方案,它旨在从离散的占据网格(Occupancy grid)或标量场中重建出显式的几何边界。现代的各种神经方法最终输出的都是占据场或者SDF,可以理解为接入这个组件就可以生成显式的mesh了。

二维情况:退化为Marching Squares (MS)
Marching Squares将二维空间划分为规则的正方形网格。针对每个网格单元,算法评估其四个顶点的函数值,并根据符号(正或负,代表外部或内部)对顶点进行二值化分类。四个顶点共产生 $2^4 = 16$ 种状态组合。算法通过查询预先构建的包含这 16 种情况的查找表,确定网格边界上发生符号变化的边。随后,基于线性插值计算出精确的边界交点坐标,并将这些交点连接,形成闭合的二维等值线。

三维情况:Marching Cubes(MC)
空间被离散化为三维网格,基本单元为立方体。每个立方体具有 8 个顶点,产生 $2^8 = 256$ 种状态组合。通过应用旋转和镜像对称性,这 256 种组合被简化为 15 种基础情况。算法独立遍历空间中的所有立方体,利用查找表确定三角形面片在立方体内部的连接方式。该算法的局部独立性极大地提升了计算速度,并使其高度适合并行化处理。

缺陷与改进方案

  • 缺陷1:在 Marching Squares 和 Marching Cubes 的执行过程中存在拓扑二义性问题。当网格单元对角线上的顶点状态一致,而相邻顶点状态相异时,系统缺乏足够的信息来唯一确定面片的连接拓扑(即判断应该连接还是断开)。在 Marching Cubes 的 15 种基础情况中,存在 6 种具有二义性的情况,这可能导致最终生成的网格出现孔洞或错误的拓扑结构。
  • 改进:Marching Tetrahedra算法通过改变空间离散化方式来解决此问题。该算法将三维空间划分为四面体而非立方体。由于四面体仅有 4 个顶点,其内部的等值面相交情况更为简单,从几何与数学原理上完全消除了状态组合的二义性,从而保证了生成的网格具备严格的水密性和正确的拓扑结构。
  • 缺陷2:传统的 Marching Cubes 算法通过在网格边上进行线性插值来确定顶点位置。这种机制本质上具有平滑效应,导致算法无法准确还原原始几何模型中的尖锐特征(如直角、折痕),常在边缘处产生阶梯状伪影。
  • 改进:以 Dual Marching Cubes 和 Dual Contouring (DC) 为代表的对偶算法重构了顶点的生成逻辑。这类算法不再将顶点放置于网格边上,而是利用内部交点信息(通常结合法线数据,通过最小化二次误差函数 QEF)在每个包含边界的网格单元内部计算出一个特征顶点。随后,算法将相邻网格单元内部的特征顶点连接起来构成多边形面片。这种对偶机制能够极其精确地捕捉并重建几何模型的尖锐边缘。

各种基础几何表征之间如何相互转换?
1. 多边形网格(Mesh)→ 点云(Point Cloud):先进行多边形三角剖分(ear clipping),然后在三角面片上进行采样(基于重心坐标)。
2. 隐式表面(Implicit Surface)→ Mesh :使用 Marching Cubes 算法提取等值面。
3. 点云(Point Cloud)→ 隐式表面: 局部拟合方法:MLS、RBF; 全局方法:Poisson Surface Reconstruction; 体素方法:基于 TSDF 的融合(如 KinectFusion)。
4. 点云(Point Cloud)→ Mesh:间接方法:点云 → 隐式表面 → Mesh;直接方法:三角化(Delaunay: 适用于二维或局部参数化场景,以及其他的三角化方法)。

1.3 主流模型范式与架构

  • VAE (Variational Autoencoder, 变分自编码器):走向隐空间的先驱

    • 核心机制:传统的自编码器只是将图像压缩成一个固定的特征向量再还原。而 VAE 引入了概率论的思想,它的 Encoder(编码器)不输出固定的点,而是输出一个概率分布(通常是均值和方差)。在生成时,模型从这个分布中进行采样(Sampling),再由 Decoder(解码器)还原为图像。为了让反向传播能够穿透采样过程,VAE 引入了经典的“重参数化技巧(Reparameterization Trick)”。
    • 意义:VAE 最大的贡献在于构建了一个连续且结构化的隐空间(Latent Space)。这使得模型具备了真正的“生成”能力,而非单纯的“记忆”。如今大火的 Stable Diffusion(基于 Latent Diffusion),其第一步就是利用 VAE 将高维的像素图像压缩到低维隐空间中进行处理,极大降低了计算成本。
  • GAN (Generative Adversarial Network, 生成对抗网络):左右互搏的造假大师

    • 核心机制:GAN 彻底抛弃了传统的逐像素误差计算,引入了博弈论。它由两部分组成:Generator(生成器)负责凭空捏造数据,Discriminator(判别器)负责辨别数据是来自真实数据集还是生成器。两者在训练中“左右互搏”,生成器不断提升造假技术,判别器不断提升鉴谎能力,最终达到纳什均衡,生成器就能输出以假乱真的图像。
    • 意义:GAN 开启了高保真图像生成的时代。虽然它存在训练不稳定、模式崩溃(Mode Collapse)等缺点,但其生成的图像细节锐利、极其逼真。目前,GAN 的对抗损失思想仍常被作为附加模块,用于提升生成模型(或 3D 渲染结果)的高频纹理细节。
  • Transformer:大模型时代的绝对主宰

    • 核心机制:诞生于 NLP 领域的 Transformer 彻底抛弃了 RNN/CNN 等依赖局部或顺序计算的架构。它的核心是自注意力机制(Self-Attention):在处理一个序列时,序列中的每一个元素(Token)都会和所有其他元素计算相关性(注意力权重),从而获得全局上下文信息。
    • 意义:自注意力机制打破了长距离依赖的瓶颈,并且天然支持极高并发的矩阵运算,极其适合在大规模集群上“大力出奇迹”。它不仅是所有大语言模型(LLM)的基石,其架构的泛化能力也促成了视觉大模型的诞生。
  • ViT (Vision Transformer):降维打击,图像也是一串 Token

    • 核心机制:ViT 优雅地回答了“如何用 Transformer 处理图像”这个问题。它将一张完整的图像像切披萨一样切成一个个固定大小的图像块(Patches),然后将这些块展平并通过线性映射转化为一串向量(类似于 NLP 中的单词 Token),最后加上位置编码(Positional Embedding),直接送入标准的 Transformer 架构中进行特征提取。
    • 意义:ViT 证明了在海量数据面前,CNN 曾经引以为傲的“归纳偏置(如平移不变性)”是不必要的。纯 Transformer 架构在视觉任务上的上限远高于 CNN。在 LRM 等 3D 前馈重建模型中,常用来提取多视角特征的 DINOv2 等预训练模型,其底层架构正是 ViT。
  • MAE (Masked Autoencoder, 掩码自编码器):视觉领域的完形填空

    • 核心机制:MAE 是一种极其高效的自监督学习范式。它的做法非常极致:将图像切块后,随机掩码(Mask)掉极高比例(如 75%)的图像块,然后只把剩下的 25% 喂给 ViT 编码器,最后要求解码器根据这些支离破碎的线索,还原出完整的原图。
    • 意义:这种“地狱难度”的完形填空逼迫模型深刻理解了图像的全局语义、几何结构和物理常识。MAE 极大地加速了 ViT 的预训练过程,证明了自监督学习在视觉领域同样拥有巨大的潜力。
  • Diffusion Models (扩散模型):摧毁与重建的艺术

    • 核心机制:扩散模型的灵感来自热力学。它分为两个过程:前向过程(加噪),分多步缓慢地向真实图像中添加高斯噪声,直到图像变成一团纯噪声;反向过程(去噪),训练一个神经网络(通常是 U-Net),学习如何一步步从噪声中预测并剔除这些噪声,最终还原出清晰的图像。
    • 意义:扩散模型一举击败了 GAN,成为了目前 2D 图像和视频生成(如 Midjourney, Stable Diffusion)的绝对统治者。相比 GAN,扩散模型训练极度稳定,生成多样性极高,并且很容易通过文本、深度图等条件(Condition)对其生成过程进行精准控制。
  • DiT (Diffusion Transformer):当扩散遇上 Transformer

    • 核心机制:DiT 是一次强强联合的架构革命。它抛弃了扩散模型传统的 U-Net(基于 CNN)骨干网络,将核心的去噪网络替换为了 Transformer。它将带噪的隐空间特征“Patch化”,结合时间步(Timestep)和文本条件作为 Token 序列,利用 Transformer 强大的全局建模能力进行去噪预测。
    • 意义:DiT 继承了 Transformer 完美的“Scaling Law(缩放定律)”——模型越大、数据越多,效果就越好。它是目前最顶级的生成模型(如 OpenAI 的视频生成模型 Sora、Stable Diffusion 3)背后的核心架构,代表了目前视觉生成的最高技术水准。

2. 神经渲染

这一切的一切要从2020年的ECCV上发表的NeRF(Neural Radiance Field)说起。Neural Radiance Field翻译为神经辐射场 = 神经+辐射+场。

  • 什么是场:在空间(或时间)的每一个坐标点上,都有一个明确定义的物理量或数值,这就叫作“场”。比如你房间里的温度,空间中任何一个点都有一个温度值,这就是“温度场”<标量场>;风吹过,每个点都有风速和风向,有数值有方向,这就是“矢量场”。 一段音频(1D的时间场)、一张照片(2D的颜色场)、磁场/风场(3D的向量场),三维的参数化曲面(nub, 显式曲面),三维的符号距离场(sdf,隐式曲面)。

  • 什么是神经场:如果一个“场”的数值,是用一个神经网络来计算和表示的,那它就叫“神经场”。具体的,如果前面提到的sdf是通过神经网络实现的,也就是输入 3D 空间坐标 $(x, y, z)$,神经网络输出一个数字(该点距离物体表面的距离)。中间的映射关系f是通过神经网络来实现的,就是神经场,叫neural SDF。

  • 为什么要用神经场? 真实世界的自然信号是连续的波形; 传统的显式表示(像素、体素)是采样后的离散的信号,放大后会丢失细节; 而神经场使用神经网络作为一个连续的参数化函数,能够平滑且无限分辨率地拟合真实的自然信号

  • 什么是神经辐射场? 简单的说:nerf是一种特殊的神经场,用神经网络来表达3d场景,输入位置与角度,输出光场,颜色等信息(所谓的辐射), 这就是神经辐射场。下面详细展开。

2.1. NeRF 究竟在干什么?

新视角合成 (Novel View Synthesis)。什么是新视角合成?

  • 输入:一组已知相机参数(位置、朝向)的 2D RGB 图像。
  • 输出:一个 3D 场景的表示。基于这个表示,你可以任意移动虚拟相机,渲染出从未拍摄过的全新角度的照片。

2.2. NeRF 是怎么做的?

三个核心组件:神经体积表征+可微体积渲染+基于渲染的优化

  1. 神经体积表征:放弃传统的网格或体素,用一个连续的神经网络来隐式表达整个 3D 空间。
  2. 可微体积渲染:如何把 3D 空间变成 2D 照片?通过“发射光线”来采样并计算颜色。关键在于“可微”,这意味着渲染过程产生的误差,可以通过反向传播直接传递给神经网络进行修正。
  3. 基于渲染的优化:训练逻辑非常纯粹。网络“猜”一张图(生成的图片) -> 和真实的输入图对比算误差 -> 更新网络权重。

Q: 这里说的体积是啥意思?
A:只要在三维空间中定义了一个连续的密度函数 ( \sigma(x,y,z) ),这个空间就可以被视为体积(volume),也称为密度场(density field)或体积场(volumetric field)

下面逐个拆解各个组件:

2.2.1. 神经体积表征

NeRF 将 3D 场景严格定义为一个 5D 到 4D 的映射函数 $F_\Theta$:

  • 5D 输入:包含 3D 空间坐标 $(x, y, z)$ 和 2D 观察视角(偏航角和俯仰角,即 $\theta, \phi$)。
  • 网络主体:一个非常经典的 MLP(多层感知机),拥有 9 层,每层 256 个通道。
  • 4D 输出:输出该空间点在特定视角下的发光颜色 $(r, g, b)$,以及该点本身的体密度 $(\sigma)$。(后面会讲何为体密度)
    PS: 为什么需要加入观察视角 $(\theta, \phi)$?因为现实世界中的物体往往具有高光、反光或金属质感。同一个空间点 $(x, y, z)$,你从左边看和从右边看,它反射到你眼里的颜色 $(r, g, b)$ 是不一样的。引入视角作为输入,赋予了 NeRF 表达逼真的复杂光影的能力。

2.2.2. 可微体积渲染

  • 计算光线:要渲染出 2D 照片上的一个像素,我们需要从虚拟相机的中心,穿过该像素所在的屏幕位置,向 3D 空间发射一条射线。像素的最终颜色,是这条射线上所有点的颜色累加。
  • 将渲染建模为概率问题:传统的渲染(如光线追踪)需要计算光线“撞击”到了哪个具体的硬表面(具体的多边形)。但这在数学上是不连续、不可微的(要么撞到,要么没撞到)。NeRF 将整个空间视为一团半透明的云雾(体积,Volumetric)。光线穿过空间时,没有绝对的碰撞,只有密度的累积。这种“软性”的连续模型,完美契合了神经网络基于梯度的优化方式。
  • 替代传统网格:空间中并没有真实的体素网格在存储数据,所有的场景属性(颜色、密度)全部被压缩和编码在了那个 9 层的 MLP 神经网络的权重里。

体积渲染详细推导

1. 定义光线方程
首先定义从相机射出的光线方程:
$$\mathbf{r}(t) = \mathbf{o} + t\mathbf{d}$$
其中,$\mathbf{o}$ 是光线起点(相机位置),$\mathbf{d}$ 是射出方向。$t$ 为代表距离或时间的标量,沿途的每一个点都可以用 $t$ 来表示($t$ 越大,光线飞得越远)。

2. 空间(云雾)属性
当光线飞行到距离 $t$ 时,会遇到由 NeRF 神经网络预测出的两个属性:

  • 颜色 $\mathbf{c}(t)$:该位置的 RGB 颜色。
  • 体密度 $\sigma(t)$:代表这团雾有多浓。严谨的数学定义是概率——光线在经过 $t$ 附近一个极小的步长 $dt$ 时,撞上粒子的概率为 $\sigma(t)dt$。

3. 透射率 $T(t)$ 与连续渲染积分
假设光线在距离 $t$ 处遇到了红雾,它能把红色带回相机吗?不一定!如果前方(更靠近相机处)有一堵极浓的黑墙,光线早就被挡死了! 因此,我们需要计算透射率 $T(t)$,即光线从起点飞到距离 $t$ 处,沿途未撞上任何东西的存活概率。基于逻辑“存活到 $t + dt$ 的概率 = 存活到 $t$ 的概率 $\times$ 在 $dt$ 内没撞上的概率”,可得 $T(t + dt) = T(t) \times (1 - \sigma(t)dt)$。通过泰勒展开与解微分方程,得到透射率公式:
$$T(t) = \exp\left(-\int_{t_0}^t \sigma(s)ds\right)$$
(注:即光线飞到 $t$ 的存活率,等于沿途经历的所有密度累加后套一个负指数。沿途雾越浓,存活率呈指数级下降。)

要计算最终屏幕上的像素颜色 $C$,光线在 $t$ 处必须同时满足两个条件:活着飞到 $t$ (概率 $T(t)$) 且 恰好在 $t$ 处撞上粒子 (概率 $\sigma(t)dt$)。将整条光线上所有位置的贡献累加,即得到连续渲染方程:
$$C = \int_{t_n}^{t_f} T(t)\sigma(t)\mathbf{c}(t) dt$$

4. 离散化 (代码实现)
计算机无法直接计算连续且无限的微积分,需将连续公式转为离散加法。把光线切成 $N$ 个小段(第 $i$ 段长度为 $\delta_i$):

  • 不透明度 $\alpha_i$:光线穿过第 $i$ 小段时被挡住的概率,$\alpha_i = 1 - \exp(-\sigma_i \delta_i)$。
  • 离散透射率 $T_i$:光线活着到达第 $i$ 段的概率(前面所有段都没挡住它的概率连乘),$T_i = \prod_{j=1}^{i-1} (1 - \alpha_j)$。
  • 最终离散求和公式
    $$\hat{C} \approx \sum_{i=1}^N T_i \alpha_i \mathbf{c}_i$$
    (最终颜色 = $\sum$ 存活率 $\times$ 当前段不透明度 $\times$ 当前段颜色)

5. 渲染权重 $w$ 与深度拓展
公式中的 $T_i \alpha_i$ 被称为渲染权重 (Rendering weights)

  • 遮挡原理:如果前方有不透明的墙(某处 $\alpha$ 极大),墙后所有点的透射率 $T_i$ 会瞬间归零,权重也随之归零。即墙后面的东西不参与颜色计算。
  • 深度提取:把沿途每个点的距离 $t_i$ 乘以它的权重 $T_i \alpha_i$ 再求和,就能算出光线大概在多远的距离“撞墙”,这就是 NeRF 提取 3D 深度图的原理(具体可分为期望深度与中位数深度)。
  • 物理量拓展:同理,若将 $\mathbf{c}_i$ 替换成 3D 空间中的任何其他物理量 $\mathbf{v}_i$(如语义、法向量等),就可以渲染出对应的特征图。

2.2.3. 训练方式

通过前向传播计算出合成图像,再计算合成图像与真实图像的损失,梯度回传(因为渲染过程是可微的),优化mlp参数。

后续学术界针对nerf提出了非常非常多的改进方案, 有基于位置编码的,压缩与提速渲染的,针对无边界场景与未知相机位姿的,动态场景处理的,复杂光照与少样本泛化的等等等等。

2.3 3DGS是怎么做的

Surface Splatting (表面泼溅) 技术2001年就有了:为了解决点云在渲染时的稀疏空洞问题,把点云中的每个点变成一个高斯核(一维就是高斯基函数,二维就是椭圆,三维就是椭球)。当无数个这样的高斯核挨在一起时,它们边缘的模糊部分就会互相融合(连续信号重建),原本的点与点之间的缝隙就被完美填补了。当我们从相机的视角看过去时,就像是把这些 3D 的高斯球拍扁 泼溅(Splat) 到了 2D 屏幕的网格上,这就叫 Splatting。NeRF 算一个像素要沿着光线采样成百上千次,算无数个积分。而泼溅技术中,每个高斯球都是独立的,GPU可以一口气并行处理几百万个球,渲染速度快。

既然 2001 年就有的泼溅技术,为什么还要等到 2023 年才火呢?首先是因为早期缺乏可微的方案。直到 2019 年以《Differentiable Surface Splatting》为代表的一系列工作出现,证明了表面泼溅的渲染过程在数学上是可以求导的。这意味着我们可以利用反向传播,让计算机看着 2D 照片,自动去调整空间中数十万个图元的位置和属性。其次,NeRF的积累。3DGS 巧妙地继承了 NeRF 验证过的球谐函数(SH)和透明度混合逻辑,并将图元升级为各向异性的 3D 高斯核(位置、颜色、大小和透明度全自由度可微)。3DGS的作者进行了极致的工程化:想法非常简单,效果非常惊艳,里面手搓了基于 Tile 分块的高效 CUDA 光栅化算子,完美解决了数百万高斯核的排序与混合问题。

2.3.1 3DGS训练过程:

  1. 初始化 (Initialization):先用传统的摄影测量算法 (SfM,比如 COLMAP) 从照片里提取出一堆稀疏的 3D 坐标点。
  2. 生成高斯球 (3D Gaussians):把每一个稀疏的 3D 点,都变成一个半透明的“3D 高斯椭球”。
  3. 光栅化与梯度回传 (Differentiable Tile Rasterizer):把这些 3D 球“拍扁”到 2D 屏幕上,和真实照片做对比算误差。然后通过梯度反向传播,去调整每一个球的形状、颜色和位置。
  4. 自适应密度控制 (Adaptive Density Control):这是个非常人工指定的机制。在训练中,如果网络发现某个地方细节很复杂(比如头发),它会自动把一个大球分裂成几个小球;如果发现某个地方是纯色背景,它会把小球合并,或者把完全透明的球删除

每个 3D 高斯球的参数:$p$: 中心位置坐标;$\Sigma$: 协方差矩阵(控制长短胖瘦和旋转),$o$: 透明度;$SH$: 球谐函数(Spherical Harmonics,记录从不同角度看过去的不同颜色,也就是反光效果)

2.3.2 3DGS与nerf的关联:

  • 传统表面泼溅:它的颜色融合方式是加权平均 ($c = \frac{\sum c_i w_i}{\sum w_i}$)。这处理不了“遮挡关系”。
  • 3DGS 泼溅 :它引入了透明度 ($o$, Opacity) 的概念,公式变成了从前向后的 Alpha 混合 (Alpha compositing)
    $$c = \sum_{i \in N} c_i o_i w_i \prod_{j=1}^{i-1} (1 - o_j w_j)$$

3DGS 公式里的 $\prod_{j=1}^{i-1} (1 - o_j w_j)$ 完全等价于NeRF 的那个“透射率 $T(t)$”。3DGS 在数学本质上,就是在算 NeRF 的体积渲染积分。只不过,NeRF 是在连续的空间里沿着光线一步步采”,而 3DGS 是直接把空间变成了离散的球,然后用 GPU 直接算这些球的叠加上色。目标完全一致,但 3DGS 的计算速度快了几个数量级。 换句话说3DGS 就是用显式的 3D 椭球数据结构,去跑隐式的 NeRF 体积渲染公式。 既有 NeRF 的极致逼真(对场景的学习能力),又有传统多边形的极速渲染。

2.3.3 3DGS渲染步骤:

  1. Sort (排序):要想正确计算上面那个类似 NeRF 的““透射率”,必须知道谁在前面谁在后面。所以第一步是根据深度,把几百万个 3D 球从前到后排好队。
  2. Splat (泼溅):把这些 3D 椭球投影(拍扁)到 2D 屏幕上,算出它们在 2D 上的形状。
  3. Blend (混合):利用上面那个 Alpha 混合公式,把排好队的球一层层叠加上去,算出最终像素的颜色。

3dgs是一份非常完善的工作,以至于后面的论文更像是在缝缝补补,不过这种纯手动捏造的“克隆、分裂、修剪”感觉很生硬,不如nerf优雅,有些步骤像是在工程中一拍脑袋尝试出来的。

3. 表面重建

这里的表面重建旨在从连续的神经场(如体密度场、SDF)或离散基元中,提取出可供传统渲染管线直接使用的显式 Mesh 模型。

3.1. 基于体密度场的等值面提取

在原始的 NeRF 架构中,神经网络预测空间中任意点的颜色与体密度(Volume density, $\sigma$)。体密度反映了光线在空间某点被物理实体遮挡的衰减率(或局部终止概率)。由于物体内部通常具有极高的不透明度,而外部为自由空间,密度的突变位置即可被视为物体表面。

  • 提取机制:通过人为设定一个固定的密度阈值 $\tau$,可以将连续的三维空间隐式划分为占据态($\sigma > \tau$)和非占据态($\sigma < \tau$)。这一划分构成了等值面(Isosurface)。随后,应用 Marching Cubes (MC) 等经典算法,即可在网格空间中定位交点并生成三角面片。
  • 局限性:这种基于密度的提取方案缺乏对底层表面几何的显式约束。由于多视角图像重建存在的病态问题及视角依赖效应,网络倾向于在自由空间中生成高密度的离散区域以降低光度误差。这导致提取出的网格通常包含大量悬浮伪影(Floaters)、孔洞以及高频噪声。此外,阈值 $\tau$ 的选取高度依赖经验,缺乏泛化理论保证。

3.2. 从密度转向SDF

相比体密度场的缺陷,SDF 的零等值面(Zero-level set)能够自然、精确且符合严格数学定义地表示连续表面。

  • VolSDF:尝试将 SDF 框架引入体渲染。该算法通过累积分布函数(CDF)建立了 SDF 与体密度之间的解析映射。然而,其实证模型在表面附近的密度积分估计存在一定偏差(Biased),影响了精细结构的恢复。

  • NeuS:针对 VolSDF 的偏差问题,NeuS 提出了一种无偏(Unbiased)的体渲染公式。具体的,VolSDF 本质上使用了拉普拉斯分布(Laplace distribution)的 CDF,而 NeuS 使用了逻辑分布(Logistic distribution)推导其无偏权重。利用 SDF 诱导的权重函数,NeuS 确保了网络在光线追踪计算时,渲染权重严格在 SDF 零等值面处达到全局最高峰。这一数学性质极大地提升了重建表面的平滑度和几何保真度。

  • Neuralangelo:后续工作通过引入混合表示(如基于张量分解的 Tensor-based 架构)加速了 SDF 的优化过程。进一步地,NVIDIA 提出的 Neuralangelo 结合了多分辨率哈希网格编码(Instant-NGP 架构)与数值梯度优化策略,成功克服了哈希表造成的表面粗糙问题,使得从神经场中重建具备极高逼真度和微小细节的表面拓扑成为可能。

3.3. 可微分网格提取与光栅化

尽管基于 SDF 的隐式方法提升了表面质量,但提取 Mesh 仍属于前向渲染完成后的后处理步骤。传统的 Marching Cubes 算法由于涉及离散的顶点状态判断与拓扑组合枚举,其操作是不可微的。为了实现直接利用二维图像空间的监督信号对三维网格顶点进行联合优化,可微分网格提取技术被提出,并常与可微分光栅化处理器(如 NVIDIA 的 nvdiffrast)结合,实现从网格生成到图像渲染的全链路可微:

  • DMTet (Differentiable Marching Tetrahedra):该算法摒弃了传统立方体网格,采用四面体空间划分以消除拓扑二义性。DMTet 不仅预测空间节点的 SDF 值,还预测顶点的几何偏移量(Deformation offset)。通过可微地计算等值面交点坐标,网络能够直接接收来自光栅化图像的重投影误差梯度,从而精细调整顶点位置。
  • FlexiCubes:NVIDIA 进一步提出了 FlexiCubes 算法。它回归了立方体划分的范式,但在网格参数化设计上引入了更高的灵活性(引入了额外的顶点权重参数)。相比 DMTet,FlexiCubes 展现出更优的动态拓扑适应能力,能够更加锐利、精准地拟合工业级模型中的尖锐特征和复杂边界。

3.4. 基于高斯泼溅的表面重建

与 NeRF 依赖隐式连续场进行光线追踪不同,3D Gaussian Splatting采用显式的三维高斯椭球集合来表示场景,实现了实时的渲染速度。然而,原始的 3DGS 由于缺乏显式的几何约束,高斯椭球在空间中往往呈现高度无序、重叠的分布状态,直接从中提取网格(例如将其转化为密度场后应用 MC 算法)会导致表面极度粗糙、充满噪声并带有明显的厚度伪影。为了解决这一痛点,近期的研究开始在显式高斯表示中引入严格的表面约束。

  • SuGaR (Surface-Aligned Gaussian Splatting):SuGaR算法引入了一种巧妙的正则化机制,在优化过程中强制引导三维高斯椭球变得扁平,并使其紧密贴合且对齐到场景的真实表面。通过这种对齐操作,SuGaR 能够将离散的高斯点云转化为平滑的表面指示场,随后利用泊松表面重建等经典点云算法,并通过将高斯基元绑定至网格面片进行联合优化,高效提取出兼具高质量拓扑结构与实时渲染能力的 Mesh 模型。
  • 2D Gaussian Splatting (2DGS):Huang 等人指出,3D 体积椭球在表达极薄或平滑表面时存在固有的多视角不一致性。为此,2DGS 摒弃了 3D 椭球,直接将场景建模为二维的定向圆盘(2D Surfels)。这种“降维”处理使得每一个高斯基元天然具备明确的表面属性和法线方向。结合深度失真正则化与光度一致性约束,2DGS 能够获得极其精确的几何外观与法线场,从根本上消除了 3DGS 的厚度与悬浮伪影,实现了高保真的网格生成。

4. 3D生成模型

从图片直接输出三维表征(aka,逆向图形学),显然是个高度病态的问题,因为单视角输入极度缺乏几何结构与深度信息。前面阐述了如何通过多视角图片进行神经渲染,并从体密度场或SDF中提取Mesh。但这仅仅是“逐场景、逐模型”的优化过程,本质上是过拟合的,仅仅是实验室产品,工业界不可能会用这些方案的。面对少样本甚至单视角输入,到底该如何优化?局部缺失的视角能否恢复?怎样才能让模型具备跨实例的泛化能力,直接从单张图片或一段文字中生成整体三维模型?这就是三维生成的命题。从早期的测试时优化到如今的前馈式生成,三维重建开始步入大模型时代。

4.1 视觉模型

由于高质量原生三维数据的匮乏,3D生成模型在起步阶段高度依赖于二维视觉模型提供的语义与几何先验。在图生三维(Image-to-3D)任务中,强大的二维特征提取能力是三维重建的绝对基础,也是早期唯一可以仰仗的数据。

  • 语义与表征先验:如 MAE (Masked Autoencoder)、CLIP、DINOv2 等基于自监督学习的视觉 Transformer,能够提供对物体结构、语义边缘高度敏感的密集特征图,充当稳健的视觉 backbone。
  • 几何与深度先验:CroCo 通过跨视角掩码自编码器隐式学习立体视觉,为下游提供对遮挡鲁棒的特征体系。Depth Anything (v1/v2/v3) 的出现让单图深度估计得以高精度提取,为后续的“2D升维”(Lifting)提供了确定性空间约束。

4.2 早期对泛化性/少样本的尝试

有了二维特征的辅助,研究者开始尝试打破“一个网络只认一个场景”的局限,试图让模型具备举一反三的能力。

  • DeepSDF 通过学习一个类别级(class-level)的连续符号距离函数表示,将多个形状实例嵌入到共享的隐空间(latent space)中。在推理阶段,给定新的观测(如点云或部分几何),只需优化一个低维 latent code,即可重建对应的 3D 形状。虽然这种方式在一定程度上具备了跨实例的表达能力,但其对新样本仍依赖迭代优化 latent code,因此在严格意义上仍未摆脱测试时优化的范式。

  • MetaSDF 在 DeepSDF 的基础上进一步引入元学习(meta-learning)框架,通过在训练阶段模拟“快速适应新任务”的过程,使模型能够在面对新形状时,仅通过**少量梯度更新(few gradient steps)**即可完成重建。这种方法显著提升了对新实例的适应速度,但本质上仍然依赖测试时的参数更新,因此在实时性和推理效率方面仍存在一定限制。随着神经渲染的兴起,MetaNeRF 等工作也将 MAML 算法引入 NeRF,利用强大的先验初始化权重,在极少视角下几步微调即可收敛。

然而,无论是 MetaSDF 还是 MetaNeRF,核心瓶颈依旧存在:没有彻底跳出测试时优化,推理效率依然受限。为了突破这一点,研究范式开始向直接的前向映射转变:

  • PixelNeRF 通过引入“空间投影”机制,将输入图像中的像素特征(由 CNN 提取)投影到三维空间中的采样点上,从而在 NeRF 的体渲染过程中实现条件建模。这一设计在结构上优雅地桥接了2D 视觉理解(CNN)与3D 场景表示(NeRF)。更重要的是,其 CNN 编码器与 MLP 渲染网络均在大规模 3D 数据集上进行预训练,使模型具备了显著的跨场景泛化能力:在测试阶段,面对一张或少量新视角图像时,模型可以直接前向推理生成新视图,而无需像原始 NeRF 那样进行耗时的逐场景优化(通常需要数小时)。

4.3 基于对抗学习的 3D 感知生成 (3D-aware GANs)

上面的工作大多局限于特定类别或简单场景。要实现更自由的生成,怎么能少了GAN。3D感知生成对抗网络(3D-aware GANs)也曾辉煌过:

  • 早期的 HoloGAN 展示了仅从自然图像集中就能无监督地学习 3D 场景表征,无需任何 3D 标注或多视角约束;
  • 随后 pi-GAN 将 NeRF 与周期性激活函数引入 GAN 框架,实现了高精度的 3D 感知图像合成;
  • 而 EG3D 则提出了高效的几何感知三平面(Triplane)表征,大幅降低了计算复杂度。直接在 3D 体素空间生成会导致计算量呈立方级爆炸,而生成点云/网格则面临拓扑不规则的问题。Triplane 将 3D 空间投影到三个正交的 2D 平面(XY, YZ, XZ)上,采样点特征通过正交投影和双线性插值拼接获取。这种巧妙的降维完美契合了现代 CNN 与 Transformer 架构,直接启发了后来的 LRM 等大规模模型。

但是 GANs 这部分主要集中在人脸等特定域,在面对开放世界复杂场景时,受限于模型容量和模式崩塌问题,多样性和泛化性遇到了天花板。

4.3 基于二维先验的优化生成

随着 2D 扩散模型(Diffusion Models)展现出惊人的开放世界生成能力,大家顺理成章地开辟了一条捷径:将 2D 扩散模型作为“工匠”,去监督三维场景的优化过程(极大似然估计, 根据观测来推导场景参数)。“二训三”时代由此开启:

  • DreamFusion: 把预训练 2D 文生图扩散模型变成三维监督信号,通过分数蒸馏采样(SDS)评估渲染图合理性并回传梯度更新 NeRF,或者将相对位姿作为条件实现新视角合成;

  • 随后 Magic3D 采用粗到细两阶段策略,提高了分辨率和生成质量;

  • 接着ProlificDreamer 用 VSD 替换 SDS,试图从概率建模层面缓解过平滑和低多样性;

  • DreamGaussian 则把 SDS 优化对象从 NeRF 换成 3DGS,显著提升了速度。

  • GET3D 则走的是另一条路:它不是“靠扩散优化三维”,而是直接训练 GAN 生成显式纹理网格,证明了显式网格也可以通过生成式学习直接产出。

这类 2D 引导优化的方案让开放词汇的三维生成成为可能,但致命缺陷也随之暴露:耗时依然较长(以小时计),且极易出现 Janus 问题。所谓的Janus问题是指的:由于 2D 扩散模型缺乏原生的三维一致性意识,各自独立的视角采样会导致监督信号“互相打架”,进而生成三头六臂、结构异常的畸形物体。

4.4 多视角扩散与联合去噪

面对 Janus 问题,单纯依赖单视角 2D 引导已走不通。解法变成了:微调 2D 扩散模型,强制其在单次去噪中吐出具备严格几何关联的“多视角图像族”。

  • Zero-1-to-3 是一个关键转折点,它把单图变换成指定相机位姿的新视角图像,证明了扩散模型可以学习相对视角控制;但它本身仍是单视图到单视图的生成,因此一致性仍有限。

  • SyncDreamer: 引入 3D 代价体积注入注意力机制,强制虚拟视角在 3D 空间上对齐。

  • Wonder3D: 使用跨域注意力机制同步生成多视角 RGB 与法线图,利用法线局部几何先验增强一致性。

  • BoostDream: 更偏工程化,它把已有 3D 先验注入多视角扩散过程,用于修正已有三维草稿。

这些方法显著缓解了结构错乱,但它们本质上仍是披着 3D 外衣的 2D 生成,依然是"二训三"。受制于视角覆盖范围和相机条件设定,它们并没有彻底解决优化管线速度慢、步骤繁琐的问题,无法满足工业界对于“秒级出模”的即时性需求。

4.5 前馈式大规模重建模型(LRM, Large Reconstruction Models)

上面的其实都是基于优化的方法,每遇到一个新物体,网络都要从头开始,靠计算误差慢慢“炼丹”,耗时几十分钟到几个小时。优化管线速度太慢,多视角扩散步骤繁琐,无法满足工业界的即时性需求。于是顶着稀疏视角和极高泛化压力的挑战,3D重建终于(强行)迎来了属于自己的“大模型”:LRM(Large Reconstruction Models)。

标准 LRM 摒弃了逐场景优化。它使用 DINO 等预训练模型提取图像 Token,然后通过基于交叉注意力(Cross-Attention)的 Image-to-Triplane Transformer 网络,一次前向传播直接预测出该物体的三平面特征,最后通过微型 MLP 解码为 NeRF 进行体渲染。

后续如 Large Gaussian Reconstruction Model、Long LRM 及 RayZer 等工作在架构上不断精进。更有如 Turbo3D 等加速工作,将生成管线推向了极致速度,彻底验证了前馈式重建模型在效率上的绝对优势。

  • Large Gaussian Reconstruction Model (如 LGM / GRM):表征替换,告别体渲染瓶颈
    标准 LRM 依赖 Triplane 和 NeRF 的体渲染,在推理和渲染高分辨率图像时,庞大的显存占用和 MLP 密集查询依然是一座大山。于是,这类工作将输出端的底层表征果断替换为了 3D Gaussian Splatting (3DGS)。基于 Transformer 或非对称 U-Net 的网络直接将输入的特征 Token 映射为 3D 空间中像素对齐的高斯球属性(位置、缩放、旋转、不透明度等)。这不仅彻底打破了体渲染的计算瓶颈,大幅提升了生成分辨率,也让生成的 3D 资产在光栅化管线下的实时渲染变得极为丝滑。
  • Long LRM:超长上下文,从“单体”迈向“大场景”
    早期的 LRM 受限于 Transformer 注意力机制的二次方显存爆炸问题,通常只能处理 1 到 4 张输入图片,因此基本局限于单个物体的重建。而 Long LRM 引入了针对长序列优化的混合架构,巧妙结合了 Mamba2 与传统 Transformer 模块,并配合 Token 合并与高斯剪枝策略。这使得网络能够在单次前向传播中“一口气”吃下长达数十张(如 32 张)的高清图像,处理超过 250K 个 Token。它直接完成了对复杂大尺度场景(Scene-level)的 360 度 3D 建模,将前馈重建的能力从 Object 级跃迁到了 Scene 级。
  • RayZer:自监督学习,摆脱 3D 位姿“真值”依赖
    传统 LRM 的训练是一台“数据胃口”极大的机器,高度依赖诸如 Objaverse 等合成数据集中精准的相机位姿(Camera Poses)标注。但现实世界中,靠 COLMAP 等传统视觉方法提取位姿耗时且容易失败。RayZer 提出了一种极其优雅的**自监督(Self-supervised)**范式,直接输入无位姿、未标定的多视角图像。在没有任何显式 3D 标签监督的情况下,仅靠学习底层的光线结构(Ray Structure)进行新视角合成,网络就能同时完成相机的自校准和场景隐式表征重建。这证明了 3D 模型也能像大语言模型一样,在海量无标注真实数据中涌现出(Emergent)强大的 3D 几何感知能力。
  • Turbo3D:隐空间直接重建,将生成管线推向极致加速
    为了满足工业界“立等可取”的苛刻要求,Turbo3D 将文本到 3D 的生成与重建速度压缩到了惊人的亚秒级(~0.35秒)。它的核心秘诀是跳过耗时的像素空间解码。在前端,它使用创新的双教师蒸馏策略(DMD),让扩散模型在极少步数内生成一致性极高的多视角“隐特征(Latent representations)”;在后端,它设计了一个 Latent GS-LRM 架构,直接吃进这些隐空间特征来预测 3D 高斯参数。这种端到端的隐空间处理彻底规避了 VAE 解码器带来的时间开销,把“前馈式”的速度优势压榨到了物理极限。

但速度起来了,质量够用吗?当面对复杂拓扑和工业级材质需求时,由 2D Lifting 升维带来的信息折损再次成为了天花板。

4.6 基于直接三维监督的模型生成

无论是 SDS 监督还是前馈式 Triplane 预测,跨模态特征映射(2D Lifting)都在用降维的投影间接约束高维空间。当遭遇几何分布错综复杂、纹理高度耦合时,二维先验往往显得力不从心,难以直接生成具备严谨物理材质(PBR)、拓扑干净的 3D 资产。

众所周知,问题的关键在于高质量数据的积累与网络架构的缩放。随着 Objaverse 等百万级高质量 3D 资产的开源,以及 DiT (Scalable Diffusion Models with Transformers) 在图像生成中展现出的惊人 Scaling Law,大家意识到:只要将数据合理地 Token 化,Transformer 就能炼化海量原生 3D 几何与纹理。

3D 表征与 Transformer 的结合

想要在 3D 空间应用 DiT,首先要解决 3D 数据的输入格式(3D VAE):

  • Shap-E (OpenAI) 摒弃了直接生成单一 NeRF 或 Mesh 的传统思路,而是先训练了一个 3D 编码器,将海量 3D 资产映射为隐式神经表征(同时包含 NeRF 和 SDF 的隐式参数)。随后,在这个高度压缩的隐空间上,直接应用基于 Transformer 的 Diffusion 模型进行去噪。
  • 3DShape2VecSet 进一步提出将 3D 形状表征为一组隐变量向量集合(Latent Vector Set)。这种基于 Set 的表征天然契合 Transformer 的无序注意力机制(Permutation Invariance),在表征神经场时不仅具备极高的压缩率,更为后续的生成式 Diffusion 模型提供了极佳的连续 Token 输入格式。

原生 3D 空间内的直接扩散

事实上,诸如 AutoSDF、Diffusion-SDF 以及 SDFusion 等早期工作,已经充分验证了在原生 SDF 或体素空间内直接引入生成与扩散网络的强大潜力。 既然原生的三维扩散路线走得通,有了上述 Token 化的基础,研究者们开始将性能更强的 DiT 架构更加激进地引入原生三维空间:

  • DiT-3D :探索了将 3D 体素或点云转化为序列化的 3D Token,并在 3D 窗口上应用三维的自注意力机制。这种直接在 3D 空间进行去噪的 DiT 架构,证明了 Transformer 在处理纯三维几何特征时的强大潜力。

  • Direct3D 则将“原生 3D 监督”推向了更高的保真度。面对 2D Lifting 经常导致的几何崩坏,Direct3D 直接在三维隐空间(如高分辨率的 3D Voxel Latents 或 Triplane)上构建 DiT 模型,利用真实 3D 数据的几何分布进行端到端的扩散训练。它生成的不再是基于多视角的视觉错觉,而是具备连续表面、可以直接导出高质量 Mesh 的坚实几何。

相比于二维,三维世界依然缺少高质量、大规模的数据,这其实才是最大的瓶颈。

基于自回归范式的离散网格生成

除了在连续场或体素空间中应用扩散模型,另一种极具潜力的原生 3D 生成路线是自回归范式。受到大语言模型的启发,研究者们开始将三维几何完全离散化,把网格生成转化为类似“文本接龙”的 Next-Token Prediction 任务。这种范式可以解决传统表面重建中 Marching Cubes 算法导致的网格致密、拓扑混乱的痛点:

  • MeshAnything:将 3D 网格生成建模为自回归的序列生成问题。它不仅能以点云、体素或单张图像为条件,更关键的是专注于生成艺术家手工创建级别的网格。这意味着它生成的不再是无序的三角面片海,而是具有干净拓扑、高度符合低多边形建模(Low-poly modeling)标准的优美几何结构,可直接无缝接入下游渲染和物理引擎。

  • DeepMesh:在自回归网格生成的基础上进一步突破,引入了全新的 Token 化压缩算法,并将强化学习(尤其是直接偏好优化 DPO)引入了三维网格生成领域。通过结合 3D 几何评估指标与人类视觉偏好作为反馈信号,DeepMesh 能够显著提升自回归模型在处理复杂几何细节和保持严格拓扑时的精度,使得生成的网格在视觉表现力与严谨物理结构之间达到了极佳的平衡。

工业级精度的资产生成

最新的三维生成算法不仅仅是单纯的“视觉合理”,还有规整拓扑(Regular Topology)、高保真几何细节以及严谨物理材质(PBR),开始真正接轨工业管线:

CraftsMan3D (Li et al., CVPR 2024) 提出了一种仿生“工匠”雕刻逻辑的生成范式。为了解决传统生成方法导致的网格拓扑混乱问题,该框架首先利用 3D-Native DiT 在三维隐空间(Latent Space)中直接拟合数据分布,秒级生成具备规整网格结构的粗糙几何体。随后,引入基于法线的交互式几何优化器,允许在保证水密性及利用环绕数(Winding Number)进行可见性检查的前提下,对局部表面细节进行高精度雕刻。这种解耦架构不仅大幅提升了三维重建的成功率,更首次在原生 3D 生成中引入了极具工业价值的交互编辑能力。

Hunyuan3D 2.0(Tencent et al., 2025) 提出了一种面向工业级高保真 3D 资产生成的可扩展解耦范式。为了弥合生成式 3D 内容与传统人工精雕模型之间的质量鸿沟,该框架首先利用参数量高达百亿级的 Hunyuan3D-DiT(一种基于流匹配的扩散 Transformer),在大规模数据上直接学习三维几何先验。这一阶段能够精准对齐视觉或文本条件,生成表面平滑、拓扑干净的高质量白模(Bare Mesh),为后续底层的表面重建与网格提取奠定了极佳的几何基础。随后,框架引入了 Hunyuan3D-Paint 纹理合成模型,通过多视角扩散架构与几何先验的深度结合,不仅实现了高分辨率的纹理映射,更支持了 PBR(基于物理的渲染)材质的直接生成,能够精确还原真实世界的光影交互(如金属反射与次表面散射)。这种“形色分离”的解耦架构有效拆解了 3D 资产生成的优化难度,不仅大幅提升了复杂几何的生成稳定性,更构建了一条能无缝兼容现有工业界标准图形学管线的即插即用工作流。

从利用 2D 视觉模型辅助,到依靠原生 3D 数据自强,三维生成发展太快了。当然,相比于二维图像,三维世界目前最大的瓶颈,依然是高质量、大规模的原生数据的极度匮乏。(注:市面上也有如 Meshy AI 等表现出色的商业产品,但由于闭源,其具体技术细节暂无法考证。)