GAMES101学习笔记(三):Rasterization 光栅化(三角形的离散化、抗锯齿、深度测试)

文章目录

  • 视口变换 Viewport
  • 三角形网格 Triangle Mesh
  • 采样 Sampling
  • 走样/反走样 Aliasing/Antialiasing
  • 采样频率、空间域与频率域
  • 深入理解采样、走样、反走样
  • 反走样总结
  • 深度测试 Depth testing


课程资源:GAMES101-现代计算机图形学入门-闫令琪

Lec5 ~ Lec6 学习笔记:
Lecture 05 :Rasterization 1 (Triangles) ——光栅化(三角形的离散化)
Lecture 06 :Rasterization 2 (Antialiasing and Z-Buffering) ——光栅化(抗锯齿和深度测试)

视口变换 Viewport

在变换的章节,我们了解了MVP变换(即Model、View、Projection Transformation),也可以称为观测(Viewing)矩阵变换;
也了解了通过投影变换将三维空间中的物体投影到二维平面:

  • 正交投影:忽略深度信息,相当于将相机放在无限远
  • 透视投影:考虑相机位置,近大远小

下一步,我们将通过视口变换(Viewport Transformation)将投影变换出来的结果显示在屏幕上。
在这里插入图片描述
在这里插入图片描述
这将产生3个问题:

  • 何为屏幕?
    图形学中,认为屏幕是一个二维数组,数组的每一个元素为一个像素。
    这个数组的大小即为分辨率,例如1280*720,表示这个屏幕的分辨率为720p。
    屏幕是一种典型的光栅成像设备。
  • 何为光栅?
    Raster即德语中的屏幕。
    Rasterize光栅化的过程就是将东西画在屏幕上的过程。
  • 何为像素?
    在这门课中我们暂时认为像素是一个小方块,内部的颜色是一个混合的颜色,颜色值用RGB表示。

在这里插入图片描述

通常我们将屏幕左下角设定为屏幕空间原点(0, 0)
屏幕空间坐标为整数,范围从(0, 0)(width-1, height-1)
像素(x, y)中心在(x+0.5, y+0.5)

然后我们暂时忽略Z坐标,通过视口变换矩阵转换到屏幕空间坐标。
视口变换后,我们要把这些多边形显示在光栅显示设备上。

常见的光栅显示设备:

  • 示波器Oscilloscope (阴极射线管CRT, Cathode Ray Tube)
  • LCD显示器(Liquid Crystal Display,液晶显示器)
  • LED显示器(Light-Emitting Diode,发光二极管)
  • OLED显示器(Organic Light-Emitting Diode,有机发光二极管)
  • Electrophoretic(Electronic ink)Display

三角形网格 Triangle Mesh

Triangle - Fundamental Shape Primitives
为什么三角形是最基础的图元:

  • 三角形最基础的多边形(most basic polygon),其他多边形都可以分解为多个三角形。
  • 三点共面 Guaranteed to be planar
  • 三角形的内外定义清晰,可以用叉乘判断内外 Well-defined interior
  • 三角形内可以定义明确的插值方法 Well-defined method for interpolating values at vertices over triangle(barycentric interpolation)

通过判断像素的中心点和三角形的位置关系,可以实现最简单的光栅化。

采样 Sampling

在这里插入图片描述
采样就是将一个函数 离散化 的过程。

