張春明 楊天鴻 鄭東純
摘要:闡述了相較于主動立體技術(shù),被動立體虛擬現(xiàn)實(shí)應(yīng)用系統(tǒng)在立體展現(xiàn)方面的獨(dú)到優(yōu)勢,并針對構(gòu)建基于被動立體技術(shù)的多通道虛擬現(xiàn)實(shí)應(yīng)用系統(tǒng)過程中的各種問題進(jìn)行研究,最后給出了相應(yīng)的解決方案,包括多通道被動立體虛擬現(xiàn)實(shí)應(yīng)用軟件的開發(fā)要點(diǎn)與需要特別注意的事項(xiàng)。
關(guān)鍵詞:虛擬現(xiàn)實(shí);被動立體;應(yīng)用系統(tǒng);開發(fā)
中圖分類號:G642? ? ? 文獻(xiàn)標(biāo)識碼:A
1 虛擬現(xiàn)實(shí)應(yīng)用系統(tǒng)開發(fā)方法綜述
虛擬現(xiàn)實(shí)(VR)是指將現(xiàn)實(shí)和虛擬相互結(jié)合,把現(xiàn)實(shí)中真實(shí)存在的物體和現(xiàn)實(shí)中不存在或肉眼看不到的物體(虛擬)用三維模型表現(xiàn)出來,再通過計(jì)算機(jī)仿真系統(tǒng)模擬出來一個虛擬的世界,人通過顯示設(shè)備或帶有頭部跟蹤器的立體顯示器(HMD頭盔)可在其中漫游,并與之互動,使人有一種身臨其境的感覺。虛擬現(xiàn)實(shí)應(yīng)用系統(tǒng)是指將虛擬現(xiàn)實(shí)技術(shù)應(yīng)用到各個行業(yè)領(lǐng)域所構(gòu)成的應(yīng)用系統(tǒng)。目前市面上有專為開發(fā)虛擬現(xiàn)實(shí)、科學(xué)仿真、計(jì)算可視化等高性能圖形應(yīng)用程序而設(shè)計(jì)的虛擬現(xiàn)實(shí)軟件開發(fā)平臺,能夠方便快速地創(chuàng)建跨平臺的高性能交互式虛擬現(xiàn)實(shí)應(yīng)用程序(系統(tǒng)),如OSG、Vizard和U3D等可視化虛擬現(xiàn)實(shí)開發(fā)平臺。利用此類可視化開發(fā)平臺可減少在編寫源代碼上花費(fèi)的時間,以便集中精力解決專業(yè)問題。筆者最終采用傳統(tǒng)編程語言與中視典數(shù)字科技有限公司的VRP虛擬現(xiàn)實(shí)軟件開發(fā)平臺相結(jié)合的方法,發(fā)揮其各自優(yōu)勢,是虛擬現(xiàn)實(shí)應(yīng)用系統(tǒng)開發(fā)的一次有益嘗試。
2 虛擬現(xiàn)實(shí)應(yīng)用系統(tǒng)采用被動立體技術(shù)的優(yōu)勢
虛擬現(xiàn)實(shí)開發(fā)平臺支持主動立體技術(shù)和被動立體技術(shù),兩種立體顯示技術(shù)比各有優(yōu)缺點(diǎn)。偏光式被動立體是電影院放映3D電影普遍采用的技術(shù),除了要求特制的金屬幕外,只需普通投影機(jī)加上偏振片即可。而之所以最終采用被動立體顯示模式,一個重要因素就是在二次開發(fā)等特殊場合,被動立體技術(shù)也有著主動立體技術(shù)無法匹敵的一些優(yōu)勢,比如:現(xiàn)階段主動立體顯示模式仍存在一些固有的弊端,如Windows對話框和其他界面元素被信號刷新頻率達(dá)120Hz的立體視頻畫面所遮擋而無法正常顯示,也就無法實(shí)現(xiàn)人機(jī)交互等。盡管立體模式下可以正常使用VRP平臺本身的界面元素,但VRP平臺除立體功能以外,在數(shù)據(jù)庫和報表等功能上十分有限。因此,筆者采用C#等通用程序設(shè)計(jì)語言實(shí)現(xiàn)VRP平臺本身不具備的與行業(yè)應(yīng)用有關(guān)的軟件功能,再通過VRP-SDK二次開發(fā)包提供的C#開發(fā)接口,在C#語言程序中調(diào)用VRP功能,以實(shí)現(xiàn)更為逼真的立體效果(目前只支持被動立體模式)。正是考慮上面談到的幾個因素,才促使筆者采用一種變通方法,即采用被動立體技術(shù)實(shí)現(xiàn)虛擬現(xiàn)實(shí)應(yīng)用軟件的立體顯示,而且所有Windows對話框和界面元素均可正常顯示。
3 關(guān)于基于被動立體技術(shù)開發(fā)多通道虛擬現(xiàn)實(shí)應(yīng)用系統(tǒng)的研究
不失一般性,本文以雙通道為例介紹了多通道被動立體虛擬現(xiàn)實(shí)應(yīng)用系統(tǒng)的開發(fā)過程。
3.1 多通道被動立體虛擬現(xiàn)實(shí)系統(tǒng)硬件構(gòu)成及配置方法
硬件組成:架設(shè)的被動立體系統(tǒng)硬件包括一塊金屬大屏幕、兩臺VRP工作站 (配置完全相同的主機(jī))、一臺視頻矩陣、兩臺融合機(jī)和四臺被動立體投影機(jī)和兩臺監(jiān)視器,并通過交換機(jī)連接成一個內(nèi)部網(wǎng)絡(luò)。矩陣切換器的輸入與VRP工作站相連,輸出與融合機(jī)相連,最后將經(jīng)融合機(jī)融合后的立體信號輸出到對應(yīng)的投影機(jī)。
融合機(jī)設(shè)置:融合機(jī)采用上海交大的Media Master融合機(jī)產(chǎn)品,左右通道畫面在融合機(jī)內(nèi)部融合后分別輸出到相應(yīng)的投影機(jī)上,供左眼或右眼觀看。兩臺融合機(jī)的IP地址分別為192.168.0.160/161(分別用于控制上方/下方的2臺投影機(jī)),其上運(yùn)行的Media Master播放端軟件顯示的內(nèi)容即是兩臺VRP工作站輸出的畫面經(jīng)過融合后的結(jié)果。廠家約定從IP地址為192.168.0.100/101的任一電腦上啟動Media Master融合機(jī)控制端軟件可以設(shè)置和控制IP地址為192.168.0.160/161的融合機(jī)上運(yùn)行的Media Master融合機(jī)播放端軟件。
多通道設(shè)置:把運(yùn)行VRP 多通道管理器netmanserver程序的一臺VRP工作站(IP地址設(shè)為192.168.20.1)作為多通道被動立體系統(tǒng)的服務(wù)器端,而把運(yùn)行netmanclient程序的另一臺VRP工作站(IP地址設(shè)為192.168.20.2)作為多通道被動立體系統(tǒng)的客戶端。在VRP工作站上啟動VRP編輯器或播放器后,按F4鍵進(jìn)入多通道設(shè)置,如圖2所示。注:工作站上必須插入VRP立體加密狗才會顯示出多通道設(shè)置對話框。服務(wù)器端多通道設(shè)置對話框中的客戶機(jī)列表將顯示所有正在運(yùn)行服務(wù)端程序和客戶端程序的工作站IP地址列表,其中標(biāo)注(S)的客戶機(jī)為多通道服務(wù)端,余下的為客戶端;M和S分別表示主屏和副屏。選擇相應(yīng)的客戶機(jī)后,“融合系數(shù)”區(qū)將分別會顯示出其對應(yīng)的融合系數(shù)設(shè)置,如192.168.20.1(S) M對應(yīng)的融合寬度為224和128,192.168.20.1(S) S 對應(yīng)的融合寬度為224和224,以此類推。將設(shè)置好的參數(shù)保存到指定的多通道配置文件中,供用戶在自己的虛擬現(xiàn)實(shí)應(yīng)用程序中通過代碼調(diào)用。Netman客戶端的VRP多通道設(shè)置對話框僅用于建立與服務(wù)端的連接。
3.2多通道被動立體虛擬現(xiàn)實(shí)應(yīng)用軟件開發(fā)要點(diǎn)與注意事項(xiàng)
在VRP-SDK 12.0虛擬現(xiàn)實(shí)二次開發(fā)平臺的基礎(chǔ)上,使用C#語言開發(fā)了井下定位和微震監(jiān)測等多通道被動立體虛擬現(xiàn)實(shí)應(yīng)用軟件。所開發(fā)的程序可以根據(jù)傳入?yún)?shù)自動適應(yīng)各種不同的場合,如立體和非立體(常規(guī))環(huán)境,以及分別作為服務(wù)端和客戶端運(yùn)行等。被動立體軟件的制作不同于普通程序,特別要注意生成左右眼圖像都必須使用全屏模式,而且要重點(diǎn)考慮左右眼同一幀畫面的同步問題。經(jīng)過手工同步后,進(jìn)入偏光眼鏡的左右眼圖像才能在大腦中形成正確的立體視覺。這也是制作被動立體虛擬現(xiàn)實(shí)應(yīng)用軟件的難點(diǎn)所在。
開發(fā)多通道被動立體虛擬現(xiàn)實(shí)系統(tǒng)時,要求所有通道的交互操作必須使用同步鼠標(biāo)完成,以便各VRP工作站可以同步工作。這就要求所有通道的屏幕設(shè)置完全相同,如1號顯示器和2號顯示器分辨率分別為2048 * 768和 1920 * 1080。Windows底部任務(wù)欄設(shè)置也必須完全相同,如自動隱藏等。否則,當(dāng)用同步鼠標(biāo)選擇同一控件時由于屏幕設(shè)置存在差異而導(dǎo)致完全不同的操作結(jié)果,如不同的工作站選擇了不同的記錄等。
為避免出現(xiàn)上述問題,可以對虛擬現(xiàn)實(shí)應(yīng)用軟件進(jìn)行特殊處理,即通過在程序中禁止在客戶端程序里顯示交互界面(包括鼠標(biāo)鍵盤操作)來解決這一問題。
此外,在多通道方案中服務(wù)端和客戶端軟件之間不可避免存在同步差異,導(dǎo)致服務(wù)端角色的動作與客戶端角色的步調(diào)相差很大。這些都需要在軟件中采取一定的措施和技巧加以避免,如先讓客戶端執(zhí)行一個動作,然后服務(wù)器端再執(zhí)行同一個動作,這是因?yàn)橄蚩蛻舳税l(fā)出指令以及客戶端執(zhí)行指令都需要一定的時間可能會造成一些延遲,通過這樣處理以后便可以最大限度地保持同步。所有單步動作都要參照上述步驟進(jìn)行處理。
3.3多通道被動立體虛擬現(xiàn)實(shí)應(yīng)用軟件的安裝和調(diào)用方法
由于開發(fā)的虛擬現(xiàn)實(shí)應(yīng)用軟件是作為多通道管理器NetMan程序的子進(jìn)程使用,因此,程序的啟動調(diào)用及參數(shù)設(shè)置均需要通過NetMan讀寫位于服務(wù)器端config子目錄中的腳本文件Command.txt實(shí)現(xiàn)。該文件中包括用[]分隔的很多節(jié),例如:[0-0]表示其后為位于第一行第一列(行和列均從0開始計(jì)算)按鈕所對應(yīng)的VRP應(yīng)用程序的參數(shù)。
假設(shè)已完成虛擬現(xiàn)實(shí)應(yīng)用系統(tǒng)“基于被動立體技術(shù)的井下人員定位軟件”的開發(fā),下面分別在兩臺VRP工作站上安裝該軟件,即拷貝到兩臺主機(jī)的相同文件夾當(dāng)中,如D:\demo文件夾。然后在服務(wù)器端VRP工作站上設(shè)置各項(xiàng)參數(shù),并將結(jié)果也保存在上述腳本文件中。要將NetMan程序第二行第一列的按鈕設(shè)為井下人員定位軟件的快捷按鈕,需要在command.txt文件中增加[1-0]一節(jié)。先將caption設(shè)置為“井下人員定位”,即顯示在該按鈕上的文本,再設(shè)置分別在兩臺工作站上運(yùn)行的動作act1和act2。由于用VRP開發(fā)出的虛擬現(xiàn)實(shí)應(yīng)用軟件為可執(zhí)行文件,因此需要對兩行命令做大幅度的修改。修改前,需分別將事先拷貝到兩臺VRP工作站“D:\demo文件夾\人員定位”文件夾下的VRP二次開發(fā)程序可執(zhí)行文件gp.exe重命名為VRP-Player.EXE,這樣做的好處是netman服務(wù)端程序在最大化、關(guān)閉本軟件的窗口時會與其管理其他VRP程序的方法一視同仁,省去了額外編寫程序的麻煩。下一步是設(shè)置動作act1和act2的命令行及參數(shù),用該軟件自己的命令行參數(shù)/S和/C(分別代表作為多通道被動立體系統(tǒng)服務(wù)端程序運(yùn)行和作為客戶端程序運(yùn)行)替換掉原來的VRP播放器命令行參數(shù)/server和/client。另外,命令行參數(shù)后面的帶路徑文件名(如:D:\VRP\aaa.多通道配置)為上述調(diào)試好的多通道配置文件。
設(shè)置完后,點(diǎn)擊多通道管理器NetMan服務(wù)端程序的“井下人員定位”快捷程序圖標(biāo),將分別在兩臺VRP工作站上自動啟動井下人員定位程序的服務(wù)端和客戶端程序。
參考文獻(xiàn):
[1] 張春明,楊天鴻,王青,等.主被動立體混合式虛擬現(xiàn)實(shí)實(shí)驗(yàn)教學(xué)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].微型電腦應(yīng)用,2015,31(9):60-62,65.
[2] 張春明,楊天鴻,顧曉薇,等.多通道大屏幕主動立體VR中控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].實(shí)驗(yàn)室科學(xué),2015,18(5):97-100,104.
[3] 劉小江.探究立體顯示系統(tǒng)在虛擬現(xiàn)實(shí)中的運(yùn)用[J].計(jì)算機(jī)仿真,2011,28(9):313-317.
[4] 崔新友.多通道虛擬現(xiàn)實(shí)系統(tǒng)研究與應(yīng)用[D].武漢:中國地質(zhì)大學(xué),2009.
[5] 盧信文.虛擬現(xiàn)實(shí)平臺的開發(fā)及其應(yīng)用領(lǐng)域的研究[D].成都:電子科技大學(xué),2008.
【通聯(lián)編輯:唐一東】