心怀希望の光栅化

2024-06-04 14:20
文章标签 希望 光栅 心怀

本文主要是介绍心怀希望の光栅化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

还记得什么是光栅化咩?

0191ae539b9949539e973442a92e195f.png

将三维空间的几何形体显现在屏幕上,这就是光栅化(游戏、实时图形学的应用)

Perspective Projection

在正交投影里如何定义三维空间中的立方体呢?

用x轴的覆盖(左、右),y轴的覆盖(上、下),z轴的覆盖(远、近)

远近用正交投影和透视投影都是一样的,在做透视投影的时候,是需要把视锥变成长方体

那我们如何定义这样一个视锥呢?

382fd5d273ab4ff186d25678b77533f4.png

从摄像机出发,看向某一个区域,看到的近平面为其定义宽度和高度,就像是看显示器一样,定义一个宽高比,那什么是宽高比呢?

宽高比,顾名思义,它的宽度除以它的高度,即视图区域可看到的长宽比

我们还需要一个定义:视角(可看到的角度的范围,垂直可视角度,广角就是指垂直可视角度较大)

由长宽比和垂直可视角度可以推出水平可视角度

把摄像机摆放到某各个位置,向一个方向看,如果从侧面看可以看到这样的三角形,右面的线和摄像机距离是eq?%7Cn%7C,我们已知垂直可视角度,可视角度是上下两条连线的夹角,垂直可视角度/2是三角形张开的角度,可得出两个公式:

93795aae9713453a93aedab131ba280a.png

定义视锥:定义垂直可视角度、定义宽高比 

可以自动转化到定义正交投影的远近、左右、上下

根据前置内容,所有东西都可以转化到这样一个立方体上:

a1e003bea3e24c03b3ae6614fd6a3379.png

我们如何将这个立方体画到屏幕上呢?

既然要画到屏幕上那就先明确屏幕的定义,在计算机图形学中,屏幕被定义成一个二维的数组,数组中的每一个元素被定义成一个像素,像素的多少可以组成分辨率的概念

屏幕是典型的光栅成像设备,光栅即屏幕,把东西画在屏幕上就是光栅化的过程

像素:picture element(居然真的是像素。。。),像素是最小的单位,在里面不会有变化

3f102198f6dd4ec28a1358228482b82e.png

透视投影转化成正交投影需要保证近和远两个平面是不变的,大小是近远两平面都会变得和近平面一样大

Canonical Cube to Screen

52d837d608d94babb54e23dbc45ef433.png

 定义像素坐标,均写成eq?%28x%2Cy%29形式,用整数坐标描述,比如现在的蓝色像素可以用eq?%282%2C1%29表示(从0开始数),屏幕的分辨率从eq?%280%2C0%29开始一直到eq?%28width-1%2Cheight-1%29,像素的中心是eq?%282.5%2C1.5%29,从三维空间到屏幕变换(立方体映射到屏幕空间):

233b67ff105a442095176cc99103e82a.png

有z怎么办呢? 

z先不用管,后面有它的用途,至于x和y,将这个拉成宽度是width,高度是height,因为-1~1是2,所以需要先/2再×对应的高度或者宽度,我们要把屏幕空间的左下角定义到原点上,也就是说原来的中心是eq?%280%2C0%29那需要把它移到该在的位置上,这个变换被称为视口变换

69e37229eb6b406c8af6b3967e0b7f2c.png

 下一步我们要把空间中描述的信息变成真正的图,即打散成像素

77341f6395a0463bba56f0e8970739b8.png

 在《少年派的奇幻漂流》中的老虎栩栩如生,这是图形学的贡献,老虎身上有很多多边形,经历了变换操作后会形成在屏幕中的多边形,要进一步把多边形打碎成像素显示在屏幕上,知晓每一个像素的值都是什么,这个过程叫做光栅化

图像不止可以显现到屏幕上,还有一些其他的绘画工具

Drawing Machine

机器人的机械臂?:

激光切割:

Different Raster Displays

示波器:示波器本身也是成像的设备,它成像的原理和早期的显示器基本相同,电子经过阴极射线管加速打到屏幕上(CRT屏幕)

