基于Unity3d的码头三维可视化安卓应用
2015-06-29王刚
王刚
(中交第二航务工程勘察设计院有限公司,武汉430070)
基于Unity3d的码头三维可视化安卓应用
王刚
(中交第二航务工程勘察设计院有限公司,武汉430070)
三维可视化是在三维设计中常用的设计技术,移动通信是工作生活中最方便快捷的技术。将三维可视化和移动通讯应用结合起来,在方案展示,协同设计,施工模拟等方面具有创新的意义。文章基于Unity3d开发平台,采用Revit作为三维模型设计工具,C#作为开发语言,完成了码头三维可视化系统在安卓上的开发研究。在实际研究过程中提出了基于移动平台的三维可视化流程与方法。
码头;三维设计;Android;Unity3d
目前市场上的主要工程设计工具都具有内置或在线的可视化功能,以便在设计流程中快速实现三维可视化及信息交流。也可以使用专业可视化工具(如3dMax软件)来制作高度逼真的效果及特殊动画效果,来实现三维可视化,以满足设计与展示的需要。
随着移动端应用在工作生活中的广泛应用,如手机导航,手机银行,掌上办公等各行各业的应用迅速发展,成为未来发展潮流。移动设备性能不断提升,三维可视化移动应用成为可能,已率先应用在房地产等发展较快的领域,取得较好的经济效益,具有深远影响。因此港口码头移动可视化研究非常必要。
本文基于Unity3d开发了一个码头的三维可视化系统,并运行在移动设备上,实现了设计方案及设计成果的交互式漫游。本方法不仅能够展现虚拟场景,满足移动便携需求,而且可以实时互动,使三维可视化更加灵活,为港口码头三维可视化探索了新的技术路线,开辟了新的应用领域。
1 技术流程
1.1 平台选择
实现三维可视化在移动设备上的应用,选择合适的平台及开发技术是快速实现本项目的前提。
目前市场上的能够满足三维可视化需求的软件设计平台主要有,Unity3d,UnrealEngine4,CryEngine3, Quest3d等。对这些三维可视化工具的功能进行研究比较,结合本项目特点,选择Unity3d作为开发平台。主要原因有以下几点:(1)跨平台:支持Windows,Mac,IOS,Android等系统平台;(2)模型支持:支持FBX直接导入,自动分割网格面;(3)开发语言:支持JS,C#语言开发,周期短,效率高;(4)程序发布:软件自带打包工具,可以直接打包成PC、IOS、Android应用程序。
除此之外Unity3d平台采用面向对象的开发技术,模型和代码相对独立,程序移植扩展方便,可以缩短开发周期,另外学习资源丰富,新开发人员也能快速掌握,方便技术推广。
1.2 需求及框架设计
本系统目标是在移动平台上展示三维码头,并实现三维交互式漫游。主要需求包括三维展示,交互漫游,支持安卓三个方面。这三方面是系统功能需求,必须满足和实现。除此之外还有非功能需求,其主要包括模型精度和美观程度,场景设计,系统界面,扩展性等,这些功能不作详细要求,开发者自由发挥。
针对需求进行分析归纳,系统构架设计如图1所示。
每个模块负责的角色有:(1)数据支撑:系统的最基本底层支持,展现给用户的最终要素,本项目中是油码头模型及周围环境因素;(2)技术支持∶系统数据的集成管理,以及实现系统要求,是系统运行的核心,本项目主要实现三维场景展示,交互漫游等功能;(3)硬件支撑:系统运行的硬件平台,本项目采用手机作为硬件设备;(4)应用层:项目的终端运行,最终成果,本项目为安卓系统上的应用程序。
1.3 开发流程
三维可视化实现过程是本项目的主要研究内容,针对项目的整体构架,程序实现流如图2所示。
项目流程主要包括,模型准备、场景制作、程序编写、调试发布四个阶段:(1)模型制作,通过专业设计建模工具,建立码头模型;(2)场景设计,模型导入Unity3d进行场景制作,添加环境,景观因素;(3)程序编写,根据需求编写实现交互以及移动程序,实现系统功能;(4)调试发布,制作最终成果,形成安卓应用程序。
图1 系统构架Fig.1System architecture
图2 系统流程图Fig.2System flow chart
图3 模型组成Fig.3Model of the project
2 系统实现
2.1 模型准备
本项目是油码头,主要内容包括码头部分和管廊部分。码头部分主要包括沉箱、墩台、桥台、钢桥和操作平台。模型的模型结构组成如图3所示。
模型是通过专业设计软件的设计的三维模型,文章主要介绍模型后期三维可视化流程,模型设计制作不做详细论述。根据三维可视化制作流程,将项目各专业的设计三维模型进行整合,从Revit里将整个模型导出,格式为FBX。
将模型导入3DMAX,主要对材质进行检查修改,要让项目的可视化效果更好,材质更真实准确,本项目对所有模型的材质进行重新赋值,按照建模标准,赋予标准材质,并进行渲染测试,直至渲染效果满意为止。本环节是可视化的主要环节,材质的处理情况直接影响可视化最终效果。
2.2 场景搭建
将3DMAX处理好的模型导出,导入Unity3d进行场景搭建。主要需添加海洋和天气系统等环境要素,并对码头模型进行检查,对模型有误或材质不当的模型进行修改编辑或者替换。
添加海水。在Unity3d中系统自带海水模型,但效果较差,为了让整个项目展示效果得到提高,本项目采用插件Tasharen Water。将插件包导入到项目中,调整位置和大小比例,调整到码头适合水位高程,调节海水材质颜色,反射折射等。
添加天空盒。调整太阳高度和角度,设置光线颜色以及亮度等参数。反复调试直至场景内的各个构件结构清晰,材质逼真,光线角度美观合理,并接近真实。系统整合如图4所示。
2.3 第三人
实现交互漫游,主要有第一人视角,第三人视角,以及上帝视角。在本项目中采用第三人视角。主要原因有两点:
(1)应用广,效果好,常见的三维游戏以及虚拟现实中经常采用。
(2)视角灵活,方便控制,模型相对位置清晰,适合小场景。
第三人是本系统的核心部分,漫游与镜头都围绕第三人实现。Unity3d自带第三人的模块,在软件项目浏览器目录STAND ASSETS里面,将第三人拖到码头平台,放在合适的位置,调整比例及方向,运行测试查看是否正常。在测试运行时会发现人物往下坠落,原因是默认人物有重力,而平台没有支撑。需要给平台添加碰撞。Unity3d内置动力学系统,可以模拟静态动态等受力以及碰撞,可以做出接近实际的运动效果。
给平台添加网格碰撞,这样人物在重力和支撑力的作用下平衡,可以平台上行走,而不会掉到海里。在Unity3d中,有很多碰撞形式,盒子碰撞,地形碰撞,网格碰撞等,网格碰撞可以直接使用所选的网格作为碰撞,适用于导入的模型。这里就分别选中平台栏杆等可能碰撞的物体添加网格碰撞,然后进行测试,给码头上所有可能涉及到的模型都添加碰撞,在此模型准备已经基本完成。
图4 Unity场景Fig.4Scene in Unity3d
2.4 界面设计
界面是设计系统的布局。主要遵循简洁、实用、满足系统要求。界面包括程序主界面布置,程序LOGO,加载画面,以及移动和镜头控制按钮,本项目通过Photoshop分别制作移动控制和镜头控制按钮,然后添加到Unity3d中。
Unity3d界面设计和传统软件设计不同,Unity3d界面就是镜头所看到的范围的投影。将移动按钮和镜头按钮放置在镜头范围的左下和右下。设置坐标参数,运行测试,反复调整参数,直到测试位置满意为止。
2.5 程序编码
程序编码是本系统的核心,实现如何控制码头的漫游。在PC上实现交互漫游比较简单。但在移动客户端通过触屏来控制,不仅需要在Unity3d中编写代码实现漫游交互,还需要调用安卓系统API,通过触屏事件来对模型进行操作。为了快速实现,本项目采用触摸功能插件easyTouch。
(1)移动控制。采用第三人的形式对模型进行漫游浏览。将插件载入到项目环境中,将移动虚拟手柄拖进项目浏览器,调整属性和参数。然后将插件的移动触摸按钮添加关联到场景中的第三人。设置屏幕中的位置,然后设置移动控制插件的移动速度,旋转速度,以及镜头角度和高度变换的速度,设置完成后进行调试,反复修正参数,然后对编辑代码,并根据调试的枪口进行修改,直至满足要求。
(2)镜头控制。镜头的角度,距离实现对模型的环视,放大,缩小等查看。移动相机虚拟手柄拖到项目中,设置参数关联目标当前场景中的主镜头,调整对齐方式和位置参数,调节镜头转动的参数,进行测试,反复进行调试,调整参数到合适的数值,也可以编辑代码,做相应修改,以达到满意的视觉效果和使用功能。
下面是程序的部分控制代码:
控制移动的部分代码。代码主要实现手指触摸屏幕来改变镜头的方向和角度,控制第三人移动的视角,展示视角内的三维模型。
控制触摸的部分代码。通过获取屏幕触摸的方向和快慢来控制镜头的高低和远近,包括环视,放大缩小等功能。
3 系统发布
3.1 系统调试
首先在Unity3d里对整个项目进行运行测试,主要包括对场景第三人的控制,镜头的拖拉移动旋转,然后在安卓模拟器上测试程序是否能在安卓正确运行,并且功能符合需求,如有错误或功能不符,应进行修改。
对项目在Unity3d进行运行测试,包括代码以及场景,场景主要是模型,环境。编码主要是第三人的控制,包括移动和旋转,镜头的拖拉、移动、旋转。运行程序测试镜头和移动的运行效果,反复调试直至满意为止。
安卓模拟器能在电脑上模拟安卓手机系统,模拟安装、使用、卸载等所有安卓系统功能,在电脑上就可以实现操作安卓系统的全过程。因此通过它来调试程序,能够节省时间,加快效率,方便修改。调试完成后再打包安装到真机上。
3.2 程序发布
在可视化系统的准备工作及主要编码工作都已经完成的基础上,对系统进行发布,形成最终的安卓应用程序。
保证程序调试完整,模拟器上运行正确无误。然后通过Unity3d的打包工具制作安装包。在制作安装包的过程中要注意有以下几点:(1)安卓运行环境配置正确,Unity3d需要通过安卓环境,生成安卓应用程序;(2)在发布需要注意设置安卓运行参数,包括程序名称、横竖屏、版本等;(3)设置程序欢迎界面,LOGO等。最后就可通过Unity3d一键打包生成APK格式的安卓应用程序安装包,可以拷贝到任何安卓系统的设备上安装运行。
4 结语
本次研究主要目的是探索Unity3d在三维设计可视化中的可行性和应用领域。通过本课题的研究,通过研究总结得出移动可视化是三维设计可视化新的应用方案,在方案设计,施工管理,运营维护等领域有指导意义。还可以基于Unity3d进行扩展,如通过交互动画实现工艺流程,结合二维码进行施工运维,结合GPS定位进行船队调度等。运用Unity3d进行移动应用的开发将给工程设计行业带来巨大变化,提高企业技术竞争力,促进行业信息化进程。
[1]辛海霞,金玉盟,吴瑕.耙吸挖泥船疏浚施工三维动画仿真[J]水道港口,2012(3):264-269. XIN H X,JIN Y M,WU X.3D animation simulation of dredging process of trailing suction hopper dredger[J].Journal of Waterway and Harbor,2012(3):264-269.
[2]杨凯,索利利,牛桂芝,等.水深测量数据的组织管理与三维可视化[J].水道港口,2008(4):296-300. YANG K,SUO L L,NIU G Z,et al.Organization and 3D visualization for conventional measuring data of water depth[J].Journal of Waterway and Harbor,2008(4):296-300.
[3]辛海霞,吕秋灵.基于OpenGL的三维地形可视化技术与实现[J].水道港口,2004,25(2):97-100. XIN H X,LV Q L.Visualization to 3D Terrain Based on OpenGL and Its Implementation[J].Journal of Waterway and Harbor,2004, 25(2)∶97-100.
[4]崔瀛潇.基于Unity3D引擎的三维可视化技术在煤炭地震勘探中的应用[J].中国煤炭地质,2014(4):58-63. CUI Y X.Application of 3D Visualization Technology Based on Unity3D Engine in Coal Seismic Prospecting[J].Coal Geology of China,2014(4):58-63.
[5]程萍,宋春华.基于Unity3D引擎的3D漫游系统[J].成都纺织高等专科学校学报,2014,31(4):24-28. CHENG P,SONG C H.3D Roaming System Based on Unity3D Engine[J].Journal of Chengdu Textile College,2014,31(4):24-28.
[6]李希龙,李水生,王正清,等.水电工程设计系统仿真探讨[J].水利水电技术,2013(8):63-66. LI X L,LI S S,WANG Z Q,et al.Discussion on system simulation of hydropower engineering design[J].Water Resources and Hydro⁃power Engineering,2013(8):63-66.
[7]聂洪平,周启荣,李兵.船载交流伺服系统检测平台可视化设计与实现[J].无线电通信技术,2014,40(6):81-84. NIE H P,ZHOU Q R,LI B.Visualization Design and Implementation of Detection Platform for Shipborne AC Servo System[J].Ra⁃dio Communications Technology,2014,40(6):81-84.
[8]吕萌萌,郭新宇,陆声链,等.基于Unity3D果树交互虚拟修剪技术及其实现[J].农机化研究,2015(4):7-11. LV M M,GUO X Y,LU S L,et al.Virtual Interactive Pruning Operation on Fruit Tree Based on Unity 3D[J].Journal of Agricultural Mechanization Research,2015(4)∶7-11.
Android application of 3D visualization based on Unity3d in dock
WANG Gang
(CCCC Second Harbor Consultants Co.,Ltd.,Wuhan 430070,China)
3D visualization,as a usual designing technology,together with the mobile communication technolo⁃gy as a convenient and efficient technology,enjoys a broad marketing share in scheme presentation,collaborative design,and construction simulation.Based on Unity3d development platform,a development research on terminal 3D visualization system in Android system was presented in this paper,with REVIT designing tool,C#as develop⁃ing language.After research,the 3D visualization presentation technology on mobile platform was proposed.
dock;3D design;Android;Unity3d
P 204
A
1005-8443(2015)05-0456-05
2015-02-10;
2015-03-24
王刚(1982-),男,陕西省人,工程师,主要从事三维技术、BIM设计技术方面工作。
Biography:WANG Gang(1982-),male,engineer.