[简化版 GAMES 101] 计算机图形学 09三角形光栅化Bilibili 同步视频 为什么图形学独宠「三角形」 光栅化核心用「采样」把三角形变成像素✨ 什么是采样 关键inside 判定函数 硬核原理向量叉积判断点与三角形位置⚡ 效率升级光栅化加速技巧1. 轴向包围盒AABB2. 按行极值优化 真实屏幕像素并非「完美小方块」⚠️ 光栅化的痛点走样与锯齿 结语Bilibili 同步视频[简化版 GAMES 101] 计算机图形学 09三角形光栅化下在计算机成像的世界里我们总能看到栩栩如生的 3D 模型、细腻流畅的画面可你是否好奇三维空间里的多边形究竟是如何变成屏幕上一个个纯色小方块的这一切的答案都藏在光栅化与三角形的故事里 —— 它们是图形学最基础、最核心的基石撑起了整个虚拟视觉世界。 为什么图形学独宠「三角形」屏幕由无数内部颜色均匀的像素小方块构成而想把 3D 物体投射到屏幕第一步就是拆解图形。在所有多边形中三角形是当之无愧的「天选之子」自带四大王牌属性最基础的多边形没有比三角形边数更少的多边形退一步就是线段所有复杂多边形都能完美拆分为三角形通用性拉满✅。天生「平面体质」三点确定一个平面三角形永远是平面图形反观四边形轻轻一折就会扭曲无法保证平面性。内外边界超清晰无需纠结凹凸、孔洞问题三角形的内部与外部定义绝对明确向量叉积就能轻松判断点是否在三角形内。属性插值超丝滑定义三个顶点的颜色、纹理等属性三角形内任意点都能通过重心坐标实现渐变插值让画面过渡自然无断层。正是这些无可替代的优势让三角形成为图形学中最广泛使用的基本单元所有复杂画面本质都是无数三角形的组合。 光栅化核心用「采样」把三角形变成像素当三维三角形经过 MVP 变换、视口变换落到屏幕空间后我们只关注它的x、y 坐标—— 接下来的关键就是把三角形转化为像素这就是光栅化的核心任务。✨ 什么是采样采样就是把连续函数离散化的过程给一个连续函数在特定位置读取它的值。在光栅化中我们要做的是以像素中心为采样点判断该点是否在三角形内。 关键inside 判定函数我们定义一个inside函数输入三角形 屏幕任意点 (x,y)输出1在三角形内或0在三角形外。像素的整数坐标 (x,y)其中心实际在(x0.5, y0.5)遍历所有像素中心调用inside函数就能确定每个像素是否需要上色。这就是最朴素的光栅化思路二重循环遍历 像素中心采样判定。 硬核原理向量叉积判断点与三角形位置inside函数的实现全靠向量叉积这把「金钥匙」以三角形 P₀P₁P₂为例按固定顺序顺时针 / 逆时针取三条边向量分别与「顶点到目标点」的向量做叉积若三个叉积结果的z 值全正 或 全负→ 点在三角形内结果符号不一致 → 点在三角形外对于恰好落在边界上的点图形学中可自定义规则要么算入要么排除工业标准如 OpenGL/DirectX 则规定上边界、左边界算在内右边界、下边界不算严谨又统一。⚡ 效率升级光栅化加速技巧遍历整个屏幕所有像素显然是「大炮打蚊子」—— 三角形只占局部区域优化刻不容缓1. 轴向包围盒AABB计算三角形三个顶点的xmin/xmax、ymin/ymax圈出最小矩形包围盒只对包围盒内的像素做判定直接跳过无效区域计算量大幅减少。2. 按行极值优化针对窄长、旋转的三角形进一步按行取像素左右极值不浪费任何一个像素的计算量精准覆盖三角形区域。 真实屏幕像素并非「完美小方块」我们在理论中假设像素是均匀纯色方块但真实设备的像素结构远比想象中精彩iPhone 屏幕一个像素由RGB 三条色带组成各司其职混合出色彩。三星 Galaxy采用Bayer pattern排列绿色感光点数量远超红、蓝 —— 因为人眼对绿色最敏感更多绿点能让画面更细腻、更贴合视觉感知。彩色打印机采用 CMYK 减色系统加墨越多颜色越暗与屏幕 RGB 加色系统完全相反图案分布也更复杂。不过在图形学学习中我们依旧沿用均匀纯色像素方块的理想模型简化研究逻辑。⚠️ 光栅化的痛点走样与锯齿当我们完成采样、填充像素后一个问题浮出水面画面出现了难看的锯齿这就是走样Aliasing根源很简单像素本身有物理大小并非无限小采样率不足以匹配信号精度导致连续图形被离散化后失真锯齿是光栅化的经典难题而解决它的反走样抗锯齿技术正是图形学下一阶段的核心研究方向下一篇我们将从频率域深度拆解走样本质解锁丝滑画面的秘密。 结语从三角形的选择到采样的逻辑再到光栅化的实现与优化每一步都是计算机图形学的精巧设计。正是这些基础原理让虚拟世界得以呈现在屏幕之上而锯齿与反走样的探索也让画面不断趋近真实 —— 这就是光栅化的魅力简单却深邃基础却伟大✨。