基于Unity3D引擎實(shí)現(xiàn)裸眼3D顯示的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及3D顯示領(lǐng)域,具體涉及一種基于Unity3D引擎實(shí)現(xiàn)裸眼3D顯示的方 法。
【背景技術(shù)】
[0002] 裸眼3D顯示是不需要佩戴輔助設(shè)備(如紅藍(lán)、偏振、快門(mén)眼鏡)的一種顯示技術(shù), 它在廣告、軍事、醫(yī)學(xué)和娛樂(lè)互動(dòng)等領(lǐng)域有著廣泛的應(yīng)用背景。
[0003] 目前裸眼3D顯示內(nèi)容僅局限于視頻或是圖片格式,內(nèi)容形式單一。為了豐富裸眼 3D的顯示內(nèi)容,也為消費(fèi)者開(kāi)啟全方位的裸眼3D娛樂(lè)生活,將游戲軟件應(yīng)用在裸眼3D電視 上將是裸眼3D顯示的一個(gè)發(fā)展趨勢(shì),同時(shí)也提升了游戲軟件的視覺(jué)體驗(yàn)。
[0004] 目前,3D游戲主要是通過(guò)用3DMAX、MAYA等建模軟件構(gòu)建模型以及利用Unity3D、 C〇C〇s3d、虛幻等游戲引擎開(kāi)發(fā)出來(lái)的。本發(fā)明主要是基于Unity3D引擎來(lái)實(shí)現(xiàn)游戲內(nèi)容在 裸眼3D顯示終端上的顯示。
[0005] Unity3D是UnityTechnologies公司開(kāi)發(fā)的一款3D游戲引擎,是一款專(zhuān)門(mén)用來(lái) 制作游戲場(chǎng)景、建筑設(shè)計(jì)、動(dòng)畫(huà)展示的軟件。這款引擎因其強(qiáng)大的跨平臺(tái)開(kāi)發(fā)特性、絢麗的 3D渲染效果以及自由豐富的人機(jī)交互功能而聞名出眾。其跨平臺(tái)開(kāi)發(fā)特性可以節(jié)省開(kāi)發(fā)時(shí) 間,加快游戲開(kāi)發(fā)進(jìn)度。因?yàn)槠脚_(tái)之間的差異較大,比如屏幕尺寸、操作方式、運(yùn)行環(huán)境等的 不同會(huì)給開(kāi)發(fā)者造成巨大麻煩,而Unity3D的跨平臺(tái)特性恰能省去開(kāi)發(fā)者在不同的平臺(tái)之 間的移植開(kāi)發(fā)工作。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明的目的是針對(duì)上述【背景技術(shù)】中裸眼3D顯示的局限,本發(fā)明提供一種基于 Unity3D引擎來(lái)實(shí)現(xiàn)游戲內(nèi)容在裸眼3D顯示終端上的顯示方法。
[0007] 為了達(dá)到上述的技術(shù)效果,本發(fā)明采取以下技術(shù)方案:基于Unity3D引擎實(shí)現(xiàn)裸 眼3D顯示的方法,包括以下步驟:
[0008] S1、基于Unity3D編輯界面,擺放游戲?qū)ο?,設(shè)置游戲場(chǎng)景;
[0009] S2、在上述游戲場(chǎng)景中設(shè)置多個(gè)有視差的攝像機(jī),所述攝像機(jī)位于同一水平線 上;
[0010] S3、在上述游戲場(chǎng)景中創(chuàng)建一個(gè)零平面,該零平面作為參考平面,所述攝像機(jī)的焦 點(diǎn)均設(shè)置在所述零平面上;
[0011] S4、創(chuàng)建多個(gè)RenderTexture,所述RenderTexture的個(gè)數(shù)與所述攝像機(jī)個(gè)數(shù)相 同,RenderTexture用于保存攝像機(jī)內(nèi)容;
[0012] S5、獲得RenderTexture保存的內(nèi)容后,經(jīng)過(guò)光柵合成算法處理,顯示合成過(guò)后的 圖像。
[0013] 進(jìn)一步的技術(shù)方案是:所述攝像機(jī)與RenderTexture的個(gè)數(shù)都是八個(gè)。
[0014] 進(jìn)一步的技術(shù)方案是:步驟S2中,位于同一水平線上的相鄰攝像機(jī)的間距為 0? 012m~0? 018m,優(yōu)選 0? 015m。
[0015] 進(jìn)一步的技術(shù)方案是:步驟S3中,攝像機(jī)的焦距為16. 00m~24. 00m,優(yōu)選 20. 00m〇
[0016] 進(jìn)一步的技術(shù)方案是:步驟S5中,光柵合成算法處理,是采用視點(diǎn)數(shù)為8的柱鏡光 柵。
[0017] 進(jìn)一步的技術(shù)方案是:步驟S5中,光柵合成算法處理,是采用編寫(xiě)shader算法實(shí) 現(xiàn)多視點(diǎn)圖像合成。
[0018] 下面對(duì)本發(fā)明的原理作進(jìn)一步說(shuō)明:
[0019] 游戲軟件在普通2D顯示設(shè)備上的應(yīng)用現(xiàn)在已經(jīng)較為成熟,它通過(guò)動(dòng)畫(huà)軟件構(gòu)成 三維數(shù)字模型,產(chǎn)生逼真的虛擬環(huán)境,給用戶(hù)一種立體的虛擬娛樂(lè)游戲的體驗(yàn)。
[0020] 游戲軟件中的三維模型在裸眼3D電視上顯示的立體效果和普通2D終端顯示的3D 效果是有區(qū)別的。普通2D終端上顯示的3D場(chǎng)景是在平面里顯示三維圖形,不像現(xiàn)實(shí)世界 里的真實(shí)三維空間,不會(huì)有真實(shí)的距離空間,只是看起來(lái)很像真實(shí)世界。而裸眼3D電視利 用柱狀透鏡(LenticularLens)的技術(shù),也就是貼在屏幕前面的一層光柵。可以達(dá)到一種 相對(duì)于屏幕出屏和入屏的效果。通常為了獲得更好的立體效果,往往采用多幅視差圖像進(jìn) 行合成,觀看者在不同觀看位置只要看到其中的兩幅圖像就可以在大腦皮層中產(chǎn)生立體視 覺(jué)。
[0021] 為了達(dá)到相對(duì)于電視屏幕出屏和入屏的真實(shí)距離空間感。裸眼3D通常需要多幅 有視差(像素偏移)的圖像,本實(shí)驗(yàn)采用的是視點(diǎn)數(shù)為8的柱鏡光柵來(lái)實(shí)現(xiàn)的立體效果,最 后將這8副有視差的圖像通過(guò)復(fù)雜的光柵合成算法合成出一幅來(lái)實(shí)現(xiàn)。如果想達(dá)到A物體 出屏的效果就需要這八幅圖像中的A物體依次是向右偏移,我們叫這為正視差。如果想達(dá) 到B物體入屏的效果就需要這八幅圖像中的B物體依次是向左偏移,我們叫這為負(fù)視差。
[0022] 本發(fā)明與現(xiàn)有技術(shù)相比,具有以下的有益效果:
[0023] 1、本發(fā)明利用了第三方引擎強(qiáng)大的制作、渲染、處理功能,在實(shí)現(xiàn)了普通游戲制作 技術(shù)的基礎(chǔ)上將普通游戲的顯示效果升級(jí)為裸眼3D的顯示效果,可以作為一款裸眼3D游 戲插件應(yīng)用在Unity3D或是虛幻4等等第三方引擎之上,將現(xiàn)有的游戲升級(jí)為裸眼3D游戲 顯示效果。
[0024] 2、本發(fā)明通過(guò)利用第三方游戲引擎的RenderTexutre功能,實(shí)現(xiàn)了暫時(shí)保存多個(gè) 攝像機(jī)內(nèi)容,而不是立刻馬上輸出到顯示器上,通過(guò)后續(xù)合成算法處理之后再輸出到顯示 設(shè)備上。
[0025] 3、本發(fā)明為了實(shí)現(xiàn)游戲?qū)崟r(shí)顯示的要求,采用了可編程流水線技術(shù)將渲染、合成 以及顯示的全過(guò)程在GPU下完成。編寫(xiě)shader語(yǔ)言完成合成算法提高了數(shù)據(jù)計(jì)算速度,同 時(shí)避免了數(shù)據(jù)在CPU、GPU之間的拷貝,極大的提高了軟件執(zhí)行效率,達(dá)到了實(shí)時(shí)顯示以及 交互操作的要求。
[0026] 4、本發(fā)明利用游戲引擎實(shí)現(xiàn)裸眼3D顯示功能,便可以極大地?cái)U(kuò)展游戲引擎軟件 和裸眼3D顯示技術(shù)這兩者的應(yīng)用領(lǐng)域,且可以將已有的基于游戲引擎完成的游戲增加3D 處理模塊便可實(shí)現(xiàn)裸眼3D顯示,從而在很大程度上降低了裸眼3D游戲內(nèi)容的制作成本,并 且可以將游戲引擎豐富的交互功能移植到裸眼3D顯示技術(shù)中來(lái),并借助于游戲引擎強(qiáng)大 的模型兼容能力豐富裸眼3D的顯示內(nèi)容及素材。
【具體實(shí)施方式】