3D模型中的计算机图形学原理

3D模型中的计算机图形学原理

在计算机的发展过程中,图形的表示从需要在显示器上画一条直线段开始,进而需要画一条曲线,再划出2D几何形状、再到画出复杂的3D几何。这一系列的发展也引出计算机图形的划时代发展,下面详细讲解一下图形在计算机中的表示方法。

图形的表示也是符合一般自然科学的发展路线,同样是从最简单的图形入手。首先是直线段、接着曲线段,有了这两种的表示方法,就可以在计算机上画出简单的平面的图像。画了平面图像就会想到画3D立体的图像。3D图像的由曲面组成。那么相应地就衍生出表示曲面的数学模型。
图形学中对图形的表示方法惯常采用参数数学函数对图形建模,比较知名曲线表示的方法有B样条线和Bezier样条、NURBS曲线等参数曲线,对应地他们也就可以表示成相应的参数曲面。

在图形学中表示图形的方式有三种方法:基于线框的表示方法,基于表面的表示方法和基于实体的表示方法
基于线框的表示方法是单纯用线段表示模型,当用它来表示3D模型时,会因为线段太多导致画面错乱不堪难以辨别,所以这种方法一般使用不多。
基于表面的表示方法分为两种,一种是连续曲面,一种是离散曲面。连续曲面就是指用B样条线和Bezier样条、NURBS曲线等参数曲面表示的曲面,这种表面用于表达工业制造中较为光滑的曲面非常合适。但是不适合表达真实世界中的物体,如茶壶、兔子模型等。离散曲面就是指在当前游戏行业广泛使用的使用三角网格来表示的表面。三角网格采用一系列分段线性的三角形来表近似逼近曲面,因而不能精确地表达解析曲面,但是他容易通过三维扫描技术大量获取,采用足够多的面片是可以任意精度逼近复杂的曲面,同时网格模型数据结构简单、光照计算和显示速度快并且适合硬件的并行处理。
基于实体的表示方法,这种方法能够完整地、无歧义地表达三维形体,然而对于涉及物体表面的运算,如光照计算、光线求交和阴影计算时就特别不方便。

在商业应用中,复杂模型的表示都是使用基于离散曲面的表示方法,即三角网格表示,它具有以下优点:
三角网格属于基于离散表面的表示方法。
他容易通过设备大量获取。
他是通过三角面片无限逼近模型的一种表示方法。
他可以方便地存储模型的数据(包括顶点信息,以及拓扑关系)。可以方便地计算各种光照模型。

模型的存储方法有两种,分别为简单的顶点存储法半边存储法
简单的数据存储方式,在文件中,以V开头,后跟3个浮点数表示一个顶点。然后以F开头后跟三个整数,表示一个三角形三个顶点。
半边表示方法,(同时存储了模型网格的几何信息和拓扑信息)核心思路是:把三角形一条边拆分为两条半边,半边e方向是逆时针方向,那么就有opposite(e)显示对边,next(e)是下一条边,origin(e)是半边的原点,incFace(e)是半边所在的面。每条半边它存储的数据包括:原点,下一条半边,半边的对边,半边所在的面。

模型网格的处理方法分别有网格细分、简化、重剖、光顺
网格细分:将网格进行扩增,添加顶点,使用简单的Loop方法进行添加。在要添加顶点的边上的两个顶点是3倍,其他两个顶点是一倍。
网格简化:多层次细节显示简化技术,在不同的距离视角内部,显示不同层级的模型。在两个不同的显示层级之间做差值处理。模型简化技术有三种:删除顶点、压缩边、收缩面片。
网格重剖:网格重剖就是将网格进行平滑处理,满足平滑处理的要求是:一个顶点有6条边、每条边都一样长、边之间的夹角为60度。但是这种忽略了网格的特征。故而引入基于特征敏感度量的网格重剖,其实质就是基于网格计算距离时加入了一个特征敏感系数。
网格的光顺:去掉不需要的集合面片或者噪声,得到与原网格基本一致的模型,但是更加光滑。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章