games101(作业2)

本文介绍了计算机图形学的基础概念,包括光栅化过程,视口变换,以及如何通过三角形的叉乘判断点在图形内外。讨论了采样原理和采样问题如走样、锯齿和摩尔纹,并提出了反走样技术,如SSAA、FXAA和DLSS等。此外,还提到了深度缓存和重心坐标的计算方法,对于理解和优化图形渲染具有重要意义。
摘要由CSDN通过智能技术生成

前言

作业2以及相关知识的笔记
本课程的主页:https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html

光栅化

显示屏是一个光栅化的成像设备,我们假设屏幕是由像素点组成的我们假设像素是均匀填充的小方块,每个像素点由rgb三种颜色决定,rgb的范围都是0到255。屏幕中的任何一个像素我们假设它的中心为 ( x + 0.5 , y + 0.5 ) (x+0.5,y+0.5) (x+0.5,y+0.5)。在之前的变换中,我们把物体压缩到了-1到1的空间中,在呈现的时候,要让物体根据屏幕的大小而变化,所以我们进行视口变换,将物体按照屏幕的比例缩放,然后将中心从原点移动到屏幕的中心: M v i e w p o r t = [ w i d t h 2 0 0 w i d t h 2 0 h e i g e t 2 0 h e i g e t 2 0 0 1 0 0 0 0 1 ] M_{viewport}=\begin{bmatrix} \frac{width}{2} & 0 & 0&\frac{width}{2} \\ 0 &\frac{heiget}{2} &0& \frac{heiget}{2} \\0&0&1& 0\\0 & 0 &0& 1\end{bmatrix}\quad Mviewport=2width00002heiget0000102width2heiget01
通常我们的得到的模型是由点组成的,根据不同的拓扑属性,把这些点组合成模型,比如我们可以规定这些点按照顺序组成三角形,四边形还是五边形,可以得到不同的图案。在图形学中,我们最常使用的基本的拓扑是三角形

三角形的优点:

三角形是最简单的多边形
任何多边形可以拆成三角形
三角形一定是平面
三角形的内外分辨的很清晰
定义三个顶点的不同属性,可以通过插值得到三角形内的任意点的属性
由三角形组成的模型,在呈像的时候要变为像素点显示出来,把顶点打散成像素的过程叫做光栅化

采样

想要呈像就要用屏幕上像素的点采样图形,就是用像素来表示图形,要判断有多少像素点在图形内,这一步要做的就是找到在图形中的点(记得用像素的中心点)。ps:有点在边上,或者图形包含一个像素多少才算在内,这种细节可以自己规定。

叉乘判断内外

基本的的图形是三角形,三角形可以用叉乘的方式来判断一个点在三角形内还是三角形外。假设三个点A,B,C,规定顺时针或者逆时针方向,ABxBC和BCxCA的结果是同号的。我们找一个点P,计算PAxAB,然后PBxBC,PCxCA结果如果是同号的话,说明P在三角形内,否则在图形外。

包围盒

之前的笔记中有记过包围盒,包围盒就像是预计算,提前把大概的范围划分出来,可以减少计算次数。个人感觉有很多方法可以加速计算,比如可以提前把一些位置信息存储,就可以直接找到三角形,用空间换时间,每个新的算法都是做 trade-off,针对不同的情况会有不同的解决思路。

Tips

前面说假设像素是一个均匀填充的小方块,实际上并不是
三星的手机显示的像素的排列叫bayer pattern,绿色的点比红色和蓝色的多,人眼对绿色的点更敏感一些
在这里插入图片描述

采样原理

采样相当于要用屏幕上离散的点去表示图形连续的点,这里要涉及到频域和时域(图像在空间上的分布也算)的概念和信号处理方面的知识(自行学习)。

傅里叶级数展开,傅里叶变化

任何一个周期函数都可以用一系列正弦函数,余弦函数的线性组合加一个常数组成来表示。可以用傅里叶级数将任意一个周期函数展开成不同的频率的组合。
傅里叶变化可以将图片在时域和频域之间进行转化。在图片上的像素变化,变化越大,转化到频域之后信号越高频,这个变换会默认图片是周期性函数,所以会认为图片的左右和上下是重复的,导致图片边界有高频信号。在转化成频率之后,采样的频率慢,采样一次的时间,可能会发生多次的信号变化,就会导致图像的走样。采样相当于在重复频谱,采样慢会导致频谱密集,频谱之间间隔小,可能会重叠。

走样(Aliasing)

当采样出现错误的情况,我们就称之为走样,

锯齿(Jaggies)

之前采样的时候,我们会判断中心在不在三角形里,在图形中的小方格用红色填满,当格子太大(采样频率低)的时候就会出现下图的情况,这种情况称为锯齿。
在这里插入图片描述

摩尔纹(Moire)
Wagon wheel effect

以上三种都是走样的例子。由于信号变化快,而采样的频率跟不上。

反走样

可以用滤波器去掉一些高频信息,反应在图片上就是像素变化不明显,被模糊了。在图片上做卷积,就是低频滤波器的一种。(在时域做卷积相当于转化成频域做乘积再转换回来)
(同时应用高低频滤波器可以剩下中间的部分边界信息)

方法
ssaa

超级采样,就是用4x4的点求平均,输出2x2的图

mass

ssaa是对所有点做平均,mass只对图形边界的点做,比ssaa快很多。

fxaa

在图像边界做图像处理

taa

在时间上前后帧采样

超分辨率 dlss

利用深度学习,补全图像

深度缓存

物体绘制有先后顺序,后绘制离自己近的(画家算法)。深度缓存计算深度值,后来的物体离相机更近的话就抛弃当前值。(无法用于半透明物体)

重心坐标

之前应该提到过,当点在三角形内的时候,它的颜色值可以由三个顶点的值做插值得到,假设中心坐标为a,b,c,有(2d): p = a ∗ p 1 + b ∗ p 2 + c ∗ p 3 p=a*p_1+b*p_2+c*p_3 p=ap1+bp2+cp3 a + b + c = 1 a+b+c=1 a+b+c=1p有x,y两个轴都满足方程,3个方程直接联立解方程组: a = ( p − p 3 ) × ( p 2 − p 3 ) ( p 1 − p 3 ) × ( p 2 − p 3 ) a=\frac{(p-p_3)×(p_2-p_3)}{(p_1-p_3)×(p_2-p_3)} a=(p1p3)×(p2p3)(pp3)×(p2p3) b = ( p − p 3 ) × ( p 1 − p 3 ) ( p 2 − p 3 ) × ( p 1 − p 3 ) b=\frac{(p-p_3)×(p_1-p_3)}{(p_2-p_3)×(p_1-p_3)} b=(p2p3)×(p1p3)(pp3)×(p1p3) c = 1 − a − b c=1-a-b c=1ab
还有注意cv输出图像向量顺序 gbr。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值