基于顶点索引的三维建模与可视化方法研究

2011-07-30 10:54陈密密
影像技术 2011年2期
关键词:数组顶点材质

陈密密

(解放军61512部队,北京 100088)

近年来,随着计算机软硬件及图像图形学技术的迅速发展,三维可视化技术在诸多领域得到了广泛应用。相对于平面可视化,通过三维可视化技术可以获取全方位、多层面、多维、多尺度的立体感知,提供更全面、更直观的信息。

三维物体的建模与可视化是三维可视化技术的重要研究内容之一。3DSMax是使用最为普遍、功能较为全面的三维建模软件。目前较多的三维可视化系统均是使用3DSMax软件进行复杂物体的建模,输出存储模型数据的3DS图形文件,结合VC编程开发工具和OpenGL、D3D等三维图形开发接口读取模型文件,并将三维物体导入到虚拟场景中。结合近期的三维建模作业任务,笔者研究发现3DS模型文件的信息冗余大,重复存储的顶点数据多,结构比较复杂〔1〕,尤其是当三维模型相对复杂、数据量比较大时,程序的实时运行效率会受到严重影响。

针对3DS模型文件的缺点,本文提出一种新的基于索引机制的三维模型数据组织方法,引入顶点数组和索引数组,实现顶点数据的复用,避免了对共用顶点的冗余处理;另外,在模型显示的过程中使用OpenGL的缓冲区对象扩展,充分发挥了图形硬件的加速特性,大大提高了三维模型的渲染效率。

1 三维可视化效率影响因素分析

三维建模的目的是为了在虚拟场景中对其进行可视化展现,因而可视化的效率是衡量建模方法优劣的关键因素,也是在建模过程中必须要考虑的重要问题。

影响三维可视化效率的主要因素包括:1)模型的复杂程度。模型的精细化表达必然会造成数据量的剧增,从而导致绘制效率的降低,影响整个可视化系统的运行,因而只能在满足一定绘制速度的条件下建立相应精细程度的几何外形,以降低可视化的效果为代价换取可视化效率的提升;2)模型数据的组织方式。模型数据组织方式描述的是如何对组成这些物体的几何图形数据进行组织,以实现渲染效率的最大化。商业建模软件如3DSMax、AutoCAD、Maya等,通常都是利用小三角形面片进行实体表面的拟合,将模型描述为若干个多边形曲面的联合体,这种数据组织形式结构简单,但却存在着大量的冗余信息,随着模型复杂程度的增加,冗余信息将数倍于有用的信息,严重影响可视化的效率;3)模型的渲染方式。在OpenGL三维开发环境中,每渲染一个几何图元都要进行许多函数的调用。以三角形为组成模型的基本图元,每个顶点调用一次函数,则绘制一个三角形至少需要3次函数调用。另外,由于三维物体除了几何信息外往往还有纹理信息、颜色信息和光照信息,这进一步增加了为每个顶点调用的函数,使得绘制一个三角形时函数调用次数将增加三四倍。对于大部分系统而言,函数调用的开销很大,因而这种渲染方式会严重地影响应用程序的性能。

2 基于顶点索引的三维建模方法

通过上述分析,在保证可视化效果的前提下,改进三维模型的数据组织方式和渲染方式,是提高可视化效率的有效途径。为了提高模型数据的读取速度和显示效率,模型数据只包含了三维模型两方面最为重要和必要的信息,即几何信息和材质信息。为便于更好地描述其组织结构,首先阐述以下几个定义:

定义1,广义材质:材质是三维模型与显示相关的表面属性信息的统称,即模型某一部分颜色和纹理信息的集合。模型的颜色信息包括其环境光属性、散射光属性、镜面光属性、镜面光反射强度属性、光泽度属性和自发光属性等;纹理信息则主要是指模型纹理贴图的信息,如贴图文件的类型、大小、名称以及是否进行压缩等信息。每个模型都具有一种或多种材质。

定义2,广义多边形:广义多边形是模型中具有相同材质的所有三角形面片的集合,各三角形面片之间不需要空间位置上的联系,如图1所示,模型中具有材质M1的所有三角形面片 (T1,T2,T5,T11),具有材质M2的(T3,T6,T7,T8,T12),具有材质M3的(T4,T9,T10)分别构成三个不同的广义多边形。模型中材质的个数和广义多边形的个数是相同的。

图1 广义多边形的定义