通过对像素中心是否在三角形内进行采样,我们就可以对三角形进行光栅化。
如何判断像素中心和三角形的位置关系?通过叉积
在这里插入图片描述
对于边界上的点,我们不做处理。实际上我们定义一个标准,统一处理就好。
我们也没有必要采样所有像素,可以定义Bounding Box在小范围采样。(除此之外也有多种加速采样的方法

轴向包围盒AABB,Axis-aligned bounding box

以上只是最简单的一种光栅化的理论,实际屏幕的光栅化要复杂的多。
但GAMES101中我们还是认为每个像素是一个简单的颜色均匀的小方块。
在这里插入图片描述

走样/反走样 Aliasing/Antialiasing

我们对三角形的采样与原三角形的显示效果有较大的差异
具体来说,边缘多了很多锯齿Jaggie现象,这种现象的学名叫做走样(Aliasing)
解决这种现象的过程就叫做反走样,也叫做抗锯齿(Antialiasing)在这里插入图片描述
在了解反走样之前,我们要重新认识一下 采样 的理论

Sampling is Ubiquitous in Computer Graphics

采样在计算机图形学中应用的非常普遍。

  • 光栅化即对二维点的采样(Rasterization = Sample 2D Positions)
  • 摄影即对相机传感器感光元件的采样(Photograph = Sample Image Sensor Plane)
  • 视频或动画即对时间的采样(Video = Sample time)

Sampling Artifacts(Errors/Mistakes/Inaccuracier) in Computer Graphics

采样广泛存在,采样产生的问题/瑕疵同样广泛存在

  • 锯齿/走样
  • 摩尔纹 Moire Patterns in Imaging
    跳过奇/偶数行和列产生的问题
  • 车轮错觉 Wagon Wheel Illusion
    人眼在时间上的采样跟不上运动速度

产生这些问题的本质
信号变换速度太快,但采样速度太慢。
Signals are changing too fast (high frequency), but sampled too slowly.


我们先介绍一个反走样的解决方法,再详细探究其原理:

先对图像做模糊(blur / pre-filter),再对模糊后的图像采样。
顺序不能反,采样之后再模糊并不能起到反走样的作用。
在这里插入图片描述

采样频率、空间域与频率域

在这里插入图片描述

傅里叶级数展开:任何一个周期函数,都可以写成正弦函数和余弦函数的组合

在这里插入图片描述

信号处理中:

  • 时间域(Time Domain)是描述数学函数或物理信号对时间的关系。是真实世界,是唯一实际存在的域。
  • 频率域(Frequency Domain)是描述信号在频率方面特性时用到的一种坐标系。它不是真实的,而是一个数学构造。

图像处理中:

  • 空间域(Spatial Domain)即图像空间,以图像左上为原点,横为y竖为x的二维平面。
  • 变换域/频率域(Transform/Frequency domain)通过各种数学变换(如傅里叶变换、离散余弦变换、小波变换等)将图像从空间域转换到频率域或其他变换域。在变换域中,图像的特征以频率的形式表示,这使得某些类型的处理(如去除噪声、增强特定频率成分)变得更加高效和直观‌。例如,通过傅里叶变换将图像转换到频率域进行滤波处理后,再转换回空间域,可以得到滤波后的图像‌

通过傅里叶变换可以图像从空间域转换到频率域。
在相同的采样频率下,我们可以看到信号频率越高,频域中高频信号丢失的现象越严重

在这里插入图片描述

上文提到反走样的一个方法是模糊,也就是滤波Filtering。如何在频域理解滤波?
想要详细深入了解各种滤波的细节,需要移步数字图像处理相关课程。
不过在现代项目中,图像处理一般都由深度学习来完成了。

一个方面:
Filtering = Getting rid of certain frequency contents
滤波就是去掉一部分频率信息

另一个方面:
Filtering = Convolution(= Averaging)
滤波即卷积,也即平均

Convolution Theorem
卷积定理
Convolution in the spatial domain is equal to multiplication in the frequency domain, and vice versa.
空域/时域上的卷积 相当于 频域中的乘积;频域上的乘积 也相当于 空域/时域上的卷积。

在这里插入图片描述
用更大的卷积核只能留下更小的频率

深入理解采样、走样、反走样

采样 = 重复一个原始信号的频谱
在这里插入图片描述


如下图现象,我们可以从另一个层面定义走样:
同样的采样方法,采样不同的两种函数,我们无法区分它,这种现象叫做走样。
在这里插入图片描述

关于计算机图形学中的走样现象
光栅化的图形显示器用离散量来表示连续量,因为其中采样的频率并不满足Nyquist采样定理引起的信息失真,是形成图片具有锯齿状或者阶梯状的主要原因,为了消除走样而产生的技术被称为反走样技术。
如上图,黑色低频信号和蓝色高频信号得到一致的采样点,蓝色信号采样不足时,就会可能和黑色信号一样,造成严重走样现象。

香农采样定理,又称奈奎斯特采样定理,是信息论,特别是通讯与信号处理学科中的一个重要基本结论。
Nyquist采样定理:为了不失真地恢复模拟信号,采样频率应该大于模拟信号频谱中最高频率的2倍。

在这里插入图片描述
走样 = 频域上是出现了频谱的混叠
采样不够快,f就越小,频谱在复制粘贴的时候发成了重叠,导致走样的问题

时域上的走样失真,在频域上是出现了频谱的混叠;而图形学上的渲染,实际上是对连续函数(图像中的几何关系,着色参数,以及着色方程等)在空间内进行离散的采样,而这个函数包含的频率范围是无限的,意味着不论用多大的采样频率都无法完美恢复原始信号(图形分辨率有限),所以会造成频谱的混叠,形成走样。这个无法避免,所以在图形渲染中能做的是利用各种技术去减轻走样


回到我们一开始说的反走样方法:先做模糊(滤波),再进行采样。
在这里插入图片描述

  • 反走样/抗锯齿操作流程:(消除混叠)
    • 滤波/模糊,砍掉高频信号
    • 再以稀疏的采样率采样
  • 如何重新理解滤波/模糊操作?
    模糊操作 = 用低通滤波器做卷积
  • 如何在采样时处理模糊?
    超采样MSAA(MultiSampling Anti-Aliasing)
    对每个像素,根据三角形覆盖面积重新计算灰度均值。

反走样总结

总的来说,造成图形学上的走样原因包括两种:

  • 几何走样:在图形渲染管线的光栅化过程中,对连续图元进行采样得到离散的片元的过程,也就是几何走样产生的过程。理想的几何图形中的点线是没有宽度的,而光栅化后在显示器上的像素点有了大小,出现阶梯和边缘锯齿状的现象。
  • 着色走样:发生在对渲染方程的采样不足,比如纹理映射过程中,是从纹理坐标映射到多边形或者曲面上,再映射到屏幕。从纹理的单个纹素对应到屏幕上时,引起的放大缩小,纹素的多余或者缺少,会造成走样着色时在空间变化较快的高频部分采样不足也会形成走样,形成图像闪烁或者噪点(高光部分的噪点)。

图形学中的走样包括 几何走样着色走样,这些走样引起的锯齿和闪烁现象对图形的显示质量有很大的影响,给人观感不佳,这与人们对高质量和高真实感图像的追求相悖,所以高效高性能的反走样算法也一直是计算机图形学的研究与应用热点之一。

相对来说人眼对几何走样的敏感度更高,所以一般提到反走样技术也大多是几何方面的反走样,但随着硬件的发展和人们对画质要求的提高,也有许多算法用于解决着色反走样,两类算法的解决思路也往往差别很大。

在反走样算法的发展过程中出现了不同形式的算法,并且近年来随着深度学习的发展,也助推了反走样算法的研究。

  • 基于超采样的方法(SSAA、MSAA 等)
  • 基于形态学的方法(MLAA、SMAA、FXAA 等)
  • 基于时间的方法(TAA 等)

超分辨率 / 超采样 Super resolution / Super sampling

  • 从低分辨率到高分辨率
  • 需要解决样本不足的问题
  • 解决方案:DLSS(Deep Learning Super Sampling)
    即由AI预测样本不足的部分

深度测试 Depth testing

复杂三维物体在光栅化的过程中,还要解决一个复杂问题:

  • Visibility / occlusion
    可见性 / 遮挡问题

画家算法 Painter’s Algorithm
根据绘画的逻辑,先画远处的物体,再画近处的物体,近处物体可以遮挡住远处物体。
简单场景中,画家算法可以根据正确的排序画出正确的场景。
但在复杂场景下,例如循环遮挡的环状场景下,画家算法就无法画出正确的场景。

实际计算机图形学中的解决方法是引入深度缓存Z-buffer

渲染每帧图像时,同时生成深度图。深度值存储在每个片段里面(作为片段的z值),当片段想要输出它的颜色时,我们会将它的深度值和z缓冲进行比较,如果当前的片段在其它片段之后,它将会被丢弃,否则将会覆盖。

对N个三角形,Z-buffer算法复杂度是O(n)。它不涉及排序,只保存最小的深度值。

Z-buffer算法的结果与三角形进入顺序无关。

在这里插入图片描述

这个过程称为深度测试(Depth Testing)

Z缓冲无法处理透明物体

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/892520.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《分布式光纤传感:架设于桥梁监测领域的 “智慧光网” 》

桥梁作为交通基础设施的重要组成部分,其结构健康状况直接关系到交通运输的安全和畅通。随着桥梁建设规模的不断扩大和服役年限的增长,桥梁结构的安全隐患日益凸显,传统的监测方法已难以满足对桥梁结构健康实时、全面、准确监测的需求。分布式…

BUUCTF:web刷题记录(1)

目录 [极客大挑战 2019]EasySQL1 [极客大挑战 2019]Havefun1 [极客大挑战 2019]EasySQL1 根据题目以及页面内容,这是一个sql注入的题目。 直接就套用万能密码试试。 admin or 1 # 轻松拿到flag 换种方式也可以轻松拿到flag 我们再看一下网页源码 这段 HTML 代码…

腾讯云AI代码助手编程挑战赛-知识百科AI

作品简介 知识百科AI这一编程主要用于对于小朋友的探索力的开发,让小朋友在一开始就对学习具有探索精神。在信息化时代下,会主动去学习自己认知以外的知识,同时丰富了眼界,开拓了新的知识。同时催生了在大数据时代下的信息共享化…

大语言模型预训练、微调、RLHF

转发,如有侵权,请联系删除: 1.【LLM】3:从零开始训练大语言模型(预训练、微调、RLHF) 2.老婆饼里没有老婆,RLHF里也没有真正的RL 3.【大模型微调】一文掌握7种大模型微调的方法 4.基于 Qwen2.…

【理论】测试框架体系TDD、BDD、ATDD、MBT、DDT介绍

一、测试框架是什么 测试框架是一组用于创建和设计测试用例的指南或规则。框架由旨在帮助 QA 专业人员更有效地测试的实践和工具的组合组成。 这些指南可能包括编码标准、测试数据处理方法、对象存储库、存储测试结果的过程或有关如何访问外部资源的信息。 A testing framewo…

20250112面试鸭特训营第20天

更多特训营笔记详见个人主页【面试鸭特训营】专栏 250112 1. TCP 和 UDP 有什么区别? 特性TCPUDP连接方式面向连接(需要建立连接)无连接(无需建立连接)可靠性可靠的,提供确认、重传机制不可靠&#xff0c…

linux--防火墙 iptables 双网卡 NAT 桥接

linux--防火墙 iptables 双网卡 NAT 桥接 1 介绍1.1 概述1.2 iptables 的结构 2 四表五链2.1 iptables 的四表filter 表:过滤规则表,默认表。nat 表:地址转换表。mangle 表:修改数据包内容。raw 表:原始数据包表。 2.2…

oracle闪回表

文章目录 闪回表案例1:(未清理回收站时的闪回表--成功)案例2(清理回收站时的闪回表--失败)案例3:彻底删除表(不经过回收站--失败)案例4:闪回表之后重新命名新表总结1、删…

202506读书笔记|《飞花令·江》——余霞散成绮,澄江静如练,江梅一夜落红雪,便有夭桃无数开

202506读书笔记|《飞花令江》——余霞散成绮,澄江静如练,江梅一夜落红雪,便有夭桃无数开 摘录 《飞花令江》素心落雪编著,飞花令得名于唐代诗人韩翃《寒食》中的名句“春城无处不飞花”,类似于行酒令,是文人…

《系统爆破:MD5易破,后台登录可爆破?》

声明:笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 爆破Sales系统 一、爆破MD5 场景:已知MD5的加密字符串,如何得知明…

Copula算法原理和R语言股市收益率相依性可视化分析

阅读全文:http://tecdat.cn/?p6193 copula是将多变量分布函数与其边缘分布函数耦合的函数,通常称为边缘。在本视频中,我们通过可视化的方式直观地介绍了Copula函数,并通过R软件应用于金融时间序列数据来理解它(点击文…

DSP+Simulink——点亮LED灯(TMSDSP28379D)超详细

实现功能:DSP28379D-LED灯闪烁 :matlab为2019a :环境建立见之前文章 Matlab2019a安装C2000 Processors超详细过程 matlab官网链接: Getting Started with Embedded Coder Support Package for Texas Instruments C2000 Processors Overview of Creat…

APP上架之Android 证书 MD5 指纹

Android 证书 MD5 指纹 1. 什么是 Android 证书 MD5 指纹? Android 证书 MD5 指纹是对证书数据进行 MD5 哈希运算后得到的 128 位字符串。在 Android 开发中,每个证书在理论上都有一个唯一的 MD5 指纹,用于识别和验证证书的有效性。证书指纹…

【Rust自学】11.6. 控制测试运行:并行和串行(连续执行)测试

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 11.6.1. 控制测试的运行方式 cargo test和cargo run一样,cargo test也会编译代码并生成一个二进制文件用于测试,…

计算机网络学习笔记

第1课 绪论、传输介质 【知识点回顾】 两种导线可以减小电磁干扰: 双绞线(分为非屏蔽双绞线、屏蔽双绞线)(RJ-45用)同轴电缆(短距离使用)网络通信的基本单位:位(bit&…

STM32之CAN通讯(十一)

STM32F407 系列文章 - CAN通讯(十一) 目录 前言 一、CAN 二、CAN驱动电路 三、CAN软件设计 1.CAN状态初始化 2.头文件相关定义 3.接收中断服务函数 4.用户层使用 1.用户层相关定义 2.发送数据 3.接收数据 1.查询方式处理 2.中断方式处理 3…

Java聊天小程序

拟设计一个基于 Java 技术的局域网在线聊天系统,实现客户端与服务器之间的实时通信。系统分为客户端和服务器端两类,客户端用于发送和接收消息,服务器端负责接收客户端请求并处理消息。客户端通过图形界面提供用户友好的操作界面,服务器端监听多个客户端的连接并管理消息通…

C#Halcon找线封装

利用CreateMetrologyModel封装找线工具时,在后期实际应用调试时容易把检测极性搞混乱,造成检测偏差,基于此,此Demo增加画线后检测极性的指引,首先看一下效果 加载测试图片 画线 确定后指引效果 找线效果 修改显示 UI代…

【linux系统之redis6】redis的基础命令使用及springboot连接redis

redis的基础命令很多,大部分我们都可以在官网上找到,真的用的时候可以去官网找,不用全部记住这些命令 redis通用的基础命令的使用 代码测试 string类型常见的命令 key值的结构,可以区分不同的需求不同的业务名字 hash类型 创建…

ISP各模块功能介绍

--------声明,本文为转载整理------- ISP各个模块功能介绍: 各模块前后效果对比: 黑电平补偿(BLC) 在理想情况下,没有光照射的像素点其响应值应为0。但是,由于杂质、受热等其它原因的影响&…