APP下载

基于渐进式加载的VR动物园系统

2020-06-13祝广强魏晟阚旋闫丰亭

电子技术与软件工程 2020年2期
关键词:批处理摩天轮动物园

文/祝广强 魏晟 阚旋 闫丰亭

(上海工程技术大学电子电气工程学院 上海市 201620)

如今,经济和社会发展进入高水平时期,各项科技也在突飞猛进,人民生活得以大幅度改善,休闲娱乐方面潜力巨大,我国人口众多,旅游业的规模位列世界首位,其中虚拟旅游业还处在起步阶段,蕴藏了无限的商机,产业活力更是旺盛。每逢节假日,我国旅游规模都会给各大景区带来巨大承载压力,从某种意义上来说,我国旅游业已陷入了旅游规模大于景区承载压力的困境,当前旅游行业急需某种方式缓解该困境。再者,我国是人口大国,个人享有的旅游资源不等,且差距较大,经济富裕的人们可以享有各种优质旅游资源,生活拮据的人们则旅游资源非常有限,若想缩小这种差距,数字经济产生的低成本虚拟旅游产业可以担当重任。本世纪初,关于数字城市的构想就已产生,基于虚拟现实技术的数字城市构建技术早已开展研究,且近年来已实现了较多的应用案例。另外,移动通信网络的发展是制约虚拟现实技术发展的最大因素,而第五代移动通信技术即将大规模建设和普及,这势必将会给虚拟现实的更多商业应用带来巨大活力。

1 虚拟旅游业发展现状及趋势

图图1所示,我国旅游业已经从中间环节多,经营方式单一,效率低下等现状发展到高效率的“一站式”电子旅游系统。“一站式”电子旅游可以用作交易平台,向用户提供基于计算机化终端的预订购买系统。用户可从“一站式”电子旅游系统预订景区门票、机票、吃住行服务、各项娱乐订票。如今,这个“一站式”电子旅游系统可以说是使用前景非常的广阔,几乎所有关于旅游的信息都可从该系统查询,几乎所有关于旅游的票务都可从该系统预定购买。

由于计算机以及信息技术的突破性进展,高度信息化的社会不再是一句空谈,人类正朝着那个方向前行,如今许多研究结论以及发展状况显示,虚拟现实与互联网这两种高端科技的充分融合将会给将来的信息社会带来翻天覆地的变化,从根本上对人类的生活以及生产方式进行改变。用于实现对真实场景进行虚拟化,形成虚拟环境,就是所说的虚拟现实技术。虚拟环境属于可交互式的,它的特点就是是完全沉浸式,在计算机生创在的世界内,用户感觉如同身临其境一般,不管是五官的感受还是心灵上的体验与真实世界都是如出一辙,另外,如果用户想给计算机传达某些指令,采用的方式不用太过机械化,自然进行就可以。

图1:当前“一站式”旅游系统

图2:基于VisibilitySensor的快速浏览算法

图3:基于TimeSensor的快速浏览算法

目前,人民的生活水平又向上步入一个台阶,但是人民物质生活增长同时精神生活还处在不匹配阶段,人们对于精神生活的追求日益强烈,社会矛盾也已经转化。最近一段时期,国内的旅游业发展呈现出朝气蓬勃之势,为了满足游客的对于旅游这一休闲要求,旅游网站呈现爆发式的增长,良莠不齐,很大比例的网站功能比较单一,类似于旅游攻略就是其全部功能了,旅游须知等的相关信息,而且这些网站上的网页信息更新较慢,很多信息无法满足市场需求。

另一方面,虽然如今的祖国大地已经建起了一处处各种文化娱乐场所,但大都集中于一二线城市,相对于偏远地区及交通不便利地区如新疆西藏等地区的人们无法同一二线城市的人们享受同等的文娱设施。

如今的互联网行业发展较为迅速,计算机技术更加的成熟,三维模拟目的地现状已经变成了现实,只要操作者使用具有非常先进的方法和工具就能坐在家里体验到旅游景点的乐趣,从此宅在家里也能畅游世界各地。

2 WebVR发展的短板

