基于智能手机的工程图学虚拟模型库的研究与实现
2013-09-21邱龙辉楚电明
邱龙辉, 楚电明, 叶 琳
(青岛科技大学机电工程学院,山东 青岛 266061)
21世纪初,全新的辅助教学工具——基于VRML的虚拟模型库在工程图学辅助教学中得到了应用[1-5]。虚拟模型库因其三维模型造型逼真、控制灵活而在教学中起到了一定的作用。但是,已开发的虚拟模型库都是基于PC平台开发的,而由于PC平台的在便携性方面的限制,使得虚拟模型库的应用也受到了极大的限制。手持移动设备的出现,为解除这种束缚提供了条件,该类设备最重要的属性即是其便携性,而且随着硬件水平的不断提高,运行平台的实用性也日益增强,现在越来越多的各种有便携需求的移动应用在移动设备平台上得以实施。现在随着基于嵌入式系统的手持移动设备——智能手机的普及,为虚拟模型库的灵活使用提供了可能。为此,在做了许多的研究和探索工作的基础上,设计了基于智能手机 Windows Mobile——VRML平台的工程图学移动虚拟模型库系统,移动虚拟模型的特点在于没有了使用平台的限制,提高了虚拟模型库的实用性,虚拟模型随身移动,方便学习浏览使用,成功的拓展了虚拟模型库的使用空间和时间,为进一步优化辅助教学环境提供了有效途径。
1 移动虚拟模型库系统及开发运行平台
移动虚拟模型库系统的设计目标为:设计实现一个便携的、可移动使用的、可以利用已有VRML虚拟模型的三维模型浏览管理系统,为学生学习制图课程提供更方便的辅助学习工具。
移动虚拟模型库系统的组成如图1所示。系统包含两部分:VRML模型3D浏览器和模型文件管理器。在移动设备的应用软件中目前没有可用的VRML模型的3D浏览器,系统需要完成一个VRML浏览器的设计,来实现模型VRML文件的读入、解析和显示输出;模型文件管理器完成模型文件库中文件的添加与删除、列表的生成、文件的选择等功能。
移动虚拟模型库的开发要首先选定开发运行平台。目前,移动设备的系统平台主要包括Windows Mobile、Android、iOS等,其中iOS仅用于苹果的iPhone;Android系统是Google基于Linux开发的开源系统,2010年以来推广速度较快;Windows Mobile是微软公司为手持设备推出的“移动版Windows”,与PC版Windows有较好的文档共享性。移动虚拟模型库系统的开发运行平台决定先从Windows Mobile系统入手,后续再开发其它系统的应用。移动虚拟模型库系统及开发运行平台模块间的相互关系如图2所示。在Windows Mobile系统中开发VRML浏览器,需要用到Direct3D Mobile,Direct3D Mobile是微软设计的3D图形API,专门用于安装了Windows Mobile系统的移动和嵌入式设备。
图1 移动虚拟模型库系统
图2 模型库系统及开发运行平台模块间的相互关系
2 Direct3D Mobile中Mesh类的图元绘制方式及数据需求
Direct3D Mobile提供了Mesh类[6],综合管理了图元对象数据和绘图方法,当一个场景中的网格非常多、模型较复杂时,将这些图元用网格对象来表示,在 Device 设备中根据需要来绘制网格对象,将有效提高程序运行效率。因此,系统决定采用Direct3D Mobile的Mesh类实现立体绘制。
Mesh是Direct3D Mobile提供的操作网格对象的类,使用索引方式绘制图元。在 Direct3D Mobile中Mesh类主要提供了两种基本方法在场景中创建网格:使用Mesh构造函数创建和使用形状创建。其中形状创建功能只能建立长方体、圆柱体等基本体。Mesh 构造函数是通过定义Mesh对象的顶点缓冲 VertexBuffer 对象和索引缓冲对象 IndexBuffer、设置 Mesh的属性AttributeRange来构造图元对象。然后通过一定的方法建立图元顶点数据和索引数据,并使用VertexBuffer和IndexBuffer的SetData()方法将顶点数据置于VertexBuffer和IndexBuffer对象中。最后通过Mesh对象的DrawSubset()方法来绘制图元。
Mesh类的数据需求主要是用于建立VexterBuffer和 IndexBuffer对象。其一是用于Mesh的构造函数定义VexterBuffer和IndexBuffer类的实例。分析Mesh构造函数的参数,在定义两个缓冲实例时需要与模型数据有关的如下参数:模型的平面数量(numFaces)、模型的顶点数量(numVertices)。
其二是用于设置VexterBuffer和IndexBuffer对象的数据,该数据与VexterBuffer的顶点格式有关,不同的顶点格式需要的坐标数据不同。由于系统要实现模型的灯光效果,所以模型必须包含法线数据。因此 VexterBuffer的顶点格式(vertexFormat)必须定义为。PositionNormal需要如下数据:顶点的坐标数据(x,y,z),顶点的法线数据(Nx,Ny,Nz)。由此可知完成Mesh类的实例,还需要顶点的坐标数据,顶点的法线数据和面片的索引数据。
3 虚拟模型 VRML文件的数据格式分析
系统的3D浏览器需要从VRML文件中读取有用的数据,尽可能放弃目前对系统运行速度有影响的数据。下面对 VRML文件数据格式作简要分析。
图3 VRML文件解析逻辑
工程图学虚拟模型文件中的模型数据都是使用 VRML97标准中的 IndexFaceSet节点描述的[7]。在IndexedFaceSet节点中包含4个重要的域:coord、normal、coordIndex、normalIndex。其中 coord域值为一个Coordinate节点,Coordinate节点中使用包含MFVec3f域值的point域描述坐标点列表,形如“x y z,”,z后的逗号为不同三维矢量的分隔符,最后一个域值后的“]”为point域的结束符。normal域值是一个Normal节点,其包含的vector域的域值形式与point相同,用于表示一个面片的法线列表。coordIndex域用于描述面片顶点的坐标点索引,使用MFInt32类型的域值,形如“P1, P2, P3, -1”,其中“-1”表示当前面片顶点索引的结尾。normalIndex域用于描述面片顶点的法线索引,使用MFInt32类型的域值,形如“N1, N2, N3, -1”,其中“-1”表示当前面片法线索引的结尾。各个域中,域值的数量由模型的形状决定,一般情况下,coordIndex和normalIndex中域值的数量相同,各为p个。
4 VRML文件IndexFaceSet节点的文件解析
根据第2节中的分析,完成Mesh定义需要的数据包括:模型的平面数量(numFaces)、模型的顶点数量(numVertices)、顶点的坐标数据(x,y,z)、顶点的法线数据(Nx, Ny, Nz)、面片的索引数据。
由第 3节中分析,VRML中的数据格式与Mesh需要的格式不同,因此VRML中IndexFaceSet节点不能够直接读入并存储进 VexterBuffer,应根据需要经过文件解析。通过文件解析,系统的VRML模型3D浏览器将主要读取第3节中所述的IndexFaceSet节点中的4个域的值数据。
VRML文件解析逻辑如图3所示。使用Mesh类构造函数建立网格需要用到模型的平面数量和顶点数量,而 VRML文件中没有此类数据,因此文件解析首先要完成 VRML中IndexedFaceSet类中coord域、coordIndex域中该值的统计。另外,还应完成normal域中法线数量的统计,方便后续法线数据的解析。
使用构造函数完成Mesh类的实例定义后,需设置Mesh类的顶点缓冲(VertexBuffer)数据,此处应建立PositionNormal格式的坐标数组,即数组中需要顶点的坐标数据(x,y,z)和对应的法线数据(Nx,Ny,Nz),而在VRML中顶点的坐标数据和法线数据是通过坐标索引和法线索引实现一一对应的,因此文件解析随后要完成 coord域、coordIndex域、normal域、normalIndex域中值数据的读取,然后利用索引对应关系,将相关的坐标和法线数据存入PositionNormal数组,并生成对应的索引数组。
图4 仿真器运行
5 实现实例
图4是系统在设备仿真器中的运行效果,仿真器系统为Windows Mobile 5.0。图5是系统在实际设备中的运行效果,设备为O2 Flame智能手机,CPU主频520MHz,运行内存128MB,屏幕分辨率480×640,操作系统为Windows Mobile 5.0。
图5 智能手机运行
6 结 束 语
本文设计的“工程图学移动虚拟模型库”,基于智能手机Windows Mobile操作系统,实现了移动虚拟模型库系统的设计,虚拟模型随身移动,方便学习浏览使用,成功的拓展了虚拟模型库的使用空间和时间,为进一步优化辅助教学环境提供了有效途径,也为其它虚拟模型的移动应用提供了基础。
[1]叶 琳. 机械制图虚拟现实网络模型室的建立[J].工程图学学报, 2002, 23(3): 202-206.
[2]王和顺, 汪 勇, 徐 宏. 基于 VRML的网络虚拟模型库创建的研究[J]. 机械与电子, 2003, (6):67-68.
[3]陈雪菱, 李 丽, 王兴建. VRML在工程图学虚拟模型库中的应用研究[J]. 成都理工大学学报(自然科学版), 2005, 32(4): 407-409.
[4]冯桂珍, 池建斌, 王大鸣, 等. 基于 Web的机械制图虚拟模型库的构建[J]. 工程图学学报, 2008, 29(6):149-153.
[5]张爱莲, 赵建军. 基于VRML的工程图学教学虚拟模型室的研究及实现[J]. 装备制造技术, 2008, (12):9-11.
[6]Microsoft. Microsoft.WindowsMobile.DirectX.Direct3D命名空间[EB/OL], http://msdn.microsoft.com.
[7]ISO/IEC 14772-1:1997,The Virtual Reality Modeling Language (VRML)—— Part 1: Functional specification and UTF-8 encoding [S].