games101学习:Lecture 5: Rasterization 1(Triangles) 三角形光栅化
做完观测矩阵之后,所有物题都已经在经典的(-1,1)的三次方这个立方体,下一步我们应该怎么做,这个就是这节课要讲的内容。

下一步就是要把这个物体画在平面上,这一步叫做光栅化
透视投影

MVP
Model transformation
View transformation
Projection transformation

做完mvp之后所有的物品都会在[-1,1]的三次方的立方体上。随后要将这个立方体画在屏幕上。
定义下屏幕:对于计算机图形学来说
1.屏幕是一个二维的数组。
2.数组中的每一个元素:叫做像素。
3.一种典型的光栅raster成像。
raster == screen in German在德语中是屏幕的意思。
Rasterize == drawing onto the screen 光栅化 == 在屏幕上画画。
Pixel ( means "picture element")
像素是什么rgb8888 rgb868 由红绿蓝组成的一些int类型的数据。

像素(x,y)的中心是(x+0.5,y+0.5)。

需要把这么一个(-1,1)平方的正方形映射到像素上。

首先要先进行平移。
光栅化:屏幕空间多边形打碎,碎成像素,告诉屏幕每个像素的值是什么。

通过扫描的方式去进行写屏幕。
隔行扫描:一次只扫描奇数的屏幕行数,下一次扫描偶数的屏幕行数,这样交替运行。 能够减少扫描的工作量。

LCD:通过里面液晶的构造来影响光的运动轨迹来实现屏幕改变。
三角形是最基础的多边形
任何多边形都可以拆解为三角形
内部保证是平面的

判断一个像素的中心点和三角形位置的关系。

采样sampling:给你一个函数,他是连续的,在不同的地方去问这个函数的值是多少。
图形学中的采样: 利用像素的中心对屏幕空间进行采样?

判断像素中心是否在三角形内部。专门用一个函数(inside(t,x,y))


遍历以查看像素中心是否在三角形内部。
或者也可以用这个方法来判断是否在内部。做叉乘。


若像素中心刚好跟三角形的边重合在一起,有两种处理方法,一种是不做处理,一种是做特殊处理,但是这们课** 不做处理**。
OPENGL规定有三角形落在中心点的上边或者左边的话,那就落在三角形内部。如果是右边或者下边,那就不算落在三角形的内部。
考虑三角形的光栅化时(也就是把三角形画到屏幕中),没必要遍历所有的像素点,因为三角形其实只能覆盖比较小的区域。

这里可以进行简单加速,就比如蓝色区域覆盖的地方叫做Bounding Box,第一列完全可以不去遍历。

这也是一种加速方法。
实际屏幕的光栅化是怎么样的。

三星的绿色点密度比较高。
Jaggies!(锯齿)有点像三角形但又不是三角形


浙公网安备 33010602011771号