OSG引擎在Android Studio中的移植和运行
2018-05-03倪梓轩吉伟勇
倪梓轩 吉伟勇
(长安大学地质与测绘工程学院测绘工程系 陕西 西安 710064)
0 引 言
OSG是一个以工业图形标准OpenGL为底层渲染平台,使用C++编写的高层次API接口,即三维可视化渲染引擎。它具有跨平台的特性和较高的渲染性,程序员能够通过它更加快速、便捷地创建高性能、跨平台的交互式图形程序[1]。随着地理信息技术和无人机航拍技术的日益发展,OSG引擎的应用范围也越来越广泛,它的相关扩展系统如OSGEarth、VPB及OSGOcean都在三维地理信息系统、计算机辅助设计、科学与工程数据可视化、游戏与娱乐等多个行业得到广泛应用[2-4]。随着计算机图形软硬件技术的发展和各类便携式设备的出现,OSG引擎从传统桌面工作站到移动平台的移植,已受到研究者的广泛关注[5]。汤有禄[6]利用OSG的Web可视化实现地质模型的模拟,其研究发现OSG技术在Android系统中的移植存在缺陷:大部分的移植都基于某一个模块,无OSG的整体移植,对数据处理和建模不完全,难以完成复杂逼真的三维图形构建,限制其在实际场景中的应用。移动设备其内存大小和处理器的计算能力是有限的,而复杂场景可视化对硬件性能的消耗比较大,移动终端在处理多尺度和多种类海量地理信息数据时仍有些力不从心[7]。如何实现OSG引擎技术在移动终端的完整移植,同时保留其数据的高速存取、图形的逼真效果,是当前OSG引擎向移动端移植的难点问题[8]。
鉴于以上原因,本文主要介绍了如何将OSG引擎导入安卓端编译器中,以Eclipse为媒介,移植到Android Studio 2.2.3平台,并进行编译和运行。详细给出了移动端OSG的开发流程,并以三维飞机为构建实例,介绍了由Eclipse平台移植到Android Studio2.2.3平台上的具体实现方法和运行实例。
1 OSG移植特点概述
OSG引擎技术具有以下优点:① 场景图结构适合复杂三维虚拟仿真;② 完全免费并开放源代码,为各类系统开发提供很大的可扩展性(可利用3DMAX建立的动画资源),应用灵活;③ 可实现跨平台应用;④ 由于具备OpenGL的所有功能,从而能把开发者从实现和优化底层图形的调用中解脱出来,并且它为图形应用程序的快速开发提供很多附加的实用工具,在可视化视觉仿真方面效果很逼真[9-10]。以上所有特点,保证其移植后的应用效果。
2 基于OSG的Android Studio应用开发
Android Studio是谷歌公司于2013年I/O大会上公布最新的Android开发环境。它是一款全新的基于Intelli J IDEA(Java语言开发的集成环境)的开发环境。谷歌公司在Android Studio中对开发者控制台进行了改进,增加了许多新的功能,使其在运行处理速度、UI编辑器、XML预览和语法补全方面性能更加优异[11]。2016年推出的Android Studio 2.2.3版本与以前的系统相比增加智能代码编辑器、快速且功能丰富的Andriod Emulator、基于Gradle的构建工具,使开发者可以更快的编码。同时增加循环访问速度,保证该平台上各类应用程序的运行速度[12]。因此,本文将原本在Eclipse环境下OSG移动端的开发移植到更快、更好的Android Studio 2.2.3中。
3 OSG移动端的移植和运行
OSG在Android Studio 2.2.3上的移植和运行主要包括以下三个主要步骤:① OSG引擎的源码编译;② 编译后源码导入Eclipse;③ 将Eclipse运行结果导入Android Studio 2.2.3中,其主要的技术流程见图1。
图1 OSG移动端移植过程图
3.1 OSG源码编译
OSG源码编译主要包括以下操作:首先,安装完jdk后,搭建Eclipse环境为导入项目做准备。然后,打开cmake终端,开始配置和编译第三方库。最后,完成OSG的源码编译。其中,第三方库中bin目录下的文件编译是关键点。图2为OSG移动端移植过程。
图2 OSG移动端移植过程图
3.2 编译后源码整体导入Eclipse
为了保证OSG引擎在Android Studio 2.2.3上的顺利运行,应将其在Eclipse环境下进行ndk配置和构建Builders,以建立用于Android Studio平台的Gradle文件。该项主要包括以下操作步骤:
① 配置ndk:通过右键单击项目->点击Properties,->弹出Properities对话框,点击Builders ->点击New->点击Program->点击Browse File System,选择ndk目录下的ndk-build.cmd->点击Browse Workspace,选择osgViewer项目->切换到Build Options标签,选中Specify working set of...复选框(如图3矩形框所示)->点击Specify Resources按钮选中osg例子中的jni文件夹->点击Finish->点击apply->点击ok,完成配置ndk。该步为Eclipse环境构建的关键点。
图3 ndk配置图
② 构建Builders:配置完ndk后,返回Properities对话框Builders标签,用UP按钮将刚建好的New_Builder移到第一的位置。如图4所示,Builders构建完毕。
图4 Builders构建界面图
3.3 将Eclipse构建结果从Eclipse导入Android Studio 2.2.3
此步是完成移植最后一步,主要包括:① 在Eclipse中构建能用于Android Studio 2.2.3的Gradle文件;② 在Android Studio 2.2.3平台中导入Gradle文件;③ 模型实例运行。其中,构建Gradle文件是此步最关键的技术点,其操作主要包括:在Eclipse中已导入项目上点击右键->Export(如图5所示)->在弹出的Export窗口中选择“Android”下面的Generate Gradle build files->点击next->一直点击next直到选中刚在Eclipse创建的OSG项目->一直点击next直至Finish完成Gradle文件的创建。
接着进行项目导入和实例运行,打开Android Studio 2.2.3平台,点击菜单栏的File->New->Import Project。在弹选框中选中刚才创建的项目(如图6所示),单击ok就标志着OSG在Android Studio 2.2.3中创建成功。在创建项目的时候Android Studio有时会由于版本过低报错,将相关插件更新至高版本即可解决。
图6 Android Studio平台项目导入界面
3.4 实例模型检验
以三维飞机为目标,通过以上操作,得到最终构建图,如图7所示。由图7可见,通过Andriod Studio系统中的OSG平台操作界面可对图形进行旋转、放缩、灯光调整、模型更换等操作。通过系列操作构建出的飞机三维图形清晰、逼真。
图7 Andriod Studio平台中的构建
4 结 语
本文将OSG引擎借助Eclipse为中介,移植到Android Studio 2.2.3平台中,以三维飞机模型为实例,
总结和概括了移植过程及步骤的关键点。该移植结合OSG的三维处理优势与Android Studio的联合快捷编译性,可实现三维模型的逼真构建,期待其在地质灾害的模型和预测方面得到更广泛的应用。
[1] 李新放,刘海行,周林,等.基于Open Scene Graph的海洋环境三维可视化系统研究[J].海洋科学,2012,36(1):54-58.
[2] 屈永照,蔡超,王武功,等.基于OpenSceneGraph的隧道照明设计平台实现[J].公路交通技术,2014(4):139-143.
[3] 王跃,郑贵洲.基于OSG的OBS导航定位系统三维可视化场景实现[J].计算机应用与软件,2017,34(8):92-96,129.
[4] 徐凌.基于Open Scene Graph引擎的漫游系统的研究与实现[D].武汉理工大学,2008.
[5] 魏海涛.基于Open Scene Graph引擎的组件式跨平台的三维场景编辑器的研究与实现[D].郑州:郑州大学,2013.
[6] 汤有禄.基于OSG的地质模型Web可视化方法研究[D].长江大学,2015.
[7] 刘建龙,陆旭龙,宋大明,等.移动设备上三维地理场景可视化研究[J].测绘与空间地理信息,2015,38(2):38-41.
[8] 罗安平,魏斌,杨春成,等.Android平台的多尺度地理信息三维显示技术[J].测绘科学技术学报,2014,31(1):107-110.
[9] 黄友良,淮永建,于鹏,等.基于OSG林地可视化系统设计与实现[J].系统仿真学报,2008,20(S1):352-354,358.
[10] 方磊.近诲破通量遥感信息的可视化构形与时空过程表达[D].杭州:浙江大学,2015.
[11] 尹孟征.基于Android 的APP开发平台综述[J].通信电源技术,2016,33(4):154-155,213.
[12] Venugopala P S,Sarojadevi H,Chiplunkar N N.An approach to embed image in video as watermark using a mobile device[J].Sustainable Computing Informatics & Systems,2017,15:82-87.