GAMES101-现代计算机图形学入门-闫令琪 - lecture5 光栅化(三角形的离散化) - 课后笔记

光栅化(三角形的离散化)(Rasterization1 (Triangles))

接着上面的透视投影开始:

如何确定一个近平面的 l(left) , r(right) , b(bottom) , t(top)四个面?通常使用竖直可视角度(vertical field-of-view , fovY)和长宽比(aspect ration)来确定

fovY就是链接Camera底面的中点和顶面的中点所成的角度,长宽比 = width/height。

在这里插入图片描述

如何确定近平面的长和宽?知道Camera到近平面的距离,然后就可以通过fovY来计算

在这里插入图片描述

在MVP之后应该接着做什么?

回顾一下MVP:

  • model transformation(placing objects)
  • view transformation(placing camera)
  • Projection transformation
    • Orthographic projection(cuboid to “canonical” cube [-1,1]^3)(长方体转换到规范立方体当中)
    • Perspective projection(frustum to “canonical” cube)(平截头体转换为规范立方体)

在最后投影变换结束后,我们所需要的图像被投影到了规范立方体中,那么应该对规范立方体进行怎样的处理?

将规范立方体的投影显示到屏幕上(Screen)

什么是屏幕?

  • 屏幕是由一系列的像素所组成的
  • 像素的个数,或者说二维像素数组的大小,称为屏幕的解析度。如1920*1080.
  • 屏幕是一个典型的光栅显示设备

那什么是像素?

  • 我们现在认为,像素是颜色均匀的小方块,并且不会改变(伪)
  • 其颜色是rgb的混合

屏幕空间

怎么定义一个屏幕空间?一个屏幕空间是一个二维的像素的数组,如图所示,
在这里插入图片描述

有几点要注意:

  • 像素的坐标(或者说在数组中的索引)(x,y)总是一个整数
  • 像素的坐标是(0,0)到(width - 1, height - 1)这个范围之内的。width和height为屏幕的宽高,如1920*1080
  • 像素(x,y)的坐标的中心为(x+0.5 , y+0.5),如上图蓝色的点,坐标为(2,1),中心为(2.5,1.5)
  • 屏幕的范围为(0,0)到 (width, height)

将规范立方体转化到屏幕空间上

在转化时有两点要注意:

  • 与z无关(z的值其实是物体在世界空间中的深度值,但是目前我们只有一个物体,所以不考虑他)
  • 对xOy平面进行转换,[-1,1]^2转换到 [0,width] × [0,height]
    在这里插入图片描述

对xOy平面转换的矩阵为:

在这里插入图片描述

称之为视口矩阵。对这个矩阵进行解析:

首先要先对其进行位移,因为规范立方体中的中心位于原点的位置,而屏幕空间的坐标是从左下角开始为原点(0,0),不存在负坐标,所以先将规范立方体的中心移动到(width/2,height/2)的位置,然后再对规范立方体进行拉伸,拉伸比例如矩阵所示。因为与z无关,所以对z不做任何变换。

什么是光栅化?

光栅化就是将投影的内容画到屏幕上的过程,其过程就如上面所说,最终将规范立方体的内容画到了屏幕上,这个过程就是光栅化。

在这里插入图片描述
在这里插入图片描述

这个老虎就是计算机图形学所做出来的结果,其是由许多的任意四边形组成的,每个四边形上的像素都是均匀的。

三角形 - 最基本的图元

为什么使用三角形作为最基本的图元(图元:组成图形的基本单位)?

  • 三角形是最基础的多边形,若是去掉一条边则就会成为线段,不能再成 多边形
  • 任何多边形都能够分解成三角形的组合
  • 三角形还有一些优秀的性质:
    • 三角形一定是平面的,而不会是折面或者曲面(试想一下把一个正方形的中心点拽起来会发生什么?)
    • 三角形能够明确区分内外(判断一个点是在三角形内还是外,之前的课程中有提到过,使用叉乘)
    • 三角形上有着明确的插值方法(如定义一个三角形,三个点的颜色分别是红绿蓝,那么这个三角形就会有一个渐变的颜色效果,这就是颜色插值,下图就是插值效果,只定义了三个顶点的颜色,中间的渐变的颜色全都是插值效果)
      在这里插入图片描述

三角形作为图元的例子:

在这里插入图片描述
在这里插入图片描述

既然图元为三角形,我们最终还是要用像素来显示三角形,那么问题就来了:

像素如何近似的表示一个三角形呢?

如前所说,像素是一个颜色均匀分布的正方形的小格子,那么如果遇到下面这种情况,如何用像素表示三角形?

