APP下载

面向移动端的三维漫游及交互系统的设计与实现

2018-03-07吴庆波梁勤欧

关键词:漫游摄像机材质

吴庆波, 梁勤欧

(浙江师范大学 地理与环境科学学院,浙江 金华 321004)

0 前 言

目前,与场馆类似的大型室内地图大都采用2D纸质地图,它对于室内环境的监控和人员定位功能的实现主要用2种方法:摄像头监控系统和二维室内地图系统[1-3].然而这2种系统都存在着部分缺陷.摄像头监控系统的成本虽然越来越低,并且现在很多案件的线索都是通过摄像监控系统图像的调取而获得的,但对视野的完整性具有一定的依赖性;二维室内地图系统能弥补摄像头系统的视野问题,却会丢失部分图像信息且无法很好地表达高程信息,即楼层信息.

三维建模技术的诞生,使得人们可以用计算机来模拟现实世界的环境和物体,并随着各种交互技术的成熟,人们可以有仿佛置身于虚拟现实世界的机会.通过对光照、环境进行设置,以及对建筑物材质纹理的采集并授予模型,真实世界在计算机中以三维模型的方式呈现出来.室内建筑的结构非常适合三维模型来展示.可以说,三维建模技术符合人们的视觉习惯和思维习惯[4-5],相比二维图形的单调难懂,三维模型是人们更愿意接受和使用的.

随着智能手机的普及,移动端对于人们的生活已不可或缺.移动端自带GPS功能,当人们置身于真实室内环境时,手机端就得到了当前的位置,它与三维模型结合进行地图坐标转化,可以得出自己在地图上的位置,从而能快速进行方向选择并了解周围环境.此外,手机移动端具有3G、4G的上网功能,可以随时获取所需的室内模型资源,随时接收新的信息,比起电脑端更加灵活.因此,在移动端开发室内模型交互系统非常具有优势[6-7].本文正是基于以上两点开发了一个室内的三维漫游交互系统.

1 系统总体设计

本系统的开发以Unity 3D为核心,以3ds Max为主要建模手段,对浙江师范大学校园内某幢建筑的1层、5层及内部的房间进行了建模,通过Unity 3D自带的mono进行功能编写,最后发布移动端的可执行程序,并进行漫游及交互体验、测试,系统的总体框架如图1所示.

图1 系统总体框架

具体步骤如下:

1)数据采集.三维建模所需数据主要包括:该建筑外部图、侧面图(由人工拍摄),顶楼图(由无人机航拍);该建筑1层室内平面CAD图;建筑材料及室内物品材质纹理;建筑各碎布点的坐标信息.

2)数据处理.将坐标信息赋予CAD图,并对CAD图进行必要的语义信息赋予,建立一定的拓扑结构.摄像机拍摄的图用来绘制、对模型挖洞、填补等工作.收集的材质纹理信息可以直接植入3ds Max和Unity 3D中进行使用.

3)数据组织.这里主要是进行必要的拓扑关系构建,在建成三维模型之后,由于体积庞大,实体繁多,需要对这些实体进行分层合并、命名等一系列操作,便于后续的修改和查阅.最后导出FBX格式的模型文件,方便Unity 3D的调用.

4)脚本管理.在进行具体的系统功能设计时,Unity 3D需要调用各种各样的脚本来挂载到场景和场景中的物体上,故脚本的管理也必须有条理地进行,保证不丢失脚本,不添加多余脚本.

2 系统模型构建

2.1 建模流程

室内模型的构建是一个从平面图借助三维几何造型与表面材质、纹理、灯光等来设置模拟真实世界模型的过程,有很多因素都需要考虑,从而达到真正的逼真效果.笔者把模型的构建过程大概分为3个步骤:数据准备、模型构建、后期优化.具体如图2所示.

图2 建模流程

2.2 获取数据源

2.2.1 平面图数据源

本文的平面图数据源采用的是该建筑的电力平面布置施工图.由于此施工图中的很多信息是用来处理电路照明等方面的,与此次建筑室内建模没有直接的关系,所以本文在图片处理之后留下了建模所需要的轮廓图,简化后的模型图如图3和图4所示.

图3 楼层电力平面图

图4 简化后的平面图

2.2.2 楼体所需数据源

在本次1层楼的建模过程中,为形成一个整体模型,楼体所需的数据源除了俯视平面图外,还需要各个方向的侧视图,包括窗户、门等信息.通过拍照不仅可以获取这些面的轮廓,还能获取材质.因此,拍摄的照片质量非常重要.本文都进行了实地拍照,如图5所示.

