本發(fā)明涉及瀏覽器虛擬實(shí)現(xiàn)技術(shù)領(lǐng)域,特別是涉及一種基于移動設(shè)備瀏覽器的虛擬現(xiàn)實(shí)的實(shí)現(xiàn)方法。
背景技術(shù):
虛擬現(xiàn)實(shí)技術(shù)是一種可以創(chuàng)建和體驗(yàn)虛擬世界的計(jì)算機(jī)仿真系統(tǒng),它利用計(jì)算機(jī)生成一種模擬環(huán)境,是一種多源信息融合的交互式的三維動態(tài)視景和實(shí)體行為的系統(tǒng)仿真,使用戶沉浸到該環(huán)境中。虛擬現(xiàn)實(shí)當(dāng)前的實(shí)現(xiàn)主要方式是通過頭盔硬件提供輸入和響應(yīng),后端通過桌面電腦三維或手機(jī)三維應(yīng)用程序提供軟件支持。
虛擬現(xiàn)實(shí)的應(yīng)用越來越廣泛,在智慧城市、智能制造及日常文化娛樂等領(lǐng)域的應(yīng)用前景廣泛?;谝苿釉O(shè)備的虛擬現(xiàn)實(shí)應(yīng)用也越來越受到重視,當(dāng)前主要通過移動應(yīng)用App的方式提供,這要求除了有虛擬現(xiàn)實(shí)應(yīng)用開發(fā)能力外,還要求有移動應(yīng)用開會的能力?;诰W(wǎng)頁的移動設(shè)備應(yīng)用是一種容易開發(fā)、容易推廣的方式,把虛擬現(xiàn)實(shí)技術(shù)應(yīng)用于移動設(shè)備瀏覽器實(shí)現(xiàn)基于網(wǎng)頁的虛擬現(xiàn)實(shí)應(yīng)用開發(fā),這會是一種輕量、便捷應(yīng)用的強(qiáng)烈需求。
虛擬現(xiàn)實(shí)的軟件系統(tǒng)需要最基本的頭盔設(shè)備對象和動作傳感器對象,前者用于按合適的頭盔顯示設(shè)備成像,后者用于捕獲硬件信息以基于旋轉(zhuǎn)、位置等信息來更新成像的相機(jī)參數(shù)。隨著HTML5技術(shù)的發(fā)展與成熟,移動設(shè)備的瀏覽器逐步支持高級HTML5特性,主流瀏覽器廠商均提供了瀏覽器訪問移動硬件設(shè)備的相關(guān)能力,使得在移動設(shè)備的瀏覽器中使用陀螺儀、重力傳感器等硬件設(shè)備的信息成為可能。
基于網(wǎng)頁瀏覽器的虛擬現(xiàn)實(shí)技術(shù)還處于起步階段,只有Mozilla基金會底下最新Firefox瀏覽器提供了對網(wǎng)頁虛擬現(xiàn)實(shí)的實(shí)驗(yàn)性支持。Mozilla通過制定實(shí)驗(yàn)生的WebVR接口標(biāo)準(zhǔn),在Firefox瀏覽器內(nèi)部實(shí)現(xiàn)對硬件設(shè)備信息的訪問,以標(biāo)準(zhǔn)的JavaScript接口方式向網(wǎng)頁應(yīng)用程序提供功能。該功能在Android最新版本的移動設(shè)備Firefox瀏覽器和桌面操作系統(tǒng)的Firefox瀏覽器中,通過配置相關(guān)參數(shù)來啟用。
Mozilla基金會制定的WebVR標(biāo)準(zhǔn)當(dāng)前處于實(shí)驗(yàn)階段,其Firefox瀏覽器通過內(nèi)核實(shí)現(xiàn)了虛擬現(xiàn)實(shí)頭盔顯示設(shè)備與傳感器設(shè)備的基本規(guī)范,以瀏覽器標(biāo)準(zhǔn)的JavaScript庫向外提供接口;由于Firefox的WebVR處于初步試驗(yàn)性階段,默認(rèn)并不啟用,需要專業(yè)人員通過設(shè)置瀏覽才能使用,對一般用戶使用困難。除此之外,主流瀏覽器如Google的Chrome瀏覽器、微軟的IE系列瀏覽器、蘋果的Safari瀏覽器等,均未加入Mozilla的WebVR標(biāo)準(zhǔn)制定中,這些主流廠商的瀏覽器當(dāng)前無法提供基本見面的虛擬現(xiàn)實(shí)技術(shù)手段。特別是在移動設(shè)備中,除Android平臺最新版本的Firefox需要通過設(shè)置相關(guān)參數(shù)來啟用網(wǎng)頁虛擬現(xiàn)實(shí)外,其他瀏覽器均不支持基于網(wǎng)頁的虛擬現(xiàn)實(shí)技術(shù)。因此,基于網(wǎng)頁的虛擬現(xiàn)實(shí)技術(shù)面臨兩個方面的問題:首先,這項(xiàng)試驗(yàn)技術(shù)當(dāng)前只針對Firefox瀏覽器,其他瀏覽器不支持,也造成基于網(wǎng)頁的虛擬現(xiàn)實(shí)應(yīng)用的推廣困難;其次,即使是Firefox瀏覽器,該功能不是默認(rèn)開啟,需要針對最新的Firefox瀏覽器進(jìn)行設(shè)置才能啟用,只有專業(yè)人員才能使用。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明針對現(xiàn)有技術(shù)中標(biāo)準(zhǔn)化不高、支持性差的缺點(diǎn),提供一種基于移動設(shè)備瀏覽器的虛擬現(xiàn)實(shí)的實(shí)現(xiàn)方法,其目的是讓移動設(shè)備中基于瀏覽器的網(wǎng)頁虛擬應(yīng)用能提供與Mozilla標(biāo)準(zhǔn)統(tǒng)一的虛擬現(xiàn)實(shí)接口,讓移動設(shè)備瀏覽器的網(wǎng)頁在應(yīng)用虛擬現(xiàn)實(shí)成為可能,保持與Mozilla基金會的WebVR標(biāo)準(zhǔn)的統(tǒng)一。為了解決上述技術(shù)問題,本發(fā)明通過下述技術(shù)方案得以解決。
一種基于移動設(shè)備瀏覽器的虛擬現(xiàn)實(shí)的實(shí)現(xiàn)方法,包括如下步驟:(1)瀏覽器類型判斷步驟:檢測瀏覽器是否為移動設(shè)備平臺的瀏覽器,通過在網(wǎng)頁的JavaScript代碼中獲取瀏覽器的navigator.userAgent和navigator.vendor參數(shù),與預(yù)先確定的瀏覽器判斷移動平臺的正則表達(dá)進(jìn)行判斷,判斷為是,進(jìn)入步驟(2);判斷為否,跳出流程;
(2)瀏覽器支持虛擬現(xiàn)實(shí)判斷步驟:將移動設(shè)備的瀏覽器,通過引用外部JavaScript文件的方式,在網(wǎng)頁應(yīng)用中加載實(shí)現(xiàn)該文件內(nèi)的JavaScript代碼,接著獲取瀏覽器的navigator.getVRDevices對象,調(diào)用已加載的JavaScript代碼來判斷瀏覽器是否已經(jīng)提供了虛擬現(xiàn)實(shí)接口的支持,判斷為是,跳出流程;判斷為否,進(jìn)入步驟(3);
(3)創(chuàng)建頭盔顯示設(shè)備對象并設(shè)置參數(shù):當(dāng)移動設(shè)備的瀏覽器不支持虛擬現(xiàn)實(shí)接口時,通過已加載的JavaScript代碼創(chuàng)建出虛擬現(xiàn)實(shí)頭盔顯示設(shè)備的對象,該對象實(shí)現(xiàn)了Mozilla WebVR標(biāo)準(zhǔn)的HMDVRDevice接口,提供了使得getEyeParameters符合Mozilla標(biāo)準(zhǔn)的接口方法,該方法把頭盔顯示設(shè)備的視場參數(shù)和左右眼的距離參數(shù),設(shè)置給虛擬現(xiàn)實(shí)頭盔顯示設(shè)備的對象;
(4)創(chuàng)建傳感器設(shè)備對象并設(shè)置參數(shù):接著通過已加載的JavaScript代碼,創(chuàng)建出基于JavaScript代碼實(shí)現(xiàn)的虛擬現(xiàn)實(shí)位置傳感器設(shè)備對象,該對象實(shí)現(xiàn)了Mozilla WebVR標(biāo)準(zhǔn)的PositionSensorVRDevice接口,并提供了getState、getOrientation符合Mozilla標(biāo)準(zhǔn)的接口方法;通過devicemotion和orientationchange標(biāo)準(zhǔn)事件接口綁定到虛擬現(xiàn)實(shí)位置傳感器設(shè)備對象的相應(yīng)接口方法,將傳感器硬件相關(guān)的信息傳遞給JavaScript位置傳感器設(shè)備對象;(5)綁定虛擬現(xiàn)實(shí)頭盔設(shè)備對象和位置傳感器設(shè)備對象:根據(jù)步驟(4)創(chuàng)建的虛擬現(xiàn)實(shí)頭盔設(shè)備對象和位置傳感器設(shè)備對象綁定到瀏覽器提供的navigator頂級JavaScript對象,實(shí)現(xiàn)了與Mozilla WebVR接口一致的HMDVRDevice和PositionSensorVRDevice接口,從而保證與Mozilla WebVR標(biāo)準(zhǔn)保持一致性,實(shí)現(xiàn)了網(wǎng)頁中提供虛擬現(xiàn)實(shí)方法的基本設(shè)備對象;
(6)獲取硬件信息并計(jì)算朝向信息:通過步驟(5)中綁定的瀏覽器標(biāo)準(zhǔn)事件接口,在移動設(shè)備的瀏覽器獲取傳感器相關(guān)的硬件信息,根據(jù)步驟(4)中創(chuàng)建的位置傳感器對象計(jì)算出新的朝向信息;
(7)計(jì)算相機(jī)參數(shù)并渲染左右眼三維圖像:根據(jù)步驟(6)計(jì)算的朝向信息、頭盔顯示設(shè)備對象的參數(shù),計(jì)算出三維空間中左眼和右眼的相機(jī)參數(shù),并傳遞給WebGL的圖形渲染層,調(diào)用WebGL的接口并根據(jù)左眼和右眼的相機(jī)參數(shù),渲染出同屏中左、右的三維圖像。
作為優(yōu)選,步驟(4)中,getState、getOrientation接口方法用于通過該傳感器設(shè)備對象設(shè)置初始的速度、加速度、朝向的參數(shù)的向量值。
作為優(yōu)選,步驟(4)中,devicemotion和orientationchange為移動設(shè)備的瀏覽器提供的硬件相關(guān)聯(lián)的標(biāo)準(zhǔn)事件接口,devicemotion接口提供與硬件傳感器位置移動相關(guān)聯(lián)的信息,orientationchange接口提供與硬件傳感器的朝向變化相關(guān)聯(lián)的信息。
作為優(yōu)選,步驟(6)中,硬件信息包括加速度、旋轉(zhuǎn)速率、時間間隔硬件傳感器的信息。
本發(fā)明由于采用了以上技術(shù)方案,具有顯著的技術(shù)效果:讓移動設(shè)備平臺除Firefox瀏覽之外的主流瀏覽器也能使用虛擬現(xiàn)實(shí)技術(shù),用戶無需通過復(fù)雜設(shè)置,而是進(jìn)行智能判斷以決定是否啟用虛擬現(xiàn)實(shí)模式;同時,使除了Firefox外的基于移動設(shè)備的主流瀏覽器,能提供網(wǎng)頁的虛擬現(xiàn)實(shí)應(yīng)用能簡單、便捷的使用,得到推廣和普及。
附圖說明
圖1是本發(fā)明一種基于移動設(shè)備瀏覽器的虛擬現(xiàn)實(shí)的實(shí)現(xiàn)方法的流程示意圖。
具體實(shí)施方式
下面結(jié)合附圖與實(shí)施例對本發(fā)明作進(jìn)一步詳細(xì)描述。
如圖1所示,一種基于移動設(shè)備瀏覽器的虛擬現(xiàn)實(shí)的實(shí)現(xiàn)方法,包括如下步驟:
(1)瀏覽器類型判斷步驟:檢測瀏覽器是否為移動設(shè)備平臺的瀏覽器,通過在網(wǎng)頁的JavaScript代碼中獲取瀏覽器的navigator.userAgent和navigator.vendor參數(shù),與預(yù)先確定的瀏覽器判斷移動平臺的正則表達(dá)進(jìn)行判斷,判斷為是,進(jìn)入步驟(2);判斷為否,跳出流程;具體的移動設(shè)備瀏覽的正則表達(dá)式如下:
/(android|bb\d+|meego).+mobile|avantgo|bada/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge|maemo|midp|mmp|mobile.+firefox|netfront|operam(ob|in)i|palm(os)?|phone|p(ixi|re)/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i
(2)瀏覽器支持虛擬現(xiàn)實(shí)判斷步驟:將移動設(shè)備的瀏覽器,通過引用外部JavaScript文件的方式,在網(wǎng)頁應(yīng)用中加載實(shí)現(xiàn)該文件內(nèi)的JavaScript代碼,接著獲取瀏覽器的navigator.getVRDevices對象,調(diào)用已加載的JavaScript代碼來判斷瀏覽器是否已經(jīng)提供了虛擬現(xiàn)實(shí)接口的支持,判斷為是,跳出流程;判斷為否,進(jìn)入步驟(3);
(3)創(chuàng)建頭盔顯示設(shè)備對象并設(shè)置參數(shù):當(dāng)移動設(shè)備的瀏覽器不支持虛擬現(xiàn)實(shí)接口時,通過已加載的JavaScript代碼創(chuàng)建出虛擬現(xiàn)實(shí)頭盔顯示設(shè)備的對象,該對象實(shí)現(xiàn)了Mozilla WebVR標(biāo)準(zhǔn)的HMDVRDevice接口,提供了使得getEyeParameters符合Mozilla標(biāo)準(zhǔn)的接口方法,該方法把頭盔顯示設(shè)備的視場參數(shù)和左右眼的距離參數(shù),設(shè)置給虛擬現(xiàn)實(shí)頭盔顯示設(shè)備的對象;
(4)創(chuàng)建傳感器設(shè)備對象并設(shè)置參數(shù):接著通過已加載的JavaScript代碼,創(chuàng)建出基于JavaScript代碼實(shí)現(xiàn)的虛擬現(xiàn)實(shí)位置傳感器設(shè)備對象,該對象實(shí)現(xiàn)了Mozilla WebVR標(biāo)準(zhǔn)的PositionSensorVRDevice接口,并提供了getState、getOrientation符合Mozilla標(biāo)準(zhǔn)的接口方法,用于通過該傳感器設(shè)備對象設(shè)置初始的速度、加速度、朝向的參數(shù)的向量值;通過devicemotion和orientationchange標(biāo)準(zhǔn)事件接口綁定到虛擬現(xiàn)實(shí)位置傳感器設(shè)備對象的相應(yīng)接口方法,將傳感器硬件相關(guān)的信息傳遞給JavaScript位置傳感器設(shè)備對象,devicemotion和orientationchange為移動設(shè)備的瀏覽器提供的硬件相關(guān)聯(lián)的標(biāo)準(zhǔn)事件接口,devicemotion接口提供與硬件傳感器位置移動相關(guān)聯(lián)的信息,orientationchange接口提供與硬件傳感器的朝向變化相關(guān)聯(lián)的信息;
(5)綁定虛擬現(xiàn)實(shí)頭盔設(shè)備對象和位置傳感器設(shè)備對象:根據(jù)步驟(4)創(chuàng)建的虛擬現(xiàn)實(shí)頭盔設(shè)備對象和位置傳感器設(shè)備對象綁定到瀏覽器提供的navigator頂級JavaScript對象,實(shí)現(xiàn)了與Mozilla WebVR接口一致的HMDVRDevice和PositionSensorVRDevice接口,從而保證與Mozilla WebVR標(biāo)準(zhǔn)保持一致性,實(shí)現(xiàn)了網(wǎng)頁中提供虛擬現(xiàn)實(shí)方法的基本設(shè)備對象;
(6)獲取硬件信息并計(jì)算朝向信息:通過步驟(5)中綁定的瀏覽器標(biāo)準(zhǔn)事件接口,在移動設(shè)備的瀏覽器獲取傳感器相關(guān)的硬件信息,硬件信息包括加速度、旋轉(zhuǎn)速率、時間間隔硬件傳感器的信息,根據(jù)步驟(4)中創(chuàng)建的位置傳感器對象計(jì)算出新的朝向信息;
(7)計(jì)算相機(jī)參數(shù)并渲染左右眼三維圖像:根據(jù)步驟(6)計(jì)算的朝向信息、頭盔顯示設(shè)備對象的參數(shù),計(jì)算出三維空間中左眼和右眼的相機(jī)參數(shù),并傳遞給WebGL的圖形渲染層,調(diào)用WebGL的接口并根據(jù)左眼和右眼的相機(jī)參數(shù),渲染出同屏中左、右的三維圖像。
(8)根據(jù)步驟(7)計(jì)算的朝向信息、頭盔顯示設(shè)備對象的參數(shù),計(jì)算出三維空間中左眼和右眼的相機(jī)參數(shù),并傳遞給WebGL的圖形渲染層,調(diào)用WebGL的接口根據(jù)左眼和右眼的相機(jī)參數(shù),渲染出同屏中左、右的三維圖像。
本發(fā)明移動設(shè)備平臺除Firefox瀏覽之外的主流瀏覽器也能使用虛擬現(xiàn)實(shí)技術(shù),用戶無需通過復(fù)雜設(shè)置,而是進(jìn)行智能判斷以決定是否啟用虛擬現(xiàn)實(shí)模式;同時,使除了Firefox外的基于移動設(shè)備的主流瀏覽器,能提供網(wǎng)頁的虛擬現(xiàn)實(shí)應(yīng)用能簡單、便捷的使用,得到推廣和普及。
總之,以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明申請專利范圍所作的均等變化與修飾,皆應(yīng)屬本發(fā)明專利的涵蓋范圍。