美文网首页
软件光栅化入门

软件光栅化入门

作者: 草帽星 | 来源:发表于2019-03-21 01:17 被阅读0次

光栅化本质说白了就是填充一个三角形而已,各类3D模型的图元(基础组成3d模型的最小单位)为三角形,三角形填充完毕,就完成了光栅化。

那就先从2d的三角形填充说起吧,三角形就这几种

三角形类型

那怎么填充呢?扫描填充喽

待填充三角形

    用一个平底三角形简单讲解下,咋填充,y方向步长1前进,一行行来呗,平底三角形 y1 = y2, 要扫描多少行?y1-y0不就中了,为啥底下减去上边的,因为屏幕显示的时候一般设定左上角为坐标原点,y向下增长,x向右增长,就酱紫>_>。 

    言归正传,那咋算XL,XR, 简单来说,你上过高中就应该学过通过两点确定一条直线的方程吧, P0, P1是一条直线, P0, P2又是一条直线,通过两点算出两条线段y = kx+b, 起点P0你知道了对吧,每次y0+1,还算不出XL, XR对应的x吗,XL到XR就是一条扫描线,y值一样, 一个个点填充完了, 一条线不就完事了吗? 其实也有更好的其它推理方式,我此处写的简单些。来看下图。

其它类型三角形

上图重点在哪?在于切割,怎么切割?首先确定不是平顶或平底的三角形,然后把三个点排好,所谓排好嘛意思?就是通过三个点的坐标让程序知道在y方向中间的那个点, 而且要知道那个点是左边还是右边,上图很明显,是左边嘛。那怎么做呢?自己if else撸代码去。。。

好的,那么现在我们完成了一个三角形的填充,这是一个2d的三角形,而且扫面线颜色十分单一,那么我们拓展一下,一个3d模型是由无数个3d的面组成的,每个3d的面是个三角形,那是不是把每个3d的三角形填充满了就可以绘制出一个模型了呢?那么就开始吧,

像写代码一样:

第一步:是确定3d三角形的三个顶点的坐标位置。

第二步:分割3d空间中的三角形,至于是否分割,取决于这个三角形是否是平底三角形嘛。是的话,不分割。不是的话分割,熟悉编程的朋友应该知道了,这是一个函数就可以解决的问题喽。

第三步:计算每条扫描线的起始坐标和终止坐标,这样每条线去扫描写入指定位置,每条线内部又是逐个点去填充。

粗略来说这样一个三角形就算填充完毕了。好,我们把这三步简单说了一下,下边开始正题,细化每一步去实现。

相关文章

  • 【2016】Masked Software Occlusion

    这篇文章是Intel在2016年输出的软件光栅化技术方案,很多项目的软件光栅化实现都是以这个方案为基础开发的,参考...

  • 软件光栅化入门

    光栅化本质说白了就是填充一个三角形而已,各类3D模型的图元(基础组成3d模型的最小单位)为三角形,三角形填充完毕,...

  • 光栅化理解

    什么叫光栅化? 光栅化( Rasterize/rasteriztion)官方翻译成栅格化或者像素化。没错,就是把矢...

  • 光栅化

    计算机中表示图形有两种方式,一种是点阵表示,一种是顶点表示。 点阵表示是光栅显示系统显示时所需要的表示形式,光栅化...

  • ios开发shouldRasterize光栅化--离屏渲染

    shouldRasterize(光栅化)是比较特别的一种离屏渲染:光栅化概念:将图转化为一个个栅格组成的图象。光栅...

  • 中印3D立图谷3D立体光栅化是什么?

    光栅化是什么: 目前,光栅画在当代的应用可谓是越来越广泛,光栅画是值得我们好好学习的,现在我们就深入了解光栅画,希...

  • 光栅化阶段:三角形设置、三角形遍历、像素着色、合并

    光栅化阶段 光栅化阶段分了四个步骤:三角形设置、三角形遍历、像素着色、合并。 三角形设置: 光栅化的第一个流水线阶...

  • 光栅化规则

    光栅化规则定义矢量数据如何映射到光栅数据。 光栅数据贴靠到会进行剔除和裁剪的整数位置(以绘制最低像素数量),并在传...

  • OpenGL 入门

    走向3D 2D + 透视 = 3D 3D术语 (入门级) 光栅化:实际绘制或填充每个顶点之间像素的形成线程 着色:...

  • 3D渲染-光线追踪-包围盒

    一、回顾 1、理解 上节通过光栅化和光线追踪的对比,引入光线追踪。 在光栅化中,其实就是构建网格,然后在像素网格中...

网友评论

      本文标题:软件光栅化入门

      本文链接:https://www.haomeiwen.com/subject/zoqfvqtx.html