發(fā)布時(shí)間:2015-1-1 12:33:10
一提到虛擬現(xiàn)實(shí),大家肯定會(huì)想到“靈境”、“Virtual Reality”、“幻真”....什么的,這些概念現(xiàn)傳的到處都是,很多行業(yè)內(nèi)的公司企業(yè)網(wǎng)站上也都是用這些概念來(lái)裝點(diǎn)頁(yè)面!但是大家有沒(méi)有認(rèn)真考慮過(guò)到底什么真正的虛擬現(xiàn)實(shí)及其存在的意義呢?
總是去學(xué)習(xí)別人的東西是一種緩慢的進(jìn)步,快速的進(jìn)步是認(rèn)認(rèn)真真的做好總結(jié),得到自己想要的東西。
“虛擬現(xiàn)實(shí)”,先從字面上理解這個(gè)概念。在這個(gè)詞匯中,虛擬是定語(yǔ),現(xiàn)實(shí)是關(guān)鍵字。說(shuō)白了就是“虛擬了的現(xiàn)實(shí)”,可見(jiàn)重點(diǎn)是“現(xiàn)實(shí)”。也就是說(shuō)我們要將現(xiàn)實(shí)世界中的真實(shí)環(huán)境通過(guò)某種手段虛擬演示模擬出來(lái),達(dá)到以假亂真的目的。這里的現(xiàn)實(shí)對(duì)應(yīng)的就是“真實(shí)世界”。真實(shí)世界這個(gè)范圍很大,比如物理學(xué)、醫(yī)學(xué)、地理信息、天體運(yùn)行等,所涉及的專(zhuān)業(yè)知識(shí)就是我們整個(gè)世界的知識(shí)體系。在這個(gè)基礎(chǔ)上研究虛擬現(xiàn)實(shí)才會(huì)有更廣闊的發(fā)展方向和實(shí)際意義。
從廣義角度來(lái)講,虛擬現(xiàn)實(shí)本身也不僅僅局限于計(jì)算機(jī)技術(shù)。舉個(gè)最簡(jiǎn)單的例子,比如魔術(shù),我們都知道看到的東西其實(shí)是假的,但是我們卻真真切切的感受到那是真的,這是不是一種虛擬現(xiàn)實(shí)、虛擬演示呢?
計(jì)算機(jī)的出現(xiàn)我們本身就可以理解為是以一種虛擬演示現(xiàn)實(shí)技術(shù)的發(fā)展過(guò)程。首先,計(jì)算機(jī)的出現(xiàn)就是為了模擬人腦的工作流程,替代人工大量而繁瑣的計(jì)算工作。操作系統(tǒng)本身也是按人類(lèi)的語(yǔ)言和思維方式設(shè)定的輸入輸出過(guò)程:字符界面的dos、unix、os/2等都是模擬人類(lèi)的語(yǔ)言方式來(lái)操作的。到了桌面操作系統(tǒng)就更明顯,windows中的“桌面”、“我的電腦”、“網(wǎng)上鄰居”等等都是在通過(guò)真實(shí)世界的思維方式來(lái)管理計(jì)算機(jī)資源。計(jì)算機(jī)程序設(shè)計(jì)發(fā)展也是這樣,匯編語(yǔ)言是機(jī)器語(yǔ)言,非常不適應(yīng)人類(lèi)的思維習(xí)慣,所以到現(xiàn)在也只有CPU底層研發(fā)人員或?qū)I(yè)人士才能使用。后來(lái)有了面向過(guò)程的pascal、c等面向過(guò)程的編程語(yǔ)言,這時(shí)候就非常符合人類(lèi)的思維方式了,所以應(yīng)用軟件才開(kāi)始大發(fā)展。現(xiàn)在程序設(shè)計(jì)的基本思想是“面向?qū)ο?rdquo;,把計(jì)算機(jī)里面的每個(gè)資源、設(shè)備或者是數(shù)據(jù)都?xì)w納為以一個(gè)一個(gè)的類(lèi),我們使用的時(shí)候就是創(chuàng)建某個(gè)類(lèi)的一個(gè)實(shí)例,這就是對(duì)象。通過(guò)設(shè)置對(duì)象的屬性、調(diào)用對(duì)象的方法等來(lái)實(shí)現(xiàn)操作數(shù)據(jù)的管理。整個(gè)計(jì)算機(jī)軟件的發(fā)展可以說(shuō)就是一個(gè)越來(lái)越完善的虛擬演示應(yīng)用。這也非常符合人類(lèi)在對(duì)現(xiàn)實(shí)世界事物管理、分析的思維方式。
在計(jì)算機(jī)系統(tǒng)的前提下探討虛擬演示現(xiàn)實(shí)技術(shù),我們就離不開(kāi)計(jì)算機(jī)理論。首先,我們都知道,計(jì)算機(jī)的核心部分是操作系統(tǒng)。計(jì)算機(jī)操作系統(tǒng)是人機(jī)交互、資源管理的一個(gè)中心控制平臺(tái)。大家都知道本身計(jì)算機(jī)里面都是二進(jìn)制的0、1代碼。這些數(shù)據(jù)通過(guò)存儲(chǔ)這些0、1代碼不同序列來(lái)實(shí)現(xiàn)我們所說(shuō)的數(shù)據(jù)存儲(chǔ)。那么操作系統(tǒng)通過(guò)什么來(lái)管理這些數(shù)據(jù)呢?那就是文件系統(tǒng)。只有定義了文件系統(tǒng)之后、操作系統(tǒng)才能更好的、有效的管理這些數(shù)據(jù)。計(jì)算機(jī)系統(tǒng)還包括各式各樣的外圍設(shè)備—輸入輸出設(shè)備,這些設(shè)備也同樣是被定義成計(jì)算機(jī)系統(tǒng)中的資源,通過(guò)操作系統(tǒng)來(lái)管理。
這個(gè)計(jì)算機(jī)系統(tǒng)的模型我們可以延伸到虛擬現(xiàn)實(shí)領(lǐng)域。可以類(lèi)推,虛擬現(xiàn)實(shí)系統(tǒng)中的核心部分應(yīng)該是虛擬現(xiàn)實(shí)引擎,這個(gè)引擎控制管理整個(gè)系統(tǒng)中的數(shù)據(jù)、外圍設(shè)備等資源。與計(jì)算機(jī)系統(tǒng)一樣,根據(jù)不同的應(yīng)用領(lǐng)域所選擇的計(jì)算機(jī)操作系統(tǒng)、外圍設(shè)備等也不同。比如專(zhuān)業(yè)數(shù)據(jù)庫(kù)系統(tǒng)一般用unix和oracle、專(zhuān)業(yè)的圖形系統(tǒng)諸如蘋(píng)果等。同樣的,虛擬現(xiàn)實(shí)系統(tǒng)中也針對(duì)不同的應(yīng)用應(yīng)該選擇不同的引擎(或者說(shuō)是虛擬現(xiàn)實(shí)的操作系統(tǒng)VROS[Virtual Reality Operation System])。比如我們做路面駕駛模擬就要選擇能夠處理真實(shí)世界物理學(xué)數(shù)據(jù)的VROS,同時(shí)需要控制管理外圍設(shè)備的輸入輸出。在醫(yī)學(xué)方面,就必須要求能夠處理數(shù)字化人體數(shù)據(jù)以及想用的醫(yī)學(xué)模擬設(shè)備。在數(shù)字地球方面、就必須能處理空間信息數(shù)據(jù)等。這樣我們就可以有針對(duì)性的選擇適合應(yīng)用的VROS(虛擬現(xiàn)實(shí)操作系統(tǒng)或者說(shuō)是引擎)。
這里要說(shuō)明的是,所謂數(shù)字化絕不是僅僅通過(guò)3D建模就能完成的。3D建模只是整個(gè)虛擬現(xiàn)實(shí)系統(tǒng)的一個(gè)輔助工作。比如數(shù)字化的人體是通過(guò)人體切片掃描,得到人體內(nèi)血管、骨骼等人體結(jié)構(gòu)詳細(xì)的位置、空間數(shù)據(jù),并根據(jù)不同的對(duì)象設(shè)置不同的屬性,如對(duì)虛擬手術(shù)刀的力反饋系數(shù)等。在數(shù)字城市或者數(shù)字地球中也是這樣,如何空間遙感測(cè)繪數(shù)據(jù)、并生成可供實(shí)時(shí)輸出的圖像。城市設(shè)施等數(shù)據(jù)如電力線路、地下管道等,如何根據(jù)相關(guān)管理部分的數(shù)據(jù)生成適合人們查看的圖形圖像。當(dāng)然僅僅生成圖像然人們看還遠(yuǎn)遠(yuǎn)不夠,更主要的是可以管理,譬如修改、更新、查詢等。這種情況下,如果沒(méi)有專(zhuān)業(yè)數(shù)據(jù)得支撐,一個(gè)是會(huì)產(chǎn)生大量的重復(fù)勞動(dòng),二就是做出來(lái)的東西不準(zhǔn)確,沒(méi)有實(shí)際應(yīng)用的價(jià)值。
為了達(dá)到更逼真的效果,目前的虛擬現(xiàn)實(shí)系統(tǒng)在視覺(jué)、觸覺(jué)、聽(tīng)覺(jué)等方面也引進(jìn)了更多的方式以及相應(yīng)的外圍設(shè)備。通過(guò)這些設(shè)備我們就可以更好的模擬人類(lèi)在真實(shí)世界中的感官體驗(yàn)。我們依然按照計(jì)算機(jī)理論的構(gòu)架來(lái)分析虛擬現(xiàn)實(shí)系統(tǒng),請(qǐng)看下圖:
所謂“虛擬現(xiàn)實(shí)”無(wú)論如何也脫離不了“現(xiàn)實(shí)”這個(gè)關(guān)鍵字,有了我們這個(gè)真實(shí)世界的數(shù)據(jù),然后通過(guò)視景仿真來(lái)讓人產(chǎn)生視覺(jué)效果,通過(guò)力反饋、運(yùn)動(dòng)平臺(tái)等模擬真實(shí)世界中對(duì)人體的作用力,同時(shí)還有其他諸如嗅覺(jué)、味覺(jué)等方面的模擬。有了真實(shí)世界的真實(shí)數(shù)據(jù),我們也可以通過(guò)軟、硬件把它轉(zhuǎn)化為計(jì)算機(jī)圖形或者其他形式輸出,這之后我們還面臨一個(gè)問(wèn)題,那就是這些數(shù)據(jù)的管理。
好的虛擬演示現(xiàn)實(shí)引擎系統(tǒng)我想應(yīng)該具有以下特質(zhì):
1、可視化管理界面:這個(gè)可視化界面不是我們?cè)谥谱?a href=http://www.otw6531.cn/vr/ target=_blank>虛擬現(xiàn)實(shí)項(xiàng)目時(shí)所使用的那個(gè)工作界面,而是制作完以后提供給最終用戶的那個(gè)界面。這里舉個(gè)例子,早前我們用的visual C++ 或者是 Delphi 6.0 等,他們本身的開(kāi)發(fā)界面也是可視化的,但是這個(gè)界面是提供給開(kāi)發(fā)者的,而不是給最終用戶。提供給最終用戶的界面是要可以通過(guò)可視化的操作來(lái)管理客戶的數(shù)據(jù),比如Delphi基于數(shù)據(jù)庫(kù)系統(tǒng)的 OA 、CRM等管理軟件,客戶可以根據(jù)需求來(lái)操作數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)表、數(shù)據(jù)記錄等,實(shí)現(xiàn)系統(tǒng)的查詢、更新、刪除、修改、添加等。客戶感受到的是在可視化界面中的操作,而對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的操作是內(nèi)置模塊完成的,對(duì)于客戶來(lái)說(shuō)是不可見(jiàn)的或者說(shuō)是封的。虛擬現(xiàn)實(shí)引擎也應(yīng)該有實(shí)現(xiàn)這個(gè)過(guò)程的方法,比如在數(shù)字城市中通過(guò)可視化客戶端添加建筑物、并同時(shí)更新數(shù)據(jù)庫(kù)系統(tǒng)的中位置、面積、高度等數(shù)據(jù)。這一點(diǎn)我們?cè)谕嬗螒虻臅r(shí)候可能是非常清楚的,比如你建造了一個(gè)兵工廠,在圖形環(huán)境中出現(xiàn)這樣一個(gè)兵工廠之外,游戲程序還在地圖上做好標(biāo)記并實(shí)時(shí)更新了其數(shù)據(jù)記錄,以供可能的存儲(chǔ)(保持游戲)、刪除(被敵人打掉)、修改(破壞、維修)等操作。
2、二次開(kāi)發(fā)能力:沒(méi)有二次開(kāi)發(fā)能力的引擎系統(tǒng)的應(yīng)用會(huì)有極大的局限性。所謂“二次開(kāi)發(fā)”就是指引擎系統(tǒng)必須能夠提供管理系統(tǒng)中所有資源的程序接口,就是常說(shuō)的API。可能有人認(rèn)為,可以通過(guò)可視化操作實(shí)現(xiàn)這些功能就ok了,比如可以用鼠標(biāo)拖拽一個(gè)3D模型到我的場(chǎng)景中來(lái)。我要說(shuō)的是這樣做是一種方式,如果僅僅提供這一種方式還遠(yuǎn)遠(yuǎn)不夠。首先,這倆者并不沖突,系統(tǒng)的API 是可視化開(kāi)發(fā)的一個(gè)最大補(bǔ)充,且API才是開(kāi)發(fā)者自由發(fā)揮的最佳武器。我們每天都在使用windows操作系統(tǒng)給,我們發(fā)現(xiàn)基本上我們通過(guò)鼠標(biāo)的一下簡(jiǎn)單操作就可以實(shí)現(xiàn)windows下的基本的資源管理。做過(guò)windows應(yīng)用開(kāi)發(fā)的應(yīng)該知道,其實(shí)我們每天所作的windows下的操作都可以通過(guò)調(diào)用windows API來(lái)實(shí)現(xiàn),也就是說(shuō)可以通過(guò)調(diào)用windows API來(lái)實(shí)現(xiàn)整個(gè)windows下所有的資源管理。同樣的在windows 下的visual studio 也提供了各式各樣的內(nèi)置對(duì)象、函數(shù)、方法等,可以實(shí)現(xiàn)開(kāi)發(fā)項(xiàng)目的資源管理。試想一下,如果visual studio 中我們只能拖拽幾個(gè)按鈕、對(duì)話框等放到窗口上而沒(méi)有任何二次開(kāi)發(fā)能力,這樣做出來(lái)的應(yīng)用程序有何意義?
3、數(shù)據(jù)兼容性:可以說(shuō),任何計(jì)算機(jī)程序都離不開(kāi)數(shù)據(jù)的管理。比如一個(gè)簡(jiǎn)單的記事本要實(shí)現(xiàn)基本的字符串操作,辦公系統(tǒng)中要管理人力資源、財(cái)務(wù)數(shù)據(jù)、客戶信息、業(yè)務(wù)流程等數(shù)據(jù)。游戲中要實(shí)現(xiàn)環(huán)境中的每個(gè)角色、建筑物、地圖這些對(duì)象的名稱(chēng)、位置、生命值等屬性的管理。這里所說(shuō)的兼容性就是指程序在管理本系統(tǒng)以外數(shù)據(jù)的能力。這一點(diǎn)對(duì)于虛擬現(xiàn)實(shí)引擎來(lái)說(shuō)很重要,因?yàn)?a href=http://www.otw6531.cn/vr/ target=_blank>虛擬現(xiàn)實(shí)引擎最終處理的是真實(shí)數(shù)據(jù),而真實(shí)數(shù)據(jù)在人類(lèi)活動(dòng)國(guó)中已經(jīng)積累了很多并可能已經(jīng)一各式各樣的方式和數(shù)據(jù)格式存在了,這時(shí)候虛擬現(xiàn)實(shí)引擎就要至少處理比較主流的數(shù)據(jù)格式。比如,在數(shù)字城市建設(shè)過(guò)程中,一個(gè)中型城市的建筑物、街道、河流、商業(yè)區(qū)等,我們用手工去做可能做出來(lái)的永遠(yuǎn)都是城市的一角。但是在測(cè)繪領(lǐng)域這些數(shù)據(jù)可能已經(jīng)非常完善了,我們就要通過(guò)我們引擎的數(shù)據(jù)處理模塊把這些數(shù)據(jù)做某種算法處理,供本系統(tǒng)使用。而這些數(shù)據(jù)根據(jù)當(dāng)初測(cè)繪、采集等的方式、工具不同而格式不同,這就需要我們認(rèn)真對(duì)待這個(gè)數(shù)據(jù)兼容性。
當(dāng)然還有很多,諸如圖形運(yùn)算能力、外圍設(shè)備的接口控制能力、海量數(shù)據(jù)的處理能力等等。我們?cè)谶x擇虛擬現(xiàn)實(shí)引擎系統(tǒng)時(shí)候也要跟你據(jù)自己的應(yīng)用方向,綜合考慮其開(kāi)放性、數(shù)據(jù)處理能力和后續(xù)開(kāi)發(fā)的延續(xù)性。