3DGS高斯泼溅渲染简单理解

本文主要是对比游戏开发时的建模渲染过程来简单理解,尽量不涉及学术和数学原理

传统建模渲染过程

https://zhuanlan.zhihu.com/p/137780634

可以看上面这个大佬的复习一下

3DGS(3D Gaussian Splatting)

假设重建一棵树,绿色的点就是特征点(点云),绿色的椭圆体就是高斯体(个人觉得理解成任揉任搓的柔边椭圆体就行)

  1. 稀疏点云初始化: 通常使用 SfM (Structure from Motion) 算法(一种几何数学公式驱动的算法)从多张照片 (通常要几百张)中提取特征点 ,生成一个非常简陋的初始点云

    ps.点云就是点,每个点最基本的信息就是 (x, y, z)坐标。

  2. 点云变高斯体: 算法在每个"点"的位置,放上一个高斯体

  3. 投影与光栅化: 将这些 3D 高斯体投影到 2D 屏幕平面上渲染。

    1. 投影 (Projection): 把 3D 的椭球体"拍扁"到 2D 屏幕上,变成一个带渐变的圆环或椭圆。

    2. 排序 (Sorting):gpu会将这些"圆环"按离相机的远近进行排序。

    3. Alpha 混合 (Alpha Blending): 这步是 3DGS 的核心。

      它不像 Mesh 那样"非黑即白"(要么在三角形内,要么在外面)。

      每一个高斯点都有透明度。渲染时,它会像叠多层半透明胶片一样,把远近不同的高斯点颜色叠在一起。


接下来的阶段是模型训练上的东西可无视,可以简单理解成它就是能自己迭代出一个比较好的版本输出一个3d模型

高斯点/体:

高斯点(Gaussian Point)和高斯体(Gaussian Spheroid/Ellipsoid)在 3DGS 的语境下其实是指同一个东西。

称它为"点"时: 侧重于它在空间中的中心位置,即它继承自原始点云的那个坐标。

称它为"体"时: 侧重于它具有体积、形状和透明度,它不再是一个无限小的几何点,而是一个有范围的概率分布。

  1. 计算误差: 将渲染出来的图像与真实的摄影照片对比,计算 Loss。

  2. 反向传播: 通过梯度下降调整每个高斯点的位置、形状、颜色和透明度。

  3. 致密化(Adaptive Density Control):如果某个地方太模糊,算法会自动分裂(Split)高斯点。如果某个地方点太多没用,算法会修剪(Clone/Remove)多余的点。


目前有一个比较火的方向是根据较少数量照片/提示词输出一个3d的模型

较少数量照片

扩散模型驱动 (Generative/Diffusion Based)

就是 AI 先根据你的一张照片,生成出 6-8 张不同角度(左、右、背、顶)的"幻觉照片"。

然后继续走3dgs多视角重建的流程

前馈神经网路 (Feed-forward / DUSt3R)

  1. 坐标映射: AI 直接预测每个像素在 3D 空间里的相对坐标 (x, y, z)。

  2. 点云 对齐: 如果是视频或几张照片,它直接在 3D 空间里把这些预测出来的点"吸附"在一起。

  3. 模型输出的就是带深度的点云或者高斯体,再去和原始图像比较迭代出合理的构成。

提示词创建模型

这个过程不需要任何真实的 3D 模型或照片,只需要两个 AI 组件:

  1. 打分员(2D 扩散模型): 比如 Stable Diffusion。它在几亿张图片上训练过,它非常清楚"一只赛博朋克风格的猫"长什么样。

  2. 学生(3DGS 场景): 一个随机扔在空间里的、乱七八糟的 3D 高斯团。

生成流程(迭代循环)

  1. 随机观察: 算法随机选一个视角(比如俯视 45 度),让 3DGS 渲染出一张当前的图片。刚开始,这张图只是一团模糊的彩色噪音。

  2. 加噪与去噪: 算法给这张渲染图加一点点噪声,然后扔给 Stable Diffusion,并告诉它提示词:"这是一只赛博朋克猫"。

  3. 打分(计算梯度): Stable Diffusion 会尝试把这张图"修"得更像猫。它会告诉 3DGS:"按照我的理解,左上角这块像素应该更亮一点,颜色应该更蓝一点,这样才像赛博朋克。"

  4. 反向传播 3DGS 收到这个"修改意见",通过反向传播去调整空间中几百万个高斯 的位置、形状和颜色。

  5. 循环往复: 换个视角(比如平视、背面),重复上述过程。

结果: 经过几千次迭代,3DGS 为了在每一个视角下都能通过 Stable Diffusion 的"审美检查",被迫把自己排列组合成了一个符合提示词描述的 3D 形状。

相关推荐
叶帆12 天前
【YFIOs】用C#开发硬件之设备上云
开发语言·unity·c#
探物 AI12 天前
【3D·感知】从PointNet到PointPillars:如何让自动驾驶汽车“实时“看见3D世界?
3d·自动驾驶·汽车
久数君12 天前
AI三维建模工具“造形家”:地理场景三维化的高效解决方案
unity·glb·ai算法·ai三维建模工具·地图框选·造形家·城市建筑模型
苏州邦恩精密12 天前
GOM三维扫描在制造中的真实价值:让“修模”从经验动作变成数据动作
人工智能·科技·机器学习·3d·自动化·制造
YHHLAI12 天前
CSS 3D 硬核解析:四个属性手写旋转立方体
前端·css·3d
云飞云共享云桌面13 天前
传统工作站 vs 云飞云共享云桌面:制造业设计云桌面选型深度对比
运维·服务器·前端·网络·3d·架构·制造
会思考的猴子13 天前
Unity VFX 属性 Postion 和 TargetPostion
unity
心前阳光13 天前
Unity资源导入之自动化资源导入
unity·自动化·游戏引擎
LONGZETECH13 天前
无人机仿真教学软件选型实战:5 个硬核技术维度,避开实训建设踩坑
3d·无人机·交互·cocos2d
心前阳光13 天前
Unity之2021.3.45f2c1发布安卓程序遇到的问题
android·unity·游戏引擎