王晓丹,胡更生,陶玲君
(杭州电子科技大学数字媒体与艺术设计学院,浙江 杭州 310018)
基于IOS的虚拟家居漫游系统的设计与实现
王晓丹,胡更生,陶玲君
(杭州电子科技大学数字媒体与艺术设计学院,浙江 杭州 310018)
摘要:通过立方体全景图和视频的无缝拼接技术实现了基于IOS端的三维虚拟家居漫游系统.当服务器在网络数据请求次数比较多时,CDN网络技术将访问中心服务器的请求分配给最近或者最合理的边缘服务器,大幅降低用户的等待时间,有效地避免中心服务器访问拥堵问题.并且Web服务端通过HLS协议将整个视频流数据切成许多小的TS文件,向客户端提供接近实时的视频流服务.同时为了减少对服务器的访问次数,系统运用2种最近最少使用算法策略实现资源的本地缓存.最后采用苹果公司开发的GCD多线程编程方法同时进行房间全景图的渲染准备工作和房间过渡视频的下载.实验结果表明,当网络速度较慢时,客户端能较快地获取资源;系统运行效率较高,主线程不会出现阻塞的情况;房间场景过渡较自然,视觉感受比较流畅.
关键词:IOS;虚拟家居漫游;内容分发网络;HTTP流媒体直播;最近最少使用算法;多线程
0引言
虚拟漫游设计的难点在于建模的逼真度、绘制的实时性和人机交互控制.虚拟漫游系统从视觉、听觉和触觉为用户提供一个身临其境的虚拟空间,且主要以视觉为主.因此,对构建的模型精细度要求十分高.计算机消耗大量的运行时间来准确计算出光照位置、模型大小等影响视觉感受的其他因素.针对这个问题,一些比较复杂的模型通过3DSMAX,MAYA等相关软件来构建,然后再导入到相应的场景中.由这些软件得到的模型精细逼真、质感强.为了提高漫游系统实时绘制的速度,也会基于GPU编程或者用尽可能少的顶点表示模型等方式进行三维虚拟场景的逼真绘制.虚拟漫游的交互方式主要也是基于鼠标、头盔、眼镜等设备.例如,国防科技大学HVS系统采用多视点的方法实现用实景图像建立虚拟空间,为用户提供前进、后退、仰视、俯视、360°环视、近看、远看等漫游能力[1].文献[2]整合地理信息建立三维数字地理数据库,并提出了一个能够在iPad等智能移动设备上运行的虚拟航班行程.台湾大仁科技大学已实施了三维全景培训课程.研究中表明,引进的3D虚拟漫游系统在帮助导游服务过程中可以提高学生研究的有效性[3].文献[4]提出了文化遗址更有效的利用方式,市民不仅可以体验到旅游、营销等不同领域的互动,还可以将旅游道路下载到移动设备.这样市民就有机会更深入地探讨当地文化遗产.但是,大部分的虚拟漫游系统都是在PC端实现,可操作性较差,不够灵活.交互方式也比较单一,不能随时随地展示给用户.软件的制作成本和硬件的购买成本也相对偏高.
本文通过立方体全景图和视频的无缝拼接技术实现了基于IOS端的三维虚拟家居漫游系统.系统只需6张高清正方形图片,1个简单的立方体模型和几段过渡视频就可以实现1个虚拟漫游系统.软件制作和硬件成本十分低廉,系统操作简便,设备携带便捷,可以随时随地展示给用户.
1立方体全景图与视频的无缝拼接算法
多面体全景图中以立方体最为简单.由于使用90°的图片可能会在两张图片相邻处出现缝隙.因此本文中立方体全景图是由6张广角为92°的图片组成.多出的部分用来和相邻面重叠,重叠部分被遮挡.但中间的缝隙却被很好地填补了.
立方体各个面上对应点的坐标如下:
(1)
任意角度的视平面上任一点的观察坐标如下:
x″=xcosθcosφ-ysinθ+zcosθsinφ,
y″=xsinθcosφ+ycosθ+zsinθsinφ,
z″=zcosφ-xsinφ.
(2)
再根据式(2)得到对应的立方体各面上的对应点.
本系统采用视频无缝拼接技术,当要切换到下一个房间时,透视投影照相机先开始缓慢纠正垂直方向上的角度,直至视线与水平方向的夹角为0°.接着透视投影照相机继续缓慢旋转到视频开始帧所对应的场景位置,然后播放房间切换过渡视频.当视频播放结束时,可继续浏览下一房间.以此类推,完成虚拟家居漫游过程.
计算透视投影照相机在y轴所需要转到的视频开始/结束帧位置,首先,将水平方向的4张图标号为0~3号,确定视频所在初始位置在几号图(记为n)上后,计算该视频初始点位置中心点在这张图上的纹理坐标,在PhotoShop中打开这张图,计算这点到图像左边缘像素距离与图像宽度像素比得u轴纹理坐标(记为utc).将n加到纹理坐标上,得到(n+utc)记为u读入程序,使用时将u取整,得到该点在第n张图上剩下的小数t,与0.5比较大小,t>0.5为右半边,记fsign=1.反之记为左半边,fsign=-1.这样就可以确定场景是向左还是向右开始纠正旋转角度.再由相机到图像中心点连线与相机到初始点连线的夹角a,通过对边与邻边的比得到正切值.通过反正切运算得到该角的弧度值并转化为为角度值,由于反正切值的范围在(-π/2,π/2),加90°保证正数,再加上n个90°,得到从y轴旋转零点到视频初始位置中心z点需要旋转的角度(记为θstartAngle),计算如下:
(3)
当点击按钮时,得到相机当前的y轴旋转值,与θstartAngle相减,便可得到具体的旋转值.
2系统主要功能的设计与实现
2.1IOS漫游系统的特性
IOS操作系统的体系架构相对较为传统,运行效率高,对硬件的要求低.应用运行具有很好的顺畅感,也更加省电.IOS是UNIX系统,因此在软件安全性方面会相对较好.IOS系统利用沙盒技术将每个应用程序的数据隔离出来,实现数据访问控制以保证软件运行的安全性.
与普通电脑桌面虚拟漫游不同的是,基于IOS的漫游系统在操作上比较便捷,人机交互只需利用设备的触屏功能就能完成虚拟漫游.
2.2服务器端主要功能设计与实现
由于本系统中使用了大量的图片和视频资源,在网络的稳定性相对较差的情况下,网络路径会造成拥塞.针对这个问题,本系统使用CDN网络技术[5]和HLS协议[6]来提高数据的加载速度.
为了方便系统设计与实现,且在现实中已经有专业的公司解决了这方面的需求.因此,在本系统中直接使用了相关公司的技术.
2.3客户端主要功能设计与实现
2.3.1客户端资源的访问处理
客户端的过多请求会造成网络堵塞,甚至服务器的瘫痪.因此,客户端通过LRU算法[7]缓存一部分资源来降低网络请求次数.
由于本系统在设计时会有不同风格的家居漫游,且家居漫游主要通过房间的切换来实现.因此本文主要采取2种策略来实现本地缓存.
1)用户行为策略.当用户选中一种家居风格,最先进入的房间记录为起始点.系统在设计时,默认每进入一个房间之后都会直接返回起始点.因此,起始点的访问频率会很高.起始点的图片、视频和文字等资源直接被缓存到本地.在缓存其他房间的资源时,也会根据用户行为策略来决定是否缓存资源.
(1)房间访问时间.根据相关实验结果显示,当用户访问时间t>20 s时,表示用户的喜欢程度相对较高.因此会自动缓存房间场景的资源,并设置房间等级为喜欢.
(2)访问频率.当访问次数h≥2,自动缓存房间场景资源,并更新访问次数.
2)时间策略.针对不同风格的家居环境,当从一个风格切换到另一风格,本系统中,本地只会缓存上一个家居风格的起始点资源,并清空访问次数和房间等级所有数据.当时间t>10 min,本地自动清除资源.
2.3.2视频播放与场景渲染的多线程处理
多线程不仅可以提高程序的运行速度,还利于释放一些珍贵的内存资源.由于大部分资源需要从互联网下载,因此需要增加资源下载请求线程来提高程序的并发性.例如每个房间切换时,预先向服务器请求将要展示的房间场景的资源.当播放房间切换视频时进行下一个房间的场景渲染.如果视频播放结束,立即提交渲染结果.这样可以有效地改善房间切换的视觉流畅性.文献[8]实现多线程编程的GCD技术.在IOS系统的多线程技术中,GCD多线程技术[9]是效率和性能最出色,同时又是最易用的技术.
3实验结果与分析
1)立方体全景图无缝拼接算法.
表1 房间场景渲染时间
测试不同型号苹果手机每次渲染房间场景所需时间.首先,准备不同型号的苹果手机,在Xcode开发工具的控制台上,分别打印出开始执行渲染时间T1和结束渲染时间T2,然后,计算出T1和T2的时间差,得出并记录场景渲染所需时间T.不同的设备机型,房间场景的渲染时间各不相同,如表1所示.
由此可见,虽然在不同机型上的场景渲染时间各不相同,但是相差不多,时间差几乎可以忽略不计.立方体模型基本可以在苹果手机上实现实时绘制,且立方体全景图完全能够无缝拼接起来.因此,此算法在模型实时绘制方面具有较好的效率性.
2)视频无缝拼接算法.
测试不同型号苹果手机在视频过渡时,每个房间场景要纠正的旋转角度.首先,准备不同型号的苹果手机,在PhotoShop中打开视频所在初始位置的图片,计算该视频初始点位置中心点到图像左边缘像素距离与图像宽度像素比的纹理坐标,再根据相关公式计算出要纠正的水平旋转角度,在相关代码中设定每秒需要纠正的角度,直至旋转到视频开始的位置.
视频过渡时的旋转角度值如表2所示.不同的视频开始或者结束帧位置P的数值是纹理坐标归一化后的数据.根据式(3)计算出视频旋转角度值θ1.当程序运行时,Xcode控制台自动打印出相机旋转的角度值θ2和实际纠正的旋转角度值θ4.将视频旋转角度值θ1与相机旋转的角度值θ2相减,即可得需要纠正的旋转角度值θ3.若θ1值大于360°时,则计算θ3值后需要减去360°,将θ3值控制在0°~360°之间.θ5为需要纠正的旋转角度值θ3与实际纠正的旋转角度值θ4的误差值.
表2 视频过渡时的旋转角度值
由表2中的数据可以看出,需要纠正的旋转角度值θ3与实际纠正的旋转角度值θ4相差不多.纠正的旋转角度误差值θ5基本维持在5°左右,在视频过渡时肉眼不容易察觉.
以表2中的第一行数据为例,场景实际纠正旋转角度后的位置和过渡视频开始帧的位置如图1和图2所示.
图1 房间场景渲染效果图
图2 房间过渡视频效果图
从图1与图2中发现,通过公式计算纠正的旋转角度位置基本和视频开始播放的位置一致.因此,本文算法在计算需要纠正的旋转角度时具有较好的准确性.其次,为了保证当房间场景过渡到视频时视觉上不会太突然,旋转角度纠正速度必须和视频的播放速度一致.
4结束语
本文实现了在IOS端的虚拟家居漫游系统,主要解决了3个方面的问题:用户视觉和操作体验的流畅性、资源下载等待时间、程序的运行效率.经测试,系统较好地展示了三维虚拟家居漫游在IOS端的真实性和流畅性.系统不仅满足了用户家居装潢需求,而且减少了用户的装修成本.但是还有许多不足之处,如用户还不能下载自己喜欢的家居系列,6张纹理图片的制作不能直接利用相机实地拍摄,用户无法分享自己喜欢的家居系列等,这是今后系统需要进一步完善的主要工作之一.
参考文献
[1]张茂军,钟力,孙立峰,等.虚拟实景空间系统HVS的研究与实现[J].计算机工程,1999,25(7):54-57.
[2]GONZALEZ-DELGADO J A.Virtual 3D tour of the Neogene palaeontological heritage of Huelva[J].Environmental Earth Sciences,2015,73(8):4609-4618.
[3]TSENG S P,HUANG M W,LIU H J,et al.A Virtual Reality Based Training System for Cultural Tourism[M]//Advances in Web-Based Learning-ICWL 2013 Workshops. Berlin:Springer Berlin Heidelberg, 2013:272-277.
[4]ILARDI C G E.The “Non-Places” Meet the “Places:” Virtual Tours on Smartphones for the Enhancement of Cultural Heritage[J].Journal of Urban Technology,2014,21(1):77-89.
[5]徐悦.构建大型CDN网络的关键技术研究[D].北京:北京邮电大学,2008.
[6]罗淑贞,耿恒山,徐祥男,等.基于HLS协议的流媒体直播系统的研究和改进[J].郑州大学学报(工学版),2014,35(5):36-39.
[7]王亚美,鲁田.基于OpenGLES的二三维地图可视化客户端设计与实现[J].计算机应用与软件,2013,30(9):77-80.
[8]胡扬帆,杨刚,胡颢石.结合LBS和信息推送的博物馆APP的设计实现[J].计算机应用与软件,2013,30(12):108-112.
[9]Apple Inc.iOS Developer Library[EB/OL].[2015-08-25].http://developer.apple.com/library.
The Design and Implementation of Virtual Household Roaming System Based on IOS
WANG Xiaodan, HU Gengsheng, TAO Lingjun
(SchoolofDigitalMediaandDesign,HangzhouDianziUniversity,HangzhouZhejiang310018,China)
Abstract:The 3D virtual home roaming system, based on the IOS, that mainly through the cube panorama and video seamless splicing technology. When the number of server request is large, the CDN network technology will assign the center server’s request to the nearest or the most reasonable edge server, it can reduce user’s waiting time greatly and avoid center server to congest effectively. To provide the real-time video streaming service, Web server cut the whole video stream into many small TS files by HLS protocol. And the system uses two kinds of LRU algorithm to cache the pictures and videos into the local that will reduce the number of server’s visiting. Finally, prepare the room panorama rendering when the room transition video is downloading or playing by the GCD multithreaded programming method of apple’s development. The results show that the system can get resource fast when the speed of the network is slow. And the code efficiency is high. It will not happen to block the main thread. The room scene transition and visual experience are relatively smooth.
Key words:IOS; virtual home roaming; content delivery network; HTTP live streaming; least recently used algorithm; multithreading
DOI:10.13954/j.cnki.hdu.2016.02.014
收稿日期:2015-08-10
作者简介:王晓丹(1990-),女,浙江杭州人,硕士研究生,数字媒体技术.通信作者:胡更生教授,E-mail:hu702702@163.com.
中图分类号:TP31
文献标识码:A
文章编号:1001-9146(2016)02-0067-05