首页 > 其他分享 >05 games101-光栅化(三角形的离散化)

05 games101-光栅化(三角形的离散化)

时间:2024-03-14 13:03:17浏览次数:26  
标签:采样 box 05 像素 三角形 games101 光栅 屏幕

05 光栅化(三角形的离散化)

三角形

三角形的性质和优点:

●最基础的多边形

●其他图形可以拆解为三角形

●三角形内一定是平面

●内外的定义很明确

●定义三个顶点后,三角形内可以插值

光栅化(Rasterization)

光栅化关键: 判断一个像素和三角形的位置关系(像素中心点与三角形的位置关系)

下面研究光栅化的步骤。

采样(Sampling)

采样——把连续函数离散化

for(int x = 0; x < xmax; ++x)
	output[x] = f(x);

光栅化采样:利用像素中心对屏幕空间进行采样。

光栅化采样的目的:判断像素中心是否在三角形内。

image-20240314122005062

image-20240314122024540

for(int x = 0; x < xmax; ++x)
	for(int y = 0; y < ymax; ++y)
		image[x][y] = inside(tri, x+0.5, y+0.5);

判断像素是否在三角形内

方法:叉乘
img
三角形ABC:
AB 叉乘 AQ BC 叉乘 BQ CA 叉乘 CQ 符号(方向)相同则在内部,否则在外部。(叉乘反映向量的左右位置关系)

特殊情况:边上的点

  • 不做处理:本课程
  • 特殊处理:OpenGL/DX

优化——Bounding Box

因此自然的,只需要遍历每一个点就可以得出三角形的光栅化结果了!

优化:因为显然并没有必要去测试屏幕中的每一个点,一个三角形面可能只占屏幕很小的部分,可以利用一个bouding box包围住想要测试的三角形,只对该bounding box内的点进行采样测试,如下图:
img

锯齿

在经过上述的光栅化过程后,会得到如下图片,称为锯齿或走样。

而反锯齿或反走样是图形学一大挑战。

image-20240314122443563

判断像素是否在三角形内

方法:叉乘
[外链图片转存中…(img-WbHD8hBg-1710390408277)]
三角形ABC:
AB 叉乘 AQ BC 叉乘 BQ CA 叉乘 CQ 符号(方向)相同则在内部,否则在外部。(叉乘反映向量的左右位置关系)

特殊情况:边上的点

  • 不做处理:本课程
  • 特殊处理:OpenGL/DX

优化——Bounding Box

因此自然的,只需要遍历每一个点就可以得出三角形的光栅化结果了!

优化:因为显然并没有必要去测试屏幕中的每一个点,一个三角形面可能只占屏幕很小的部分,可以利用一个bouding box包围住想要测试的三角形,只对该bounding box内的点进行采样测试,如下图:
[外链图片转存中…(img-4zY8Nwxo-1710390408277)]

锯齿

在经过上述的光栅化过程后,会得到如下图片,称为锯齿或走样。

而反锯齿或反走样是图形学一大挑战。

[外链图片转存中…(img-ZUfzrs71-1710390408278)]

image-20240314122453380

标签:采样,box,05,像素,三角形,games101,光栅,屏幕
From: https://blog.csdn.net/zgynbnbnb/article/details/136706790

相关文章

  • HDU 2056:Rectangles(两个矩形交点的性质)
    一、原题链接Problem-2056(hdu.edu.cn)二、题面Giventworectanglesandthecoordinatesoftwopointsonthediagonalsofeachrectangle,youhavetocalculatetheareaoftheintersectedpartoftworectangles.itssidesareparalleltoOXandOY.三、......
  • 中考英语首字母快速突破005-2021上海虹口英语二模-Overcoming Labels to Save a Frien
    PDF格式公众号回复关键字:ZKSZM005原文​OnedaySamandJerryweregoinghomefromschool.Whenonturningacorner,Samcriedout,“Afight!Letusgoandsee!”​“No,”saidJerry,“letusgoquietlyhome!Wehavenothingtodowith......
  • C++:[NWRRC2015] Concatenation(洛谷)P7050
    题目描述FamousprogrammerGennadylikestocreatenewwords.Onewaytodoitistoconcatenateexistingwords.Thatmeanswritingonewordafteranother.Forexample,ifhehaswords cat and dog,hewouldgetaword catdog,thatcouldmeansomething......
  • ic基础|时序篇05:多比特的跨时钟域处理(2)
    大家好,我是数字小熊饼干,一个练习时长两年半的ic打工人。我在两年前通过自学跨行社招加入了IC行业。现在我打算将这两年的工作经验和当初面试时最常问的一些问题进行总结,并通过汇总成文章的形式进行输出,相信无论你是在职的还是已经还准备入行,看过之后都会有有一些收获,如果看......
  • L1-059 敲笨钟
    阿西...只是想用一下stringstream,结果发现坑了。我发现clear()和str("")单用都会出问题,只有这俩结合才有用。还有C++字符串处理这块真的太坑了。https://www.cnblogs.com/smile-programmer/p/17322945.html#include<bits/stdc++.h>usingnamespacestd;strings1="qiaobe......
  • AXS4054 爱协生 单节锂电池 线性充电器芯片 600mA 概述文
    描述AXS4054是一款单节锂离子电池恒流/恒压线性充电器,简单的外部应用电路非常适合便携式设备应用,适合USB电源和适配器电源工作,内部采用防倒充电路,不需要外部隔离二极管。热反馈可对充电电流进行自动调节,以便在大功率操作或高环境温度条件下对芯片温度加以限制。AXS4054......
  • L1-054 福到了
    #include<bits/stdc++.h>usingnamespacestd;charcs[110][110],cc[110][110];intmain(){ charzm; intr,c; scanf("%c",&zm); scanf("%d",&r); c=r; getchar(); charx; for(inti=1;i<=r;i++){ for(intj=1;j<=c;......
  • AI推介-大语言模型LLMs论文速览(arXiv方向):2024.03.05-2024.03.10—(1)
    文章目录~1.EditingConceptualKnowledgeforLargeLanguageModels2.TRAD:EnhancingLLMAgentswithStep-WiseThoughtRetrievalandAlignedDecision3.AreYouBeingTracked?DiscoverthePowerofZero-ShotTrajectoryTracingwithLLMs!4.CanLLMSubstit......
  • 1050:骑车与走路
    【题目描述】在清华校园里,没有自行车,上课办事会很不方便。但实际上。并非去办任何事情都是骑车快,因为骑车总要找车、开锁、停车、锁车等,这要耽误一些时间。假设找到自行车,开锁并骑上自行车的时间为27秒;停车锁车的时间为23秒;步行每秒行走1.2米,骑车每秒行走3.0米。请判断走不......
  • 05-vue
    Vue2直接下载并用<script>标签引入,Vue会被注册为一个全局变量。<body> <divid="app"> </div></body><scriptsrc="../js/vue.js"></script><script!src=""> /*创建Vue实例*/ constmyVue=newVue({ ......