楊玉婷,康厚良
(1.昆明理工大學津橋學院 電氣與信息工程學院, 昆明 650000;2.云南經濟管理學院 人文藝術學院, 昆明 650000)
虛擬博物館通過把文物中承載的各種信息抽取出來,將傳統的靜態文物轉變為由聲音、圖像、文本等構成的數字化信息,并將其通過互聯網信息技術傳送到世界各地[1-2]。1996年,我國啟動國家數字圖書館工程,開始了文化資源的數字化進程[4-9]。國家數字圖書館研究主要采用仿真平臺,從增強用戶體驗和文物保護[10-13]的角度展開,但對于博物館中文物的展現方式卻少有涉及,仍以靜態圖片結合文字的展示方式為主[3]。隨著數字視頻處理、數字信息存儲技術的不斷發展,多媒體應用技術帶來的視覺和聽覺體驗為動態展現虛擬博物館中藏品的寓意及其背后的故事提供了重要方法。
因此,本文結合虛擬博物館的現有需求及對當前流行的數字媒體軟件的深入剖析,基于Unity3D游戲引擎設計并實現了能同時支持桌面環境(包括Windows系統、Mac OS系統和web瀏覽器)、移動設備的跨平臺輕量級數字多媒體組件,可將大量動態的、有形的、能反映或再現當時人們生產生活場景的記錄資料展示給參觀者,使參觀者能通過一種數字化靜態文物與動態影像結合的方式去了解文物中所包含的文化內涵。本文的設計在為參觀者提供一個良好的學習和交流平臺的同時,也提高了虛擬博物館的實用性、可理解性和可學習性。
數字多媒體組件的設計核心是使用一般化的設計模式方便用戶快速熟悉并使用。首先,建立了與數字多媒體組件相關聯的網絡多媒體數據庫,方便用戶快速獲取知識;其次,設計了支持本地和互聯網中文件的搜索及主流音、視頻格式文件播放的功能;然后,提供易于使用的對外集成接口,方便與各類虛擬博物館的匹配和集成;最后,通過組件良好的跨平臺性能滿足用戶隨時隨地通過任意硬件訪問虛擬博物館及知識學習的需求。
整個組件由用戶界面、文件瀏覽及搜索、數字媒體播放器這3個核心模塊組成。用戶界面是用戶與組件交互的媒介,設計時參考當前流行的數字媒體軟件的用戶界面特點,以方便用戶快速熟悉并使用。文件瀏覽及搜索模塊支持本地和互聯網中文件的搜索及主流音、視頻格式文件的解析和加載,并建立了與多媒體組件相關聯的東巴文化網絡資源庫。數字媒體播放器主要實現播放器面板控制、音/視頻文件的播放與暫停、快進、停止、音量調節及進度拖拽等功能。整個數字多媒體組件的系統結構如圖1所示。

圖1 數字多媒體組件的系統結構
播放界面是數字多媒體組件與用戶交互的主要方式。在界面設計的過程中,結合使用NGUI插件,除了突出“所見即所得”、界面簡潔、風格一致、顯示直觀形象等原則外,還與當前流行的播放軟件的界面設計特色保持一致,以方便用戶快速熟悉和使用。
NGUI(Next-Gen UI Kit)是嚴格遵循KISS (keep it simple,stupid) 原則并采用C#編寫的可靈活擴展的Unity 3D[14-17]插件,它提供了強大的UI系統和事件通知框架[18]。圖2顯示了系統中采用的核心按鈕圖片,圖3為使用NGUI插件實現的組件操作界面設計圖。

圖2 風格統一的按鈕樣式