随着“互联网+”时代的到来,“互联网+3D”也被提出,即WebVR技术。有别于传统的3D技术,WebVR更加依赖于浏览器。且须构建三维场景,人以第一视角在其中穿行。场景和控制者之间能产生交互,加之高质量的生成画面使人产生身临其境的感觉。动感的页面较之静态页面更能吸引更多的浏览者。

WebVR的概念提出已久,用高性能的服务器运行,再把画面传输至浏览器上,用户通过普通的浏览器便能够欣赏到3D画面。就应用前景而言,WebVR的应用内容非常广泛,并且在任何平台上都是非常具有粘性的。这就是“+3D”将有潜力成为行业中最强大的分支之一的原因。

看似简单的构想要实现却并不容易,通常情况下,大规模场景内模型繁多,模型贴图清晰度高,还要实现动态效果。因GPU渲染能力有限,再加上网络带宽的限制导致优质的画面不能够良好呈现。在下文中介绍了关于优化大场景内容的有效方法。

3 大规模场景优化方法

3.1 快速浏览算法

如果所构建的数字城市算法是基于VRML,观看或者使用它的用户沉浸感会非常高,用户随时随地可以来浏览和漫游数字城市,不用受到空间和时间的限制。VRML在城市环境规划(如公司要选择创办在哪个位置等),旅游宣传、网上商城、产品外在宣传等领域有着非常广阔的应用前景。虽然目前的电脑互联网速度以及图形硬件技术突飞猛进,可是,由于虚拟城市场景不断在扩张,场景模型也变得愈发的精细化和复杂化,从而仍旧会大幅度的降低客户对于虚拟场景的观看速度以及互联网下载速度,随时随地的无阻碍的浏览以及交互功能将会无法成为现实,这使得用户很难接受。所以,迫切的需要进行庞大的VRML场景的实时浏览探索势在必行,建立新颖科学的线下载算法非常关键。文献[1]总结了基于VRML的快速浏览算法。因为VRML对于外部程序接口是兼容的,能够结合JAVA完成它的调度算法,利用EAI以及SAI的方式实时快速的调入调出模型。

第一种算法的提出是基于VRML和VisibilitySensor,也就是“如果可见那么添加,不可见那么删除”。第一步是定义视域,简化其为扇形,如图2。在扇形区域内部,可见的为浅色范围内的浅灰色物体,要应用到VRML场景里,别的深灰色物体全部不添加或删除。随着视点的转动或者移动,一旦建筑物出现在视域内部,就把它加入到里面;一旦建筑物脱离视域,那么把它进行删除。从而保证浏览器内部的建筑数量一直处在数量小的规模,所以场景就得以增强,浏览速度大幅度增加。

第二种算法是根据VRML的TimeSensor得到的,就是“在一定的范围内的建筑物调入,别的不执行这个命令,更新是有规律的”。第一步定义视域,视域是一个圆形,图3所示,用户视点处在圆心位置,只要涵盖在圆内的浅灰色物体,调入场景里,在外部的深灰色物体就不调入或删除。一旦视点移动,利用TimeSensor,对建筑物所在区域是否被圆覆盖进行定期判定,有规律的对圆域内部的物体模型进行更新。

算法1 基于VisibilitySensor的快速浏览算法

算法2 基于TimeSensor的快速浏览算法

在算法上,场景中物体调入调出部分大致都是一样的,有所区别的是它们基于的节点是不一样的,分别为VisibilitySensor 与TimeSensor,从而达成结果。

3.2 批处理方法

由于CPU和GPU是并行工作的原理,CPU和GPU之间有一个命令缓冲区(Command Buffer),该区包含一个命令队列,CPU通过向命令缓冲区添加命令,而GPU主要提取Draw Call命令,当GPU执行完上一次的渲染便可从命令缓冲区提取命令并执行该命令。由于GPU的渲染速度往往快于CPU提交Draw Call命令的速度,如果Draw Call命令数量过多,就会导致CPU的过载。这时就需要提交较少的Draw Call命令,释放CPU的处理速度,同时增加GPU的渲染速度。使很多个较小的Draw Call命令合并成一个大的Draw Call命令,批处理的思想应运而生。

图4:基本操作流程

图5:碰撞器和触发器属性、编辑碰撞范围

图6:动物园出口