在这里插入图片描述

一个简单的解决方法:采样(Sampling)

如何解释采样?比如我有一个函数f(x,y),在屏幕上的根据要求 ,比如隔一个点求一个f(x,y)的值,或者求一小块区域内的某一个点的作为这个区域的值,这就是采样。我们可以通过采样对函数离散化,如下,只求每一个整数点的输出,跳过小数。

在这里插入图片描述

采样是图形学中的一种核心思想,可以对时间(1D),区域(2D),方向(2D),体积(3D)等进行采样。

用2D的采样方法来进行光栅化

对下面这个三角形进行采样:

在这里插入图片描述

将每一个像素中心作为采样点,如果该点在三角形内,就为这个像素添加上橙色,否则不添加。

在这里插入图片描述

在这里插入图片描述

上述用函数的实现就是定义一个二值函数: inside(tri,x,y)

在这里插入图片描述

然后对图像进行光栅化,就是用这个函数对图像进行采样,为1的区域设置为橙色,0的区域不上色。
在这里插入图片描述

如何判断该像素中心是否在三角形内部?

之前说过,运用向量的叉乘,按照顺时针或逆时针的方式,判断边向量和 该边向量的出发点到该点的向量 的叉乘是否都指向屏幕内或者屏幕外。若是,则点在在三角形内部,若不是,则点在三角形外部。
在这里插入图片描述

例如判断Q是否在三角形内部:

用(AB)表示A->B的向量。

(P2P1)×(P2Q) 得到的向量指向屏幕内,Q在(P2P1)的左边

(P1P0)×(P1Q) 得到的向量指向屏幕内,Q在(P0P1)的左边

(P0P2)×(P0Q) 得到的向量指向屏幕外,Q在(P0P2)的右边

所以Q在三角形的外部。

像素中心正好在三角形的边上的情况

在这里插入图片描述

不同的API中有不同的规定,也可以有你自己的规定。

采样的范围

对图像进行光栅化,有必要对整个图像进行采样吗?答案是否定的,我们用如下的一个包围盒(Bounding box),只对包围盒内部的像素进行采样,这样就减少了采样次数,增加了效率

在这里插入图片描述

光栅化中会出现的问题 - 锯齿

先对图像进行采样,得到了下面的结果,橙色的点的像素要染色

在这里插入图片描述
如果用上面的方法进行光栅化,那么最后得到的三角形就是这样的

在这里插入图片描述

这和我们想要的三角形相差太多,其并不光滑,棱角过多。所以就要对其进行抗锯齿操作。抗锯齿的内容下节课再说。

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

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

相关文章

GAMES101-现代计算机图形学入门-闫令琪 - lecture3 变换(transformation) - 课后笔记

变换 为什么要变换? 变换有两种,一种 model 和 view 变换,其中model变换中包括缩放, 而view则主要是讲3D投影到2D的画面上 二维变换 要找到一个变换,实际上就是寻找变换后得坐标(x‘,y’)和变换之前的坐标&#xf…

GAMES101-现代计算机图形学入门-闫令琪 - lecture7 着色(Shading) - 课后笔记

着色(Shading) 可视性 / 遮挡 Z - 缓冲 (Z - buffering,深度缓冲) 着色 光照 和 着色 (illunmination & Shading) 画家算法(Painter s Algorithm) 先注明一下&am…

全网最详细中英文ChatGPT-GPT-4示例文档-场景问题智能生成从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

从0到1快速入门场景问题智能生成应用场景 Introduce 简介setting 设置Prompt 提示Sample response 回复样本API request 接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例 其它资料下载 ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和…

记一次alertmanager发送邮件失败的处理过程

文章目录 0 说明环境说明阅读说明 1 先验证smtp信息是否正确2 配置alertmanager配置文件并触发告警3 解决 smtp.plainAuth failed: wrong host name4 解决 dial tcp 127.0.0.1:5001: connect: connection refused5 解决 配置文件不对应的问题6 解决configmap跟挂载文件名不对应…

使用telnet客户端发送假冒邮件出现由某某代发怎么解决

使用telnet客户端发送假冒邮件出现由某某代发怎么解决 步骤如下,打码的是邮箱地址 想知道为什么我的有"由某某代发",而别人的没有,都是通过同样的操作在自己的电脑上操作的

奇葩经历之一_Hotmail邮箱无法查看和发送任何邮件

起因——“似乎有其他人使用你的帐户!” 因为IP活动异常,微软通知你账号有风险: 自动处理——“别慌,我们停用你的账户,这样就安全了!” 没有任何通知和提示就直接关闭邮箱功能,从这以后&…

