一種基于Android設備的裸眼3D交互方法
【專利摘要】本發明涉及裸眼3D交互領域,其公開了一種基于Android設備的裸眼3D交互方法,有效的解決交互式裸眼3D顯示難以調控的問題。該方法包括:a.將TNet插件導入開發引擎;b.調用TNet插件的相關接口實現網絡通信;c.創建交互式裸眼3D顯示場景;d.運用TNet插件賦予不同交互物體不同ID值;e.編譯場景內容并發布PC端的可執行文件;f.修改交互式裸眼3D顯示場景為交互式2D顯示場景;g.編譯交互式2D顯示場景發布APK文件,并安裝到Android設備端;h.將PC端連接到裸眼3D顯示終端,同時將PC端、Android設備端連接到同一局域網絡;i.運行可執行文件,Android設備端新建IP地址,PC端連接到相同IP地址;j.在Android設備端進行2D場景的交互操作,裸眼3D顯示終端響應相同的裸眼3D交互動作。
【專利說明】
一種基于And ro i d設備的裸眼3D交互方法
技術領域
[0001] 本發明涉及裸眼3D交互領域,具體涉及一種基于Android設備的裸眼3D交互方法。
【背景技術】
[0002]科學技術的發展從未止步,電子產品的更新速度也是讓人目不暇接。2010年隨著 電影《阿凡達》上映引起的轟動效應,3D顯示技術被人們熟知并追捧,引領了電影工業的新 潮流。與此同時,家電消費領域也不甘示弱,眾多品牌相繼推出了自己的3D電腦顯示器、投 影機或者液晶電視。就目前3D技術應用看,無論是電影作品還是家電產品都有一個共同的 特點就是必須佩帶專業眼鏡才能使用。然而,長時間佩戴眼睛觀看容易引起頭暈、惡心等不 良癥狀,嚴重者還會損傷視力,同時,有近視眼的觀眾因佩戴"雙重"眼鏡所帶來的不便更是 苦不堪言。因此,目前的眼鏡式3D技術只能作為3D技術發展中的過渡產品,而最終將被裸眼 3D顯示技術所取代。
[0003] 裸眼3D顯示技術是無需佩戴任何輔助設備(如3D眼鏡、頭盔等)的情況下,通過光 柱透鏡等先進光學技術與特殊算法定制的視頻片源即可讓觀眾獲得前所未有的"高真實 度"視覺體驗,是一種新型的圖像顯示技術。同時裸眼3D顯示技術是推進工業化與信息化 "兩化"融合的發動機之一,同時也是工業界和工業創意產業廣泛應用的基礎性、戰略性的 工具技術。通過裸眼3D科技創意,一些傳統行業有望加快產業升級與創新步伐,如廣告傳 媒、展覽展示、科研教學、游戲娛樂、工業設計、地質測繪、醫學診療、軍事、場景重建等多個 行業。
[0004] 裸眼3D顯示技術的最終發展方向為交互式裸眼3D顯示,然而,現階段交互式裸眼 3D顯示技術并未成熟,市場上并未出現一種良好的方式來調試,控制交互式裸眼3D顯示,嚴 重的阻礙了裸眼3D顯示技術的發展,假若能夠實現一種基于Android設備的裸眼3D交互方 法,便可快捷的調試,控制交互式裸眼3D顯示,填補了交互式裸眼3D顯示控制領域的空白, 極大地擴展裸眼3D顯示技術的應用領域,能夠良好的推動裸眼3D顯示技術的發展。
【發明內容】
[0005] 本發明所要解決的技術問題是:提出一種基于Android設備的裸眼3D交互方法,有 效的解決交互式裸眼3D顯示難以調控的問題。
[0006] 本發明解決其技術問題所采用的技術方案是:一種基于Android設備的裸眼3D交 互方法,包括以下步驟:
[0007] a.將TNet插件導入開發引擎;
[0008] b.調用TNet插件的相關接口實現網絡通信;
[0009] c.創建交互式裸眼3D顯不場景;
[0010] d.運用TNet插件賦予不同交互物體不同ID值;
[0011] e.編譯場景內容并發布PC端的可執行文件;
[0012] f.修改交互式裸眼3D顯示場景為交互式2D顯示場景,保持ID值不發生變化;
[0013] g.編譯交互式2D顯示場景發布APK文件,并安裝到Android設備端;
[0014] h.將PC端連接到裸眼3D顯示終端,同時將PC端、Android設備端連接到同一局域網 絡;
[0015] i .運行可執行文件,Android設備端新建IP地址,PC端連接到相同IP地址;
[0016] j.在Android設備端進行2D場景的交互操作,裸眼3D顯示終端響應相同的裸眼3D 交互動作。
[0017]作為進一步優化,步驟b中,所述調用TNet插件的相關接口實現網絡通信包括:在 開發引擎中創建新的場景,在新場景中創建攝像機,將調用TNet插件的相關接口的代碼文 件掛在虛擬相機。
[0018]作為進一步優化,步驟c中,所述創建的交互式裸眼3D顯示場景包括場景模塊和顯 示模塊,其中場景模塊用于實現裸眼功能和交互功能,顯示模塊用于實現顯示功能。
[0019] 作為進一步優化,所述實現裸眼功能的方式包括:
[0020] 在開發引擎的Scene窗口創建八臺虛擬相機,并將所有虛擬相機的坐標Position 設置為(〇,〇,〇),旋轉角度Rotation設置為(0,0,0),尺寸大小Scale設置為(1,1,1),然后調 整每臺相機之間的距離間隔為0.017,同時在Layer屬性中添加新層PlaySence,修改八臺攝 像機的剔除遮罩Cul 1 ing Mask屬性為PlaySence,在八臺虛擬相機的正前方創建零平面 ZeroPlane,并設置其坐標Position設置為(0,0,10),旋轉角度Rotation設置為(270,0,0), 尺寸大小Scale設置為(1,1,1 ),修改其屬性將其隱藏,編寫相關腳本實現八臺攝像機聚焦 于零平面的中心點,然后在Project中創建8張植染貼圖RenderTexture,將植染貼圖的Size 修改為1920*1080,在每臺虛擬相機的Target Texture屬性中賦予不同的植染貼圖,使得每 臺攝像機對應一張渲染貼圖,然后計算出視點子像素映射矩陣,并編寫相應的Shader,然后 將視點映射矩陣編寫到Shader中,利用Shader對相機渲染的多張渲染貼圖進行子像素的采 樣處理,并將經過采樣處理的多張視差圖像相互疊加,得到最終的合成圖像。
[0021] 作為進一步優化,所述計算出視點子像素映射矩陣的方式包括:
[0022]確定2D顯示屏上給定的RGB子像素應該取自哪個視點的RGB分量,下式給出了多視 點子像素映射矩陣的計算公式:
[0024]其中,X為一個光柵周期在水平方向上覆蓋RGB子像素的個數,(k,l)為RGB子像素 的坐標位置,a為光柵軸相對于IXD顯示屏垂直軸的傾斜夾角,krff表示2D顯示屏左上邊緣與 光柵單元邊緣點的水平位移量,隊。*表示總視點個數,也就是參與合成的視差圖像數量,根 據上式可計算出2D顯示屏上的每個子像素的灰度值應該取自于哪幅視差圖像的相應坐標 位置的灰度值。
[0025]作為進一步優化,所述實現交互功能的方式包括:
[0026]在場景中添加各種交互物體,并將其Layer屬性中全部修改為PlaySence,然后在 Project中創建CS腳本,修改腳本名字為Play,編寫腳本實現不同的交互動作,并將腳本掛 在與之相對應動作的交互物體之上,然后再創建CS腳本,修改腳本名字為TouchHandle,編 寫腳本實現射線檢測功能,并將腳本掛在其中一個虛擬攝像機,修改虛擬攝像機的屬性為 Main Camera。
[0027]作為進一步優化,所述實現顯示功能的方式包括:
[0028] 創建新的虛擬相機及顯示面板,調整虛擬相機的坐標Position設置為(-5,0, 1〇〇 ),旋轉角度Rotation設置為(0,90,0 ),尺寸大小Scale設置為(1,1,1 ),在Layer屬性中 添加新層ShowSence,修改八臺攝像機的剔除遮罩Cul 1 ing Mask屬性為ShowSence,同時修 改起攝像方式為正交式,攝像角度調整為27,修改起深度Depth為1,然后調整顯示面板的坐 標Position設置為(0,0,100),旋轉角度Rotation設置為(90,-90,0),尺寸大小Scale設置 為(9.6,1,5.4),將其Layer屬性修改為ShowSence,同時在顯不面板創建材質球Material, 通過材質球的Custom選項調用shader獲取合成圖像,將合成圖像呈現在顯示面板,最后,保 存以上場景為Play。
[0029]作為進一步優化,步驟d中,所述運用TNet插件賦予不同交互物體不同ID值,包括: 調用TNet插件的相關接口,修改其通信腳本,將ID值設置為公有制變量,將通信腳本掛在不 同交互物體上,并賦予不同的ID值。
[0030]作為進一步優化,步驟f中,所述修改交互式裸眼3D顯示場景為交互式2D顯示場 景,保持ID值不發生變化,具體包括:
[0031]在場景中保留掛有TouchHandle的虛擬相機,刪除其余七個虛擬相機,同時刪除顯 示模塊中的新相機及顯示面板。
[0032]作為進一步優化,步驟h中,所述將PC端連接到裸眼3D顯示終端,同時將PC端、 Android設備端連接到同一局域網絡,具體包括:
[0033]通過HDMI數據傳輸線將PC端與裸眼3D顯示終端連接起來,將PC端的圖像傳輸到裸 眼3D顯示終端,同時通過路由器創建局域網,將PC端、Android設備同時連接到創建的局域 網。
[0034]本發明的有益效果是:該方法能夠有效的解決交互式裸眼3D顯示難以調控的問 題,填補了交互式裸眼3D顯示控制領域的空白,極大地擴展裸眼3D顯示技術的應用領域,顯 著推動裸眼3D顯示技術的發展。
【附圖說明】
[0035]圖1為本發明中基于Android設備的裸眼3D交互方法流程圖。
【具體實施方式】
[0036] 如圖1所示,本發明中基于Android設備的裸眼3D交互方法包括以下實現步驟: [0037]步驟一、將TNet插件導入開發引擎;TNet作為封裝了TCP,HTTP等網絡協議的插件, 使用此插件來實現網絡通信功能并不用太多的工作量,其功能完全滿足Android設備端與 PC端之間的網絡通信功能。
[0038]步驟二、調用TNet插件的相關接口實現網絡通信;在開發引擎中創建新的場景,在 新場景中創建攝像機,將調用TNet插件的相關接口的代碼文件掛在虛擬相機上,保存場景 為Communication。
[0039] 步驟三、創建交互式裸眼3D顯示場景;在開發引擎中創建交互式裸眼3D顯示場景 主要分為以下兩個模塊:場景模塊,顯示模塊。場景模塊主要包括裸眼功能,交互功能,而顯 示模塊主要包含顯示功能;裸眼功能的實現方式如下:在開發引擎的Scene窗口創建八臺虛 擬相機,并將所有虛擬相機的坐標Position設置為(0,0,0),旋轉角度Rotation設置為(0, 〇,〇),尺寸大小Scale設置為(1,1,1),然后調整每臺相機之間的距離間隔為0.017,同時在 Layer屬性中添加新層PlaySence,修改八臺攝像機的剔除遮罩Culling Mask屬性為 ?1&5^61106,在八臺虛擬相機的正前方創建零平面261'0?13116,并設置其坐標?08;[1:;[011設置 為(0,0,10),旋轉角度Rotation設置為(270,0,0),尺寸大小Scale設置為(1,1,1),修改其 屬性將其隱藏,編寫相關腳本實現八臺攝像機聚焦于零平面的中心點,然后在Project中創 建8張渲染貼圖RenderTexture,將渲染貼圖的Size修改為1920*1080,在每臺虛擬相機的 Target Texture屬性中賦予不同的植染貼圖,使得每臺攝像機對應一張植染貼圖,然后計 算出視點子像素映射矩陣,并編寫相應的Shader,對每臺相機渲染的貼圖進行采樣處理,具 體的計算方式如下:首先,確定2D顯示屏上給定的RGB子像素應該取自哪個視點的RGB分量, 下式給出了多視點子像素映射矩陣的計算公式:
[0041]其中,X為一個光柵周期在水平方向上覆蓋RGB子像素的個數,(k,l)為RGB子像素 的坐標位置,a為光柵軸相對于IXD顯示屏垂直軸的傾斜夾角,krff表示2D顯示屏左上邊緣與 光柵單元邊緣點的水平位移量,隊。*表示總視點個數,也就是參與合成的視差圖像數量,根 據上式可計算出2D顯示屏上的每個子像素的灰度值應該取自于哪幅視差圖像的相應坐標 位置的灰度值,然后將視點映射矩陣編寫到Shader中,利用Shader對相機渲染的多張渲染 貼圖進行子像素的采樣處理,并將經過采樣處理的多張視差圖像相互疊加,得到最終的合 成圖像;交互功能的實現方式如下:在場景中添加各種交互物體,并將其Layer屬性中全部 修改為PlaySence,然后在Project中創建CS腳本,修改腳本名字為Play,編寫腳本實現不同 的交互動作(例如旋轉,移動,縮放等動作),并將腳本掛在與之相對應動作的交互物體之 上,然后再創建CS腳本,修改腳本名字為TouchHandle,編寫腳本實現射線檢測功能,并將腳 本掛在其中一個虛擬攝像機,修改虛擬攝像機的屬性為Main Camera;顯示功能的實現方式 如下:創建新的虛擬相機及顯示面板,調整虛擬相機的坐標Position設置為(_5,0,100),旋 轉角度Rotation設置為(0,90,0),尺寸大小Scale設置為(1,1,1),在Layer屬性中添加新層 ShowSence,修改八臺攝像機的剔除遮罩Cul 1 ing Mask屬性為ShowSence,同時修改起攝像 方式為正交式,攝像角度調整為27,修改起深度Depth為1(新建相機默認為0)。然后調整顯 示面板的坐標Position設置為(0,0,100),旋轉角度Rotation設置為(90,-90,0),尺寸大小 Scale設置為(9.6,l,5.4)(匹配1080P分辨率的顯示終端),將其Layer屬性修改為 ShowSence,同時在顯示面板創建材質球Material,通過材質球的Custom選項調用shader獲 取合成圖像,將合成圖像呈現在顯示面板。最后,保存以上場景為Play。
[0042]步驟四、運用TNet插件賦予不同交互物體不同ID值;調用TNet插件的相關接口,修 改其通信腳本,將ID值設置為公有制變量,將通信腳本掛在不同交互物體上,并賦予不同的 ID值,例如賦予第一交互物體的ID值為1,第二交互物體的ID值為2,以此類推。
[0043]步驟五、編譯場景內容并發布PC端的可執行文件;點擊開發引擎File菜單下的 Build Settings,并將以上兩個場景放入Scenes In Build選項欄,并選擇Platform為PC and Mac Standalone,之后點擊Build發布出PC端的可執行文件。
[0044] 步驟六、修改交互式裸眼3D顯示場景為交互式2D顯示場景,保持ID值不發生變化; 修改的具體方式為:在場景中保留掛有TouchHandle的虛擬相機,刪除其余七個虛擬相機, 同時刪除顯示模塊中的新相機及顯示面板。
[0045] 步驟七、編譯交互式2D顯示場景發布APK文件,并安裝到Android設備端;如同PC端 的文件發布,將之前選擇的PC and Mac Standalone修改為Android,之后點擊Build發布出 APK文件。
[0046] 步驟八、PC端連接到裸眼3D顯示終端,同時連接PC端,Android設備端到同一局域 網絡;通過HDMI數據傳輸線將PC端與裸眼3D顯示終端連接起來,將PC端的圖像傳輸到裸眼 3D顯示終端,同時通過路由器創建局域網,將PC端,Android設備同時連接到創建的局域網。 [0047] 步驟九、運行可執行文件,Android設備端新建IP地址,PC端連接到相同IP地址;運 行PC端的可執行文件,選擇文件分辨率為1920*1080(保持與裸眼3D顯示終端相同分辨率), 在Android設備端新建IP地址,裸眼3D顯示終端彈出相同IP地址,點擊IP地址,顯示連接成 功。
[0048] 步驟十、在Android設備端進行2D場景的交互操作,裸眼3D顯示終端響應相同的裸 眼3D交互動作;在Android設備端進行2D場景的交互操作,例如旋轉,移動,縮放,通過TNet 插件的通信接口,相同ID值響應相同的動作,裸眼3D顯示終端響應與之對應的裸眼3D交互 動作,實現基于Andro id設備的裸眼3D交互方法。
【主權項】
1. 一種基于Android設備的裸眼3D交互方法,其特征在于,包括以下步驟: a. 將TNet插件導入開發引擎; b. 調用TNet插件的相關接口實現網絡通信; c. 創建交互式裸眼3D顯示場景; d. 運用TNet插件賦予不同交互物體不同ID值; e. 編譯場景內容并發布PC端的可執行文件; f. 修改交互式裸眼3D顯示場景為交互式2D顯示場景,保持ID值不發生變化; g. 編譯交互式2D顯示場景發布APK文件,并安裝到Android設備端; h. 將PC端連接到裸眼3D顯示終端,同時將PC端、Android設備端連接到同一局域網絡; i .運行可執行文件,Android設備端新建IP地址,PC端連接到相同IP地址; j.在Android設備端進行2D場景的交互操作,裸眼3D顯示終端響應相同的裸眼3D交互 動作。2. 如權利要求1所述的一種基于Android設備的裸眼3D交互方法,其特征在于,步驟b 中,所述調用TNet插件的相關接口實現網絡通信包括:在開發引擎中創建新的場景,在新場 景中創建攝像機,將調用TNet插件的相關接口的代碼文件掛在虛擬相機。3. 如權利要求1所述的一種基于Android設備的裸眼3D交互方法,其特征在于,步驟c 中,所述創建的交互式裸眼3D顯示場景包括場景模塊和顯示模塊,其中場景模塊用于實現 裸眼功能和交互功能,顯示模塊用于實現顯示功能。4. 如權利要求3所述的一種基于Android設備的裸眼3D交互方法,其特征在于,所述實 現裸眼功能的方式包括: 在開發引擎的Scene窗口創建八臺虛擬相機,并將所有虛擬相機的坐標Position設置 為(0,0,0),旋轉角度Rotation設置為(0,0,0),尺寸大小Scale設置為(1,1,1),然后調整每 臺相機之間的距離間隔為〇. 017,同時在Layer屬性中添加新層PlaySence,修改八臺攝像機 的剔除遮罩Cul 1 ing Mask屬性為PlaySence,在八臺虛擬相機的正前方創建零平面 ZeroPlane,并設置其坐標Position設置為(0,0,10),旋轉角度Rotation設置為(270,0,0), 尺寸大小Scale設置為(1,1,1 ),修改其屬性將其隱藏,編寫相關腳本實現八臺攝像機聚焦 于零平面的中心點,然后在Project中創建8張植染貼圖RenderTexture,將植染貼圖的Size 修改為1920*1080,在每臺虛擬相機的Target Texture屬性中賦予不同的植染貼圖,使得每 臺攝像機對應一張渲染貼圖,然后計算出視點子像素映射矩陣,并編寫相應的Shader,然后 將視點映射矩陣編寫到Shader中,利用Shader對相機渲染的多張渲染貼圖進行子像素的采 樣處理,并將經過采樣處理的多張視差圖像相互疊加,得到最終的合成圖像。5. 如權利要求4所述的一種基于Android設備的裸眼3D交互方法,其特征在于,所述計 算出視點子像素映射矩陣的方式包括: 確定2D顯示屏上給定的RGB子像素應該取自哪個視點的RGB分量,下式給出了多視點子 像素映射矩陣的計算公式:其中,X為一個光柵周期在水平方向上覆蓋RGB子像素的個數,(k,l)為RGB子像素的坐 標位置,α為光柵軸相對于LCD顯示屏垂直軸的傾斜夾角,koff表示2D顯示屏左上邊緣與光柵 單元邊緣點的水平位移量,爪。*表示總視點個數,也就是參與合成的視差圖像數量,根據上 式可計算出2D顯示屏上的每個子像素的灰度值應該取自于哪幅視差圖像的相應坐標位置 的灰度值。6. 如權利要求4所述的一種基于Android設備的裸眼3D交互方法,其特征在于,所述實 現交互功能的方式包括: 在場景中添加各種交互物體,并將其Layer屬性中全部修改為PlaySence,然后在 Project中創建CS腳本,修改腳本名字為Play,編寫腳本實現不同的交互動作,并將腳本掛 在與之相對應動作的交互物體之上,然后再創建CS腳本,修改腳本名字為TouchHandle,編 寫腳本實現射線檢測功能,并將腳本掛在其中一個虛擬攝像機,修改虛擬攝像機的屬性為 MainCamera〇7. 如權利要求4所述的一種基于Android設備的裸眼3D交互方法,其特征在于,所述實 現顯示功能的方式包括: 創建新的虛擬相機及顯示面板,調整虛擬相機的坐標Position設置為(_5,0,100),旋 轉角度Rotation設置為(0,90,0),尺寸大小Scale設置為(1,1,1),在Layer屬性中添加新層 ShowSence,修改八臺攝像機的剔除遮罩Cul 1 ing Mask屬性為ShowSence,同時修改起攝像 方式為正交式,攝像角度調整為27,修改起深度Depth為1,然后調整顯示面板的坐標 Position設置為(0,0,100),旋轉角度Rotation設置為(90,-90,0),尺寸大小Scale設置為 (9.6,1,5.4),將其Layer屬性修改為ShowSence,同時在顯不面板創建材質球Material,通 過材質球的Custom選項調用shader獲取合成圖像,將合成圖像呈現在顯示面板,最后,保存 以上場景為Play。8. 如權利要求1所述的一種基于Android設備的裸眼3D交互方法,其特征在于,步驟d 中,所述運用TNet插件賦予不同交互物體不同ID值,包括:調用TNet插件的相關接口,修改 其通信腳本,將ID值設置為公有制變量,將通信腳本掛在不同交互物體上,并賦予不同的ID 值。9. 如權利要求1所述的一種基于Android設備的裸眼3D交互方法,其特征在于,步驟f 中,所述修改交互式裸眼3D顯示場景為交互式2D顯示場景,保持ID值不發生變化,具體包 括: 在場景中保留掛有TouchHandle的虛擬相機,刪除其余七個虛擬相機,同時刪除顯示模 塊中的新相機及顯示面板。10. 如權利要求1所述的一種基于Android設備的裸眼3D交互方法,其特征在于,步驟h 中,所述將PC端連接到裸眼3D顯示終端,同時將PC端、Android設備端連接到同一局域網絡, 具體包括: 通過HDMI數據傳輸線將PC端與裸眼3D顯示終端連接起來,將PC端的圖像傳輸到裸眼3D 顯示終端,同時通過路由器創建局域網,將PC端、Android設備同時連接到創建的局域網。
【文檔編號】H04N13/04GK105959677SQ201610543986
【公開日】2016年9月21日
【申請日】2016年7月12日
【發明人】劉浩, 曾超, 屈銳敏, 沈季, 魏爽
【申請人】四川長虹電器股份有限公司