games101学习:Lecture 5: Rasterization 1(Triangles) 三角形光栅化

做完观测矩阵之后,所有物题都已经在经典的(-1,1)的三次方这个立方体,下一步我们应该怎么做,这个就是这节课要讲的内容。

image

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

透视投影
image

MVP
Model transformation
View transformation
Projection transformation

image

做完mvp之后所有的物品都会在[-1,1]的三次方的立方体上。随后要将这个立方体画在屏幕上。

定义下屏幕:对于计算机图形学来说
1.屏幕是一个二维的数组。
2.数组中的每一个元素:叫做像素
3.一种典型的光栅raster成像。

raster == screen in German在德语中是屏幕的意思。
Rasterize == drawing onto the screen 光栅化 == 在屏幕上画画。

Pixel ( means "picture element")
像素是什么rgb8888 rgb868 由红绿蓝组成的一些int类型的数据。

image

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

image

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

image

首先要先进行平移。

光栅化:屏幕空间多边形打碎,碎成像素,告诉屏幕每个像素的值是什么。

image

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

image

LCD:通过里面液晶的构造来影响光的运动轨迹来实现屏幕改变。

三角形是最基础的多边形
任何多边形都可以拆解为三角形
内部保证是平面的

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

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

image

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

image

image

遍历以查看像素中心是否在三角形内部。

或者也可以用这个方法来判断是否在内部。做叉乘。
image

image

若像素中心刚好跟三角形的边重合在一起,有两种处理方法,一种是不做处理,一种是做特殊处理,但是这们课** 不做处理**。
OPENGL规定有三角形落在中心点的上边或者左边的话,那就落在三角形内部。如果是右边或者下边,那就不算落在三角形的内部。

考虑三角形的光栅化时(也就是把三角形画到屏幕中),没必要遍历所有的像素点,因为三角形其实只能覆盖比较小的区域。

image

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

image

这也是一种加速方法。

实际屏幕的光栅化是怎么样的。
image
三星的绿色点密度比较高。

Jaggies!(锯齿)有点像三角形但又不是三角形
image

image

posted on 2025-12-13 20:44  yuweijie0124  阅读(1)  评论(0)    收藏  举报