圖3 基于NGUI的組件操作界面
數字多媒體組件的軟件部分不受使用平臺或硬件的限制,具有良好的跨平臺性,集成度高,可移植性強,支持在Windows桌面系統、主流Web瀏覽器及主流手機操作系統(安卓系統和iOS系統)上的運行,其核心模塊包括文件瀏覽和搜索模塊、數字媒體播放器模塊等。
文件瀏覽及搜索模塊支持對本地及互聯網中多媒體文件的搜索。為了方便用戶快速獲取相關知識,建立了與數字多媒體組件相關聯的網絡多媒體數據庫,從而為用戶提供更加豐富的學習資源。數字媒體播放器是搭載在數字多媒體組件上的輕量級播放器,支持當前主流音、視頻文件的解析、加載和播放。
文件瀏覽及搜索模塊支持本機文件及互聯網中在線視頻的搜索和播放。用戶可以通過播放列表按鈕指定本機或互聯網中要播放的數字媒體文件,然后由數字媒體播放器加載指定的文件并準備播放。
數字媒體播放器是數字多媒體組件中與用戶直接進行交互的核心模塊。為方便用戶快速了解及使用,它所提供的功能應與其他主流播放器保持一致。因此,視頻播放器的功能包括:視頻文件的初始化,視頻的播放/暫停、快進、停止、音量調節、進度拖拽、全屏播放及播放面板的顯示與隱藏功能等。
3.2.1 多媒體文件的初始化
多媒體文件的初始化工作包括視頻畫面和音效的加載、畫面和音效的同步及數據緩沖處理等。
3.2.2控制多媒體文件的播放/暫停、停止及快進
定義函數PlayButtons()用于管理多媒體文件的當前播放狀態,控制多媒體文件的播放/暫停、停止、快進/退和重新播放等,以及在進行相應操作時播放、暫停和停止按鈕圖標的切換。具體代碼如下:
public void PlayButtons()
{
//播放多媒體文件
if (UIButton.current.tweenTarget.name == "playButton")
{ //判斷多媒體文件是否正在播放
if (!movieFile.isPlaying)
{ movieFile.Play();
transform.audio.Play();
}
else //暫停播放
{ movieFile.Pause();
transform.audio.Pause();
}
}
//停止播放
if (UIButton.current.tweenTarget.name == "stopButton")
{ if (movieFile.isPlaying)
{ movieFile.Stop();
transform.audio.Stop();
}
}
…………
//控制多媒體文件的播放速度,取值范圍為-3~3。
//值越大,播放速度越快
public void PlaySpeed()
{ if (movieFile.isPlaying)
{ if (audioFile.pitch == originalSpeed)
audioFile.pitch = 1.5f; //1.5倍快進
else if (audioFile.pitch == 1.5f)
audioFile.pitch = 3f; //3倍快進
else //正常速度
audioFile.pitch = originalSpeed;
}
}
3.2.3 音量調節
音量調節提供了滑塊調節和靜音按鈕兩種調節方法。通過調節滑塊可實時調整音量的大小,也可通過靜音按鈕來關閉聲音。另外,當音量發生變化時可修改音量百分比,并根據聲音的當前狀態iSound修改音量的圖標。
3.2.4 進度拖拽
進度滑動塊決定了多媒體文件的播放進度。當用戶拖拽播放滑動塊時,將根據滑動塊當前位置計算對應的新的播放時間,實現播放進度的跳轉。播放滑動塊與播放進度的關系如下:

具體代碼如下:
void TimeControl()
{ e = Event.current;
if (e.isMouse) //當鼠標拖拽滑動塊
ftimeNow = playProgress.value;
else
{ if (strPlayState == "Play")
ftimeNow = ftimeNow + 1 * Time.de- ltaTime;
else if (strPlayState == "Stop")
ftimeNow = 0f;
playProgress.value = (ftimeNow / movieFile.duration);
}
}
3.2.5全屏播放及播放面板的顯示與隱藏
在NGUI中,要獲得當前屏幕的高度和寬度必須通過root的當前高度/屏幕高度的比例來計算,這樣才能使播放器在屏幕大小不同的設備中都能實現全屏顯示。
在多媒體文件的播放過程中,播放面板的隱藏能提高用戶的觀賞體驗。因此,若5 s內未檢測到鼠標或鍵盤事件,則隱藏面板;否則,顯示面板。播放面板的顯示和隱藏主要是通過面板的深度值來實現。當面板的深度值小于屏幕的深度時,面板被屏幕遮擋,得到隱藏的效果;否則,面板將顯示在屏幕之上,達到顯示的效果。
測試時,將數字多媒體組件集成到現有的東巴文化虛擬博物館中,使用戶可以通過歡迎界面快速訪問數字多媒體組件。系統測試主要是在桌面和移動平臺兩種環境中分別進行。
在桌面環境測試時,所使用的計算機硬件如下:CPU為Duo T6400 2 GHz×2,顯示卡為NVIDIA GeForce 9300M GS,RAM為2 GHz,操作系統為Windows 7,瀏覽器為360安全瀏覽器7。在移動平臺的測試時,手機為小米3電信版,硬件如下:CPU為MSM8674AB 2.3 GHz、RAM 為2 GB,操作系統為Android OS 4.2。
1) 數字多媒體組件與現有東巴文化虛擬博物館的集成效果。運行時,虛擬博物館可以窗口或全屏的方式運行。在虛擬博物館的歡迎界面中提供了訪問數字多媒體組件的快捷入口,方便用戶在進入虛擬博物館之前通過數字多媒體組件了解一些與東巴文化相關的知識。圖4顯示了虛擬博物館的啟動界面。
2) 測試桌面版數字多媒體組件播放本地視頻文件的效果。圖5顯示在播放過程中,可通過點擊任意鍵來顯示播放面板,也可以通過“播放列表”按鈕選擇或搜索播放其他視頻。

