基于Android的校园3D地图应用系统的与实现

更新时间:2024-02-13 作者:用户投稿原创标记本站原创 点赞:6702 浏览:22414

摘 要:该课题来自于全国大学生创新训练计划,旨在开发一款基于安卓系统的校园3D地图应用系统.它的独创性在于使用3D形式呈现校园地图,增强了系统的直观性并为用户提供三维的校园体验;它的兼容性借助了Ja语言优良的可扩展性、可移植性,为日后的升级方便地进行多平台的扩展;它的真实性方面,采用了3DMAX来绘制3D模型,使模型的细节更易掌控,更加逼真,而非使用传统的通过坐标呈现3D模型的方式.

关 键 词 :Android;3DMAX;3D地图;校园

中图分类号:TP311.52

近年来,随着科学技术的不断发展,与地图相关的技术也可谓日新月异.从最早人们使用纸质地图,到现如今更多的人们通过手机APP上诸如百度地图、高德地图的应用查询出行路线或者城市基础设施信息.然而,这些APP并不能满足一些细节的要求,比如本课题研究的基于Android的校园3D地图系统,就是一个例子.市场上的地图APP,不可能提供校园这样一个小范围的地区的详细信息,而对于学生尤其是刚到一个学校的新生来讲,恰恰细节丰富的地图才是最受欢迎的.基于这种需求,可以开发一款针对特殊群体的,局部的,3D地图系统,增强这部分用户的用户体验,更好地满足用户对于地图细节的需求.

1.几种技术路线的比较

1.1 第一种方法:用顶点画出立体模型

原理:由最初相邻的12个顶点连接成二十个三角形,对三角形外接圆进行切分,得到若干点,这些点和原12个顶点,共同构成一个球体.

优点:思路简单

缺点:顶点初始化(设置顶点坐标)比较繁琐

当很多个建筑时,需要在同一坐标系里初始,只能手动设置每个顶点的坐标,不利于维护,其他景物(天空,草地等)很难用坐标表示.

1.2 第二种方法:高德地图API

优点:直接使用API,工作量小,易实现

缺点:需要对API的文档进行学习,才能进一步编程;而且高德地图API的细节不够,只有校园的笼统全景图,不能满足系统对于建筑细节的要求

1.3 第三种方法:虚拟校园(参考上海交大的地图)

原理:实际是一个图片,画成立体的效果,把建筑物的图做特别处理,点击时有详细信息.

优点:画面美观

缺点:对美工要求很高,用时长;不符合课题(3D),应算为2.5D

1.4 第四种方法:用3Dmax画模型,导出为.obj格式的文件,之后再导入;本文就采用此种方法.

2.关键技术实现及开发工具

2.1 关键技术实现

2.1.1 obj文件的导入以及OpenGL的使用:通过视图变换,模型变换,投影变换和视口变换四个步骤,生成图像.(视图变换,相当于把照相机固定在三脚架上并使它对准场景模型变换,设置模型的方向和位置;投影变换,就好像为照相机选择镜头.确定视野(或视景体)哪些物体位于视野之内,不再视野内的就不渲染;视口变换,和投影变换共同决定场景是如何映射到计算机屏幕的,指定场景在屏幕上占据的区域).

2.1.2 Android基础的应用:利用布局和widgets组件(Button,ProgressBar等)进行UI的构建,营造出方便使用的用户界面;手势缩放的.

2.1.3 3DMAX的使用:构建出校园建筑物的3D模型,并导出为.obj格式的文件.

2.1.4 手势缩放功能与旋转功能的实现.

(1)旋转功能的实现.当我们拖动模型左右旋转时,主要是在投影变换中实现的.每次变换都是乘以相应的矩阵,作线性变换,最后渲染出来:Matrix.multiplyMM(mMVPMatrix,0,mVMatrix,0,currMatrix,0);当前矩阵(currMatrix)乘以摄像机参数矩阵(mVMatrix),结果存入mMVPMatrix.Matrix.multiplyMM(mMVPMatrix,0,mProjMatrix,0,mMVPMatrix,0);mMVPMatrix乘以投影变换矩阵(mProjMatrix),结果存入mMVPMatrix.

(2)缩放功能的实现.主要是重写了触摸事件回调方法onTouchEvent,通过e.getActionMasked()获取触摸手势,进而区分旋转和缩放的手势,分别编程实现.在onDrawFrame()中利用MatrixState.scale(scale,scale,scale)语句实现了模型的缩放.ACTION_MOVE事件很灵敏,手指稍微有一点动,都会触发,导致模型缩放速度太快.对newDIs/oldDis进行两次开方,不管它大于1还是小于1,都会让它朝接近的方向变换,这样得到的新模型的大小就越接近原来模型大小,降低了灵敏度.


mRenderer.scale等于mRenderer.scale*(float)Math.sqrt(Math.sqrt(newDis/oldDis));

2.2 开发工具

(1)Eclipse:安装Android开发插件后可方便快速的进行开发和调试.

(2)Android SDK:Android开发工具包,包括核心API,D等.

(3)Ja SDK:包括JDK和JRE,用于搭建Ja的开发环境.

(4)3DMAX:进行3D模型建模.

3.实现情况

在软件开发的过程中,搜集了四川大学江安校区的主要标志性建筑的数据,在3DMAX软件的帮助下,分别对江安校区的标志性建筑进行了建模,并且还制作出了整个江安校区的概况模型,效果明显,使用者能准确地通过本软件找到自己所在的位置,在此基础上,加入了一些文字性的描述,这使得使用者在位自己定位的同时,又能了解一些江安校区的建筑物的信息,有助于加深外来人员对四川大学的认识和理解.因此,用户在使用的过程中有两种选择,2D和3D地图,2D地图简单直观,从俯视的角度,对江安校区的风景和建筑一目了然,3D方面可使使用者对江安校区的布局更加清晰,不仅有一个简单的江安校区模型,而且对于很多标志性建筑,如江安一教,图书馆等,我们都进行了单独建模,这使得使用者能在了解江安校区概况的情况下,还能对个别的建筑物进行细致的观察,甚至能了解到这些建筑的一些细节构造.

4.结束语

本文针对课题基于Android的校园3D地图应用系统进行了详细的讨论,阐述了几种可能的实现方法,并就最终采用的方法给出了提纲挈领的解释.随着科学技术的不断发展,3D技术一步步深入到了我们生活的每个角落,不仅仅是3D电影带来的视觉震撼,手机上的3D地图,同样会给我们的生活,带来意想不到的方便与惊喜.