光栅化

  • 1.屏幕
    • 1.2.屏幕分类
    • 1.3.屏幕分辨率
  • 2.像素(Pixel,缩写px)
  • 3.屏幕空间
    • 3.1 规范立方体转化到屏幕空间
  • 4.光栅化
  • 5.像素表示三角形
  • 5.1 2D的采样方法进行光栅化

1.屏幕

屏幕也称显示屏,屏幕是一个典型的光栅显示设备,常用的显示屏又有标屏与宽屏,标屏宽高比为 4:3,宽屏宽高比为 16:10 或 16:9。

1.2.屏幕分类

  • CRT显示屏幕(阴极射线管显示器)
  • LCD/OLED液晶屏幕
  • LED屏幕
  • Electrophoretic(电子墨水屏)如kindle

1.3.屏幕分辨率

屏幕分辨率是指纵横向上的像素点数,单位是px,屏幕分辨率确定计算机屏幕上显示多少信息的设置,以水平和垂直像素来衡量。就相同大小的屏幕而言,当屏幕分辨率低时(例如 640 x 480),在屏幕上显示的像素少,单个像素尺寸比较大。屏幕分辨率高时(例如 1600 x 1200),在屏幕上显示的像素多,单个像素尺寸比较小。

2.像素(Pixel,缩写px)

像素是指由图像的小方格组成的,这些小方块都有一个明确的位置和被分配的色彩数值,小方格颜色和位置就决定该图像所呈现出来的样子。
从像素的思想派生出几个其它类型的概念,如体素(voxel)、纹素(texel)和曲面元素(surfel),它们被用于其它计算机图形学和图像处理应用。

3.屏幕空间

用像素数组定义一个屏幕空间,如图:

这里需要注意:

  • 像素的坐标(数组中的索引)(x,y)总是一个整数
  • 像素的坐标从(0,0)到(width - 1, height - 1)。width和height为屏幕的宽高,如1920X1080
  • 像素(x,y)的坐标的中心为(x+0.5 , y+0.5),如上图绿色的像素,坐标为(2,1),中心坐标为(2.5,1.5)
  • 屏幕的范围为(0,0)到 (width,height)

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

转化过程中注意:
与Z无关(z的值其实是物体在世界空间中的深度值,目前只考虑有一个物体,所以不考虑深度信息)
对xoy平面进行转换,[-1,1]^2转换到 [0,width] × [0,height]

对xoy平面转换的矩阵为:
Mviewport =(width200width20height20height200100001)M_{\text {viewport }}=\left(\begin{array}{cccc}\frac{w i d t h}{2} & 0 & 0 & \frac{w i d t h}{2} \\ 0 & \frac{h e i g h t}{2} & 0 & \frac{h e i g h t}{2} \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1\end{array}\right)Mviewport ​=⎝⎜⎜⎛​2width​000​02height​00​0010​2width​2height​01​⎠⎟⎟⎞​
称之为视口矩阵。对这个矩阵进行解析:
先将规范立方体的中心移动到(width/2,height/2)的位置,然后再对规范立方体进行缩放,接着对其进行平移,因为规范立方体中的中心位于原点的位置,而屏幕空间的坐标是从左下角开始为原点(0,0),不存在负坐标。因为与z无关,所以对z不做任何变换。

4.光栅化

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

5.像素表示三角形

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

一个简单的解决方法是采样(sampling)
比如我有一个函数f(x,y),在屏幕上的根据要求 ,比如隔一个点求一个f(x,y)的值,或者求一小块区域内的某一个点的作为这个区域的值,这就是采样。我们可以通过采样对函数离散化。

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


像素中心作为采样点,如果该点位于三角形内部,用橙色标记,如果不在则不变。

