5.光栅化(三角形遍历)

一.补充上节内容:

1.如何定义一个3维空间下的长方体或者说视锥?

1.宽高比

2.垂直可视角度

只要知道前面两个,就可以知道远近,左右上下

二.MVP之后要做什么?

MVP之后得到cube[-1,1]3 → 画在Screen(屏幕)

1.定义屏幕

一个二维数组

数组中的每个元素就是像素(分辨率就是像素的多少)

是一个典型的光栅成像设备

2.Raster(光栅)就是德语中的Screen

动词化Rasterize=drawing onto screen

把东西画在屏幕上就是光栅化的过程

3.Pixel(像素)(PIcture element的缩写)

目前可以理解成一个小方块并且每个只有一种颜色

4.屏幕空间

屏幕左下角是原点,向右是x,向上是y的一个坐标系

一些规定:

  • Pixel's indices(像素坐标)是(x,y)的形式;x,y都是整数,例如下图的就是(2,1)
  • 所有的像素的表示(0,0)to(width-1,height-1)
  • 像素的中心:(x+0.5,y+0.5)
  • 整个屏幕覆盖(0,0)to(width,height)

5.屏幕映射(视口变换)

先不管z轴,[-1, 1]^{2} to [0, width] x [0, height]

先缩放再平移

三.不同的光栅显示设备

1.早期显示设备(CRT显示器)

示波器:成像原理和早期显示器一样,利用的是阴极射线管,

早期的电视或者电脑利用的是隔行扫描技术,就是每时刻只生成奇数行或者偶数行的数据,减少了一半的工作量,现在仍然在一些视频压缩中起作用,用的是一样的思想

2.Frame buffer

现代的显示器是通过映射显存中的一块区域

3.现代显示设备(LCD)

液晶显示器

发光二极管

四.光栅化

1.为什么选择三角形?

  • 是最基础的图形,边最少
  • 其他的多边形可以拆成三角形
  • 三角形内一定是平面
  • 内外的定义很明确
  • 定义三个顶点后,三角形内可以插值

2.光栅化的关键:

如何判断一个像素和三角形的位置关系(像素中心点与三角形的位置关系)

3.判断方法:

采样
  • 感性理解:给你一个连续函数,在不同的地方去问,它的值是多少
  • 采样就是把函数离散化的过程
  • 采样是图形学很重要的一个概念,此处是指利用像素中心对屏幕进行采样
回到我们要做的:判断像素中心是否在三角形内:
  • 定义一个inside函数

  • 采样:

  • 具体的实现:叉积→全负/正即为三角形内
  • 一个特殊情况:点在边上怎么办
    -不做处理(本课程)
    -特殊处理(OPenGL和DX):上面和左边认为在三角形内,右边和下边是三角形外
  • 另外并不要所有的像素都进行采样,只需要取x的最小和最大,y的最小和最大,其实还可以取每一行的x的最小和最大,不过实现起来较复杂

五.真实屏幕上的光栅化

右边的是bayer pattern图案,很明显绿色密度要更高,那是因为人眼对绿色最为敏感。

六.锯齿

因为每个像素都是由同一个颜色覆盖的,所以填充颜色以后就会变成这个形状,这并不是我们一开始想要的形状,出现这个问题的主要原因就是采样率太低,那么之后就会根据这个问题去进行抗锯齿或者说反走样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值