计算机图形学光栅化实验_光栅化算法

计算机图形学光栅化实验_光栅化算法光栅化光栅化的任务将在投影变换中得到的正则立方体显示在屏幕上屏幕screen像素(pixels)的集合。屏幕的大小使用分辨率(resolution)来刻画。经典的光栅显示设备像素pixel像素是一个具有统一颜色的小立方体颜色由三部分组成red,green,blue屏幕空间​ 屏幕被划分成一个个正方体,称为像素。像素使用坐标(x,y)(x,y)(x,y)来表示,其中心是(x+0.5,y+0.5)(x+0.5,y+0.5)(x+0.5,y+0.5),

光栅化

光栅化的任务

将在投影变换中得到的正则立方体显示在屏幕上

屏幕 screen

  • 像素(pixels)的集合。

  • 屏幕的大小使用分辨率(resolution)来刻画。

  • 经典的光栅显示设备

像素 pixel

  • 像素是一个具有统一颜色的小立方体

  • 颜色由三部分组成red, green, blue

屏幕空间

​ 屏幕被划分成一个个正方体,称为像素。像素使用坐标 ( x , y ) (x, y) (x,y)来表示,其中心是 ( x + 0.5 , y + 0.5 ) (x+0.5, y+0.5) (x+0.5,y+0.5), 范围是 ( 0 , 0 ) (0,0) (0,0)到 ( w i d t h − 1 , h e i g h t − 1 ) (width-1,height-1) (width−1,height−1)。

光栅化的步骤

光栅化主要分为两步

  1. 将正则立方体的 X , Y X,Y X,Y轴坐标变换到 [ 0 , w i d t h ] × [ 0 , h e i g h t ] [0,width]\times[0,height] [0,width]×[0,height]
  2. 将得到的图形画到屏幕像素上。

光栅化第一步 视口变换 viewport transformation

先缩放然后平移,变换过程中与z无关,变换矩阵如下所示。
( w i d t h 2 0 0 w i d t h 2 0 h e i g h t 2 0 h e i g h t 2 0 0 1 0 0 0 0 1 ) \begin{pmatrix} \frac{width}{2} & 0 & 0 & \frac{width}{2}\\ 0 & \frac{height}{2} & 0 & \frac{height}{2}\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1 \end{pmatrix} ⎝⎜⎜⎛​2width​000​02height​00​0010​2width​2height​01​⎠⎟⎟⎞​

光栅化第二步 光栅化三角形到像素

这里关心的问题是如何将连续的三角形平面放到不连续的像素中显示。

最简单的光栅化方法:通过采样来解决,将像素中心在三角形内部的像素采样出来,然后用这些采样出来的像素点来代表三角形。

这里,判断点 P P P在三角形内部的方法使用了叉积,首先规定规定一个走向,如 A A A-> B B B-> C C C,然后按走向来依次计算3个叉积,如下所示
a ⃗ = A P ⃗ × A B ⃗ b ⃗ = B P ⃗ × B C ⃗ c ⃗ = C P ⃗ × C A ⃗ \vec{a}=\vec{AP}\times\vec{AB}\\ \vec{b}=\vec{BP}\times\vec{BC}\\ \vec{c}=\vec{CP}\times\vec{CA} a
=
AP
×
AB
b
=
BP
×
BC
c
=
CP
×
CA

若 P P P在三角形内部,则 a ⃗ , b ⃗ , c ⃗ \vec{a},\vec{b},\vec{c} a
,b
,c
的方向相同。

但是采样会带来新的问题——走样 aliasing,这些问题都被称为sampling artifacts,例如

  • 锯齿(jaggies),空间采样不充分导致的。

  • 摩尔纹(moire),图像采样不充分导致的。

  • wagon wheel effect,时间采样不充分导致的。

解决上述问题的方法——反走样,其基本思路是在采样之前进行模糊化处理(pre-filter),然后再采样。模糊化处理实际上是在采样之前使用低通滤波器过滤掉高频部分,目的是使边缘模糊化。

实际的做法是使用超采样(supersampling MSAA),其基本思路是将一个像素再划分为多个小的部分来采样,然后每个像素的值是像素中所有的小的部分的平均值。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179394.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • html二级菜单的创建[通俗易懂]

    html二级菜单的创建[通俗易懂]二级菜单用的是无序列表嵌套,:hover鼠标悬浮其上方发生的事<!DOCTYPEhtml><html> <head> <metacharset=”utf-8″/> <title></title> <styletype=”text/css”> *{margin:0; …

    2022年6月9日
  • 矩阵低秩

    矩阵低秩低秩矩阵还记得我们怎么手工求矩阵的秩吗?为了求矩阵A的秩,我们是通过矩阵初等变换把A化为阶梯型矩阵,若该阶梯型矩阵有r个非零行,那A的秩rank(A)就等于r。从物理意义上讲,矩阵的秩度量的就是矩阵的行列之间的相关性。如果矩阵的各行或列是线性无关的,矩阵就是满秩的,也就是秩等于行数。回到上面线性方程组来说吧,因为线性方程组可以用矩阵描述嘛。秩就表示了有多少个有用的方程了。上面的方程组有3个方程…

    2022年5月29日
  • javascript百炼成仙 第一章 掌握JavaScript基础 1.2直接量

    javascript百炼成仙 第一章 掌握JavaScript基础 1.2直接量叶小凡的住处被安排在青山院西北角的一个房间里,虽不宽敞,倒也干净。叶小凡两眼露出振奋的眼神,随便吃了点乡亲们准备的干粮后,就立刻开始打坐修行。编程之修,重在积累,而非资质。资质虽然一样重要,可是后天的努力一样必不可少。这些道理,叶小凡还未上山之前,就已经熟知!因此,即便是资质平凡,只要肯下苦功,一样可以修得正果!叶小凡虽然甲等资质,可依然不骄不躁,开始从“JavaScript基础修炼要诀”第一页开始看起。修炼要诀第一章,直接量。编程世界,所谓直接量,就是明面上可以见到的数据值。常见的直接量有数字,小数,

    2022年6月11日
  • Java中instanceof关键字的理解「建议收藏」

    Java中instanceof关键字的理解「建议收藏」Java中instanceof关键字的理解

    2022年4月23日
  • 各浏览器的鼠标位置测试

    各浏览器的鼠标位置测试

    2021年8月26日
  • jasypt加密原理_java打包加密

    jasypt加密原理_java打包加密引入依赖<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>2.0.0</version></dependency>编写配置jasypt:encryptor:algorith

    2022年9月26日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号