计算机图形学-GAMES101-5

一、观测变换

 通过Viewing(观测)transformation,最终我们将世界坐标系中的物体投影到了一个xyz都处于【-1,1】的立方体中。那么接下来,我们该做什么?计算机图形学-GAMES101-5_第1张图片

二、光栅化(Rasterization)

(1)透视投影的定义

 定义透视投影的视锥需要的参数:

  • 长宽比Aspect ratio:width / height
  • 垂直的可视角度:fovY
  • 远近平面的距离:n和f
    计算机图形学-GAMES101-5_第2张图片
     通过长宽比和垂直的可视角度可以求出水平的可视角度。
     如下图所示,根据fovY和n可以计算出近平面的顶点坐标,再根据宽高比Aspect即可计算出近平面的高度,因此根据上述参数可以计算出所有屏幕的所有信息。远平面同理。

计算机图形学-GAMES101-5_第3张图片
计算机图形学-GAMES101-5_第4张图片
 因此我们只需要定义fov和宽高比Aspect以及n和f即可定义一个确定的视锥。

(2)屏幕像素

 屏幕的分辨率诸如1920×1080也叫做1080P,数字说明的都是像素的多少。
 屏幕是一个典型的光栅成像设备,把图像画在屏幕上的过程就是光栅化的过程。
 我们暂时认为像素是呈现颜色的最小单位,其实这是不对的。像素的颜色表示了一个灰度,一般是0~255,使用RGB三个值来表示一个颜色。
 屏幕空间中每一个像素使用一个(x,y)坐标来表示,屏幕上的像素就是从(0,0)到(width-1,height-1)。像素的中心其实位于(x+0.5,y+0.5)。
计算机图形学-GAMES101-5_第5张图片

(3)投影立方体到屏幕的映射

 将【-1,1】的立方体映射到屏幕【0,width】和【0,height】。
计算机图形学-GAMES101-5_第6张图片

  • 映射对应的变换矩阵:计算机图形学-GAMES101-5_第7张图片
     上述变换将立方体空间【-1,1】变换到二维空间【0,width】×【0,height】。我们已经得到了一个二维的图片了,现在我们要把这个图像打散成像素,即光栅化。
  • 光栅化是指将图像中的基本图形即图元打碎成像素,将图元打碎成像素后得到每个像素应该显示的颜色,再将图像真正的显示在屏幕上。

(3)屏幕的成像

  • CRT成像设备会逐行逐列去绘制像素的颜色。隔行扫描:奇数行和偶数行交替绘制,在每一帧只绘制奇数行或偶数行。但是隔行扫描可能会造成严重的画面撕裂,特别是高速运动的画面。
    计算机图形学-GAMES101-5_第8张图片

  • 低分辨率设备如计算器,高分辨率设备如智能手机的屏幕。一些屏幕设备分辨率已经超出了人类视网膜的分辨率,这种屏幕叫做视网膜屏幕。

  • 液晶显示器LCD通过液晶对光的扭曲,当光通过光栅时会被扭曲。
    计算机图形学-GAMES101-5_第9张图片

  • 发光二极管LED,即要么发光要么不发光,可以发出不同的颜色。
    计算机图形学-GAMES101-5_第10张图片

(4)如何光栅化

(4.1)从图形到像素

  • 三角形可以表达三维和二维的面,三角形是最基础的多边形,任何多边形都可以拆解成三角形,三角形内部永远都是一个平面,三角形内部外部定义清晰。
  • 根据三角形内点和三角形顶点的位置关系,可以得到颜色的一个渐变效果。
  • 光栅化中最重要的:判断一个像素和三角形的位置关系,更确切的来说考虑像素的中心点和三角形的位置关系。
  • 采样,即对某个定义的函数,以像素中心位置为自变量,带入得到的因变量。
    计算机图形学-GAMES101-5_第11张图片

(4.2)采样

  • 定义函数inside,其中t代表三角形,xy为任意实数。
    计算机图形学-GAMES101-5_第12张图片

  • 考虑屏幕上的每一个像素:在三角形内还是外计算机图形学-GAMES101-5_第13张图片

  • 如果点在边上,要么不做处理,要么特殊定义。在OpenGL中认为如果点落在左边和上边则其处在三角形内,如果落在右边和下边则不在三角形内。

  • 根据三角形的顶点坐标,对x和y取最小和最大,得到三角形的包围盒(两个对角顶点),如下图蓝色区域所示。当循环像素判断是否在三角形内时,只需要循环包围盒内的三角形。(光栅化的加速)
    计算机图形学-GAMES101-5_第14张图片

  • 更快速的光栅化加速如下图所示,适用于窄长刚好旋转45°处于对角线位置的三角形。计算机图形学-GAMES101-5_第15张图片

  • 人眼对绿色最为敏感,对更多的绿色使得视觉效果更好。RGB值越大越亮。
    计算机图形学-GAMES101-5_第16张图片

(5)锯齿和走样

  • 锯齿是光栅化中一直在解决的问题,出现锯齿的原因是我们对信号的采样率不够高,因此导致信号的走样。
    计算机图形学-GAMES101-5_第17张图片

  • 走样即Aliasing,对应的还有反走样、抗锯齿
    计算机图形学-GAMES101-5_第18张图片

你可能感兴趣的:(GAMES101,图像处理,计算机图形学,CG,GAMES101)