计算机图形学(闫令琪博士课程答疑)-Rasterization(triangle)(一)

课程链接

光栅化阶段:

首先我们确定一个我们要输出的是什么样的,就是设置一个宽高比

例如什么4:3   16:10等,就好像你买个电视他的宽高比一样,输出规格先固定

定义两个概念:垂直可视角度,长宽比(通过他们可以推出水平可视角度)

前面我们已经研究了正交透视投影,这里回顾一下,正交投影是将,所有的z都投射到(-1,1)

首先我们提出一个不起当给说法,屏幕是由一个一个的像素点构成,而像素点可以理解为原子操作,一个像素是只能有一个颜色,他是不会左边是这个颜色右边是那个颜色的(当然还有一个灰度值,以及RGB三色)。一把都是0-256表示也就是用八位数表示( )

20201107:1809份暂时结束,未完待续

像素点我们宽高当作width  height

我们吧像素点理解为在某一个方块的中心eg:左下角(0,0)实际在的位置应当是(0.5,0.5)

因为我们前面将正交变化转化到了一个标准立方体里面去,所以我们还需要将他转化成屏幕图形。

我们成像的视口(-1,1)是我们已经设定好的所以我们要将视口缩放到屏幕空间

已经映射好了就是要进行绘制了,回忆一下我们有哪些机器绘制(我想到的就是打印机了,电视机,还有那个数码管,信号的)。

首先是阴极成像官

这里还谈到一个成像技术:各行扫描。思路较为简单,就是本次成像采用单数行成像,下一次就采用偶数行成像,因为切换特别快,已经我们人眼有视觉延迟,所以是不会被发现的,不过现在已经不怎么使用了,缺点就是画面撕裂。目的是以前设备性能没有那么好

还有一些成像设备就不多说了

下面讲到面数,因为一把我们会把一个模型,分解成由四边形或者三变形构成的eg:

对一个三角形进行一些研究

我们怎么将这个三角形着色了,比如说那些边界点如何显示:(如果是完全包围没有话说直接显示,但是边界怎么办,就是这节课的重点了)(是否包围像素中心)

方法一:采样法,或者说离散法,eg:

采样也可以理解为模拟信号(这是计算机处理信号数据的目前主流方式)

使用函数表示很简单:像素中心在就亮,不是就不亮

结果:

把他写成代码新式:

遍历所有的点:

inside的实现就是判断是否在里面的关键,加上0.5是因为吧像素中心代入计算,不然带入的只是一个像素的左下角坐标。

现在我们来聊聊一些实现方式:

方式1:

叉积,我们可以通过叉积判断出来他在向量的那一边:

我们规定一个方向(逆方向):A=p2->p0, B = p0->p1,C = p1->p2(为简化做一个代换)q点显然在A的右边,不在三角形里面,如果在某一个向量的三边的右边,都可以认为不在三角形里面,如他满足三个边的左边那一个点一定在三角形里面(结果和你选取的方向有关)

我们还要考虑一种情况,刚好在向量上面怎么办,还有就是两个三角形的边界点怎么处理

这里老师说,没必要过多探讨,确实,完全可以在你采用的算法里面现时规定,就是一个=>和>的区别

这样采样,在考虑三角形光珊化的时候遍历的所有,但是其实有很多像素是不需要处理的,我们完全可以采用只考虑包围盒(三角形的三条边)里面的点(包括边界)里面的点。

采用:

当然,这个带来额外的计算边界的要求,所有这个比较适用于三条边的长短差距大的三角形,就是长窄(高瘦)类似,对于三边差不多,比较饱满的三角形,遍历整个方形也未尝不可 

最后填充

原则上会发生一些失真,就发生锯齿,产生原因主要说就是像素是点方格,

下一节课目标,抗拒之,反走样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值