闫广辉,史卓,马洋洋,蒙倩怡,安亚磊,王中帅
(桂林电子科技大学,桂林 541004)
地面互动投影系统是在地面上投射出一个特定的虚拟场景,给平凡无奇的地面带来动态的真实体验乐趣。当操作者进入该虚拟画面内,系统就通过摄像头跟踪捕捉操作者的动作并将数据传输给软件。软件引擎再综合处理各种数据,同时对操作者的动作做出反馈,给人一种新奇的交互性娱乐体验。这种互动体验来得方便且更吸引人的眼球。系统保持逼真性,采用目标与背景分离技术,基于时间序列的编码建模算法,对每个像素或者一组像素建立时间序列模型,在每个像素点进行抽样,根据颜色、扭曲尺度和亮度边界聚类,从而建立随时间不断更新的动态背景模型。在动态背景的基础上,将红外摄像机采集的实时数据以背景模型为掩模进行差分处理,处理后的图像经过频域滤波,通过目标分离算法得到每个目标的位置坐标和轮廓信息。然后对目标进行跟踪,将跟踪的目标的位置信息转换成控制信号,实现互动与控制。由于Flash文件具有短小精悍、设计界面友好、操作方便等特点,桂电导览系统采用Flash技术开发,应用ActionScript脚本语言来编写程序,嵌入到地面互动投影软件中使用,结合Photoshop、航拍等摄影应用知识将桂电的信息转成图片或视频的信息,作为Flash开发的素材。Flash生成文件要制作成exe格式,打开Flash发布文件后要以全屏方式进行,同时要隐藏鼠标指针,进行互动投影的特效就是鼠标滑过的特效。先是使用团队中无人机、单反等摄影设备去将桂电的两个校区的大致风景拍下来,使用PC和Photoshop等软件处理和制作成360度全景图。其次要去各学院查询或网上收集各学院的基本信息。然后则需要按要求开发Flash程序,解决bug问题,做到最好的用户交互体验。
该地面互动投影校园导航系统是采用虚拟仿真、红外图像识别技术研发。
(1)无人机航拍校园各部特征建筑,及单反相机拍摄校园地面各关键角落,作为校园全景地面投影素材;
(2)动态采集目标图像的红外信号采集部分;装设在红外信号采集部分前边的,且用于滤除可见光的红外滤光片;连接于所述红外信号采集部分,用于将所采集的目标图像进行分析,并根据分析后所产生的数据动态改变虚拟背景的图像处理部分;连接于所述图像处理部分,且用于呈现改变后的虚拟背景的成像部分。可解决人体与虚拟背景无法分割的问题,从而提高画面的精度,消除局部阴影的干扰。
(3)红外感应器接收互动者脚部与该区域互动信号进行分割(主要为脚部动作与虚拟背景)并将其处理为位置坐标等数据发送回控制主机,主机再还原图像,投影仪将处理后的图像及场景切换投影到地面进行互动显示,并实时更新。
装置1:温度检测及识别
装置2:声音检测及识别
装置3:影像动作检测及识别
装置4:红外检测及识别
图1 系统硬件组成
(1)ActionScript最初是一种简单的脚本语言,目前的Flash用户使用的ActionScript 3.0版本已经是一款强大的编程语言,它标志着Flash发展进化过程中的一个重要阶段。设计ActionScript 3.0的意图是创建一种简便快捷地构建互动功能强大的互联网应用程序的语言,这种应用程序多用于Flash互动性的开发。它的语法类似JavaScript,多用于Flash程序开发。它的发展速度相当的快,到目前为此,它的功能强大,类库丰富,在Flash互动场景系统设计开发方面起到了关键的作用。ActionScript 3.0为Flash提供强大的编程语言,简化了开发的过程。
(2)监听事件是在ActionScript3.0中对象间通信的主要方式,它们就是Flash中的对象所广播的消息,任何设置好侦听这些消息的对象都会接收到事件。事件模型主要包含三个概念:事件对象、事件流和事件侦听器。一般的事件侦听器代码如下:
事件接收对象.addEventListener(事件类,事件类型,事件处理函数);
Function事件处理函数(事件实例:事件类){//此处是为响应事件而执行的脚本}
这个结构包含了以下三个要点:首先,先要确认侦听的是什么事件;然后,要明确指出谁接收事件;最后,通过事件函数来处理接收事件后的情况。
(3)为了确定阴影部分是否与目标建筑重合,判断是否需要展现该目标的信息图像,在ActionScript3.0中有3种基本的碰撞检测的方法,分别是hitTestPoint()、hitTestObject()和BitmapData.hitTest()。在该系统中使用了hitTestObject方法来测试校园场景的各部分图像部件是否与鼠标(体验者的阴影)发生碰撞,其语法格式为:对象1.hitTestObject(对象2),检测对象1是否与对象2相互碰撞,如果发生碰撞则返回true,没有发生碰撞则返回false。可以根据体验者的移动即阴影部分的变化,控制系统及时显示建筑简介图像及语音介绍,实现互动体验。
(4)运行方式:在Flash CS6软件中进行系统开发,然后导出swf文件,利用地面投影系统自带的技术把swf文件转换成cmd文件,最后添加到地面互动投影系统中播放。
图2 校园全景的swf文件
(1)系统结构:
图3 校园全景地面互动系统结构图
本系统主要分成视频投影部分和互动功能实现两个主要部分,具体实现为:①在软件使用前会一直播放桂电校区的航拍制作的视频,同时用户可以在地面投影部分进行漫游互动;②通过触摸遮挡等交互选中某栋教学楼时,会弹出该教学楼所属学院的一些基本信息如专业、实验室等等;③通过语音交互来简介学院信息;④实现各类操作对用户的影响和场景变更等内在逻辑脚本部分,该脚本是由ActionScript语言编写,包括控制脚本、对象生成回收脚本、场景变更脚本、物理逻辑脚本和记录脚本;⑤还有就是课题中最重要的实现非接触地面互动投影的阴影控制部分。
(2)交互功能的实现:
FlashPlayer运行系统时可以侦听鼠标事件,执行场景切换及展现建筑的介绍图像操作。本系统是通过鼠标移动的控制方式实现。体验者阴影部分的控制功能等同于鼠标滑动。具体的实现是:首先摄像机来捕捉和采集参与者影像和动作数据。其次通过数据处理器处理收集的数据,实现参与者漫游的同步互动,分析和处理摄像机采集到的影像和动作数据,并把这些数据和处理器中原有数据进行合成处理。然后在把同步的互动效果投影到地面显示出来。
(3)互动漫游功能:
观众可以自由地在一块地面上进行漫游校园,以达到增强现实的效果。观众可以用脚踩,滑动手等遮挡红外线的方式,切换到不同的场景,场景内采用的是360度的真实照片,让观众有一种身临其境的感觉,其中教学楼、校道、绿化植物等都栩栩如生地呈现在观众的眼前。观众在选中教学楼时,可以获取学院的一些基本信息,甚至可以有语音交互功能,节省陪同人员的精力。
图4 图书馆简介效果展示
地面互动投影不需要任何外接设备就可以实现互动,它在交互时是不需要触碰到实物的,只要在地面上踩来踩去就可以进行互动,也可以把手伸到投影下,挥动手利用投下的阴影互动,这些都是不需要实物触摸的,这就是它交互方式的独特新颖性。它能营造出超现实的光影特效或者使体验者体验到主人公式的新奇体验,这是单纯的灯光和传统游戏无法实现的,让消费者身临其境,流连忘返。同时经过测试,基于Flash的脚本语言的校园全景导览系统运行稳定,具有操作简单、运行成本低、实现无人看守、交互式导览、自动语音解说功能,技术先进,互动方式新颖独特。带来的是长久的利益,而不是一时的新鲜热闹,对于社会创造更多的经济价值,带动整个行业的快速发展,可以进一步向商业应用发展,应用前景广阔!
[1]夏敏捷.Flash ActionScript3.0游戏设计[M].北京:清华大学出版社,2014.
[2]黎学坚.基于Flash Builder的魔法书互动投影系统的设计与实现[D].广州:华南理工大学,2012
[3]Christopher Griffith.实战Flash游戏开发(第2版)[M].北京:人民邮电出版社,2012.
[4]鲍豫鸿,王吉.基于人机交互技术的智能多媒体互动投影系统的开发和应用[J].哈尔滨:煤炭技术,2013.
[5]施灵佳,陈超群.一种互动投影装置[P].上海,2017.
[6]徐晓君.一种地面互动投影系统[P].上海,2012.
[7]Spuy,R.V.D.ActionScript 3.0游戏设计基础[M].北京:电子工业出版社,2013.
[8]熊智宇,凌云,邹立新.一种沉浸式互动投影系统[P].南昌,2017.
[9]Rosenzweig.G.ActionScript 3.0 Game Programming[M].北京:人民邮电出版社,2012.
[10]栾英博.智能图书馆中实景导航系统的研究与实现[D].北京:北京邮电大学,2014.