1.一種基于Android設(shè)備的裸眼3D交互方法,其特征在于:其方法步驟如下:
A、將TNet插件導(dǎo)入開發(fā)引擎;
B、調(diào)用TNet插件的相關(guān)接口實(shí)現(xiàn)網(wǎng)絡(luò)通信;
C、創(chuàng)建交互式裸眼3D顯示場景;
D、運(yùn)用TNet插件賦予不同交互物體不同ID值;
E、編譯場景內(nèi)容并發(fā)布PC端的可執(zhí)行文件;
F、修改交互式裸眼3D顯示場景為交互式2D顯示場景,保持ID值不發(fā)生變化;
G、編譯交互式2D顯示場景發(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場景的交互操作,裸眼3D顯示終端響應(yīng)相同的裸眼3D交互動(dòng)作。
2.按照權(quán)利要求1所述的一種基于Android設(shè)備的裸眼3D交互方法,其特征在于:其方法步驟如下:
A、將TNet插件導(dǎo)入開發(fā)引擎;TNet插件作為封裝了TCP或HTTP網(wǎng)絡(luò)協(xié)議的插件,使用此插件來實(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ò)通信;在開發(fā)引擎中創(chuàng)建新的場景,在新場景中創(chuàng)建攝像機(jī),將調(diào)用TNet插件的相關(guān)接口的代碼文件掛在虛擬相機(jī)上,保存場景為Communication;
C、創(chuàng)建交互式裸眼3D顯示場景;在開發(fā)引擎中創(chuàng)建交互式裸眼3D顯示場景主要分為以下兩個(gè)模塊:場景模塊和顯示模塊;場景模塊主要包括裸眼功能和交互功能,而顯示模塊主要包含顯示功能;
場景模塊裸眼功能的實(shí)現(xiàn)方式如下:在開發(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),修改其屬性將其隱藏,編寫相關(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ī)對應(yīng)一張渲染貼圖;然后計(jì)算出視點(diǎn)子像素映射矩陣,并編寫相應(yīng)的Shader,對每臺(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)位置,α為光柵軸相對于LCD顯示屏垂直軸的傾斜夾角,koff表示2D顯示屏左上邊緣與光柵單元邊緣點(diǎn)的水平位移量,Ntot表示總視點(diǎn)個(gè)數(shù),也就是參與合成的視差圖像數(shù)量;
根據(jù)上式可計(jì)算出2D顯示屏上的每個(gè)子像素的灰度值應(yīng)該取自于哪幅視差圖像的相應(yīng)坐標(biāo)位置的灰度值;然后將視點(diǎn)映射矩陣編寫到Shader中,利用Shader對相機(jī)渲染的多張渲染貼圖進(jìn)行子像素的采樣處理,并將經(jīng)過采樣處理的多張視差圖像相互疊加,得到最終的合成圖像;
場景模塊交互功能的實(shí)現(xiàn)方式如下:在場景中添加各種交互物體,并將其Layer屬性中全部修改為PlaySence,然后在Project中創(chuàng)建CS腳本,修改腳本名字為Play,編寫腳本實(shí)現(xiàn)不同的交互動(dòng)作,交互動(dòng)作包括旋轉(zhuǎn)、移動(dòng)或縮放,并將腳本掛在與之相對應(yīng)動(dòng)作的交互物體之上,然后再創(chuàng)建CS腳本,修改腳本名字為TouchHandle,編寫腳本實(shí)現(xiàn)射線檢測功能,并將腳本掛在其中一個(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,通過材質(zhì)球的Custom選項(xiàng)調(diào)用shader獲取合成圖像,將合成圖像呈現(xiàn)在顯示面板;最后,保存以上場景為Play;
D、運(yùn)用TNet插件賦予不同交互物體不同ID值;調(diào)用TNet插件的相關(guān)接口,修改其通信腳本,將ID值設(shè)置為公有制變量,將通信腳本掛在不同交互物體上,并賦予不同的ID值;賦予第一交互物體的ID值為1,第二交互物體的ID值為2,以此類推;
E、編譯場景內(nèi)容并發(fā)布PC端的可執(zhí)行文件;點(diǎn)擊開發(fā)引擎File菜單下的Build Settings,并將以上兩個(gè)場景放入Scenes In Build選項(xiàng)欄,并選擇Platform為PC and Mac Standalone,之后點(diǎn)擊Build發(fā)布出PC端的可執(zhí)行文件;
F、修改交互式裸眼3D顯示場景為交互式2D顯示場景,保持ID值不發(fā)生變化;修改的具體方式為:在場景中保留掛有TouchHandle的虛擬相機(jī),刪除其余七個(gè)虛擬相機(jī),同時(shí)刪除顯示模塊中的新相機(jī)及顯示面板;
G、編譯交互式2D顯示場景發(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ò);通過HDMI數(shù)據(jù)傳輸線將PC端與裸眼3D顯示終端連接起來,將PC端的圖像傳輸?shù)铰阊?D顯示終端,同時(shí)通過路由器創(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場景的交互操作,裸眼3D顯示終端響應(yīng)相同的裸眼3D交互動(dòng)作;在Android設(shè)備端進(jìn)行2D場景的交互操作,其交互操作包括旋轉(zhuǎn)、移動(dòng)、縮放;通過TNet插件的通信接口,相同ID值響應(yīng)相同的動(dòng)作,裸眼3D顯示終端響應(yīng)與之對應(yīng)的裸眼3D交互動(dòng)作,實(shí)現(xiàn)基于Android設(shè)備的裸眼3D交互方法。
3.按照權(quán)利要求1所述的一種基于Android設(shè)備的裸眼3D交互方法,其特征在于:所述步驟B調(diào)用TNet插件的相關(guān)接口實(shí)現(xiàn)網(wǎng)絡(luò)通信;在開發(fā)引擎中創(chuàng)建新的場景,在新場景中創(chuàng)建攝像機(jī),將調(diào)用TNet插件的相關(guān)接口的代碼文件掛在虛擬相機(jī)。
4.按照權(quán)利要求1所述的一種基于Android設(shè)備的裸眼3D交互方法,其特征在于:所述步驟C創(chuàng)建交互式裸眼3D顯示場景;交互式裸眼3D顯示場景主要分為兩個(gè)模塊:場景模塊和顯示模塊。
5.按照權(quán)利要求1所述的一種基于Android設(shè)備的裸眼3D交互方法,其特征在于:所述步驟F修改交互式裸眼3D顯示場景為交互式2D顯示場景,保持ID值不發(fā)生變化;修改的具體方式為:在場景中保留掛有TouchHandle的虛擬相機(jī),刪除其余七個(gè)虛擬相機(jī),同時(shí)刪除顯示模塊中的新相機(jī)及顯示面板。
6.按照權(quán)利要求1所述的一種基于Android設(shè)備的裸眼3D交互方法,其特征在于:所述步驟J在Android設(shè)備端進(jìn)行2D場景的交互操作,裸眼3D顯示終端響應(yīng)相同的裸眼3D交互動(dòng)作;具體的響應(yīng)的實(shí)現(xiàn)過程為:通過TNet插件的通信接口,相同ID值響應(yīng)相同的動(dòng)作。