记录项目里面用到的几个给国外邮箱发邮件的代码

一些说明: 这几个都可以正常发邮件,但是免费的每天都会有限制,发多了就会黑名单。。。 最终选择了exchange付费的版本,每天可以发1万条邮件,也不是很贵,基础的32一个月的就可以了 import javax.mail.inte…

JavaMail邮件发送不成功的那些坑人情况及分析说明(巨坑跳出专用姿势)

https://blog.csdn.net/xyw591238/article/details/69530950 前言 JavaMail的使用本身并不难,网上有不少案例,简单易懂,而且有详细的中文注解。但是由于JavaMail的机制设置不够完善,特别是异常出错时的参考信息太少,给…

Python通过发邮件通知自己电脑被入侵

我对IT技术有着狂热的追求,虽然现在很渣,但是我有颗钻研的心,例外我还比较喜欢看小说,相信看过最强黑客的人对里面的黑客的技术佩服得无以复加,黑客一般对自己的电脑数据都比较在意,一般都会设置些密码等并…

如何在线伪造邮箱发件人,用任意邮箱发送邮件

今天邮箱收到一封自己域名发过来的邮件,但是询问当事人说并没有发送相关邮件,于是去百度了下,看是否可以伪造发件人,于是找到一个网站 http://tool.chacuo.net/mailanonymous,这个网站可以用任意的邮箱地址发邮件&…

单播通信、主播通信和广播通信

单播 简介 单播(unicast)是指封包在计算机网络的传输中,目的地址为单一目标的一种传输方式。每次只有两个实体相互通信,发送端和接收端都是唯一确定的。它是现今网络应用最为广泛,通常所使用的网络协议或服务大多采用…

Qt 之图形(转换)

作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 QTransform 用于指定坐标系的 2D 转换 - 平移、缩放、扭曲(剪切)、旋转或投影坐标系。绘制图形时,通常会使用。 QTransform 与 QMatrix 不…

全网最全!!Qt实现图片旋转及图片旋转动画的几种方式

实现图片旋转的两种方式 第一种方案 使用 QPixmap 的 transformed 函数来实现旋转,这个函数默认是以图片中心为旋转点,不能设置旋转的中心点,使用如下: QMatrix matrix; matrix.rotate(45);QLabel *Label new QLabel(); Label-…

网页特效——女儿国国王

目录 💝💝💝💝💝💝💝💝💝💝💝💝💝💝💝💝💝💝💝&…

不使用插件,小程序也能完整的渲染富文本(视频展现,图片自适应)

用过小程序rict-text的帅哥靓女们(说的就是正在看文章的你)都知道,rich-text是无法解析富文本中的video标签的,本文教你如何优雅的在不使用插件的情况下完整的渲染富文本 首先是富文本图片自适应的问题 当我们从后端拿到富文本数…

让AI替你打工?CHATGPT提升开发效率

1 需求分析 提取需求关键点 ChatGPT 通过对需求文档的分析,自动提取关键需求和功能点,方便开发团队更好地理解项目需求。 2 技术方案 大表更新方案 在某支付业务中,有一个大表4000万行数据,使用的 mysqlA5.6 的版本&#xff…

应聘求职自荐信优秀范文5篇

应聘求职自荐信优秀范文篇1 尊敬的领导: 您好!衷心的感谢您在百忙之中翻阅我的这份材料,并祝愿贵单位事业欣欣向荣,蒸蒸日上! 我是哈尔滨理工大学测控技术及通信工程学院________届毕业生,自从今日大学之后,高考后的轻…

如何写出一份优秀的简历和求职信?

写一份优秀的简历和求职信是成功求职的重要一步。 01、简历 突出重点信息:把最重要的信息放在简历的前面,例如您的工作经验和教育背景等。 使用简明扼要的语言:在简历中使用简短的句子和简明扼要的语言,让招聘者能够快速了解您的…

公司计算机程序员英语怎么说,计算机程序员英文求职信范文模板

计算机程序员英文求职信范文模板 Dear Mr. Arline, I would like to be considered as a candidate for the assistant computer programmer position advertised in the Philadelphia Inquirer on April 28, 2004. I’m currently finishing my degree in Computer Science at…

写一份好的求职简历,让面试官对你刮目相看

简历是一块敲门石,但这块敲门石是什么材质的,恐怕见仁见智。那么什么样的简历才能是一块优质敲门石呢,下面的一些个人见解,希望能给正在或正准备寻找更好发展机会的测试工程师们有所帮助。 一、针对在测试行业中已经有所感悟的人&…