圖4 虛擬博物館的啟動界面

圖5 組件播放器的運行效果
使用360安全瀏覽器測試數字多媒體組件基于web的運行情況和效果。圖6顯示了通過“播放列表”按鈕查看正在播放以及過往播放過的視頻內容。圖7顯示了播放面板隱藏后的效果。由此可知,在桌面環境中和web瀏覽器中,數字多媒體組件的運行效果完全相同。

圖6 數字多媒體組件在瀏覽器中的運行效果

圖7 播放面板隱藏后的運行效果
在移動平臺上對數字多媒體組件的運行效果和運行流暢性進行測試,著重測試組件在不同硬件平臺上顯示的一致性,以及組件在移動設備中的自適應程度。圖8、9分別顯示了手機處于橫向和縱向時,數字多媒體組件的運行效果。
在虛擬博物館中,使用動態、有形的方式展示文化本身,除了能反映文物中所蘊含的文化精髓、還原文化生長的土壤之外,更能增強虛擬博物館本身的交互性和可學習性。因此,本文使用數字多媒體組件以動態的方式展示文化,讓參觀者能通過一種數字化靜態文物與動態影像結合的方式去了解文物中所包含的文化內涵,使更多的訪問者能通過虛擬博物館了解和學習文化的具體內容,發揮虛擬博物館在文化保護、傳承和發揚方面的巨大作用。
[1] 張秋蓮,李涵.360度全景展示在虛擬博物館中的應用探索[J].中國國家博物館館刊,2011(9):154-56.
[2] SYLAIOU S,LIAROKAPIS F,KOTSAKIS K,et al.Virtual museums,a survey and some issues for consideration[J].Journal of Cultural Heritage,2009(10):520-528.
[3] 卓么措.民族文化數字化保護與傳承研究[J].蘭臺世界,2012(12):95-96.
[4] 柯長青,馮學智,顧國琴.敦煌壁畫數字圖像的三維信息恢復[J].南京大學學報(自然科學版),2006,42(6):628-634.
[5] 段新昱,劉學莉,劉晨曦.虛擬殷虛博物苑的三維展示技術[J].系統仿真學報,2005,17(9):2187-2190.
[6] 鄭淳,尚濤.Vega Prime 環境下的古建筑虛擬現實系統[J].武漢大學學報(工學版),2006,39(2):83-87.
[7] 楊程,孫守遷,蘇煥.楚文化保護中編鐘樂舞的復原與展示[J].中國圖象圖形學報,2006,11(10):1474-1479.
[8] 胡少興,查紅彬,張愛武.大型古文物真三維數字化方法[J].系統仿真學報,2006,18(4):951-954,963.
[9] 楊安祺,殷耀文.秦鄭國渠數字文化遺產再現技術[J].陜西科技大學學報,2006,24(5):112-115.
[10] 胡遠志,潘華,凡沙沙.基于模塊化的約束系統高精度建模方法研究[J].重慶理工大學學報(自然科學),2017(7):1-11.
[11] 張超,魏三強,陳偉.一種基于螢火蟲算法的群體動畫行為控制仿真設計[J].重慶理工大學學報(自然科學),2017(1):100-106.
[12] 蔣偉杰.在線虛擬仿真實驗平臺架構設計與實現[J].重慶理工大學學報(自然科學),2017(12):156-159.
[13] 房勁,蒲剛清,劉貞.低碳示范城市情景仿真模型研究[J].重慶理工大學學報(自然科學),2016(9):66-72.
[14] Unity 3D.Unity Manual[EB/OL].(2015-07-21)[2018-02-01].http://docs.unity3d.com/Manual/.
[15] Wiki.Unity[EB/OL].( 2015-07-21)[2018-02-01].http://en.wikipedia.org/wiki/Unity3D.
[16] 陳俊鋒.基于Unity3D的跨平臺手機網絡游戲的研究與實現[D].廣州:中山大學,2013.
[17] SHANG H,ZHENG Y G.Empirical Research on the Present Situation of Online Game Industry[J].Reformation & Strategy,2009(25):166-169.
[18] NGUI.NGUI Document[EB/OL].(2015-07-20)[2018-02-01].http://www.tasharen.com/?page_id=140.