2 三维全景地图系统的设计实现

2.1基于百度地图API的手机地图应用开发

在使用百度地图SDK所提供的各种LBS能力之前,需要获取百度地图移动版的开发密钥,该密钥与开发者的百度账户相关联。如图2所示。

图2 开发密钥申请创建应用成功后,便生成一个24位ak;一个应用有且仅对应唯一ak,重新设置时,“应用名称”“应用类别”均不可修改。

安装SDK,申请百度地图开发密钥,开发基于百度地图API的手机地图应用。

2.2搭建三维校园场景进行漫游渲染

目前从技术角度来说,三维虚拟漫游的最大难点在于精细建模和实时渲染。虽然随着计算机技术的不断进步,尤其是CPU 和GPU(graphics processing units)的迅猛发展,使开发虚拟漫游系统具备了一定的物质基础,但大规模漫游场景的渲染质量与实时性始终是不能避免的矛盾。所以搭建虚拟三维场景过程中应用的技术方法是需要解决的关键问题之一[4]。

实体建筑是虚拟校园场景中的主体部分,也是最重要的场景内容。通过以下步骤对实体建筑进行建模及优化:(1)获得建模数据。建筑外观与几何形状等要求准确的数据,在没有建筑图纸的情况下主要根据实地拍摄的照片

使用3ds Max 进行建模[4]。建模主要采用Mesh多边形网格的方式,最大限度的减少三维场景中模型的面数。

(2)可见性裁减技术。如图3所示,根据场景中不可见面片的种类,可以将可见性裁减分为视域裁减(View Frustum Culling)和遮挡剔除(Occlusion Culling)[4]。

图3 三种可见性裁剪方法

(3)去除冗余多边形。实体模型的冗余多边形主要是指在实体外部观察模型时不可见的部分[5]。由于场景漫游时它们处于不可见的位置,去除它们并不影响实体的视觉效果,而消除这些冗余多边形则可以在很大程度上降低场景的复杂度。

(4)使用纹理贴图。对于门、窗、栏杆等每栋建筑都具有且数量较大的细节部分,一般采取纹理贴图的方法,在对应位置的多边形表面上“贴制”纹理图片,用来代替详细的模型。这样处理可以减少模型的多边形数目和复杂程度,提高图像绘制速度和显示速度。

将搭建完成的三维场景导入Unity3D,利用Unity3D渲染引擎进行实时漫游及交互。

利用3ds Max软件完成建模和贴图后,发布成FBX 格式文件导入Unity3d系统。在发布文件前,需要将3ds max 中的单位设置为m,并且Y轴方向向上[6]。

通过Unity3D渲染引擎将场景的实时漫游发布为Android应用。

2.3关键技术

通过广播启动另一个应用的Activity,自定义ContentProvider进行数据传递:

ContentProvider是不同应用程序之间进行数据交换的标准Android API。应用程序通过ContentProvider以某种Uri 的形式对外提供数据,允许其他应用访问或修改数据;其他应用程序使用ContentResolver根据Uri去访问操作指定数据。

在地图应用中自定义ContentProvider接口,将地图软件获取到的定位信息暴露出来;三维漫游应用根据获取到的定位信息选择场景中指定的Camera,进行实时渲染。具体步骤如下:

(1)在Android Mainfest.xml文件中使用标签注册ContentProvider。(2)定义一个类MapContentProvider 继承自ContentProvider类;

(3)实现ContentProvider类中所有的抽象方法,包括onCreate()、getType()、query()、insert()、update ()、delete()等。由于ContentProvider暴露出来的数据和方法是提供给目标应用程序来调用,所以需要获取数据的三维漫游应用通过其ContentResolver对象调用的query()方法查询当前的定位信息。

(4)使用UriMatcher对象映射Uri返回代码;

(5)通过ContentObserver基类监听ContentProvider的数据改变

3系统运行与效果分析

本应用程序基于百度地图API完成地图的基础功能,通过Unity3D渲染引擎实现三维实时渲染。将本应用安装到基于Android2.3以上操作系统并具有定位功能的主流智能手机上,用户打开地图应用程序,在北京林业大学区域内通过定位获取用户位置并显示当前位置的实时渲染场景。通过地图画面显示和交互方式的创新,用户在快速确定自身位置的同时可以很轻松的将地图显示信息与当前位置对应统一,提高用户使用地图的效率。

当然本应用程序也存在一些不足之处。由于采用程序间数据共享的方式传递数据势必会影响应用程序启动的效率,并且随着地图应用范围的不断扩大三维场景实时渲染的进一步优化极为重要。这些问题可以在进一步研究中,通过设计优化接口以及Android与Unity3D消息传递的方式等方法进行改进。

小结:Android平台上将基于百度地图API开发的地图应用与通过Unity3D发布的三维实时漫游应用相结合并实现数据传递。采用自定义ContentProvider进行程序间数据共享的方式在Android应用开发中有一定的推广意义。进一步研究包括:实现三维场景的可复制性和功能的可扩展性,解决场景增多和信息量增加产生的加载延迟问题。