图7:执行该场景时出现画面

图8:小地图

3.2.1 静态批处理

静态批处理适用于任何大小的模型且只能是不能移动的模型,在运行之初,将这些需要静态批处理的模型合并到一个大的网格结构内,消耗一定的存储空间。在静态批处理前,如果一些模型共享了这个大网格结构中的部分网格,那么其中的模型都对应有部分网格的复制品,原来的部分网格会变成相同的多个部分网格发送给GPU。在Unity3D中操作简单,只需选中需要静态批处理的物体,在其inspector面板里勾选Static,Unity3D便会根据物体的状态处理静态批处理。

3.2.2 动态批处理

对有相同材质的动态物体进行一次性批处理,但要注意动态批处理相对于静态有很多约束条件,物体网格的顶点属性规模要小于某值,该值不同版本会有所不同;并且不能把两个不同缩放尺度的物体一起处理,但在Unity3D5之后的版本就取消了这一限制;模型的Pass通道不宜过多。使用动态批处理,不需要用户进行额外操作,在内部实现上,Unity3D会根据模型和材质是否满足条件进而判决是否进行批处理。

4 虚拟动物园设计与开发

4.1 操作工具

使用建模软件Maya,游戏引擎Unity3D,图形编辑软件Photoshop等对动物园形象逼真的渲染,以使得用户身临其境般漫游场景。用户能以自由视角不受屏幕限制在普通浏览器中观察每一处细节。

在软件Maya制作模型,在软件Photoshop制作贴图,之后将模型和贴图放到Unity3D进行组合,由小组件组装成大组件,如果各小组件能够较好的匹配到一个大模型,则不要修改,否则需要在Maya进行修改以能够契合场景布局,贴图匹配过程同理。最后结合在Unity3D中使用的物理引擎、UI(用户交互界面)、动态脚本组合成最终的可视化场景。制作流程如图4。

4.2 系统关键技术

Unity3D提供了丰富的功能供开发者使用,本文主要介绍在开发虚拟动物园中运用的三种常用功能。在该虚拟动物园内运用了碰撞检测物理引擎、人机交互界面、以及脚本实现动态效果。

4.2.1 碰撞检测物理引擎

碰撞检测物理引擎可以为物体赋予碰撞器属性(Collider)和触发器属性(Trigger),如图5。碰撞器是触发器的前提,当对某物体只设置碰撞器而不设置触发器时,该物体就具有了刚体属性,能够表现出重力、弹力等现实受力效果,则具有碰撞器属性的物体在运动时不能穿过该物体,且能引发事件,如小球被弹开等;而碰撞器属性和触发器属性都设置时,通过编辑编辑碰撞区域,运动物体进入该区域后发生触发响应,且用户能够及时处理该响应,达到交互效果,可应用于接近某物体时触发事件,如靠近门时自动打开。

在本场景中,为每个模型都设置了碰撞体属性,使得在第一人称视角运动时不发生穿模现象。在结束游览时,第一人称视角靠近出口位置时,出现简易UI界面询问用户是继续游览或退出游览界面,如图6为出口位置。

图9:场景内摩天轮

图10:动物园入口处

图11:大草坪

图12:两栖动物馆

图13:科学教育馆

图14:金鱼廊

图15:长颈鹿纪念馆

图16:火烈鸟

图17:摩天轮

4.2.2 人机交互界面

通过合理的设计,人机交互界面使得用户能够与计算机交流,在用户通过鼠标点击或键盘输入等多种信息输入的方式作为与计算机交流的媒介,进而使计算机发生一定的响应,呈现与之前不同的内容。在本场景中实现的人机交互界面如下。

交互1:进入场景。创建UI的button组件,button组件自带on click事件,为点击此按钮后会触发某个事件,要进行一个场景跳转的指令,创建c#脚本,在脚本里加入名为gameplay的方法,实现程序如下:

当点击上方的按钮时,便可开始游览整个园区,点击下方按钮时则是退出当前场景,如图7。

交互2:小地图。创建raw image和camera,此camera跟随人物移动,在项目中创建渲染纹理render texture并附在camera上(表明将camera所呈现的场景放在渲染纹理这个中间物上),后将render texture附在raw image上即可以呈现小地图,如图8。