采用扫描的方式控制打印的位置,(隔行扫描,画每张图工作量减少一半,但对高速运动的画面容易造成画面撕裂)隔一行一条线,当足够密集的时候就足以覆盖整个屏幕:

 

显示器🖥通过显卡(内存中的一块区域映射到屏幕上):

高分辨率显示器,有些甚至分辨率超过了人的视网膜的分辨率(视网膜屏幕):

LCD(液晶显示器)利用液晶的原理控制显示

液晶通过自己的排布影响光的偏振方向(极化),两个光栅不同方向排布

LED发光二极管:

墨水屏刷新有点慢,但是挺自然

三角形表示能力很强,可以表示很多二维三维中的图形:

 

为什么三角形在图形学中得到了如此广泛的应用呢? 

 

首先三角形很简单,任何东西多可以拆分成三角形,内部一定是平面的,内外很清晰,只要定义了三角形的三个顶点,可以明确的知道差值:

判断像素和三角形的位置关系是光栅化中很重要的一环,像素内部是不能有颜色变化的,那盖住一半的像素该怎么办?

那就考虑像素中心点与三角形的位置关系呗:

 

 

 

最简单的光栅化方法:采样,那么我们如何进行这样的采样呢?

可以这样遍历一个二维数组:

 inside是定义的一个函数,判断点是否在三角形内(可以做叉积):

 那如果给定点恰好在三角形的边界怎么办?

那就要么不做处理,要么特殊处理(计上不计下,计左不计右)

通过采样进行光栅化:

有的点不可能触碰到三角形,三角形根本不可能填充到这些像素上,蓝色区域:三角形的包围盒

每一行都找最左和最右(包围盒较大时比较适用):

实际屏幕效果:

 

绿色像素多一点(人眼对绿色更为敏感,红:蓝:绿=1:1:2) 

我们仍然认为像素是一个内部颜色均匀的小方块:

 

采样后对应像素发现不太对:

可是我们想要的不是这个吗?

这锯齿太明显了吧?造成这个的结果呢就是因为锯齿,锯齿是图形学中致力解决的一个问题,采样率对于信号来说不够高:走样

抗锯齿、反走样是图形学中的一个重要技术

这篇关于心怀希望の光栅化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1030307

相关文章

【IT】软件行业发展的前瞻性和希望的广度

我说一下我对程序应用的一个看法就是 我其实个人不太建议自动驾驶技术的发展因为这个东西它说到底还是什么那么一点安全隐患 ,虽然我们平常考虑用同时实行各种各样的高级的自动作用, 但是自动驾驶可能是个特例,其实我个人觉得程序可以在以下方面发展 1.医学(包括诊断 治疗 手术等)因为现在也有很多的疾病是医学还没有能力去解决的 ,2.国防 有的时候因为国家安全真的非常重要的,因为我们每个人

这位在做游戏的前电影导演,希望能变着法子讲故事,并给予玩家会心一击