这些照片的轮廓会因为焦点相机本身的特点失真而会有所变化,而纹理色彩等也会因为光照环境、摄像机色调等和真实有所差距.因此,在拍摄完成之后,本文又用Photoshop进行了相关的修正.

图5 侧面图的拍摄照片

2.2.3 各类物体及材质

这些拍摄到的图片需要真实的颜色及形状大小等信息,因此,在拍摄时做一个记录,确保建模的材质和真实环境的材质相差不会太大.

2.3 墙体模型构建

在建立墙体模型之前,楼层的线条轮廓图应当先进行绘制.按图6的轮廓线图进行墙体的建模,然后进行室内物体的建模.

图6 楼层轮廓图

楼层线条轮廓图绘制好之后,接下来的工作就是填充三维几何体.由于这些图形都是不规则的,并包含许多空洞,因此,必须要用更多的小图形来进行填充合并,并且还要设置这些几何体的厚度与墙体一致等.根据CAD图上各个点的坐标,在3ds Max中对这些小几何体进行设置时输入对应的坐标,方便这些几何体的对齐.最后,将它们合并之后,便可得到模型.图7为对地板填充后建立的墙体模型:

图7 墙体模型

2.4 灯光设置

灯光可以直接使用Unity 3D中的灯光组件.光照和模型建立好之后,为了得到更真实的模型,需要对天空进行模拟.在Unity 3D中,有一个“Skybox”资源组件,每个天空盒资源分为6张图片:前、后、左、右、上、下.这种方法是半球天空模拟法,是用数学方法实现对天空的模拟,公式如下[8]:

f(P)=X2+Y2+Z2-R2.

(1)

式(1)中:P是球面上某一点;R为球体的半径.利用球面坐标系时方程(1)变换为

(2)

盒子法模拟天空的基本思路是:建立一个正方体,在其上下左右前后6个面上分别贴上模拟天空的贴图,贴图的质量直接影响最后模拟出天空的画面质量,因此,贴图必须选择“位图”文件,并且做到6个贴图首尾相连,这样才能更加真实.

2.5 模型优化

模型基本建立完毕,考虑到实时加载场景的速度和文件的复杂程度,还需要对整个场景中的模型进行优化[9-10].在工作界面的“Hierarchy”面板中可以看到建模时用了大大小小很多的模型,小到桌子腿和书柜上的书,所以为了提高速度,必须进行优化:

1)减少多面体的面.例如曲面物体或者不规则物体,表面非常复杂,不仅影响加载速度,还会占用系统空间.3ds MAX中的插件“减面工具”可以实现这个操作,简化物体的面数.

2)纹理代替模型.对于那些非常薄的物体,诸如窗户、楼体等可以用二维图形代替三维模型,从而节约空间.

3)提高模型和材质的重用性.对于那些特别材质或者组件的物体,可以重复利用,减少数据量.

经过以上3种方法的优化,大大提高了模型的加载渲染速度,使用软件时变得更加顺畅.最终模型如图8所示.

图8 模型效果图

3 部分功能设计与实现

系统主界面如图9所示.

图9 系统主界面

3.1 漫游功能

现今流行的移动手机大都是依靠屏幕手势进行操作,包括单点触控、多点触控、手势滑行等方式.相对PC端来说,移动端的操作实现有一定困难.将摄像机在摄像机与屏幕中心连成的直线上平移,达到缩放目的;把摄像头绕虚拟世界中的纵轴进行旋转实现旋转功能;通过改变摄像机在虚拟世界中的水平面横竖坐标实现移动功能[11].

实现缩放、旋转、平移这些操作,实际上是对虚拟世界中的摄像机实现平移和旋转的操作,可以由4×4的矩阵表示.首先集合变换矩阵为C1,其中矩阵的3×3部分即矩阵C2,代表实体比例和旋转,矩阵[a41,a42,a43]T 代表实体平移,矩阵[a14,a24,a34]T代表实体投影[12].

1)实体平移:实体位置为(x,y,z),平移变换时3个坐标都要发生改变,设平移量为Cx,Cy,Cz,平移之后坐标为(x′,y′,z′),则:

2)实体旋转:在Unity 3D中的旋转是绕着该点为中心的坐标系的X,Y,Z轴进行的旋转.设旋转角度为δ,则绕Z轴旋转的矩阵变换为

漫游功能是用来对模型进行放大缩小旋转的操作,需实现其灵活性和易操作性.在系统主界面点击进入漫游系统,摄像机距离模型较远,可以通过双手多点触控,两个手指分开的手势进行放大,摄像机位置移动至模型中心,便可以继续上下左右滑动手指来进行模型的旋转.图10为旋转功能测试效果图.

