27. 3D 图形-3D Graphics_哔哩哔哩_bilibili
1. 简介
在第 27 集中,视频主要介绍了 3D 图形的基础知识和渲染技术。从基本的线框渲染和 3D 投影,到更加复杂的多边形填充、遮挡处理、光照算法和纹理映射,视频详细介绍了这些技术及其在计算机图形学中的应用。此外,还提到了 GPU 在加速 3D 渲染中的重要作用。
2. 从 2D 到 3D 图形
2.1 基本概念
在 3D 图形学中,点的坐标不仅包含 X 和 Y,还包含 Z 坐标。由于电脑屏幕是 2D 的,图形算法需要将 3D 坐标“拍平”到 2D 平面上,这个过程叫做 3D 投影。主要的 3D 投影类型包括:
- 正交投影:平行线在投影中保持平行。
- 透视投影:平行线在远处汇聚于一点,类似人眼看到的效果。
2.2 线框渲染
线框渲染 是一种将多边形的边用线条连起来的渲染方法。可以想象将筷子做成立方体,再用手电筒照射形成的影子。这种方法很基本,但在实际应用中,往往需要更加复杂的填充和渲染技术。
3. 多边形与网格
3.1 多边形选择
在 3D 图形中,复杂形状通常由三角形(多边形)构成,因为三点可以唯一确定一个平面,而其他形状不一定具备这种稳定性。因此,三角形是图形学中的基本构建块。
3.2 网格
由多个多边形组成的集合称为 网格。网格越密集,其表面越光滑,细节也越丰富。然而,这也会增加计算量,因此游戏设计者需要平衡模型的真实度与多边形数量。
4. 多边形填充
4.1 扫描线渲染
扫描线渲染 是一种经典的多边形填充算法,通过逐行计算多边形与扫描线的交点并填充像素。尽管这种方法有效率,但产生的锯齿效应需要用 抗锯齿 技术来改善。
4.2 抗锯齿
抗锯齿通过调整像素颜色来柔化锯齿边缘,改善绘图质量。这个技术在很多地方使用,例如字体和图标。
5. 遮挡处理
5.1 画家算法
画家算法 通过从远到近的顺序渲染多边形,类似画家先画背景再画前景元素。
5.2 Z-Buffering
Z-Buffering 是另一种遮挡处理方法,通过记录每个像素的深度(距离),在渲染时仅保留最近的多边形,大大提高了处理速度。
5.3 Z-Fighting
当两个多边形距离相同时,可能会出现 Z-Fighting,一种多边形闪烁的现象,这是浮点计算中常见的问题。
6. 光照与着色
6.1 光照模型
为了使 3D 场景更真实,需要对物体表面进行光照处理。平面着色(Flat Shading)是最基本的算法,会显著显示多边形边界,但有更高级的着色算法如高洛德着色(Gouraud Shading)和冯氏着色(Phong Shading),可以使表面看起来更平滑。
7. 纹理映射
纹理映射 是在多边形表面应用图案或图像的过程,通过将纹理图像的颜色映射到多边形表面,实现更丰富的视觉效果。
8. GPU 在 3D 渲染中的作用
现代图形处理离不开 GPU。GPU 专为图形计算设计,具有许多并行处理核心,例如 GeForce GTX 1080 TI 拥有 3584 个核心,能够每秒处理数亿个多边形,大幅加速 3D 渲染。
9. 总结
- 3D 图形需要将 3D 坐标投影到 2D 平面。
- 多边形(尤其是三角形)是构建 3D 模型的基本单元。
- 扫描线渲染和抗锯齿技术在多边形填充中广泛应用。
- 遮挡处理可通过画家算法或 Z-Buffering 实现。
- 光照和着色技术提高了 3D 图形的真实感。
- 纹理映射使表面细节更加丰富。
- GPU 强大的并行处理能力使得快速 3D 渲染成为可能。
这些技术共同促成了现代 3D 图形的发展,丰富了我们的视觉体验。