基于Android平台的三维实时全景地图设计与实现(二)相关推荐

  1. android绘制论文,基于Android平台的三维地形绘制研究与实现

    摘要: 地形是一种常见的三维场景,也是三维场景的重要组成部分,地形数据的实时绘制在PC端已经有大量研究,但如何实现移动端大规模地形的实时绘制是一个新问题.目前,移动端设备硬件性能发展迅速,但在移动端地 ...

  2. android即时通信和sns,基于Android平台的实时SNS系统设计与实现

    摘要: 网络的蓬勃发展,移动通讯的飞速发展,各种通讯服务的不断完善,智能手机被广泛使用,其中安卓以它的开源性和强大的可扩展性已经占了移动终端的很大一部分份额.人们的社交形式不再局限于原本的圈子,在这样 ...

  3. 基于Android平台的流媒体播放器的设计

    from: 基于Android平台的流媒体播放器的设计 1引 言 随着移动通信技术和多媒体技术的迅速发展,融合手机.网络.多媒体技术为一体的视频监控技术也有了长足的进步,通过移动通信网络提供流媒体服务 ...

  4. android室内定位+3d,基于Android平台的手机室内定位及导航的设计与实现

    摘要: 随着无线通信网络技术的发展,智能手机逐渐融入到人们的日常生活中.它不仅满足当今人们对于通话短信等基本功能的需求,而且还满足人们对于娱乐.上网.社交等功能的需求.导航功能是现在人们常用的一个功能 ...

  5. android声纹识别技术,基于Android平台的声纹识别系统的研究与实现

    摘要: 社会的发展越来越快,计算机技术的应用也愈来愈广,已经渗透到生活的各个方面.在快节奏.信息化的时代,需要识别和交互的应用日益广泛,要求验证身份的场合越来越多,迅速判定一个人的身份是一个非常重要的 ...

  6. android手势识别国内外研究现状,基于Android平台的视觉手势识别研究

    摘要: 本文研究基于Android平台的视觉手势检测.手势分割和识别技术,实现了在Android平台上对规定的六种静态手势的识别,为Android平台的人机交互应用提供了新的技术手段. 首先,本文采用 ...

  7. 基于Android的记账APP论文,基于Android平台的手机记账系统的设计与实现

    摘要: 在经济社会中,"理财"一词对于人们来说已不再陌生.人们的生活收入稳步上升,用于工作,住房,休闲娱乐的财务支出增多,做好详细的收支计划,将有利于对个人,家庭的经济收入,支出状 ...

  8. android windows 无线视频传输,基于Android端到端实时无线视频传输系统

    摘要: 自从Android2.3发布以来,摄像头以及底层多媒体系统的完善,为视频流媒体业务的发展奠定了良好的基础.目前开发人员利用Android提供的资源对视频业务的开展主要集中在视频播放器的功能的扩 ...

  9. android手机舆情分析,基于Android平台的环境公共舆情监督系统研究

    摘要: 近年来,随着我国社会经济的持续发展和人民生活水平的不断提高,人们的环境保护意识也在不断增长,其中城市环境质量问题逐渐成为了人们普遍关注的焦点,也成为环保部门和环保从业人员的重点研究方向.环境监 ...

最新文章

  1. NA-NP-IE系列实验之前三个实验小结
  2. 可持久化数据结构讲解
  3. Windows 7 SP1确实将有性能改进
  4. 腾讯产品经理告诉你微信为什么没有用户等级?
  5. Qt Creator指定依赖项
  6. linux欢迎信息打印本机ip,Linux shell 登录显示欢迎信息或机器信息(示例代码)
  7. html中一张a4是多少pt,CSS设置A4纸张尺寸
  8. Ubuntu 11.04 beta 2发布!
  9. python打印字典树形_Python实现字典树
  10. 黑马程序员—文件读取路径及行读取的方式,今晚总算有点小懂
  11. memcached构建高性能web应用
  12. UVA490 Rotating Sentences【输入输出+水题】
  13. Glide4 高效加载图片的配置【转】
  14. Linux日志终极指南
  15. 使用一键重装工具制作U盘启动盘失败的解决方法
  16. mysql瀑布流布局插件_瀑布流JS插件
  17. Simulink仿真入门到精通(十七) Simulink代码生成技术详解
  18. Unity URP Rendering Path对比
  19. 面试题01.05.一次编辑
  20. 快手信息流广告如何投放才能达到好的效果?

热门文章

  1. 东南大学计算机专业研究生复试,东南大学计算机考研复试经验
  2. Activity的概念
  3. Activity。。。
  4. php导出超过30W的大数据量excel表格,快速完成,测试20秒内
  5. 大学物理实验计算机仿真 光电效应,光电效应仿真实验的教学探究
  6. Mysql null值
  7. 解决哈希(hash)冲突的方法
  8. java ee简介_Java EE 简介
  9. java爬取捧腹网段子
  10. Servlet过滤器概念特点等详谈