图10 旋转功能测试

图11 交互界面

3.2 交互功能

当以第一人称视角在模型中移动时,如果不设置碰撞检测,就会出现穿墙的情况[12],违反自然规律,而且无法模拟出真实的视野.因此,必须对客体和第一人称主体设置碰撞检测.Unity 3D引擎自带物理组建功能,可以给模型添加一系列现实世界中的物理属性.在“project”面板里选中模型,在“inspector”面板里勾选“generate colliders”“apply”即可生成模型的“mesh collider”.将物体设置为刚体之后,物体就不会存在穿墙的情况.交互界面如图11所示.

本文中的交互功能以手指操作虚拟摇杆实现位移,左边的虚拟摇杆控制的是视角的旋转,右边的虚拟摇杆控制的是物体前后左右的移动.

3.3 定位功能

在Unity 3D中的“Game Object”中新建“摄像机”组件,并将其属性设置为“Othographic”,调整大小使其覆盖在模型之上,这样就可以显示模型的俯视效果.为了在俯视图中展现主摄像机所在位置,创建一个新的几何体,并置于“摄像机”模块的层级之下.这样几何体就会随着摄像机的移动而移动,从而显示出漫游者在小地图上的实时位置.

鹰眼照相机的界面在各个模型界面的右上角显示.黑色小方块为此时摄像机所在的位置,随着摄像机的移动,在小地图中显示出实时位置.当不需要此功能时,点击收起可以将小地图隐藏.需要时点击鹰眼可以打开小地图.如图12所示.

图12 定位效果图

4 结 语

本文面向移动端初步构建了建筑模型的三维漫游及交互系统,并通过运行实例,验证了该系统的可行性和有效性.本系统在移动终端的基础上,利用了三维建模技术实现了定位、漫游与交互功能,能使用户在以三维场景方式展示所处的环境中进行沉浸式体验,为用户快速、准确地选择路径提供了方便,对解决当前室内复杂环境的导航问题具有一定的参考意义.三维模型的逼真程度与内存消耗成正比,如何进行空间数据的轻量化建模并能顾及到物体间的拓扑关系及空间索引方面值得思考,也是值得设计者进一步改善的方向.只有解决好这些问题,才能为其他潜在的场所提供可能的应用,为用户提供更好的漫游、交互体验与服务.

[1]周忠,周颐,肖江剑.虚拟现实增强技术综述[J].中国科学:E辑 信息科学,2015,45(2):157-180.

[2]叶子.博物馆移动导览中的综合性室内定位方法研究及系统实现[D].杭州:浙江大学,2015.

[3]Xu Z,Pan T,Zhang R,et al.Research on design of virtual museum of submerged traditional architectures in Three Gorges Reservoir Area[G]//World Automation Congress (WAC).Washington:IEEE,2016:1-4.

[4]王胜利.城市三维场景快速构建方法研究[D].郑州:郑州大学,2016.

[5]王晓雨.沉浸式虚拟3D敦煌莫高窟场景重现技术研究[D].西安:西安工程大学,2016.

[6]宋欢.基于Android的室内定位系统研究与实现[D].哈尔滨:哈尔滨工业大学,2016.

[7]耿强.基于Unity 3D的多平台虚拟仿真关键技术研究[D].天津:天津工业大学,2016.

[8]黄涛.基于Unity 3D的虚拟校园漫游系统的研究和实现[D].桂林:广西师范大学,2014.

[9]黄杨,王洋,张姝娟,等.基于Unity 3D的数字站区管理应用系统虚拟现实场景制作研究[J].测绘与空间地理信息,2013,36(4):50-51.

[10]孙恒宇,尤超,王洋.基于Unity 3D的数字站区管理应用系统优化研究[J].地理信息世界,2013,20(1):103-106.

[11]Kim D,Ryu W,Lee S,et al.A Unity 3D-based mobile fashion coordination system[J].International Journal of Advanced Media and Communication,2016,6(1):86-92.

[12]Hu H,Lu L.Automatic functional testing of Unity 3D game on android Platform[C]//International Conference on Materials Engineering.Weihai:Manufacturing Technology and Control,2016.

猜你喜欢

漫游摄像机材质
衣服材质大揭秘
霹雳漫游堂
摄像机低照成像的前世今生
新安讯士Q6155-E PTZ摄像机
NASA漫游记
材质放大镜电光闪耀亮片
外套之材质对比战
针织衫之材质对比战
如何消除和缓解“摄像机恐惧症”
边走边看:漫游海底 梦想成真