本發(fā)明涉及裸眼3D交互領(lǐng)域,尤其涉及一種基于Android設(shè)備的裸眼3D交互方法。
背景技術(shù):
科學(xué)技術(shù)的發(fā)展從未止步,電子產(chǎn)品的更新速度也是讓人目不暇接。2010年隨著電影《阿凡達(dá)》上映引起的轟動(dòng)效應(yīng),3D顯示技術(shù)被人們熟知并追捧,引領(lǐng)了電影工業(yè)的新潮流。與此同時(shí),家電消費(fèi)領(lǐng)域也不甘示弱,眾多品牌相繼推出了自己的3D電腦顯示器、投影機(jī)或者液晶電視。就目前3D技術(shù)應(yīng)用看,無(wú)論是電影作品還是家電產(chǎn)品都有一個(gè)共同的特點(diǎn)就是必須佩帶專業(yè)眼鏡才能使用。然而,長(zhǎng)時(shí)間佩戴眼睛觀看容易引起頭暈、惡心等不良癥狀,嚴(yán)重者還會(huì)損傷視力,同時(shí),有近視眼的觀眾因佩戴“雙重”眼鏡所帶來(lái)的不便更是苦不堪言。因此,目前的眼鏡式3D技術(shù)只能作為3D技術(shù)發(fā)展中的過(guò)渡產(chǎn)品,而最終將被裸眼3D顯示技術(shù)所取代。
中國(guó)專利CN105263015A(專利申請(qǐng)?zhí)枺?01510704456.0,發(fā)明名稱:一種Android設(shè)備控制裸眼3D視頻顯示的方法)公開(kāi)了一種Android設(shè)備控制裸眼3D視頻顯示的方法;該方法首先在開(kāi)發(fā)引擎中調(diào)用通信插件的相關(guān)接口實(shí)現(xiàn)Android設(shè)備端與PC端的實(shí)時(shí)通信,然后在場(chǎng)景中實(shí)現(xiàn)裸眼3D顯示,并創(chuàng)建不同的響應(yīng)按鈕用來(lái)響應(yīng)不同裸眼3D視頻的顯示,在Android設(shè)備端點(diǎn)擊不同的響應(yīng)按鈕實(shí)現(xiàn)裸眼3D顯示終端不同裸眼3D視頻內(nèi)容顯示,實(shí)現(xiàn)Android設(shè)備控制裸眼3D視頻顯示的方法。雖然該方法能夠有效的解決裸眼3D視頻內(nèi)容難以調(diào)控,基于不同硬件條件再制作周期長(zhǎng),成本高等問(wèn)題,但依然存在交互式裸眼3D顯示難以調(diào)控的問(wèn)題。中國(guó)專利CN104702936A(專利申請(qǐng)?zhí)枺?01510144851.8,發(fā)明名稱:一種基于裸眼3D顯示的虛擬現(xiàn)實(shí)交互方法)公開(kāi)了在虛擬現(xiàn)實(shí)交互場(chǎng)景中創(chuàng)建多臺(tái)立體相機(jī)并進(jìn)行排布;每臺(tái)立體相機(jī)輸出的渲染貼圖與計(jì)算的視點(diǎn)子像素映射矩陣編寫(xiě)在GPU上運(yùn)行的著色器Shader進(jìn)行采樣和融合處理,獲得合成圖像,然后輸出到場(chǎng)景中新的顯示面板,之后將PC端連接裸眼3D顯示終端,裸眼3D顯示終端顯示立體圖像;最后在PC端進(jìn)行虛擬現(xiàn)實(shí)交互場(chǎng)景的交互操作,在裸眼3D顯示終端完成交互操作的同步立體顯示。該方法依然存在交互式裸眼3D顯示難以調(diào)控的問(wèn)題。
裸眼3D顯示技術(shù)是無(wú)需佩戴任何輔助設(shè)備(如3D眼鏡、頭盔等)的情況下,通過(guò)光柱透鏡等先進(jìn)光學(xué)技術(shù)與特殊算法定制的視頻片源即可讓觀眾獲得前所未有的“高真實(shí)度”視覺(jué)體驗(yàn),是一種新型的圖像顯示技術(shù)。同時(shí)裸眼3D顯示技術(shù)是推進(jìn)工業(yè)化與信息化“兩化”融合的發(fā)動(dòng)機(jī)之一,同時(shí)也是工業(yè)界和工業(yè)創(chuàng)意產(chǎn)業(yè)廣泛應(yīng)用的基礎(chǔ)性、戰(zhàn)略性的工具技術(shù)。通過(guò)裸眼3D科技創(chuàng)意,一些傳統(tǒng)行業(yè)有望加快產(chǎn)業(yè)升級(jí)與創(chuàng)新步伐,如廣告?zhèn)髅?、展覽展示、科研教學(xué)、游戲娛樂(lè)、工業(yè)設(shè)計(jì)、地質(zhì)測(cè)繪、醫(yī)學(xué)診療、軍事、場(chǎng)景重建等多個(gè)行業(yè)。
然而,裸眼3D顯示技術(shù)的最終發(fā)展方向?yàn)榻换ナ铰阊?D顯示,現(xiàn)階段交互式裸眼3D顯示技術(shù)并未成熟,市場(chǎng)上并未出現(xiàn)一種良好的方式來(lái)調(diào)試,控制交互式裸眼3D顯示,嚴(yán)重的阻礙了裸眼3D顯示技術(shù)的發(fā)展,假若能夠?qū)崿F(xiàn)一種基于Android設(shè)備的裸眼3D交互方法,便可快捷的調(diào)試,控制交互式裸眼3D顯示,填補(bǔ)了交互式裸眼3D顯示控制領(lǐng)域的空白,極大地?cái)U(kuò)展裸眼3D顯示技術(shù)的應(yīng)用領(lǐng)域,能夠良好的推動(dòng)裸眼3D顯示技術(shù)的發(fā)展。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)存在的不足之處,本發(fā)明的目的在于提供一種基于Android設(shè)備的裸眼3D交互方法,該方法能夠有效地解決交互式裸眼3D顯示難以調(diào)控的問(wèn)題,填補(bǔ)了交互式裸眼3D顯示控制領(lǐng)域的空白,極大地?cái)U(kuò)展裸眼3D顯示技術(shù)的應(yīng)用領(lǐng)域,顯著推動(dòng)裸眼3D顯示技術(shù)的發(fā)展。
本發(fā)明的目的通過(guò)下述技術(shù)方案實(shí)現(xiàn):
一種基于Android設(shè)備的裸眼3D交互方法,其方法步驟如下:
A、將TNet插件導(dǎo)入開(kāi)發(fā)引擎;
B、調(diào)用TNet插件的相關(guān)接口實(shí)現(xiàn)網(wǎng)絡(luò)通信;
C、創(chuàng)建交互式裸眼3D顯示場(chǎng)景;
D、運(yùn)用TNet插件賦予不同交互物體不同ID值;
E、編譯場(chǎng)景內(nèi)容并發(fā)布PC端的可執(zhí)行文件;
F、修改交互式裸眼3D顯示場(chǎng)景為交互式2D顯示場(chǎng)景,保持ID值不發(fā)生變化;
G、編譯交互式2D顯示場(chǎng)景發(fā)布APK文件,并安裝到Android設(shè)備端;
H、PC端連接到裸眼3D顯示終端,同時(shí)連接PC端、Android設(shè)備端到同一局域網(wǎng)絡(luò);
I、分別運(yùn)行可執(zhí)行文件,Android設(shè)備端新建IP地址,PC端連接到相同IP地址;
J、在Android設(shè)備端進(jìn)行2D場(chǎng)景的交互操作,裸眼3D顯示終端響應(yīng)相同的裸眼3D交互動(dòng)作。
為了更好地實(shí)現(xiàn)本發(fā)明,本發(fā)明基于Android設(shè)備的裸眼3D交互方法優(yōu)選的技術(shù)方法如下,其方法步驟如下:
A、將TNet插件導(dǎo)入開(kāi)發(fā)引擎;TNet插件作為封裝了TCP或HTTP網(wǎng)絡(luò)協(xié)議的插件,使用此插件來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)通信功能并不用太多的工作量,其功能完全滿足Android設(shè)備端與PC端之間的網(wǎng)絡(luò)通信功能;
B、調(diào)用步驟A中的TNet插件的相關(guān)接口實(shí)現(xiàn)網(wǎng)絡(luò)通信;在開(kāi)發(fā)引擎中創(chuàng)建新的場(chǎng)景,在新場(chǎng)景中創(chuàng)建攝像機(jī),將調(diào)用TNet插件的相關(guān)接口的代碼文件掛在虛擬相機(jī)上,保存場(chǎng)景為Communication;
C、創(chuàng)建交互式裸眼3D顯示場(chǎng)景;在開(kāi)發(fā)引擎中創(chuàng)建交互式裸眼3D顯示場(chǎng)景主要分為以下兩個(gè)模塊:場(chǎng)景模塊和顯示模塊;場(chǎng)景模塊主要包括裸眼功能和交互功能,而顯示模塊主要包含顯示功能;
場(chǎng)景模塊裸眼功能的實(shí)現(xiàn)方式如下:在開(kāi)發(fā)引擎的Scene窗口創(chuàng)建八臺(tái)虛擬相機(jī),并將所有虛擬相機(jī)的坐標(biāo)Position設(shè)置為(0,0,0),旋轉(zhuǎn)角度Rotation設(shè)置為(0,0,0),尺寸大小Scale設(shè)置為(1,1,1);然后調(diào)整每臺(tái)相機(jī)之間的距離間隔為0.017,同時(shí)在Layer屬性中添加新層PlaySence,修改八臺(tái)攝像機(jī)的剔除遮罩Culling Mask屬性為PlaySence,在八臺(tái)虛擬相機(jī)的正前方創(chuàng)建零平面ZeroPlane,并設(shè)置其坐標(biāo)Position設(shè)置為(0,0,10),旋轉(zhuǎn)角度Rotation設(shè)置為(270,0,0),尺寸大小Scale設(shè)置為(1,1,1),修改其屬性將其隱藏,編寫(xiě)相關(guān)腳本實(shí)現(xiàn)八臺(tái)攝像機(jī)聚焦于零平面的中心點(diǎn);然后在Project中創(chuàng)建8張渲染貼圖RenderTexture,將渲染貼圖的Size修改為1920×1080,在每臺(tái)虛擬相機(jī)的Target Texture屬性中賦予不同的渲染貼圖,使得每臺(tái)攝像機(jī)對(duì)應(yīng)一張渲染貼圖;然后計(jì)算出視點(diǎn)子像素映射矩陣,并編寫(xiě)相應(yīng)的Shader,對(duì)每臺(tái)相機(jī)渲染的貼圖進(jìn)行采樣處理,具體的計(jì)算方式如下:首先,確定2D顯示屏上給定的RGB子像素應(yīng)該取自哪個(gè)視點(diǎn)的RGB分量,下式給出了多視點(diǎn)子像素映射矩陣的計(jì)算公式:
其中,X為一個(gè)光柵周期在水平方向上覆蓋RGB子像素的個(gè)數(shù),(k,1)為RGB子像素的坐標(biāo)位置,a為光柵軸相對(duì)于LCD顯示屏垂直軸的傾斜夾角,koff表示2D顯示屏左上邊緣與光柵單元邊緣點(diǎn)的水平位移量,Ntot表示總視點(diǎn)個(gè)數(shù),也就是參與合成的視差圖像數(shù)量;
根據(jù)上式可計(jì)算出2D顯示屏上的每個(gè)子像素的灰度值應(yīng)該取自于哪幅視差圖像的相應(yīng)坐標(biāo)位置的灰度值;然后將視點(diǎn)映射矩陣編寫(xiě)到Shader中,利用Shader對(duì)相機(jī)渲染的多張渲染貼圖進(jìn)行子像素的采樣處理,并將經(jīng)過(guò)采樣處理的多張視差圖像相互疊加,得到最終的合成圖像;
場(chǎng)景模塊交互功能的實(shí)現(xiàn)方式如下:在場(chǎng)景中添加各種交互物體,并將其Layer屬性中全部修改為PlaySence,然后在Project中創(chuàng)建CS腳本,修改腳本名字為Play,編寫(xiě)腳本實(shí)現(xiàn)不同的交互動(dòng)作,交互動(dòng)作包括旋轉(zhuǎn)、移動(dòng)或縮放,并將腳本掛在與之相對(duì)應(yīng)動(dòng)作的交互物體之上,然后再創(chuàng)建CS腳本,修改腳本名字為T(mén)ouchHandle,編寫(xiě)腳本實(shí)現(xiàn)射線檢測(cè)功能,并將腳本掛在其中一個(gè)虛擬攝像機(jī),修改虛擬攝像機(jī)的屬性為Main Camera;
顯示模塊顯示功能的實(shí)現(xiàn)方式如下:創(chuàng)建新的虛擬相機(jī)及顯示面板,調(diào)整虛擬相機(jī)的坐標(biāo)Position設(shè)置為(-5,0,100),旋轉(zhuǎn)角度Rotation設(shè)置為(0,90,0),尺寸大小Scale設(shè)置為(1,1,1),在Layer屬性中添加新層ShowSence,修改八臺(tái)攝像機(jī)的剔除遮罩Culling Mask屬性為ShowSence,同時(shí)修改起攝像方式為正交式,攝像角度調(diào)整為27,修改起深度Depth為1,新建相機(jī)默認(rèn)為0;然后調(diào)整顯示面板的坐標(biāo)Position設(shè)置為(0,0,100),旋轉(zhuǎn)角度Rotation設(shè)置為(90,-90,0),尺寸大小Scale設(shè)置為(9.6,1,5.4),匹配1080P分辨率的顯示終端;將其Layer屬性修改為ShowSence,同時(shí)在顯示面板創(chuàng)建材質(zhì)球Material,通過(guò)材質(zhì)球的Custom選項(xiàng)調(diào)用shader獲取合成圖像,將合成圖像呈現(xiàn)在顯示面板;最后,保存以上場(chǎng)景為Play;
D、運(yùn)用TNet插件賦予不同交互物體不同ID值;調(diào)用TNet插件的相關(guān)接口,修改其通信腳本,將ID值設(shè)置為公有制變量,將通信腳本掛在不同交互物體上,并賦予不同的ID值;賦予第一交互物體的ID值為1,第二交互物體的ID值為2,以此類推;
E、編譯場(chǎng)景內(nèi)容并發(fā)布PC端的可執(zhí)行文件;點(diǎn)擊開(kāi)發(fā)引擎File菜單下的Build Settings,并將以上兩個(gè)場(chǎng)景放入Scenes In Build選項(xiàng)欄,并選擇Platform為PC and Mac Standalone,之后點(diǎn)擊Build發(fā)布出PC端的可執(zhí)行文件;
F、修改交互式裸眼3D顯示場(chǎng)景為交互式2D顯示場(chǎng)景,保持ID值不發(fā)生變化;修改的具體方式為:在場(chǎng)景中保留掛有TouchHandle的虛擬相機(jī),刪除其余七個(gè)虛擬相機(jī),同時(shí)刪除顯示模塊中的新相機(jī)及顯示面板;
G、編譯交互式2D顯示場(chǎng)景發(fā)布APK文件,并安裝到Android設(shè)備端;如同PC端的文件發(fā)布,將之前選擇的PC and Mac Standalone修改為Android,之后點(diǎn)擊Build發(fā)布出APK文件;
H、PC端連接到裸眼3D顯示終端,同時(shí)連接PC端、Android設(shè)備端到同一局域網(wǎng)絡(luò);通過(guò)HDMI數(shù)據(jù)傳輸線將PC端與裸眼3D顯示終端連接起來(lái),將PC端的圖像傳輸?shù)铰阊?D顯示終端,同時(shí)通過(guò)路由器創(chuàng)建局域網(wǎng),將PC端、Android設(shè)備同時(shí)連接到創(chuàng)建的局域網(wǎng);
I、分別運(yùn)行可執(zhí)行文件,Android設(shè)備端新建IP地址,PC端連接到相同IP地址;運(yùn)行PC端的可執(zhí)行文件,選擇文件分辨率為1920×1080,保持與裸眼3D顯示終端相同分辨率;在Android設(shè)備端新建IP地址,裸眼3D顯示終端彈出相同IP地址,點(diǎn)擊IP地址,顯示連接成功;
J、在Android設(shè)備端進(jìn)行2D場(chǎng)景的交互操作,裸眼3D顯示終端響應(yīng)相同的裸眼3D交互動(dòng)作;在Android設(shè)備端進(jìn)行2D場(chǎng)景的交互操作,其交互操作包括旋轉(zhuǎn)、移動(dòng)、縮放;通過(guò)TNet插件的通信接口,相同ID值響應(yīng)相同的動(dòng)作,裸眼3D顯示終端響應(yīng)與之對(duì)應(yīng)的裸眼3D交互動(dòng)作,實(shí)現(xiàn)基于Android設(shè)備的裸眼3D交互方法。
本發(fā)明優(yōu)選的步驟B的技術(shù)方案如下:所述步驟B調(diào)用TNet插件的相關(guān)接口實(shí)現(xiàn)網(wǎng)絡(luò)通信;在開(kāi)發(fā)引擎中創(chuàng)建新的場(chǎng)景,在新場(chǎng)景中創(chuàng)建攝像機(jī),將調(diào)用TNet插件的相關(guān)接口的代碼文件掛在虛擬相機(jī)。
本發(fā)明優(yōu)選的步驟B的技術(shù)方案如下:所述步驟C創(chuàng)建交互式裸眼3D顯示場(chǎng)景;交互式裸眼3D顯示場(chǎng)景主要分為兩個(gè)模塊:場(chǎng)景模塊和顯示模塊。
本發(fā)明優(yōu)選的步驟B的技術(shù)方案如下:所述步驟F修改交互式裸眼3D顯示場(chǎng)景為交互式2D顯示場(chǎng)景,保持ID值不發(fā)生變化;修改的具體方式為:在場(chǎng)景中保留掛有TouchHandle的虛擬相機(jī),刪除其余七個(gè)虛擬相機(jī),同時(shí)刪除顯示模塊中的新相機(jī)及顯示面板。
本發(fā)明優(yōu)選的步驟B的技術(shù)方案如下:所述步驟J在Android設(shè)備端進(jìn)行2D場(chǎng)景的交互操作,裸眼3D顯示終端響應(yīng)相同的裸眼3D交互動(dòng)作;具體的響應(yīng)的實(shí)現(xiàn)過(guò)程為:通過(guò)TNet插件的通信接口,相同ID值響應(yīng)相同的動(dòng)作。
本發(fā)明較現(xiàn)有技術(shù)相比,具有以下優(yōu)點(diǎn)及有益效果:
本發(fā)明能夠有效地解決交互式裸眼3D顯示難以調(diào)控的問(wèn)題,填補(bǔ)了交互式裸眼3D顯示控制領(lǐng)域的空白,極大地?cái)U(kuò)展裸眼3D顯示技術(shù)的應(yīng)用領(lǐng)域,顯著推動(dòng)裸眼3D顯示技術(shù)的發(fā)展。
附圖說(shuō)明
圖1為本發(fā)明的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步地詳細(xì)說(shuō)明:
實(shí)施例
如圖1所示,一種基于Android設(shè)備的裸眼3D交互方法,其方法步驟如下:
A、將TNet插件導(dǎo)入開(kāi)發(fā)引擎;
B、調(diào)用TNet插件的相關(guān)接口實(shí)現(xiàn)網(wǎng)絡(luò)通信。作為優(yōu)選,所述步驟B調(diào)用TNet插件的相關(guān)接口實(shí)現(xiàn)網(wǎng)絡(luò)通信;在開(kāi)發(fā)引擎中創(chuàng)建新的場(chǎng)景,在新場(chǎng)景中創(chuàng)建攝像機(jī),將調(diào)用TNet插件的相關(guān)接口的代碼文件掛在虛擬相機(jī)。
C、創(chuàng)建交互式裸眼3D顯示場(chǎng)景。作為優(yōu)選,所述步驟C創(chuàng)建交互式裸眼3D顯示場(chǎng)景;交互式裸眼3D顯示場(chǎng)景主要分為兩個(gè)模塊:場(chǎng)景模塊和顯示模塊。
D、運(yùn)用TNet插件賦予不同交互物體不同ID值;
E、編譯場(chǎng)景內(nèi)容并發(fā)布PC端的可執(zhí)行文件;
F、修改交互式裸眼3D顯示場(chǎng)景為交互式2D顯示場(chǎng)景,保持ID值不發(fā)生變化。作為優(yōu)選,所述步驟F修改交互式裸眼3D顯示場(chǎng)景為交互式2D顯示場(chǎng)景,保持ID值不發(fā)生變化;修改的具體方式為:在場(chǎng)景中保留掛有TouchHandle的虛擬相機(jī),刪除其余七個(gè)虛擬相機(jī),同時(shí)刪除顯示模塊中的新相機(jī)及顯示面板。
G、編譯交互式2D顯示場(chǎng)景發(fā)布APK文件,并安裝到Android設(shè)備端;
H、PC端連接到裸眼3D顯示終端,同時(shí)連接PC端、Android設(shè)備端到同一局域網(wǎng)絡(luò);
I、分別運(yùn)行可執(zhí)行文件,Android設(shè)備端新建IP地址,PC端連接到相同IP地址;
J、在Android設(shè)備端進(jìn)行2D場(chǎng)景的交互操作,裸眼3D顯示終端響應(yīng)相同的裸眼3D交互動(dòng)作。作為優(yōu)選,所述步驟J在Android設(shè)備端進(jìn)行2D場(chǎng)景的交互操作,裸眼3D顯示終端響應(yīng)相同的裸眼3D交互動(dòng)作;具體的響應(yīng)的實(shí)現(xiàn)過(guò)程為:通過(guò)TNet插件的通信接口,相同ID值響應(yīng)相同的動(dòng)作。
本發(fā)明基于Android設(shè)備的裸眼3D交互方法優(yōu)選的技術(shù)方法如下,其方法步驟如下:
A、將TNet插件導(dǎo)入開(kāi)發(fā)引擎;TNet插件作為封裝了TCP或HTTP網(wǎng)絡(luò)協(xié)議的插件,使用此插件來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)通信功能并不用太多的工作量,其功能完全滿足Android設(shè)備端與PC端之間的網(wǎng)絡(luò)通信功能;
B、調(diào)用步驟A中的TNet插件的相關(guān)接口實(shí)現(xiàn)網(wǎng)絡(luò)通信;在開(kāi)發(fā)引擎中創(chuàng)建新的場(chǎng)景,在新場(chǎng)景中創(chuàng)建攝像機(jī),將調(diào)用TNet插件的相關(guān)接口的代碼文件掛在虛擬相機(jī)上,保存場(chǎng)景為Communication;
C、創(chuàng)建交互式裸眼3D顯示場(chǎng)景;在開(kāi)發(fā)引擎中創(chuàng)建交互式裸眼3D顯示場(chǎng)景主要分為以下兩個(gè)模塊:場(chǎng)景模塊和顯示模塊;場(chǎng)景模塊主要包括裸眼功能和交互功能,而顯示模塊主要包含顯示功能;
場(chǎng)景模塊裸眼功能的實(shí)現(xiàn)方式如下:在開(kāi)發(fā)引擎的Scene窗口創(chuàng)建八臺(tái)虛擬相機(jī),并將所有虛擬相機(jī)的坐標(biāo)Position設(shè)置為(0,0,0),旋轉(zhuǎn)角度Rotation設(shè)置為(0,0,0),尺寸大小Scale設(shè)置為(1,1,1);然后調(diào)整每臺(tái)相機(jī)之間的距離間隔為0.017,同時(shí)在Layer屬性中添加新層PlaySence,修改八臺(tái)攝像機(jī)的剔除遮罩Culling Mask屬性為PlaySence,在八臺(tái)虛擬相機(jī)的正前方創(chuàng)建零平面ZeroPlane,并設(shè)置其坐標(biāo)Position設(shè)置為(0,0,10),旋轉(zhuǎn)角度Rotation設(shè)置為(270,0,0),尺寸大小Scale設(shè)置為(1,1,1),修改其屬性將其隱藏,編寫(xiě)相關(guān)腳本實(shí)現(xiàn)八臺(tái)攝像機(jī)聚焦于零平面的中心點(diǎn);然后在Project中創(chuàng)建8張渲染貼圖RenderTexture,將渲染貼圖的Size修改為1920×1080,在每臺(tái)虛擬相機(jī)的Target Texture屬性中賦予不同的渲染貼圖,使得每臺(tái)攝像機(jī)對(duì)應(yīng)一張渲染貼圖;然后計(jì)算出視點(diǎn)子像素映射矩陣,并編寫(xiě)相應(yīng)的Shader,對(duì)每臺(tái)相機(jī)渲染的貼圖進(jìn)行采樣處理,具體的計(jì)算方式如下:首先,確定2D顯示屏上給定的RGB子像素應(yīng)該取自哪個(gè)視點(diǎn)的RGB分量,下式給出了多視點(diǎn)子像素映射矩陣的計(jì)算公式:
其中,X為一個(gè)光柵周期在水平方向上覆蓋RGB子像素的個(gè)數(shù),(k,1)為RGB子像素的坐標(biāo)位置,a為光柵軸相對(duì)于LCD顯示屏垂直軸的傾斜夾角,koff表示2D顯示屏左上邊緣與光柵單元邊緣點(diǎn)的水平位移量,Ntot表示總視點(diǎn)個(gè)數(shù),也就是參與合成的視差圖像數(shù)量;
根據(jù)上式可計(jì)算出2D顯示屏上的每個(gè)子像素的灰度值應(yīng)該取自于哪幅視差圖像的相應(yīng)坐標(biāo)位置的灰度值;然后將視點(diǎn)映射矩陣編寫(xiě)到Shader中,利用Shader對(duì)相機(jī)渲染的多張渲染貼圖進(jìn)行子像素的采樣處理,并將經(jīng)過(guò)采樣處理的多張視差圖像相互疊加,得到最終的合成圖像;
場(chǎng)景模塊交互功能的實(shí)現(xiàn)方式如下:在場(chǎng)景中添加各種交互物體,并將其Layer屬性中全部修改為PlaySence,然后在Project中創(chuàng)建CS腳本,修改腳本名字為Play,編寫(xiě)腳本實(shí)現(xiàn)不同的交互動(dòng)作,交互動(dòng)作包括旋轉(zhuǎn)、移動(dòng)或縮放,并將腳本掛在與之相對(duì)應(yīng)動(dòng)作的交互物體之上,然后再創(chuàng)建CS腳本,修改腳本名字為T(mén)ouchHandle,編寫(xiě)腳本實(shí)現(xiàn)射線檢測(cè)功能,并將腳本掛在其中一個(gè)虛擬攝像機(jī),修改虛擬攝像機(jī)的屬性為Main Camera;
顯示模塊顯示功能的實(shí)現(xiàn)方式如下:創(chuàng)建新的虛擬相機(jī)及顯示面板,調(diào)整虛擬相機(jī)的坐標(biāo)Position設(shè)置為(-5,0,100),旋轉(zhuǎn)角度Rotation設(shè)置為(0,90,0),尺寸大小Scale設(shè)置為(1,1,1),在Layer屬性中添加新層ShowSence,修改八臺(tái)攝像機(jī)的剔除遮罩Culling Mask屬性為ShowSence,同時(shí)修改起攝像方式為正交式,攝像角度調(diào)整為27,修改起深度Depth為1,新建相機(jī)默認(rèn)為0;然后調(diào)整顯示面板的坐標(biāo)Position設(shè)置為(0,0,100),旋轉(zhuǎn)角度Rotation設(shè)置為(90,-90,0),尺寸大小Scale設(shè)置為(9.6,1,5.4),匹配1080P分辨率的顯示終端;將其Layer屬性修改為ShowSence,同時(shí)在顯示面板創(chuàng)建材質(zhì)球Material,通過(guò)材質(zhì)球的Custom選項(xiàng)調(diào)用shader獲取合成圖像,將合成圖像呈現(xiàn)在顯示面板;最后,保存以上場(chǎng)景為Play;
D、運(yùn)用TNet插件賦予不同交互物體不同ID值;調(diào)用TNet插件的相關(guān)接口,修改其通信腳本,將ID值設(shè)置為公有制變量,將通信腳本掛在不同交互物體上,并賦予不同的ID值;賦予第一交互物體的ID值為1,第二交互物體的ID值為2,以此類推;
E、編譯場(chǎng)景內(nèi)容并發(fā)布PC端的可執(zhí)行文件;點(diǎn)擊開(kāi)發(fā)引擎File菜單下的Build Settings,并將以上兩個(gè)場(chǎng)景放入Scenes In Build選項(xiàng)欄,并選擇Platform為PC and Mac Standalone,之后點(diǎn)擊Build發(fā)布出PC端的可執(zhí)行文件;
F、修改交互式裸眼3D顯示場(chǎng)景為交互式2D顯示場(chǎng)景,保持ID值不發(fā)生變化;修改的具體方式為:在場(chǎng)景中保留掛有TouchHandle的虛擬相機(jī),刪除其余七個(gè)虛擬相機(jī),同時(shí)刪除顯示模塊中的新相機(jī)及顯示面板;
G、編譯交互式2D顯示場(chǎng)景發(fā)布APK文件,并安裝到Android設(shè)備端;如同PC端的文件發(fā)布,將之前選擇的PC and Mac Standalone修改為Android,之后點(diǎn)擊Build發(fā)布出APK文件;
H、PC端連接到裸眼3D顯示終端,同時(shí)連接PC端、Android設(shè)備端到同一局域網(wǎng)絡(luò);通過(guò)HDMI數(shù)據(jù)傳輸線將PC端與裸眼3D顯示終端連接起來(lái),將PC端的圖像傳輸?shù)铰阊?D顯示終端,同時(shí)通過(guò)路由器創(chuàng)建局域網(wǎng),將PC端、Android設(shè)備同時(shí)連接到創(chuàng)建的局域網(wǎng);
I、分別運(yùn)行可執(zhí)行文件,Android設(shè)備端新建IP地址,PC端連接到相同IP地址;運(yùn)行PC端的可執(zhí)行文件,選擇文件分辨率為1920×1080,保持與裸眼3D顯示終端相同分辨率;在Android設(shè)備端新建IP地址,裸眼3D顯示終端彈出相同IP地址,點(diǎn)擊IP地址,顯示連接成功;
J、在Android設(shè)備端進(jìn)行2D場(chǎng)景的交互操作,裸眼3D顯示終端響應(yīng)相同的裸眼3D交互動(dòng)作;在Android設(shè)備端進(jìn)行2D場(chǎng)景的交互操作,其交互操作包括旋轉(zhuǎn)、移動(dòng)、縮放;通過(guò)TNet插件的通信接口,相同ID值響應(yīng)相同的動(dòng)作,裸眼3D顯示終端響應(yīng)與之對(duì)應(yīng)的裸眼3D交互動(dòng)作,實(shí)現(xiàn)基于Android設(shè)備的裸眼3D交互方法。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。