3D生成 本节摘要:3D 是「2D 到 3D 杠杆」最强的模态。2023 年的突破是 3D 高斯泼溅(3D Gaussian Splatting, 3DGS);2024-2026 的生成推进,在它之上叠加「多视角扩散 + 3D 重建」,从单条提示或单张照片产出物体与场景。本节讲透 3D 生成的两大支柱:表示法(网格、点云、体素、SDF、NeRF、3D 高斯各自的取舍)与两阶段管线(先用扩散生成多视角 2D 图,再用高斯泼溅/NeRF 拟合成 3D)。
本节摘要:3D 是「2D 到 3D 杠杆」最强的模态。2023 年的突破是 3D 高斯泼溅(3D Gaussian Splatting, 3DGS);2024-2026 的生成推进,在它之上叠加「多视角扩散 + 3D 重建」,从单条提示或单张照片产出物体与场景。本节讲透 3D 生成的两大支柱:表示法(网格、点云、体素、SDF、NeRF、3D 高斯各自的取舍)与两阶段管线(先用扩散生成多视角 2D 图,再用高斯泼溅/NeRF 拟合成 3D)。我们会推导 3DGS 为何用约 100 万个高斯、每个 59 参数(位置 + 协方差 + 不透明度 + 球谐颜色)就能可微渲染到 1080p100fps,梳理 DreamFusion 的 SDS(分数蒸馏采样)到 LRM/InstantMesh 的直接重建的演化,并指出 3D 至今没有像图像/视频那样的统一运行时底料。
对应原课程:Phase 08 · Lesson 12 ·
3d-generation(原英文phases/08-generative-ai/12-3d-generation/docs/en.md)。
阅读完本节,你应当能够:
3D 内容很痛苦:
512³ 体素网格是 1.28 亿体素;一个有用场景的 NeRF 每条射线需 100 万采样。生成比重建更难。2026 年的栈把两个问题分开:先用扩散模型生成 2D 多视角图,再拟合一个 3D 表示(通常是高斯泼溅)到这些图上。
把场景表示为约 100 万个 3D 高斯的云。每个有 59 参数:位置(3)、协方差(6,或四元数 4 + 缩放 3)、不透明度(1)、球谐颜色(3 阶时 48,0 阶时 3)。
渲染 = 投影 + alpha 合成。快(4090 上 1080p 约 100fps)、可微。用梯度下降对真实照片拟合。一个场景在消费 GPU 上 5-30 分钟拟合完成。
之上两个 2023-2024 创新:
微调一个预训练图像扩散模型,从文本提示或单张图生成同一物体的多个一致视角。Zero123(Liu 等,2023)、MVDream(Shi 等,2023)、SV3D(Stability,2024)、CAT3D(Google,2024)。通常输出环绕物体的 4-16 个视角,通过高斯泼溅或 NeRF 提升到 3D。
💡 为什么必须「多视角一致」? 如果你独立生成 4 个视角,它们对物体结构的「意见」会不一致——同一只椅子的腿数可能在不同视角里不同。3D 拟合会把这些分歧平均成一个模糊的残缺物。多视角扩散用共享注意力让所有视角在同一套潜变量上解码,从而结构一致。这是它能产出可用 3D 的关键。
神经辐射场(Mildenhall 等,2020)。一个小 MLP 吃 (x, y, z, 视角方向) 输出 (颜色, 密度)。沿射线积分渲染。质量胜过基于网格的新视角合成,但渲染慢 100-1000 倍。在实时用途上多被高斯泼溅取代,但在研究中仍主导。
| 模型 | 输入 | 输出 | 时间 |
|---|---|---|---|
| DreamFusion(2022) | 文本 | 经 SDS 的 NeRF | 每资产约 1 小时 |
| Magic3D | 文本 | 网格 + 纹理 | ~40 分钟 |
| Shap-E(OpenAI,2023) | 文本 | 隐式 3D | ~1 分钟 |
| SJC / ProlificDreamer | 文本 | NeRF / 网格 | ~30 分钟 |
| LRM(Meta,2023) | 图像 | 三平面 | ~5 秒 |
| InstantMesh(2024) | 图像 | 网格 | ~10 秒 |
| SV3D(Stability,2024) | 图像 | 新视角 | ~2 分钟 |
| CAT3D(Google,2024) | 1-64 张图 | 3D NeRF | ~1 分钟 |
| TripoSR(2024) | 图像 | 网格 | ~1 秒 |
| Meshy 4(2025) | 文本 + 图像 | PBR 网格 | ~30 秒 |
| Rodin Gen-1.5(2025) | 文本 + 图像 | PBR 网格 | ~60 秒 |
| 腾讯 Hunyuan3D 2.0(2025) | 图像 | 网格 | ~30 秒 |
2025-2026 方向:直接「文生网格」,带适合游戏引擎的 PBR 材质。对通用物体,「多视角扩散中间步骤」仍是最优配方。
code/main.py 实现一个玩具 2D「高斯泼溅」拟合:把一个合成目标图像(平滑梯度)表示为一组 2D 高斯泼溅的和。用梯度下降优化位置、颜色、协方差来匹配目标。你会看到两个核心操作:前向渲染(泼溅 + alpha 合成)与梯度下降拟合。
def gaussian_at(x, y, gaussian): px, py = gaussian["pos"] sigma = gaussian["sigma"] d2 = (x - px) ** 2 + (y - py) ** 2 return math.exp(-d2 / (2 * sigma * sigma))
def render(image_size, gaussians): img = [[0.0] * image_size for _ in range(image_size)] for g in gaussians: for y in range(image_size): for x in range(image_size): img[y][x] += g["color"] * gaussian_at(x, y, g) return img
真实 3D 高斯泼溅按深度排序高斯并按序 alpha 合成。我们的 2D 玩具只是求和。
for step in range(steps): pred = render(size, gaussians) loss = mse(pred, target) gradients = compute_grads(pred, target, gaussians) update(gaussians, gradients, lr)
💡 3DGS 训练的两个核心启发式:① 致密化(densification)——在梯度大的区域分裂/克隆高斯,捕捉更多细节;② 剪枝(pruning)——删掉不透明度趋零的高斯,控制总数。没有这两个,高斯数会失控膨胀到 1000 万并过拟合。这正是为什么 3DGS 能在 ~100 万高斯下达到高质量——它是被精心「种」和「剪」出来的。
视角不一致:独立生成 4 个视角、它们对结构意见不一,3D 拟合就模糊。修复:带共享注意力的多视角扩散。
背面幻觉:单图→3D 必须发明未见的那一面,质量参差不齐。
高斯泼溅爆炸:无约束训练会涨到 1000 万泼溅并过拟合。致密化 + 剪枝启发式(3D-GS 原论文)必不可少。
拓扑问题:隐式场(SDF)来的网格常有洞或自相交。交付前跑重网格器(如 blender 的体素重网格)。
训练数据授权:Objaverse 授权混杂,商用因模型而异。
| 任务 | 2026 年选择 |
|---|---|
| 从照片重建场景 | 高斯泼溅(3DGS、Gsplat、Scaniverse) |
| 游戏「文生 3D」物体 | Meshy 4 或 Rodin Gen-1.5(PBR 输出) |
| 图生 3D | Hunyuan3D 2.0、TripoSR、InstantMesh |
| 从少量图做新视角合成 | CAT3D、SV3D |
| 动态场景重建 | 4D 高斯泼溅 |
| 头像 / 着装人体 | Gaussian Avatar、HUGS |
| 研究 / SOTA | 上周刚发的那个 |
交付生产 3D(游戏或电商管线):Meshy 4 或 Rodin Gen-1.5 输出 PBR 网格,直接进 Unity / Unreal。
不像图像(潜在扩散 + DiT)和视频(时空 DiT),3D 在 2026 年没有单一主导运行时。生产决策树按表示法分叉:
NeRF / 三平面:推理是光线行进 + 每采样一个 MLP 前向。512² 渲染需数百万次 MLP 前向。激进批处理射线采样;SDPA/xformers 适用。
多视角扩散 + LRM 重建:两阶段管线。阶段 1(多视角 DiT)就是第 07 节那样的扩散服务器。阶段 2(LRM Transformer)是对视角的一次性前向。整体延迟画像 =「扩散 + 一次性」,按阶段选服务原语。
SDS / DreamFusion:每资产优化,不是推理。建作业(job),不是请求处理器。
对大多数 2026 产品,正确答案是:按请求跑多视角扩散,异步重建到 3DGS,再用 3DGS 服务实时查看。这把工作负载干净地分给 GPU 推理服务器(快)与离线优化器(慢)。
本节产出一个 3D 管线技能文件(位于原课程 outputs/skill-3d-pipeline.md)。
skill-3d-pipeline.md:输入 3D 简报(输入:文本/单图/少量图;输出:网格/泼溅/NeRF;用途:渲染/游戏/VR),输出:管线(多视角扩散+拟合,或直接网格模型)、底座模型、迭代预算、拓扑后处理、所需材质通道。简单。 用 4、16、64 个高斯跑 code/main.py。报告对目标的最终 MSE。
中等。 扩展到彩色(RGB)高斯。确认重建匹配目标的颜色模式。
困难。 用 gsplat 或 Nerfstudio,从 50 张照片重建一个真实物体。报告拟合时间与留出视角的最终 SSIM。
512³ = 1.28 亿体素)、监督只有少量 2D 视角。下一节,我们进入扩散家族的最新演化——流匹配与整流流:用「直线路径」取代 DDPM 的「曲线路径」,训练无需仿真、采样路径更直,4-10 倍加速,这是 SD3、Flux、AudioCraft 2 的共同底料。