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