3D 生成:NeRF / Gaussian Splatting / 文本到 3D
2D 之后的下一波 AI 内容革命——从一组照片重建 3D,从文字生成 3D 资产。
2D 图像 → 视频,下一站就是 3D。
2020 年还需要专业建模师几天才能做完的 3D 资产, 2025-2026 已经能从几张照片自动重建,或从一句话生成。
这一篇讲两条主线:NeRF 和 Gaussian Splatting + 文本到 3D 的最新进展。
为什么 3D 难
之前几代 AI 都在 2D 像素空间。3D 难在哪:
| 难点 | 解释 |
|---|---|
| 表示方式不一 | mesh / voxel / point cloud / 隐式表示,没标准 |
| 数据稀缺 | 真实世界 3D 数据集远小于图像 |
| 视角一致性 | 同一物体从不同角度看必须一致 |
| 物理 + 光照 | 透明 / 反射 / 阴影都要正确建模 |
| 渲染管线复杂 | 训练 + 推理涉及 rasterization / ray tracing |
一、NeRF(2020):神经场革命
NeRF(Neural Radiance Fields):用神经网络表示一个 3D 场景。
核心思想
不是存几何(mesh),而是存”任意 3D 点 + 任意视角方向 → 颜色 + 透明度”的函数:
- 输入:3D 位置 + 观察方向(5 维)
- 输出:颜色 + 不透明度
- 是一个小 MLP(~10 层)
渲染
对每个像素发射一条射线,沿射线采样多个 3D 点,查询 MLP 得到颜色/透明度,按 volume rendering 公式合成:
def render_pixel(ray_origin, ray_direction, nerf):
# 沿射线采样 64 个点
points = sample_along_ray(ray_origin, ray_direction, n=64)
colors, densities = nerf(points)
# Volume rendering 公式(α 合成)
return alpha_composite(colors, densities)
训练
给 NeRF 一组多视角的真实照片(带相机姿态),训练目标:让每个像素的预测颜色匹配真实照片。
for batch_pixels in random_pixels:
pred = render_pixel(ray, nerf)
loss = ((pred - true_color) ** 2).mean()
loss.backward()
optimizer.step()
效果
训练完后,可以从任意新视角渲染照片级真实图像。
NeRF 的问题
- 训练慢:单场景几小时
- 推理慢:每像素要 64+ 次神经网络查询
- 动态场景难:原版只能静态
后续工作:Instant-NGP(5 分钟训练)、NeRF-W、NeRF++、PixelNeRF(少样本泛化)等。
二、Gaussian Splatting(2023):性能革命
NeRF 用神经网络隐式表示,Gaussian Splatting 用百万个高斯椭球显式表示:
场景 = { (位置 μ, 协方差 Σ, 颜色 c, 透明度 α) × N 个椭球 }
每个椭球是一个”3D 高斯小团”,有自己的位置、大小、颜色、透明度。
渲染方法:splatting
不像 NeRF 一个像素采样 64 次——直接把每个椭球投影到 2D 屏幕上做 α 混合:
For each gaussian:
project to screen
splat as 2D ellipse with opacity
Sort gaussians by depth
α-blend in depth order
完全可微 + GPU 友好——比 NeRF 快 100×。
训练
也是用多视角照片做监督,但优化的是每个椭球的参数(位置、形状、颜色等)。
通过梯度下降 + 自适应增/删椭球(高残差地方加,无用的删)来收敛。
效果
- 实时渲染(>30 FPS)—— NeRF 做不到
- 视觉质量近似 NeRF
- 训练快(10-30 分钟)
工业采用
Gaussian Splatting 短短 1 年就全面取代 NeRF在工业界的位置:
- Unity / Unreal 都加了原生支持
- Polycam、Luma AI 等 3D 扫描 App 用它做实时重建
- VR / AR 内容生成
三、文本到 3D
NeRF / GS 都需要真实照片。但用户想要”文字一句话 → 3D 模型”。
DreamFusion(2022)
第一个有意义的工作:
prompt = "a red apple"
↓
Score Distillation Sampling(SDS)
- 初始化随机 NeRF
- 从 NeRF 渲染当前视角图像
- 用 2D Diffusion 模型(Imagen / SD)评估"这像 red apple 吗"
- 把梯度回传到 NeRF
- 重复
效果:可以生成 3D 物体,但质量一般、训练慢(小时级)。
Magic3D / Fantasia3D / Latent-NeRF(2023)
各种改进:用更好的 base model、更聪明的 SDS loss、更高分辨率优化。
Trellis / Trellis-XL(2024)
新一代:直接训一个 text → 3D 的扩散模型,跳过 SDS 迭代:
prompt
↓
Text encoder
↓
3D Diffusion (在某个 3D 表示空间)
↓
3D 资产(可导出为 mesh)
效果:
- 数秒钟生成可用的 3D 模型
- 质量远超 SDS-based 工作
- 微软开源,社区在跟进
商业产品现状(2026)
| 工具 | 输入 | 输出 | 质量 |
|---|---|---|---|
| Meshy | 文字 / 图像 | 含贴图的 mesh | 商业可用 |
| Tripo AI | 单张图 | 高质量 mesh | 接近游戏级 |
| Luma AI | 文字 / 视频 / 多照片 | NeRF / GS / mesh | 现实场景强 |
| Polycam | 手机扫描 | GS / mesh | 消费级 |
| Adobe Substance 3D Sampler | 单图 + AI | PBR 材质 | 专业级 |
应用场景
- 游戏:自动生成 NPC / 场景 / 道具
- 影视:previz / 概念图 → 3D 资产
- 电商:从一张产品照片生成 360° 可旋转模型
- AR / VR:3D 内容大众化
- 机器人:仿真训练用的 3D 环境快速生成
- 建筑 / 设计:从手稿到 3D 模型
4D 生成(动态 3D + 时间)
下一站:不是静态 3D 物体,而是会动的场景:
- 4D Gaussian Splatting:每个高斯椭球随时间变化
- Make-A-Video3D:文字 → 动态 3D
- DreamGaussian4D
预计 2027 起会有”文字 → 完整可漫游 3D 场景”的产品。
与多模态 LLM 的关系
GPT-4V / Claude 3.5 已经能”看图”——但不能”理解 3D 几何”。
下一代研究:
- Vision Language Models for 3D(PointLLM、3D-LLM)
- Genie 2 / SIMA:理解 + 生成可交互 3D 世界
3D 是从”看图说话”到”理解 + 操作物理世界”的桥梁—— 连接 LLM 和具身智能(embodied AI、robotics)的关键。
代码:训一个最小 NeRF
import torch
import torch.nn as nn
class TinyNeRF(nn.Module):
def __init__(self, hidden=128):
super().__init__()
# 位置编码 (positional encoding) 让 MLP 学到高频细节
self.L = 10 # 编码层数
in_dim = 3 * (2 * self.L + 1) # x, y, z + sin/cos
self.mlp = nn.Sequential(
nn.Linear(in_dim, hidden), nn.ReLU(),
nn.Linear(hidden, hidden), nn.ReLU(),
nn.Linear(hidden, hidden), nn.ReLU(),
nn.Linear(hidden, 4) # rgb + density
)
def positional_encoding(self, x):
out = [x]
for i in range(self.L):
for fn in [torch.sin, torch.cos]:
out.append(fn((2**i) * x))
return torch.cat(out, dim=-1)
def forward(self, points):
# points: (N, 3)
encoded = self.positional_encoding(points)
out = self.mlp(encoded)
rgb = torch.sigmoid(out[..., :3])
density = torch.relu(out[..., 3])
return rgb, density
50 行 + 几小时 GPU 训练 = MIT Lego 数据集上能跑出来。
2D → 3D 是 AIGC 的下一个 100× 增长方向。
类比:
- 2010 年 2D 图像 AI = 学术问题
- 2022 年 Stable Diffusion = 每个人都能用
- 2023 年 3D AI = 学术问题
- 2026-2028 年 3D AI = 每个人都能用?
当文字 → 3D 可游玩世界变得便宜—— 游戏、影视、建筑、零售、教育全部被改写。
这是值得长期关注的方向。
下一篇推荐:L5-06 视频生成 或 L5-02 Diffusion 数学。
🚧 3 个常见坑
坑 1:混淆 NeRF / Gaussian Splatting / Mesh 三者用途不同:NeRF 用于渲染、3DGS 用于实时、Mesh 用于游戏/3D 打印——选错路线返工成本高。
坑 2:以为单图就能重建好 3D 单图 → 3D 必然有歧义(背面信息丢失)——需要多视角 / video / 文本辅助。
坑 3:忽略 watertight / topology AI 生成的 3D 网格常有破洞 / 非流形——下游用于 3D 打印 / 物理模拟前要 retopology。
读到这里说明你认真在学 🎯
订阅每周精选 —— 下一篇新文章 / 新可视化第一时间送到邮箱。
讨论区
· 用 GitHub 账号登录评论src/components/Comments.astro 顶部填入
仓库 ID 和分类 ID(见组件注释里的配置步骤)。