【Games101】Lecture05 光栅化 笔记

本文介绍了计算机图形学中的正交投影,包括宽高比和垂直可视角度对视锥的影响,以及如何通过视口转换矩阵进行显示。接着,讲解了光栅化的过程,从三角形作为基本单元的原因,到采样和实际屏幕光栅化的实现,特别提到了三星LCD屏幕的像素排列方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

视频 &图片来源:【B站】GAMES101-现代计算机图形学入门-闫令琪

1. 正交投影-续

1.1 宽高比与垂直可视角

  • 宽高比 aspect ratio
  • 垂直可视角度 vertical field of view:与上沿重心连线,和与下沿中心连线之间的夹角(图里两条红色虚线的夹角)。影响视锥(frustum)的开口(角度越小,越趋近于正交投影)。


一个例子:上图为从侧面观察
引出:通常情况下,我们定义一个视锥,只需要定义①垂直可视角度;②宽高比,其他的参数可以自动转化到定义正交投影的概念上。

1.2 显示

什么是屏幕(screen)

  • (图形学上说是)像素的数组
  • 分辨率:定义数组的大小
  • 一种典型的光栅显示

什么是光栅(raster)

  • 把图像画在屏幕上的过程

什么是像素(pixel)

  • 一个颜色统一的小方块(方块内颜色没变化)
  • 一个像素内的颜色可以由RGB表示

什么是屏幕空间

  • 像素的坐标(index)由 ( x , y ) (x,y) (x,y)表示
  • 每个像素由一个整数坐标来描述
  • 像素的下标范围: ( 0 , 0 ) → (0,0)\to (0,0) ( w i d t h − 1 , h e i g h t − 1 ) (width-1,height-1) (width1,height1)
  • 虽然用整数描述,像素中心在 ( x + 0.5 , y + 0.5 ) (x+0.5,y+0.5) (x+0.5,y+0.5)
  • 整个屏幕的范围: ( 0 , 0 ) → ( w i d t h , h e i g h t ) (0,0)\to(width,height) (0,0)(width,height)

视口转换矩阵 M v i e w p o i n t = ( w i d t h 2 0 0 w i d t h 2 0 h e i g h t 2 0 h e i g h t 2 0 0 1 0 0 0 0 1 ) M_{viewpoint}=\left(\begin{matrix}\frac{width}{2}&0&0&\frac{width}{2}\\0&\frac{height}{2}&0&\frac{height}{2}\\0&0&1&0\\0&0&0&1\end{matrix}\right) Mviewpoint=2width00002height0000102width2height01
核心:先缩放再移动。 3 × 3 3\times3 3×3对角阵-缩放。

2. 光栅化

2.1 三角形


为什么要用三角形?

  • 三角形是最基础的多边形
  • 任何多边形都可以拆成三角形
  • 三角形内部一定是平面的
  • 三角形内外定义的非常清晰
  • 定义三角形三个顶点不同的属性,能够得到一个渐变的效果(在三角形内部插值)

2.2 采样

采样:离散化函数的过程。

定义二元函数: i n s i d e ( t , x , y ) = { 1 点(x,y)在三角形t内 0 其他 inside(t,x,y)=\begin{cases}1& \text{点(x,y)在三角形t内}\\0&\text{其他}\end{cases} inside(t,x,y)={10(x,y)在三角形t其他

//采样 
//遍历整个屏幕
for(int x=0;x<xmax;++x)
	for(int y=0;y<ymax;++y)
		image[x][y]=inside(tri,
						   x+0.5,
						   y+0.5);


蓝色区域:包围盒(Bounding Box),光栅化只考虑区域内的像素。

另一种加速方法:找每一行的最左像素和最右像素。适用于窄长的三角形。

2.3 实际屏幕的光栅化

实际LCD屏幕上的像素

三星的钻石排列(bayer pattern)使用了更多的绿色像素→人眼对绿色更敏感

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值