定义3,顶点数组:顶点数组是存储模型中所有各不相同顶点的相关属性信息的数据集合〔2〕。顶点数组可以有多个,分别对应顶点的不同属性信息,如顶点的几何坐标数组、纹理坐标数组和法向量数组等。相邻三角形的共用顶点在顶点数组中只记录一次,因而顶点数组中没有冗余信息。

定义4,索引数组:索引数组是指定访问顶点数组顺序的数组。如图2所示,通过索引数组来指定构成几何图形的顶点在顶点数组中的位置,可以对顶点数据(顶点、法向量和纹理坐标)进行复用,而不是多次存储,会带来相当可观的内存节省;另外在OpenGL中使用索引数组,还可以得到效率上的优化,将这些顶点只转换一次,避免了共用顶点需要多次指定的问题,从而节省了可观的转换时间。

图2 引用顶点数组的索引数组

根据上述定义和描述,设计如下的模型数据结构进行三维模型的表示,不再以简单的三角形面片作为拟和模型表面的基本单元,取而代之以具有相同表面材质属性的广义多边形作为表示模型组成的最小单元,并建立每个广义多边形的顶点数组和索引数组,从而以最小的信息冗余、最少的函数调用和最少的转换开销实现模型三维可视化效率的最大化。该模型数据结构可具体描述为如下形式:

3 三维模型可视化的硬件加速实现

近年来图形处理器技术的迅速发展不仅带来了处理速度的提高,还产生了很多全新的图形硬件技术,各图形硬件厂商也纷纷通过扩展的方式提供访问图形硬件新特性的接口,其中顶点缓冲区对象扩展就是一个典型的例子,该扩展定义了一个接口允许将不同类型的数据,特别是顶点数组数据,存储在高速的图形显卡内存中,从而极大地提高数据传输的效率〔3〕。

基于索引机制的三维模型数据组织方法可以充分利用图形显卡高效的数据传输特性。在可视化的过程中,分别为顶点数据和索引数据映射相应的顶点缓冲区对象和索引缓冲区对象,可以一次发送成块的数据到图形显卡内存中,实现图形硬件优化的渲染性能,其整体流程如图3所示。

图3 三维模型可视化硬件加速实现的基本流程

4 实验结果与分析

基于OpenGL 3D图形应用程序接口和glew扩展函数库,在VC++6.0编程环境下对本文提出的三维建模与可视化方法进行了编程实现,图4是对某航天器模型(该模型下载于www.nasa.gov,包括8104个顶点,15392个三角形)进行三维可视化的效果。

为检验算法的可视化效率,在DELL Precision 470计算机上进行了八组实验,将本文提出的方法和传统的基于3DS文件的三维模型可视化方法进行了对比。

图4 航天器模型三维模型可视化效果

1)硬件环境:%

%CPU:Xeon,主频2.99 GHz;

内存:1.0 GB;显卡;nVidia Quadro FX 3400;

显存:256M;

显示器刷新频率:72 Hz。

2)实验结果

为便于进行显示效率的比较,以图4所示的航天器模型为基础模型,同时复制多个模型进行显示,逐渐增大模型整体的复杂程度,表1是分别采用两种方法的显示效率比较。

表1 三维模型可视化效率的比较

从上表可以看出,传统的基于3DS模型的三维可视化方法,由于模型数据组织结构复杂并且可视化过程中没有得到图形硬件的优化,其显示效率受模型复杂程度的影响比较大,随着模型复杂程度的增加,其显示效率迅速下降,当模型的复杂程度达到20倍于基础模型时,该方法已不能达到实时渲染的要求。采用本文提出的基于硬件加速的模型可视化方法,由于其模型数据的组织方式充分利用了图形硬件的优化特性,因而在可视化过程可以保持较高的渲染效率,随着模型复杂程度的成倍增加其渲染帧率始终保持在72帧/秒左右,受模型复杂程度的影响极小,适合于复杂物体的建模和可视化。

[1]3D Studio File Format(3DS).Autodesk Inc.www.autodesk.com.

[2]Richard S.Wright.OpenGL超级宝典[M].北京人民邮电出版社,2005:376-580.

[3]董朝.基于可编程图形硬件加速的若干技术研究[D].杭州:浙江大学,2005.

猜你喜欢
数组顶点材质
JAVA稀疏矩阵算法
过非等腰锐角三角形顶点和垂心的圆的性质及应用(下)
过非等腰锐角三角形顶点和垂心的圆的性质及应用(上)
刚柔并济
JAVA玩转数学之二维数组排序
更高效用好 Excel的数组公式
材质放大镜电光闪耀亮片
外套之材质对比战
针织衫之材质对比战
寻找勾股数组的历程