交互3:一键欣赏整个场景。设置两个镜头,一个为当前用户镜头,一个用作全景浏览镜头,当游戏开始时使用用户镜头作为主镜头,当用户在键盘上输入M时,即检测到input.getkeydown(KeyCode.M)时,设置全景浏览镜头为主镜头,而后对场景浏览镜头做旋转处理,使用lookat方法让镜头始终朝向动物园中心,之后用rotate方法使镜头沿up方向移动。用户按下键盘上M时呈现效果为用户视角到达园区上方某个位置,整个园区围绕中心点以一恒定速度旋转。脚本如下。

设置旋转属性代码

图18:鸵鸟区

图19:猴子区

图20:大象区

图21:二层观景平台

图22:热带鸟馆

图23:熊猫馆

设置两个镜头代码

4.2.3 脚本实现动态效果

为丰富场景内容,在Unity3D中,使用编程语言C#实现场景内的动态效果。在本场景中,使用C#脚本实现了摩天轮的旋转,通过前期模型制作,将整个摩天轮分为转轮和支柱两大部分,支柱作为支撑部分,转轮作为旋转部分。

摩天轮旋转代码

太阳旋转代码

定义skywheel风车旋转速度为5/deltatime,用transform类的rotatearound方法,输入参数使摩天轮按中心转动,代码段如摩天轮旋转代码所示。定义太阳旋转的速度speed为0.1float,并且设置随机角度,在场景游览开始的时候将随机的角度值附给太阳光作为初始位置,之后在update方法中使用transform类的rotate方法,参数为绕x轴以速度为speed*time旋转,不断更新太阳光的位置,代码段如太阳旋转代码所示。

4.3 虚拟动物园构成

本场景内容为考虑真实动物园的构成后规划设计建造的。入口处采用拱形门,往里的方形们作为检票口,进入后映入眼帘的是一块大草坪,大草坪的右侧是可供游客休息的长亭,大草坪的正前方是两栖动物馆的入口,走过两栖动物馆是科学教育馆,科学教育馆的两侧开有小河,河两岸有杨柳依依,河的另一侧是一张大大的全国动物分布图,沿路径向前,可以看到金鱼廊,游客可在此欣赏各类金鱼,再向前走,可以看到长颈鹿纪念馆,继续向前可以看到旋转的摩天轮,摩天轮附近有火烈鸟区和鸵鸟区,继续向前就到了大象区和猴子区,还可以登上二层观景平台俯瞰整个园区,走下二层观景平台可以走到熊猫馆和热带鸟馆,游览完整个园区后便可选择继续游览获退出浏览,这时只需走到出口的位置便可退出整个园区的游览。如图10-24所示。

图24:出口处

5 总结

本虚拟动物园场景内容较为丰富,能够达到真实动物园所具有的展物数量,能够在一定程度上缓解景区压力,不仅能够给因各种原因不能实地参观的人群提供一种全新的游览方案,还为儿童对动物的早期认知教育提供了生动材料。因场景内容自主定制能力强,可以按需开发出各种场景,所以本场景的开发更为其后的其它大规模场景的开发提供了参考依据。

场景开发过程中,运用了模型制作,贴图制作,场景布局搭建,并在此基础上能够实现碰撞检测功能,人机交互功能,脚本驱动动态效果。下一步工作重点不仅要优化场景内容,还将围绕虚拟动物园的上线工作展开,希望能够尽快产生一定的社会效益。

在模型制作方面,将运用更多建模功能优化现有模型的细节;在贴图制作方面,将结合现有实现技术制作清晰度更可观的逼真贴图;在场景搭建方面,将充分考量用户对动物园的多样化需求进一步调整场景内容;在多样化功能、用户交互及场景内动态效果方面,将继续结合Unity3D的强大功能进一步提升用户体验。

猜你喜欢

批处理摩天轮动物园
恶意批处理文件导致电脑黑屏、反复重启、无响应的原因分析及应对思路
摆摊后,一个喷嚏两个亿
你的新年flag是什么?
摩天轮
彩虹摩天轮
我家的动物园
基于PSD-BPA的暂态稳定控制批处理计算方法的实现