邱龙辉
(青岛科技大学机电工程学院,山东 青岛 266061)
基于Android平台的工程图学助教助学系统研究与实现
邱龙辉
(青岛科技大学机电工程学院,山东 青岛 266061)
针对空间想象能力培养的教学需要,对基于Android平台的工程图学助教助学系统进行了研究。根据教与学的需要,确定了系统功能,设计了软件的框架结构。分析研究了移动设备的系统平台,选择了系统的开发及运行平台。通过分析Android框架中OpenGL ES的设计接口,实现了模型的轴测显示模式。通过分析OpenGL ES中glDrawElements方法的数据需求和VRML97的数据格式,设计了虚拟模型加载器,实现了Android系统中的VRML模型3D浏览器。开发了软件的核心功能模块,设计实现了基于Android平台的工程图学助教助学系统。该系统因其创新性和实用性,在2014年第十四届全国多媒体课件大赛中荣获一等奖。
工程图学;移动设备;教学;安卓系统;应用软件
工程教育要求培养学生的空间想象能力和图形表达技术,工程图学课程在高等教育中承担了这个任务。但空间想象能力培养历来都是一个难题,国内外对此都做了大量的工作[1-8]:从传统的实物模型制图训练,到轴测图绘图训练,再到个人电脑中的3D模型动画、3D CAD模型、虚拟模型等。这些工作都证实了在学习的过程提供直观的立体模型对培养空间想象能力有很好的效果。但从教学实践结果看,这些方法都没有能够满足培养学生空间想象能力的教学需要。分析原因,主要是由于没有解决使用上的便利性问题,即在学习过程中随时随地的提供教学内容的模型。
模型使用的便利性是首先需要解决的问题。让模型不管是在课堂上,还是在自习室、食堂、宿舍都能随时随地的拿来使用。同时,空间想象能力的提高是一个持续不断、循序渐进的过程,所以软件的开发目的是为学生提供一个在提高空间能力的学习过程中,持续不断的学习辅助工具。
如图1所示,根据教学需要明确了系统需要实现的助教助学功能,以此为目标设计确定了软件的 4个基本功能模块和每个模块的关键功能,以4个基本功能模块为基础实现了对助教助学功能的支撑。助教助学系统的组成见图 1。系统包含4个部分:VRML模型3D浏览器、平面图形浏览器、系统资源库和文件管理器。其中为了帮助学生想象立体的投影结果,同时为了方便由物画图时测量尺寸,系统的虚拟模型应实现轴测模式的显示。
图1 软件系统设计
智能手机的普及为实现上述教学需求提供了可能。移动设备最典型的特性即是其便携性,能够支持移动设备在不确定的场所实现许多原来在固定场所才能够完成的工作。基于此,现在越来越多的各种有移动需求的工作在移动设备平台上得以实施,如移动办公、移动支付、移动学习。移动学习作为在移动设备帮助下在任何时间、任何地点能够实现的学习方式与本文开发软件的目标高度一致。
目前移动设备的系统平台主要包括Android、iOS等。其中 iOS是苹果公司为智能手机 iPhone开发的专用系统;Android系统是 Google公司基于Linux开发的开源系统,被智能手机厂商广泛采用,在学生中普及度最高。本软件设计选择了Android系统智能手机作为开发和运行平台,采用VRML97格式作为模型数据载体,平面图形使用通用的图片格式。
Android平台目前没有可用的 VRML97格式的虚拟模型浏览器,系统开发需要完成一个3D浏览器的设计。在Android系统中设计3D浏览器,需要用到OpenGL ES。OpenGL ES是由OpenGL简化得到的专门用于移动设备的一个跨平台的,功能完善的 2D和 3D图形应用程序接口 API。Android系统支持3个版本的OpenGL ES:1.0、2.0和 3.0,但三者并不是兼容的升级版本,1.0为固定渲染管线,而2.0和3.0为可编程渲染管线。后两个对硬件要求较高,不是每个手机都支持OpenGL ES 2.0和3.0,从性能需求和兼容性考虑,系统采用了OpenGL ES 1.0。
助教助学系统与 Android应用框架和库之间的相互关系如图2所示。
图2 系统与Android应用框架&库的相互关系
助教助学系统为学生展现投影与视图的对应关系,需要设置正投影的显示模式,以满足教学的需要。将3D模型显示为轴测投影的形式,好处有:①可以直观显示某个投影方向的图形,与视图可以直接对应;②可以直接度量尺寸,进行画图训练。
Android框架提供了使用OpenGL ES开发的基础类GLSurfaceView和GLSurfaceView.Renderer。其中GLSurfaceView是将OpenGL ES封装成的表面视图。GLSurfaceView.Renderer是Android封装的 OpenGL ES渲染器接口,定义了在GLSurfaceView中绘制OpenGL ES图形需要的3个接口函数 onSurfaceCreated、onDrawFrame、onSurfaceChanged。在Android中定义虚拟模型窗口主要是完成表面视图布局的设置、渲染器接口类的设计和 GLSurfaceView类的实例化和与渲染器接口类的绑定。
其中渲染器接口类 implements系统的接口GLSurfaceView.Renderer,在其中完成了相应的视图显示工作。投影模式设计在该类中实现。OpenGL ES在渲染流水线中提供了透视投影和正交投影两种投影类型,实际上是使用一个 4×4的正交投影变换矩阵与上一级渲染管线的矩阵相乘。这个矩阵是由一个平行视景体的6个参数确定(图3)。视景体的近裁剪平面是一个由三维坐标(left,top,near)和(right,bottom,near)确定的矩形;远裁剪平面则由(left,top,far)和(right,bottom,far)确定。其中包含了left、right、bottom、top、near、far 6个参数,由此可以获得从视点坐标(eye Coordinates)到规范化设备坐标系(normalized device coordinates)的变换矩阵(图4)。在OpenGL ES中实现矩阵变换的是glOrthof函数,其格式如下:
void glOrthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near, GLfloat far)
图3 正交视景体
图4 正交投影矩阵
在系统中应根据智能手机的屏幕特点设置参数,即有:left=-wight/2;right=wight/2;top=height/2;bottom=-height/2;near=0.1f;far=1000f。其中,wight为手机屏幕宽;height为手机屏幕高。
其java实现代码如下:
gl.glOrthof(-wight/2, wight/2, -height/2, height/2, 0.1f, 1000.0f)
4.1 VRML数据格式分析
系统中的模型数据都是使用VRML97标准中的 IndexFaceSet 节 点 描 述 的[9]。 通 过IndexedFaceSet节点中4个域:coord、coordIndex、normal和normalIndex。其中coord域和coordIndex域用来描述点坐标与平面的对应关系。coord域是点坐标域,在其域值中通过形如“x y z,”的MFVec3f类型数据列表描述坐标,z坐标后的逗号为不同点坐标的分隔符。coordIndex域是平面索引域,其域值是形如“P1, P2, P3, -1”的MFInt32类型数据列表,用来描述哪些点组成一个平面,其中“-1”表示当前平面顶点索引的结尾。normal域和normalIndex域用来描述法线矢量和平面顶点的对应关系。normal域是法线矢量域,其域值通过形如“x y z,”的 MFVec3f类型数据列表描述法线。normalIndex域是面片顶点的法线索引域,是形如“N1, N2, N3, -1”的MFInt32类型数据列表,其中“-1”表示当前平面法线索引的结尾。IndexFaceSet节点中,coordIndex域和normalIndex域的域值数量是相同的,各为k个。
4.2 OpenGL ES绘图方法分析
OpenGL ES[10]提供了顶点数组的方式绘制空间几何图形,并且提供了两种方法:glDrawArrays()和 glDrawElements()。这两种方法都使用VerticesBuffer(顶 点 缓 冲 )绘 制 , 区 别 是glDrawArrays()方法绘 制 时顶点的 顺 序由VerticesBuffer中的顺序确定,而glDrawElements()方法绘制时顶点的顺序由IndicesBuffer(索引缓冲)确定。所以,绘图时这两种方法都要先定义VeticesBuffer,然后通过一定的方法建立空间几何图形的顶点数组数据,并使用 put()方法将顶点数组置于VerticesBuffer中。glDrawElements()方法还需要再定义一个 IndicesBuffer用于存放顶点索引数据。两个方法都需要定义NormalsBuffer(法线缓冲),因为只有设置了法线,光源才能在所绘物体上出现光照效果。但由于OpenGL ES中没有法线索引,所以 NormalsBuffer中的法线值需要与IndicesBuffer中的点一一对应。在使用中glDrawArrays()要求把需要绘制面片的每个顶点全部按顺序整理,需要消耗较多资源,所以设计中选择了glDrawElements()方法。
4.3 加载器的设计
据4.2节的分析,使用glDrawElements()方法需要的数据包括:顶点的坐标一维数组(x, y, z)、顶点组成面片的索引一维数组、顶点的法线一维数组(Nx, Ny, Nz)。
由 4.1节分析可知,VRML的数据格式与glDrawElements()方法需要的格式不同,因此VRML中 IndexFaceSet节点不能够直接读入并存储进 VerticesBuffer,需要设计加载器进行文件解析。VRML加载器逻辑如图5所示。
图5 VRML加载器逻辑
glDrawElements()方法需要顶点的坐标数据(x, y, z)、顶点索引和对应的法线矢量数据(Nx, Ny, Nz),且所需的数据均为一维数组。而VRML的数据格式近似于二维数组,需要完成数组的转换。在VRML中顶点的坐标数据和法线数据是通过坐标索引和法线索引实现一一对应的,而在OpenGL ES的数组中法线是通过坐标索引的顺序与顶点一一对应的,也就是说第一个坐标索引指定一个坐标后,第一个法线矢量则与该坐标对应。也就是说,加载器中需要将法线矢量数据根据VRML中的normalIndex域和coordIndex域重新整理成为一维数组。
因此加载器首先要完成 4.1节中所述IndexedFaceSet类 4个域中域值的统计。因coordIndex域和 normalIndex域的域值数量是相同,仅统计 coordIndex域即可。随后再完成域中域值数据的读取,将相关的坐标和索引数据整理成为一维数组,并利用索引对应关系,法线数据整理成为与索引一一对应的顺序,并存储为一维数组。
图6是系统的运行效果,设备为三星GT-I9220智能手机,CPU主频1 433 MHz,运行内存1 GB,屏幕分辨率800×1280,操作系统为Android 4.1.2。
触屏交互控制的3D虚拟模型应可以使用手指触摸智能手机屏幕控制,变换任意角度观察,好像手中拿了一个真正的模型,极具现场感和真实感;学生可以目测模型的尺寸比例绘图,也可以使用直尺测量模型尺寸,按尺寸绘图。软件解决了课堂教学模型使用方面限制,填补了课堂教学模型使用的空白。
图6 运行效果
图 7是在课堂讲授机件常用表达方案综合应用时,首先安排学生观察模型,自行分析机件、思考表达方案后,再一起分析、讨论,让学生获得充分的思考,掌握选择表达方案的原则和方法。图 8是使用软件模型完成表达方法绘图训练时学生在测量模型尺寸。
图7 教学案例1
图8 教学案例2
基于智能手机的工程图学助教助学软件基于安卓系统开发主要尝试了 3个方面的工作:①将移动学习工具引入到了工程图学课内、外学习的全过程,将课堂中知识的单向传递变为对知识的共同挖掘;②将模型库分布到每一个学生手中,使学生真正成为教学过程的参与者,不再是被动的接受者;③移动学习工具引入图学课程,给学生提供一个没有时间空间限制、灵活、方便、开拓思维、具有高科技感的练习平台,使学生对课程更有兴趣,对学习更有兴趣,对知识更有兴趣。软件因其创新性和实用性,在2014年第十四届全国多媒体课件大赛中荣获一等奖。
基于智能手机的学习模式还有很大的发展空间,下一步可以在交互功能方面进一步开展研究,进一步完善系统功能,在图学课程的教学中获得更好的效果。
[1] Devon R, Engle R S, Foster R J, et al. The effect of solid modelling software on 3D visualization skills [J]. Engineering Design Graphics Journal, 1994, 58(1): 4-11.
[2] Dejong P S. Improving visualization: fact or fiction? [J]. Engineering Design Graphics Journal, 1977, 41(1): 47-53.
[3] Lord T R. Enhancing the visuo-spatial aptitude of students [J]. Journal of Research in Science Teaching, 1985, 22(5): 395-405.
[4] Wiley S E. Computer graphics and the development of visual perception in engineering graphics curricula [J]. Engineering Design Graphics Journal, 1990, 54(2): 30-35.
[5] 叶 琳. 机械制图虚拟现实网络模型室的建立[J]. 工程图学学报, 2002, 23(3): 202-206.
[6] 冯桂珍, 池建斌, 王大鸣, 等. 基于Web的机械制图虚拟模型库的构建[J]. 工程图学学报, 2008, 29(6): 149-153.
[7] 李庆华. 基于 CATIA的工程图学三维模型库的开发[J]. 机械设计与制造, 2005, (3): 68-69.
[8] 赵国霞, 臧贻娟. 基于Pro/ENGINEER的《工程图学》模型库系统的开发[J]. 机电工程技术, 2010, 39(6): 83-85, 156.
[9] International Organization for Standardization. ISO/IEC 14772-1:1997, The virtual reality modeling language (VRML)-part 1: functional specification and UTF-8 encoding [S]. Switzerland: International Organization for Standardization, 1997.
[10] Khronos Group. OpenGL ES 1.1 Reference [DB/OL]. (2008-04-24) [2016-03-26]. https://www.khronos.org/ opengles/sdk/1.1/docs/man/.
Design and Develop for the APP of Engineering Graphics Base on Android
Qiu Longhui
(College of Electromechanical Engineering, Qingdao University of Science and Technology, Qingdao Shandong 266061, China)
The design for APP of engineering graphics is discussed, for the teaching needs to develop of spatial imagination ability of undergraduate. Base on the needs of teaching and study, the functions are made sure that aided teaching and assisted learning of system, and the basic function of software is designed. The frame structure of software is designed. The comparison of the mobile device system platform, choose development and operation platform of the system. Through the analysis of interface of Android framework, the orthographic view is designed. Through the analysis of and data needs of the glDrawElements, and VRML97 data format, the VRML loader is designed. The 3D browser of VRML model is designed on the Android system. And the core function of software is developed. The APP of engineering graphics is realized based on Android platform. The software has characteristic of innovation and practicability, and get the first prize in the 14thnational multimedia courseware contest.
engineering graphics; mobile devices; education; Android; application
TP 391
10.11996/JG.j.2095-302X.2016060831
A
2095-302X(2016)06-0831-05
2016-03-27;定稿日期:2016-05-29
山东省精品课程建设项目(鲁教高字2004-14-150410058);青岛科技大学精品课程建设项目(青科大字2004-139)
邱龙辉(1973-),男,黑龙江鸡西人,副教授,硕士。主要研究方向为工程图学、计算机图形学、虚拟现实技术、嵌入式系统开发等。E-mail:qiulhqd@163.com