从黎巴嫩到瑞典,从电影人到游戏从业者,这是一位“作者”开发者的冒险 这是又一名瑞典游戏开发者的故事。 区别于大多数安静内向的同行,Josef Fares 因为其张扬的个性而成为为玩家所熟知的开发界网红。他敢在 TGA 直播中脱口而出“F**k Oscar”,敢在开箱危机的风口浪尖为 EA 说话,他创作了两款极具个人风格的独立游戏——讲述兄弟在幻想世界里历险为父亲求解药的《兄弟:双子传说》(Br

GAMES101(5~6节,光栅化)

光栅化Rasterization 透视投影已知field和近平面,如何推导宽度? 根据三角函数:tan field / 2 = (height / 2) / ||n||近平面,从而可以求出高度 因为知道宽高比,所以可以求出宽度,高度 * 宽/高 视口变换 经过MVP变换,顶点位于正则化空间坐标,是一个在 [-1,1] ^3 之间的 x, y, z 坐标构成(标准立方体),我们下一步需要做

前端希望Quasar

Quasar 不仅仅是一个组件库,而是一个基于 Vue 的开源框架,可以帮助 Web 开发人员快速创建多种风格的响应式 ++ 网站/应用程序: SPA(单页应用程序)SSR(服务器端渲染应用程序)(+可选的 PWA 客户端接管)PWA(渐进式 Web 应用程序)BEX(浏览器扩展)通过 Cordova 或 Capacitor 的移动应用程序(Android、iOS 等)多平台桌面应用程序(使用

大家好,我是探索者,希望得到激励,让我们携手共建社区家园

技术擅长:OpenHarmony稳定性测试、XTS测试、性能测试、功耗测试。 社区贡献:发布过22篇文章,解决过10+个问题,参与过40+问答或讨论。 代表作品: 1、帧率测试的三种方法 2、SmartPerf_Host抓trace方法 3、利用pefertto分析trace方法 4、XTS测试-运行run.bat报错 5、稳定性脚本代码逐行解析

此文献给刚入学的研究生——即将毕业的研究生们,希望能够让大家少走一点弯路,多出一些成果,度过充实且有意义的研究生之旅!

此文献给刚入学的研究生以及科研小白们,希望能够让大家少走一点弯路,多出一些成果,度过充实且有意义的三年! 1.趁早明确毕业后去向 1.1 参考往届师兄师姐 1.1.1 同门师兄姐or同学院师兄姐 同专业最具代表性,但也不要忽视同学院的师兄姐 同专业的往往是对口行业 但是军队文职国家电网等单位可取经于更大范围的师兄姐 1.1.2 已毕业师兄师姐情况 一年后、三年后、五年后 看清现实、

在浮躁的时代,保持冷静和沉稳,心怀勇气

在大家阅读之前,我真诚地祝愿大家在浮躁的世界中找到属于自己的宁静与力量,让每一天都充满希望和快乐。         在这个快节奏、信息爆炸的时代,我们每个人都像是被卷入了一个永不停歇的漩涡,不断地被各种声音和画面拉扯着。有时候,我们甚至忘记了如何呼吸,如何思考,如何保持一颗平静的心。但别担心,今天我们就来聊聊如何在这样一个浮躁的时代中,保持冷静和沉稳,并且心怀勇气。

揭秘!糖尿病:从绝望到希望的治愈之路

在这个快节奏、高压力的时代,糖尿病这一“甜蜜的负担”正悄然影响着越来越多人的生活。面对这一全球性的健康挑战,许多患者心中都萦绕着一个共同的疑问:“糖尿病,真的能治好吗?”今天,就让我们一起揭开糖尿病治疗的神秘面纱,探索从绝望到希望的治愈之旅。 一、糖尿病:认识不等于放弃 首先,明确一点:糖尿病并非不治之症。它虽然是一种慢性疾病,但通过科学的管理和治疗,完全可以实现良好的病情控制,甚至在某些情况

探秘紫白洋桔梗花语:勇气、爱情、希望与清晰的象征解读

在缤纷多彩的花卉世界中,紫白洋桔梗宛如一位神秘而优雅的仙子,悄然绽放着独特的魅力。它那淡雅的色彩与别致的花形,令人一见倾心,而其背后蕴含的丰富花语,更是如同隐藏的宝藏一般,等待着我们去细细探寻与解读。 接下来,让我们一同走进紫白洋桔梗的花语世界,去揭开那一层层神秘的面纱,领略其独特的内涵与象征意义。 一、紫白洋桔梗的花语概述 紫白洋桔梗的花语蕴含着丰富而深刻的情感与寓意。它代表着勇气

中俄联袂 助力前行 点燃希望——助残义诊在杭州邦尔骨科医院顺利举行

8月26日,由杭州市残疾人联合会主办、临平区残疾人联合会承办,杭州市邦尔骨科医院协办的“中俄联袂 助力前行 点燃希望”助残义诊活动在该院1号楼门诊大厅顺利进行。此次活动得到了俄罗斯伊里扎洛夫中心医院和杭州市邦尔骨科医院专家的大力支持。   本次义诊活动邀请到了俄罗斯伊里扎洛夫中心医院的达尼肯·米哈以勒·尤里耶维奇教授,以及杭州市邦尔骨科医院的【创伤二科】主任裴绍龙和手足显微外科主任宋