王曉丹,胡更生,陶玲君
(杭州電子科技大學(xué)數(shù)字媒體與藝術(shù)設(shè)計學(xué)院,浙江 杭州 310018)
?
基于IOS的虛擬家居漫游系統(tǒng)的設(shè)計與實(shí)現(xiàn)
王曉丹,胡更生,陶玲君
(杭州電子科技大學(xué)數(shù)字媒體與藝術(shù)設(shè)計學(xué)院,浙江 杭州 310018)
摘要:通過立方體全景圖和視頻的無縫拼接技術(shù)實(shí)現(xiàn)了基于IOS端的三維虛擬家居漫游系統(tǒng).當(dāng)服務(wù)器在網(wǎng)絡(luò)數(shù)據(jù)請求次數(shù)比較多時,CDN網(wǎng)絡(luò)技術(shù)將訪問中心服務(wù)器的請求分配給最近或者最合理的邊緣服務(wù)器,大幅降低用戶的等待時間,有效地避免中心服務(wù)器訪問擁堵問題.并且Web服務(wù)端通過HLS協(xié)議將整個視頻流數(shù)據(jù)切成許多小的TS文件,向客戶端提供接近實(shí)時的視頻流服務(wù).同時為了減少對服務(wù)器的訪問次數(shù),系統(tǒng)運(yùn)用2種最近最少使用算法策略實(shí)現(xiàn)資源的本地緩存.最后采用蘋果公司開發(fā)的GCD多線程編程方法同時進(jìn)行房間全景圖的渲染準(zhǔn)備工作和房間過渡視頻的下載.實(shí)驗(yàn)結(jié)果表明,當(dāng)網(wǎng)絡(luò)速度較慢時,客戶端能較快地獲取資源;系統(tǒng)運(yùn)行效率較高,主線程不會出現(xiàn)阻塞的情況;房間場景過渡較自然,視覺感受比較流暢.
關(guān)鍵詞:IOS;虛擬家居漫游;內(nèi)容分發(fā)網(wǎng)絡(luò);HTTP流媒體直播;最近最少使用算法;多線程
0引言
虛擬漫游設(shè)計的難點(diǎn)在于建模的逼真度、繪制的實(shí)時性和人機(jī)交互控制.虛擬漫游系統(tǒng)從視覺、聽覺和觸覺為用戶提供一個身臨其境的虛擬空間,且主要以視覺為主.因此,對構(gòu)建的模型精細(xì)度要求十分高.計算機(jī)消耗大量的運(yùn)行時間來準(zhǔn)確計算出光照位置、模型大小等影響視覺感受的其他因素.針對這個問題,一些比較復(fù)雜的模型通過3DSMAX,MAYA等相關(guān)軟件來構(gòu)建,然后再導(dǎo)入到相應(yīng)的場景中.由這些軟件得到的模型精細(xì)逼真、質(zhì)感強(qiáng).為了提高漫游系統(tǒng)實(shí)時繪制的速度,也會基于GPU編程或者用盡可能少的頂點(diǎn)表示模型等方式進(jìn)行三維虛擬場景的逼真繪制.虛擬漫游的交互方式主要也是基于鼠標(biāo)、頭盔、眼鏡等設(shè)備.例如,國防科技大學(xué)HVS系統(tǒng)采用多視點(diǎn)的方法實(shí)現(xiàn)用實(shí)景圖像建立虛擬空間,為用戶提供前進(jìn)、后退、仰視、俯視、360°環(huán)視、近看、遠(yuǎn)看等漫游能力[1].文獻(xiàn)[2]整合地理信息建立三維數(shù)字地理數(shù)據(jù)庫,并提出了一個能夠在iPad等智能移動設(shè)備上運(yùn)行的虛擬航班行程.臺灣大仁科技大學(xué)已實(shí)施了三維全景培訓(xùn)課程.研究中表明,引進(jìn)的3D虛擬漫游系統(tǒng)在幫助導(dǎo)游服務(wù)過程中可以提高學(xué)生研究的有效性[3].文獻(xiàn)[4]提出了文化遺址更有效的利用方式,市民不僅可以體驗(yàn)到旅游、營銷等不同領(lǐng)域的互動,還可以將旅游道路下載到移動設(shè)備.這樣市民就有機(jī)會更深入地探討當(dāng)?shù)匚幕z產(chǎn).但是,大部分的虛擬漫游系統(tǒng)都是在PC端實(shí)現(xiàn),可操作性較差,不夠靈活.交互方式也比較單一,不能隨時隨地展示給用戶.軟件的制作成本和硬件的購買成本也相對偏高.
本文通過立方體全景圖和視頻的無縫拼接技術(shù)實(shí)現(xiàn)了基于IOS端的三維虛擬家居漫游系統(tǒng).系統(tǒng)只需6張高清正方形圖片,1個簡單的立方體模型和幾段過渡視頻就可以實(shí)現(xiàn)1個虛擬漫游系統(tǒng).軟件制作和硬件成本十分低廉,系統(tǒng)操作簡便,設(shè)備攜帶便捷,可以隨時隨地展示給用戶.
1立方體全景圖與視頻的無縫拼接算法
多面體全景圖中以立方體最為簡單.由于使用90°的圖片可能會在兩張圖片相鄰處出現(xiàn)縫隙.因此本文中立方體全景圖是由6張廣角為92°的圖片組成.多出的部分用來和相鄰面重疊,重疊部分被遮擋.但中間的縫隙卻被很好地填補(bǔ)了.
立方體各個面上對應(yīng)點(diǎn)的坐標(biāo)如下:
(1)
任意角度的視平面上任一點(diǎn)的觀察坐標(biāo)如下:
x″=xcosθcosφ-ysinθ+zcosθsinφ,
y″=xsinθcosφ+ycosθ+zsinθsinφ,
z″=zcosφ-xsinφ.
(2)
再根據(jù)式(2)得到對應(yīng)的立方體各面上的對應(yīng)點(diǎn).
本系統(tǒng)采用視頻無縫拼接技術(shù),當(dāng)要切換到下一個房間時,透視投影照相機(jī)先開始緩慢糾正垂直方向上的角度,直至視線與水平方向的夾角為0°.接著透視投影照相機(jī)繼續(xù)緩慢旋轉(zhuǎn)到視頻開始幀所對應(yīng)的場景位置,然后播放房間切換過渡視頻.當(dāng)視頻播放結(jié)束時,可繼續(xù)瀏覽下一房間.以此類推,完成虛擬家居漫游過程.
計算透視投影照相機(jī)在y軸所需要轉(zhuǎn)到的視頻開始/結(jié)束幀位置,首先,將水平方向的4張圖標(biāo)號為0~3號,確定視頻所在初始位置在幾號圖(記為n)上后,計算該視頻初始點(diǎn)位置中心點(diǎn)在這張圖上的紋理坐標(biāo),在PhotoShop中打開這張圖,計算這點(diǎn)到圖像左邊緣像素距離與圖像寬度像素比得u軸紋理坐標(biāo)(記為utc).將n加到紋理坐標(biāo)上,得到(n+utc)記為u讀入程序,使用時將u取整,得到該點(diǎn)在第n張圖上剩下的小數(shù)t,與0.5比較大小,t>0.5為右半邊,記fsign=1.反之記為左半邊,fsign=-1.這樣就可以確定場景是向左還是向右開始糾正旋轉(zhuǎn)角度.再由相機(jī)到圖像中心點(diǎn)連線與相機(jī)到初始點(diǎn)連線的夾角a,通過對邊與鄰邊的比得到正切值.通過反正切運(yùn)算得到該角的弧度值并轉(zhuǎn)化為為角度值,由于反正切值的范圍在(-π/2,π/2),加90°保證正數(shù),再加上n個90°,得到從y軸旋轉(zhuǎn)零點(diǎn)到視頻初始位置中心z點(diǎn)需要旋轉(zhuǎn)的角度(記為θstartAngle),計算如下:
(3)
當(dāng)點(diǎn)擊按鈕時,得到相機(jī)當(dāng)前的y軸旋轉(zhuǎn)值,與θstartAngle相減,便可得到具體的旋轉(zhuǎn)值.
2系統(tǒng)主要功能的設(shè)計與實(shí)現(xiàn)
2.1IOS漫游系統(tǒng)的特性
IOS操作系統(tǒng)的體系架構(gòu)相對較為傳統(tǒng),運(yùn)行效率高,對硬件的要求低.應(yīng)用運(yùn)行具有很好的順暢感,也更加省電.IOS是UNIX系統(tǒng),因此在軟件安全性方面會相對較好.IOS系統(tǒng)利用沙盒技術(shù)將每個應(yīng)用程序的數(shù)據(jù)隔離出來,實(shí)現(xiàn)數(shù)據(jù)訪問控制以保證軟件運(yùn)行的安全性.
與普通電腦桌面虛擬漫游不同的是,基于IOS的漫游系統(tǒng)在操作上比較便捷,人機(jī)交互只需利用設(shè)備的觸屏功能就能完成虛擬漫游.
2.2服務(wù)器端主要功能設(shè)計與實(shí)現(xiàn)
由于本系統(tǒng)中使用了大量的圖片和視頻資源,在網(wǎng)絡(luò)的穩(wěn)定性相對較差的情況下,網(wǎng)絡(luò)路徑會造成擁塞.針對這個問題,本系統(tǒng)使用CDN網(wǎng)絡(luò)技術(shù)[5]和HLS協(xié)議[6]來提高數(shù)據(jù)的加載速度.
為了方便系統(tǒng)設(shè)計與實(shí)現(xiàn),且在現(xiàn)實(shí)中已經(jīng)有專業(yè)的公司解決了這方面的需求.因此,在本系統(tǒng)中直接使用了相關(guān)公司的技術(shù).
2.3客戶端主要功能設(shè)計與實(shí)現(xiàn)
2.3.1客戶端資源的訪問處理
客戶端的過多請求會造成網(wǎng)絡(luò)堵塞,甚至服務(wù)器的癱瘓.因此,客戶端通過LRU算法[7]緩存一部分資源來降低網(wǎng)絡(luò)請求次數(shù).
由于本系統(tǒng)在設(shè)計時會有不同風(fēng)格的家居漫游,且家居漫游主要通過房間的切換來實(shí)現(xiàn).因此本文主要采取2種策略來實(shí)現(xiàn)本地緩存.
1)用戶行為策略.當(dāng)用戶選中一種家居風(fēng)格,最先進(jìn)入的房間記錄為起始點(diǎn).系統(tǒng)在設(shè)計時,默認(rèn)每進(jìn)入一個房間之后都會直接返回起始點(diǎn).因此,起始點(diǎn)的訪問頻率會很高.起始點(diǎn)的圖片、視頻和文字等資源直接被緩存到本地.在緩存其他房間的資源時,也會根據(jù)用戶行為策略來決定是否緩存資源.
(1)房間訪問時間.根據(jù)相關(guān)實(shí)驗(yàn)結(jié)果顯示,當(dāng)用戶訪問時間t>20 s時,表示用戶的喜歡程度相對較高.因此會自動緩存房間場景的資源,并設(shè)置房間等級為喜歡.
(2)訪問頻率.當(dāng)訪問次數(shù)h≥2,自動緩存房間場景資源,并更新訪問次數(shù).
2)時間策略.針對不同風(fēng)格的家居環(huán)境,當(dāng)從一個風(fēng)格切換到另一風(fēng)格,本系統(tǒng)中,本地只會緩存上一個家居風(fēng)格的起始點(diǎn)資源,并清空訪問次數(shù)和房間等級所有數(shù)據(jù).當(dāng)時間t>10 min,本地自動清除資源.
2.3.2視頻播放與場景渲染的多線程處理
多線程不僅可以提高程序的運(yùn)行速度,還利于釋放一些珍貴的內(nèi)存資源.由于大部分資源需要從互聯(lián)網(wǎng)下載,因此需要增加資源下載請求線程來提高程序的并發(fā)性.例如每個房間切換時,預(yù)先向服務(wù)器請求將要展示的房間場景的資源.當(dāng)播放房間切換視頻時進(jìn)行下一個房間的場景渲染.如果視頻播放結(jié)束,立即提交渲染結(jié)果.這樣可以有效地改善房間切換的視覺流暢性.文獻(xiàn)[8]實(shí)現(xiàn)多線程編程的GCD技術(shù).在IOS系統(tǒng)的多線程技術(shù)中,GCD多線程技術(shù)[9]是效率和性能最出色,同時又是最易用的技術(shù).
3實(shí)驗(yàn)結(jié)果與分析
1)立方體全景圖無縫拼接算法.
表1 房間場景渲染時間
測試不同型號蘋果手機(jī)每次渲染房間場景所需時間.首先,準(zhǔn)備不同型號的蘋果手機(jī),在Xcode開發(fā)工具的控制臺上,分別打印出開始執(zhí)行渲染時間T1和結(jié)束渲染時間T2,然后,計算出T1和T2的時間差,得出并記錄場景渲染所需時間T.不同的設(shè)備機(jī)型,房間場景的渲染時間各不相同,如表1所示.
由此可見,雖然在不同機(jī)型上的場景渲染時間各不相同,但是相差不多,時間差幾乎可以忽略不計.立方體模型基本可以在蘋果手機(jī)上實(shí)現(xiàn)實(shí)時繪制,且立方體全景圖完全能夠無縫拼接起來.因此,此算法在模型實(shí)時繪制方面具有較好的效率性.
2)視頻無縫拼接算法.
測試不同型號蘋果手機(jī)在視頻過渡時,每個房間場景要糾正的旋轉(zhuǎn)角度.首先,準(zhǔn)備不同型號的蘋果手機(jī),在PhotoShop中打開視頻所在初始位置的圖片,計算該視頻初始點(diǎn)位置中心點(diǎn)到圖像左邊緣像素距離與圖像寬度像素比的紋理坐標(biāo),再根據(jù)相關(guān)公式計算出要糾正的水平旋轉(zhuǎn)角度,在相關(guān)代碼中設(shè)定每秒需要糾正的角度,直至旋轉(zhuǎn)到視頻開始的位置.
視頻過渡時的旋轉(zhuǎn)角度值如表2所示.不同的視頻開始或者結(jié)束幀位置P的數(shù)值是紋理坐標(biāo)歸一化后的數(shù)據(jù).根據(jù)式(3)計算出視頻旋轉(zhuǎn)角度值θ1.當(dāng)程序運(yùn)行時,Xcode控制臺自動打印出相機(jī)旋轉(zhuǎn)的角度值θ2和實(shí)際糾正的旋轉(zhuǎn)角度值θ4.將視頻旋轉(zhuǎn)角度值θ1與相機(jī)旋轉(zhuǎn)的角度值θ2相減,即可得需要糾正的旋轉(zhuǎn)角度值θ3.若θ1值大于360°時,則計算θ3值后需要減去360°,將θ3值控制在0°~360°之間.θ5為需要糾正的旋轉(zhuǎn)角度值θ3與實(shí)際糾正的旋轉(zhuǎn)角度值θ4的誤差值.
表2 視頻過渡時的旋轉(zhuǎn)角度值
由表2中的數(shù)據(jù)可以看出,需要糾正的旋轉(zhuǎn)角度值θ3與實(shí)際糾正的旋轉(zhuǎn)角度值θ4相差不多.糾正的旋轉(zhuǎn)角度誤差值θ5基本維持在5°左右,在視頻過渡時肉眼不容易察覺.
以表2中的第一行數(shù)據(jù)為例,場景實(shí)際糾正旋轉(zhuǎn)角度后的位置和過渡視頻開始幀的位置如圖1和圖2所示.
圖1 房間場景渲染效果圖
圖2 房間過渡視頻效果圖
從圖1與圖2中發(fā)現(xiàn),通過公式計算糾正的旋轉(zhuǎn)角度位置基本和視頻開始播放的位置一致.因此,本文算法在計算需要糾正的旋轉(zhuǎn)角度時具有較好的準(zhǔn)確性.其次,為了保證當(dāng)房間場景過渡到視頻時視覺上不會太突然,旋轉(zhuǎn)角度糾正速度必須和視頻的播放速度一致.
4結(jié)束語
本文實(shí)現(xiàn)了在IOS端的虛擬家居漫游系統(tǒng),主要解決了3個方面的問題:用戶視覺和操作體驗(yàn)的流暢性、資源下載等待時間、程序的運(yùn)行效率.經(jīng)測試,系統(tǒng)較好地展示了三維虛擬家居漫游在IOS端的真實(shí)性和流暢性.系統(tǒng)不僅滿足了用戶家居裝潢需求,而且減少了用戶的裝修成本.但是還有許多不足之處,如用戶還不能下載自己喜歡的家居系列,6張紋理圖片的制作不能直接利用相機(jī)實(shí)地拍攝,用戶無法分享自己喜歡的家居系列等,這是今后系統(tǒng)需要進(jìn)一步完善的主要工作之一.
參考文獻(xiàn)
[1]張茂軍,鐘力,孫立峰,等.虛擬實(shí)景空間系統(tǒng)HVS的研究與實(shí)現(xiàn)[J].計算機(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]徐悅.構(gòu)建大型CDN網(wǎng)絡(luò)的關(guān)鍵技術(shù)研究[D].北京:北京郵電大學(xué),2008.
[6]羅淑貞,耿恒山,徐祥男,等.基于HLS協(xié)議的流媒體直播系統(tǒng)的研究和改進(jìn)[J].鄭州大學(xué)學(xué)報(工學(xué)版),2014,35(5):36-39.
[7]王亞美,魯田.基于OpenGLES的二三維地圖可視化客戶端設(shè)計與實(shí)現(xiàn)[J].計算機(jī)應(yīng)用與軟件,2013,30(9):77-80.
[8]胡揚(yáng)帆,楊剛,胡顥石.結(jié)合LBS和信息推送的博物館APP的設(shè)計實(shí)現(xiàn)[J].計算機(jī)應(yīng)用與軟件,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-),女,浙江杭州人,碩士研究生,數(shù)字媒體技術(shù).通信作者:胡更生教授,E-mail:hu702702@163.com.
中圖分類號:TP31
文獻(xiàn)標(biāo)識碼:A
文章編號:1001-9146(2016)02-0067-05