3DGS之光栅化

光栅化(Rasterization)是计算机图形学中将连续的几何图形(如三角形、直线等)转换为离散像素的过程,最终在屏幕上形成图像。

一、光栅化的核心比喻

  1. 像画家在画布上作画 假设你是一个画家,要把一个3D立方体画到2D画布(屏幕)上。你需要将立方体可见的每个面分解成小色块(像素),并确定每个色块的颜色。光栅化就是这个"分解并填色"的过程,只不过计算机通过数学计算自动完成。

  2. 拼图游戏 光栅化类似于将一幅完整的拼图分解成无数小拼图块(像素),然后根据原图规则给每个小拼图块上色,最终拼出完整画面。

  3. 光栅设备的原理 屏幕像一块由横向和纵向栅格组成的"捕鱼网"(光栅),光栅化的过程就像用这些栅格过滤光线,只允许特定方向的光通过,从而形成图像(例如液晶显示器的工作原理)。

二、光栅化的具体步骤

  1. 输入几何图元 光栅化处理的基本单位通常是三角形(因为三角形是平面且无歧义的几何形状),输入数据包括三角形的顶点坐标、颜色、纹理等信息。

  2. 投影到屏幕空间 通过矩阵变换将3D模型映射到2D屏幕坐标系,类似于用相机拍摄物体后得到平面照片的过程。这一步会剔除视锥外的不可见部分(如相机背后的物体)。

  3. 分解为像素并判断覆盖关系 计算机遍历屏幕上的每个像素,判断其中心点是否在三角形内部。例如,通过叉乘计算三个边的方向与点到边的关系,若所有方向一致,则点在三角形内。

  4. 颜色插值与混合 若像素被覆盖,则根据顶点颜色或纹理坐标进行插值计算(如三角形的三个顶点是红、绿、蓝,中间像素会渐变过渡),同时处理透明度和遮挡关系(如使用深度缓冲Z-buffer)。

  5. 输出到屏幕 最终将所有像素的颜色存入帧缓冲区(Frame Buffer),显示器逐行扫描这些数据形成图像

三、光栅化中的关键问题与解决

  1. 锯齿(走样) 由于像素是离散的,斜线或曲线边缘会出现锯齿。例如,楼梯状的斜线边缘看起来不平滑。

    解决方法

    1. 多重采样(MSAA):对每个像素多次采样并混合结果,平滑边缘。
    2. 抗锯齿:先对图像进行模糊(低通滤波),再采样,减少高频信号带来的锯齿感。
  2. 性能优化

    • 包围盒(Bounding Box) :仅处理三角形覆盖的像素区域,减少无效计算。
    • 深度测试(Z-Buffer):通过记录像素的深度值,避免绘制被遮挡的物体。

四、现实中的光栅化应用

  • 游戏渲染:实时生成逼真的3D场景,例如《少年派的奇幻漂流》中的虚拟老虎。
  • UI界面:手机、电脑屏幕的显示均依赖光栅化技术。
  • 科学可视化:将复杂数据(如气象模型)转化为直观的2D图像。

光栅化是计算机图形学的基石,通过将连续几何离散化为像素,让虚拟世界得以在屏幕上"活"起来。其核心逻辑是"分解-判断-填充",结合数学计算与硬件加速,实现高效渲染。

相关推荐
美摄科技8 小时前
什么是3D贴纸SDK?
3d
HelloRevit1 天前
快速入门 - Azure 数字孪生的 3D 场景工作室(预览版)入门
3d·flask·azure
CHOTEST中图仪器2 天前
3d光学轮廓仪如何局部测量标准台阶?
3d·光学轮廓仪·三维形貌·微观尺寸
前端_Danny3 天前
使用 ECharts + ECharts-GL 生成 3D 环形图
3d·信息可视化·echarts
学無芷境3 天前
Large-Scale 3D Medical Image Pre-training with Geometric Context Priors
人工智能·3d
暴风鱼划水3 天前
三维重建【4-A】3D Gaussian Splatting:代码解读
python·深度学习·3d·3dgs
老黄编程3 天前
pcl 3DSC特征描述符、对应关系可视化以及ICP配准
3d·pcl·3dsc·icp
猿来是你_L3 天前
UGUI笔记——3D坐标转换成UGUI坐标
笔记·3d
渲吧云渲染4 天前
3D 技术赋能制造企业精准高效装配生产
3d·数字化装配·制造业转型
不会学习的小白O^O5 天前
基于色彩融合和3D功能的自动苹果识别
3d