3D

3D 投影

将一个物体用光 照射到墙面上出现的就是 3D投影

旋转该物体加之明暗变化,对应的投影也发生改变,呈现出的人体感觉即为 3D

投影方式

  1. 正交投影
  2. 透视投影

扫描线算法

参考 .扫描线算法图

一个3D物体的可以由若干面组成,每个面的不同形状(多边型)都可由若干三角形组成, 而每个三角形在方块像素中可

通过一条直线进行扫描,以与三角形俩边相交的点为临界点,中间的每个方块进行染色渲染(渲染是通过像素方块实现),进而描述整个3D物体

锯齿

通过扫描线算法的结果是,边缘会有方块的部分溢出,在分辨率低的情况下 人眼很容易产生像素点的锯齿感

抗锯齿

参考 .抗锯齿图

边缘方块进行羽化,降低色素深度来实现锯齿感的降低

同理,这种方法也广泛用在2D图形中的字体和图标上

遮盖

产生距离感的方法是,先描绘远的图层,在此基础上由远到近一层一层描绘

距离近的遮盖距离远的

深度缓冲

不同图层先在缓存区内计算每一块像素点的最小距离,然后根据缓存区内每一像素块的距离进行渲染

是改进遮盖算法,更快速渲染

但存在如果某俩个图层距离一样,且有重叠部分,这个时候因在运算中有小数点浮动误差,距离相同的俩个图层的出现概率都有可能,所以每次刷新像素块时,可能与前一次不同

明暗变化的照明算法

平面着色

3D中 光线 按 每一个一个三角形的表面法线进行折射,到视野中的亮度是不同的,即产生明暗变化

弊端,边界十分明显,看起来不光滑

高洛德着色

冯氏着色

不用一种颜色上色

纹理算法

纹理映射

将三角形边所在的像素块,不光进行羽化,而且进行左右色素平均,得到纹理


总结

所有流程:

  1. 扫描线填充
  2. 抗锯齿
  3. 光照
  4. 纹理化

并行渲染,GPU