一種基于Unity3D引擎的虛擬現(xiàn)實(shí)頭戴式設(shè)備的制作方法
【專利摘要】本發(fā)明涉及一種基于Unity3D引擎的虛擬現(xiàn)實(shí)頭戴式設(shè)備,包括長(zhǎng)方體外殼,所述長(zhǎng)方體外殼內(nèi)部固定有顯示屏,所述顯示屏通過計(jì)算機(jī)顯示兩個(gè)照相機(jī)獲取的畫面;所述顯示屏相對(duì)的一側(cè)呈雙孔狀結(jié)構(gòu),所述雙孔狀結(jié)構(gòu)內(nèi)放置有用于調(diào)焦的透鏡,所述計(jì)算機(jī)采用Unity3D引擎來使顯示屏顯示的畫面產(chǎn)生雙筒狀的扭曲來抵消透鏡所產(chǎn)生的扭曲。本發(fā)明使用Unity3D引擎強(qiáng)大的軟件功能克服了畫面的模糊效果,極大的滿足了用戶的需求。
【專利說明】—種基于Unity3D引擎的虛擬現(xiàn)實(shí)頭戴式設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及虛擬現(xiàn)實(shí)【技術(shù)領(lǐng)域】,特別是涉及一種基于Unity3D引擎的虛擬現(xiàn)實(shí)頭戴式設(shè)備。
【背景技術(shù)】
[0002]目前,在現(xiàn)有的虛擬現(xiàn)實(shí)設(shè)備中,利用用戶的雙目立體視覺分別產(chǎn)生的不同圖像,顯示在不同的顯示器上,一只眼睛只能看到奇數(shù)幀圖像,另一只眼睛只能看到偶數(shù)幀圖像,奇、偶幀之間的不同也就是視差就產(chǎn)生了立體感。但是基于設(shè)備現(xiàn)有的技術(shù)和構(gòu)造難以使用戶產(chǎn)生良好的立體感,而且容易使用戶產(chǎn)生眩暈,這些都由于虛擬現(xiàn)實(shí)顯示時(shí)的模糊效果和精度難以達(dá)到所需的要求,從而也不能使用戶產(chǎn)生更好的體驗(yàn)。
【發(fā)明內(nèi)容】
[0003]本發(fā)明所要解決的技術(shù)問題是提供一種基于Unity3D引擎的虛擬現(xiàn)實(shí)頭戴式設(shè)備,以使設(shè)備顯示出更好的3D場(chǎng)景效果,讓體驗(yàn)者身臨其境。
[0004]本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:提供一種基于Unity3D引擎的虛擬現(xiàn)實(shí)頭戴式設(shè)備,包括長(zhǎng)方體外殼,所述長(zhǎng)方體外殼內(nèi)部固定有顯示屏,所述顯示屏通過計(jì)算機(jī)顯示兩個(gè)照相機(jī)獲取的畫面;所述顯示屏相對(duì)的一側(cè)呈雙孔狀結(jié)構(gòu),所述雙孔狀結(jié)構(gòu)內(nèi)放置有用于調(diào)焦的透鏡,所述計(jì)算機(jī)采用Unity3D引擎來使顯示屏顯示的畫面產(chǎn)生雙筒狀的扭曲來抵消透鏡所產(chǎn)生的扭曲。
[0005]所述兩個(gè)照相機(jī)的Viewport Rect參數(shù)分別設(shè)置為(0,O, 0.5,I)和(0.5,O, 0.5,I),使得顯示屏產(chǎn)生兩個(gè)左右相同的場(chǎng)景,并且左右兩個(gè)相同場(chǎng)景各占屏幕的一半,所述計(jì)算機(jī)通過極坐標(biāo)(r,Θ) — (f(r)r, Θ)變換來改變像素坐標(biāo)點(diǎn)到各半屏幕中心的距離r,把改變后的距離r處所在的坐標(biāo)點(diǎn)的像素顏色值返回給原來的坐標(biāo)點(diǎn)上,此時(shí)改變了所有坐標(biāo)點(diǎn)的像素顏色值,其中f Cr) = k0+k1r2+k2r4+k3r6,通過選擇kQ, k1; k2, k3這四個(gè)系數(shù)能夠作出相反于透鏡所產(chǎn)生的扭曲效果。
[0006]k0, k1; k2, k3 這四個(gè)系數(shù)分別為 1.0,0.2,0.2 和 O。
[0007]有益效果
[0008]由于采用了上述的技術(shù)方案,本發(fā)明與現(xiàn)有技術(shù)相比,具有以下的優(yōu)點(diǎn)和積極效果:本發(fā)明使用Unity3D引擎強(qiáng)大的軟件功能克服了畫面的模糊效果,極大的滿足了用戶的需求,不僅能夠?qū)崿F(xiàn)實(shí)時(shí)、高精度監(jiān)控用戶旋轉(zhuǎn)的角度變化,而且能呈現(xiàn)給用戶一個(gè)酷炫的3D世界。
【專利附圖】
【附圖說明】
[0009]圖1是在作雙筒狀扭曲前畫面;
[0010]圖2是在作雙筒狀扭曲后畫面;
[0011]圖3是處理畫面變化的程序流程圖。
【具體實(shí)施方式】
[0012]下面結(jié)合具體實(shí)施例,進(jìn)一步闡述本發(fā)明。應(yīng)理解,這些實(shí)施例僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍。此外應(yīng)理解,在閱讀了本發(fā)明講授的內(nèi)容之后,本領(lǐng)域技術(shù)人員可以對(duì)本發(fā)明作各種改動(dòng)或修改,這些等價(jià)形式同樣落于本申請(qǐng)所附權(quán)利要求書所限定的范圍。
[0013]本發(fā)明的實(shí)施方式涉及一種基于Unity3D引擎的虛擬現(xiàn)實(shí)頭戴式設(shè)備,包括長(zhǎng)方體外殼,所述長(zhǎng)方體外殼內(nèi)部固定有顯示屏,所述顯示屏通過計(jì)算機(jī)顯示兩個(gè)照相機(jī)獲取的畫面;所述顯示屏相對(duì)的一側(cè)呈雙孔狀結(jié)構(gòu),所述雙孔狀結(jié)構(gòu)內(nèi)放置有用于調(diào)焦的透鏡,所述計(jì)算機(jī)采用Unity3D引擎來使顯示屏顯示的畫面產(chǎn)生雙筒狀的扭曲來抵消透鏡所產(chǎn)生的扭曲。
[0014]在制作外殼時(shí),首先在外殼上采用長(zhǎng)方形的框架,眼睛需要看的一側(cè)做成雙孔狀,形成一個(gè)長(zhǎng)方體盒子,使其內(nèi)部可以很好的固定顯示器屏幕,為了使用戶產(chǎn)生身臨其境的感覺,而不僅僅是像看3D電影那樣只是在面前呈現(xiàn)場(chǎng)景,同時(shí)又不使用戶貼著屏幕使眼睛的焦距變短,本發(fā)明在雙孔上安裝透鏡來調(diào)焦,雖然這樣會(huì)使場(chǎng)景產(chǎn)生扭曲,但是可以用Unity3D引擎提供的shader編寫功能來使畫面產(chǎn)生雙筒狀的扭曲來抵消透鏡所產(chǎn)生的扭曲。
[0015]Unity3D引擎界面,分為場(chǎng)景視圖、游戲視圖、工程視圖、層次視圖以及屬性面板。工程視圖包含所有要用到的資源包,層次視圖為場(chǎng)景視圖顯示的所有游戲物體,場(chǎng)景視圖為顯示層次視圖中所有的游戲物體,運(yùn)行后可以播放游戲視圖。
[0016]如圖1所示,在Unity3D引擎里運(yùn)行,播放沒有作雙筒狀扭曲的游戲場(chǎng)景,此時(shí)呈現(xiàn)的是一幅帶有兩個(gè)照相機(jī)的3D畫面,用戶左右眼看到的是兩幅相同的場(chǎng)景,且戴上設(shè)備后看到的將是經(jīng)過透鏡扭曲過的畫面,此時(shí)并沒有模擬人雙眼在真實(shí)生活中看到的世界,且畫面經(jīng)過透鏡扭曲,由于沒有做過處理,會(huì)使用戶感覺整個(gè)世界都顛倒了。
[0017]為了模擬人雙眼效果,在Unity3D里采用兩個(gè)照相機(jī)來實(shí)現(xiàn),分別設(shè)置左右兩個(gè)照相機(jī)的Viewport Rect參數(shù),左邊照相機(jī)的Viewport Rect參數(shù)改成(0,O, 0.5,I),右邊照相機(jī)的Viewport Rect參數(shù)改成(0.5,0,0.5,I),此時(shí)將會(huì)在屏幕產(chǎn)生兩個(gè)相同的場(chǎng)景,左右兩個(gè)場(chǎng)景各占屏幕的一半。然后在Unity3D引擎里的Monodevelop編輯器用Cg語言編寫Shader,并把腳本添加到相應(yīng)的左右兩個(gè)照相機(jī)上,在Shader里通過極坐標(biāo)(r,Θ) — (f(r)r, Θ)變換來改變像素坐標(biāo)點(diǎn)到各半屏幕中心的距離r,把改變后的距離r處所在的坐標(biāo)點(diǎn)的像素顏色值返回給原來的坐標(biāo)點(diǎn)上,此時(shí)改變了所有坐標(biāo)點(diǎn)的像素顏色值,其中f(r) = kd+l^r2+!^!.4+!^!.6,通過合理的選擇1?, k1; k2, k3這四個(gè)系數(shù)能夠作出相反于透鏡所產(chǎn)生的扭曲效果,在這里可以選擇(1.0,0.2,0.2,0)作為四個(gè)系數(shù)的值。此時(shí),把通過Cg語言編寫的Shader分別添加給左右兩個(gè)照相機(jī)能夠精準(zhǔn)的作出抵消透鏡所產(chǎn)生的扭曲效果。最后模擬人雙眼間的距離,在Shader里把左邊透鏡中心LensCenter的坐標(biāo)設(shè)置為(0.4,0.5),右邊透鏡中心LensCenter的坐標(biāo)設(shè)置為(0.6,0.4),同時(shí)左半屏幕的中心ScreenCenter的坐標(biāo)設(shè)置為(0.4, 0.5),右半屏幕的中心ScreenCenter的坐標(biāo)設(shè)置為(0.6,0.5),此時(shí)產(chǎn)生的效果如圖2所示,這也是經(jīng)過大量試驗(yàn)才得到的參數(shù)值。
[0018]設(shè)置好這些參數(shù)后,在虛擬現(xiàn)實(shí)頭戴式設(shè)備上安裝三軸陀螺儀、三軸加速度傳感器及三軸磁場(chǎng)傳感器,并編寫識(shí)別設(shè)備且接受設(shè)備數(shù)據(jù)的USB腳本,且添加給左右兩個(gè)照相機(jī)。這樣能接收并轉(zhuǎn)換人頭部的旋轉(zhuǎn)角度。以讓用戶戴上虛擬現(xiàn)實(shí)設(shè)備后旋轉(zhuǎn)頭部就能使其感覺在真實(shí)世界中四處張望一樣。再編寫使人移動(dòng)的腳本并添加給左右兩個(gè)照相機(jī),如此一來,人將會(huì)像生活在真實(shí)世界中一樣在3D游戲場(chǎng)景里自由的行走。采用了這樣一種全新的方案,使用Unity3D引擎強(qiáng)大的軟件功能克服了虛擬現(xiàn)實(shí)頭戴式設(shè)備顯示3D畫面的模糊效果,并實(shí)時(shí)接收并轉(zhuǎn)換設(shè)備的數(shù)據(jù),極大的滿足了用戶的需求。
[0019]圖3為編寫Shader腳本的程序流程圖,先定義著色器的屬性,包含所使用的貼圖,這張貼圖將是我們看到的場(chǎng)景畫面。再用Cg語言定義頂點(diǎn)數(shù)據(jù)結(jié)構(gòu),這將包括貼圖位置和像素點(diǎn)平面坐標(biāo)值,然后在頂點(diǎn)函數(shù)vert中計(jì)算位置和像素點(diǎn)平面坐標(biāo)值,接著在片段函數(shù)frag中,通過函數(shù)f (r) = 1?+?^2+!?!*4+!?!'6改變所有像素坐標(biāo)點(diǎn)到各半屏幕中心的距離r,把改變后的距離r處所在的坐標(biāo)點(diǎn)的像素顏色值返回給原來的坐標(biāo)點(diǎn)上,最后把頂點(diǎn)函數(shù)vert的代碼編譯成頂點(diǎn)程序,把片段函數(shù)frag的代碼編譯成片段程序。再把編寫好的Shader腳本添加給左右兩個(gè)照相機(jī)就能使畫面產(chǎn)生雙筒狀的效果以抵消透鏡所產(chǎn)生的扭曲。
【權(quán)利要求】
1.一種基于Unity3D引擎的虛擬現(xiàn)實(shí)頭戴式設(shè)備,包括長(zhǎng)方體外殼,所述長(zhǎng)方體外殼內(nèi)部固定有顯示屏,所述顯示屏通過計(jì)算機(jī)顯示兩個(gè)照相機(jī)獲取的畫面;所述顯示屏相對(duì)的一側(cè)呈雙孔狀結(jié)構(gòu),其特征在于,所述雙孔狀結(jié)構(gòu)內(nèi)放置有用于調(diào)焦的透鏡,所述計(jì)算機(jī)采用Unity3D引擎來使顯示屏顯示的畫面產(chǎn)生雙筒狀的扭曲來抵消透鏡所產(chǎn)生的扭曲。
2.根據(jù)權(quán)利要求1所述的基于Unity3D引擎的虛擬現(xiàn)實(shí)頭戴式設(shè)備,其特征在于,所述兩個(gè)照相機(jī)的Viewport Rect參數(shù)分別設(shè)置為(0,O, 0.5,I)和(0.5,O, 0.5,I),使得顯示屏產(chǎn)生兩個(gè)左右相同的場(chǎng)景,并且左右兩個(gè)相同場(chǎng)景各占屏幕的一半,所述計(jì)算機(jī)通過極坐標(biāo)(r,Θ) — (f(r)r,θ )變換來改變像素坐標(biāo)點(diǎn)到各半屏幕中心的距離r,把改變后的距離r處所在的坐標(biāo)點(diǎn)的像素顏色值返回給原來的坐標(biāo)點(diǎn)上,此時(shí)改變了所有坐標(biāo)點(diǎn)的像素顏色值,其中f Cr) = k0+k1r2+k2r4+k3r6,k0, k1; k2, k3這四個(gè)系數(shù)能夠作出相反于透鏡所產(chǎn)生的扭曲效果。
3.根據(jù)權(quán)利要求2所述的基于Unity3D引擎的虛擬現(xiàn)實(shí)頭戴式設(shè)備,其特征在于,k0, k1; k2, k3這四個(gè)系數(shù)分別為1.0,0.2,0.2和O。
【文檔編號(hào)】G06F9/44GK104240281SQ201410431515
【公開日】2014年12月24日 申請(qǐng)日期:2014年8月28日 優(yōu)先權(quán)日:2014年8月28日
【發(fā)明者】沈冰, 龔濤, 龍愷, 曹偉東, 趙鵬, 鄭華科 申請(qǐng)人:東華大學(xué)