用函数的实现就是定义一个二值函数: inside(tri,x,y)
inside (t,x,y){1Point (x,y)in triangle t0otherwise (t, x, y) \begin{cases}1 & \text { Point }(x, y) \\ & \text { in triangle } t \\ 0 & \text { otherwise }\end{cases}(t,x,y)⎩⎪⎨⎪⎧​10​ Point (x,y) in triangle t otherwise ​
如图所示:

//伪代码
for(int x=0;x<xmax;++x)
{for(int y=.;y<ymax;++y){image[x][y]=inside(tri,x+0.5,y+0.5);}
}

这边有一个问题如何判断像素中心点是否在三角形内部
方法一:面积法
计算三角形顶点与像素点围成的面积与原始三角形面积的大小是否一致。如图所示,若是像素点位于三角形内部面积一致,若是像素点位于三角形外部面积则大于原始三角形面积。

方法二:叉乘
按照逆时针(或者顺时针)的方式,判断边向量和该边向量的出发点到该点的向量 的叉乘是否都指向屏幕内或者屏幕外。若是,则点在在三角形内部,若不是,则点在三角形外部。如图所示:
在三角形内部

在三角形外部

对所有像素中心点做上述采样操作得到的采样会出现锯齿,如图所示,橙色点为像素中心点
如果用上面的方法进行光栅化,那么最后得到的三角形就是这样的
这和我们想要的三角形相差太多,锯齿很明显。所以就要对其进行抗锯齿操作,之后会介绍。

计算机图形学中的光栅化相关推荐

  1. 计算机图形学三:光栅化-Rasterization

    文章目录 什么是光栅化? 像素和屏幕 直线光栅化(Linear Rasterization) DDA数值微分算法 中点Bresenham算法 三角形光栅化(Triangle Rasterization ...

  2. 计算机图形学中的四元数(Quaternions)

    计算机图形学中的四元数 计算机图形学中的四元数(Quaternions) 前言 欧拉角 欧拉角的万向节死锁(Gimbal Lock)与插值问题 四元数 参考 计算机图形学中的四元数(Quaternio ...

  3. 欧拉公式在计算机图形学中的,计算机图形学 第九章课件.ppt

    <计算机图形学 第九章课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<计算机图形学 第九章课件.ppt>文档请在天天文库搜索. 1.甘朝华第 ...

  4. 计算机图形学中向量点乘和叉乘的用途_图形学笔记(一):基础知识

    从这便文章开始整理学习到的计算机图像学相关知识,原则是只写我没在网上找到清楚解释的内容,如果有很好的文章介绍相关内容,我会直接把链接贴上. 首先弄清 Computer Graphics和 Comput ...

  5. c语言 连通域算法 递归,VC++ 6.0编写计算机图形学中的种子填充算法,想用递归的八向连通域,求助!...

    VC++ 6.0编写计算机图形学中的种子填充算法,想用递归的八向连通域,求助!0 填充函数代码如下: void CComputerGraphicsView::PolygonFill2()//区域填充函 ...

  6. 数学系列:数学在计算机图形学中的应用

    宇宙的琴弦 博客园 首页 新随笔 联系 订阅 管理 随笔 - 60   文章 - 0   评论 - 0 数学系列:数学在计算机图形学中的应用 Copyright © 1900-2016, NORYES ...

  7. 计算机图形学中需要掌握的数学基础知识有哪些?

    计算机图形学中使用了大量数学知识,尤其是矩阵和线性代数.虽然我们倾向于认为3D图形编程是紧跟最新技术的领域之一(它在很多方面确实是),但它用到的很多技术实际上可以追溯到上百年前,其中一些甚至是由文艺复 ...

  8. 数学在计算机图形学中的应用

    数学在计算机图形学中的应用 刘利刚 中国科技大学 "学习计算机图形学需要多少的数学?"这是初学者最经常问的问题. 狭义的计算机图形学指的是传统的三维建模,绘制,动画等,而广义的计算 ...

  9. 计算机图形学中的曲线问题

    文章目录 免责 前言 拉格朗日插值多项式 第一步:得到一个基函数 第二步:得到所有基函数 第三步:对所有基函数进行线性组合 举例验证 拉格朗日插值曲线绘制实践 三次埃尔米特插值多项式 第一步:得到第一 ...

最新文章

  1. 我的理解:什么是WCF
  2. mobilenet精髓全力解析,全力迁移到别的网络
  3. Python一些很实用的知识
  4. 中国大数据与智能计算产业联盟“开源软件工作委员会”成立会议在京召开
  5. 科技赋能时代 用ocr身份证识别
  6. RabbitMQ消息发布确认
  7. 匿名四轴上位机使用方法
  8. 公司邮箱怎么申请注册?电子邮箱注册教程来了
  9. Android 之文件夹排序
  10. 实现一个简单的Database1(译文)
  11. 速解元宇宙 / Metaverse 迷雾下的行动指南
  12. 给ssh服务添加谷歌双重认证
  13. WPS 手动去除广告
  14. ios第三方支付流程
  15. 获取当前登录用户的用户名
  16. 如何选择最佳技术来加速文件传输—镭速
  17. WIN 2003服务器终极安全及问题解决方案
  18. matlab 总谐波失真,分析谐波失真 - MATLAB Simulink Example - MathWorks 中国
  19. 数据结构|最小生成树问题
  20. png的计算机储存图片的格式吗,我电脑打不开png格式的图片,如何解决?

热门文章

  1. 王晋康 - 养蜂人·王晋康科幻小说精选集1(2014年2月4日)
  2. 地图APP的产品分析-驴迹导游
  3. 初中数学结合计算机教学设计,依托信息技术进行初中数学教学设计
  4. html5页面打不开原因,部分网页打不开是什么原因,详细教您网页打不开怎么解决...
  5. 旷世天才:尼古拉·特斯拉
  6. fl studio2020中文版免费下载激活教程网盘
  7. 试简述smtp通信的三个阶段的过程_通信原理简答题汇总
  8. 最具有催眠功能的网站
  9. vue websocket 聊天之发送表情
  10. Linux rpm -ivm,Linux常见命令