一種基于3d引擎的智能電視ui開發(fā)平臺(tái)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種,尤其涉及一種基于3D引擎的智能電視Π開發(fā)平臺(tái)。
【背景技術(shù)】
[0002]現(xiàn)在大多數(shù)軟件的開發(fā)流程是需求提取,界面設(shè)計(jì),界面開發(fā),功能對(duì)接,程序Bug修改,最后軟件發(fā)布。Android系統(tǒng)集成有2D圖形開發(fā)庫(kù),提供了一整套規(guī)模很可觀的2DΠ開發(fā)工具和完善的接口。但我們?cè)趯?shí)際應(yīng)用開發(fā)過程中,還是經(jīng)常會(huì)碰到:
[0003](I) 2D工具實(shí)現(xiàn)3D效果,方法復(fù)雜且渲染效率不高;
[0004](2)界面開發(fā)過程,界面設(shè)計(jì)者無法直接參與,程序開發(fā)者“二次設(shè)計(jì)”的界面頻繁返工,程序開發(fā)者也不能專注于功能開發(fā)和優(yōu)化,導(dǎo)致工作效率大幅降低;
[0005](3)UI和功能耦合度太高,復(fù)用性低,產(chǎn)品后續(xù)優(yōu)化和重構(gòu)難度大;
[0006]上述幾個(gè)問題,促使我們想去開發(fā)一套能夠有效整合程序界面開發(fā)和功能開發(fā)的UI快速開發(fā)平臺(tái)。基于滿足更絢麗的界面特效和更靈活的數(shù)據(jù)交互框架的開發(fā)要求,我們將目光投向3D UI開發(fā)平臺(tái)。
[0007]現(xiàn)階段的智能電視硬件,都配有比較強(qiáng)大的CPU和GPU,甚至能夠運(yùn)行大型3D游戲。而3D界面設(shè)計(jì),可以依據(jù)界面效果需求,精簡(jiǎn)掉資源消耗大的物理系統(tǒng)、光照系統(tǒng)等,從理論上講,只要是能夠支撐一般3D小游戲的智能電視硬件就可以流暢運(yùn)行3D U1
【發(fā)明內(nèi)容】
[0008]本發(fā)明的目的就在于提供一種解決上述問題,通過整合3D建模工具、跨平臺(tái)的3D圖形渲染引擎以及基于具體的應(yīng)用平臺(tái)Android系統(tǒng)的應(yīng)用開發(fā)庫(kù),形成一個(gè)基于3D引擎的智能電視UI開發(fā)平臺(tái)。
[0009]為了實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案是:一種基于3D引擎的智能電視Π開發(fā)平臺(tái),該平臺(tái)框架主要由3D引擎、3D界面設(shè)計(jì)開發(fā)庫(kù)、應(yīng)用程序數(shù)據(jù)對(duì)接中間件組成,
[0010]所述3D引擎,采用Ogre圖形渲染引擎,基于Ogre引擎再引入一個(gè)GameKit封裝引擎的渲染接口,并根據(jù)智能電視界面開發(fā)需求導(dǎo)出粒子系統(tǒng)、光照系統(tǒng)、物理系統(tǒng)的3D特效開關(guān),提高渲染效率的同時(shí),使之能夠適應(yīng)多種不同特效要求。通過3D引擎的強(qiáng)大功能,我們能以較低的配置實(shí)現(xiàn)很多2D圖形庫(kù)無法處理的3D動(dòng)畫特效和界面交互;
[0011]所述3D界面設(shè)計(jì)開發(fā)庫(kù),采用定制Blender工具,界面設(shè)計(jì)人員可以方便快捷地進(jìn)行UI前端設(shè)計(jì),并提供與GameKit對(duì)接了的開發(fā)庫(kù),包含開發(fā)功能設(shè)置,腳本函數(shù)接口等,界面設(shè)計(jì)人員可以方便快捷地進(jìn)行Π前端設(shè)計(jì),包括2D/3D UI建模、動(dòng)畫及其腳本、交互邏輯的設(shè)計(jì),其輸出成果集成為一個(gè).blend文件;
[0012]所述應(yīng)用程序數(shù)據(jù)對(duì)接中間件以Android作為具體的應(yīng)用平臺(tái),我們搭建了一個(gè)標(biāo)準(zhǔn)化的程序運(yùn)行框架和數(shù)據(jù)處理架構(gòu),基于Android系統(tǒng)的資源管控,開發(fā)庫(kù)自動(dòng)化管理3D UI的渲染和邏輯控制,以及渲染素材的生命周期管理,針對(duì)不同的功能和界面數(shù)據(jù)分類,分層組織數(shù)據(jù),并依照制定接口進(jìn)行界面刷新,開發(fā)人員拋開了界面細(xì)節(jié),只需要較少精力對(duì)接應(yīng)用界面數(shù)據(jù)就能快速開發(fā)出一個(gè)3D Π程序,這是本發(fā)明的3D Π開發(fā)平臺(tái)的基礎(chǔ)。
[0013]所述應(yīng)用程序數(shù)據(jù)對(duì)接中間件主要包括3D Activity組件、3D界面的View組件,提供單獨(dú)3D線程管控,界面數(shù)據(jù)刷新接口,按鍵事件處理等UI基本元素支撐;所述3D引擎上帶有前端設(shè)計(jì)開發(fā)庫(kù)和中間件JNI接口,所述3D引擎通過前端設(shè)計(jì)開發(fā)庫(kù)與3D界面設(shè)計(jì)開發(fā)庫(kù)對(duì)接,所述3D引擎通過中間件JNI接口與3D界面的View組件對(duì)接。
[0014]作為優(yōu)選,所述View組件提供單獨(dú)3D線程管控,維護(hù)了一個(gè)渲染緩沖線程,所述渲染線程自帶循環(huán),將3D引擎運(yùn)行在這個(gè)線程中,實(shí)現(xiàn)界面的循環(huán)刷新。所述應(yīng)用程序數(shù)據(jù)對(duì)接中間件基于渲染線程的循環(huán),再維護(hù)一個(gè)事件隊(duì)列,用于3D UI的刷新請(qǐng)求以及按鍵事件的有序處理。
[0015]作為優(yōu)選,所述應(yīng)用程序數(shù)據(jù)對(duì)接中間件提供一個(gè)兩極數(shù)據(jù)分層匹配架構(gòu),實(shí)現(xiàn)Π和數(shù)據(jù)分離。所述兩極數(shù)據(jù)分層匹配架構(gòu)是將界面上相同結(jié)構(gòu)的模型單元?dú)w成一個(gè)模型列表,一個(gè)模型單元,并與之對(duì)應(yīng)的創(chuàng)建數(shù)據(jù)元類和數(shù)據(jù)元列表類。模型列表和數(shù)據(jù)元列表以名稱一一對(duì)應(yīng),模型單元和數(shù)據(jù)元以在列表中的序號(hào)一一對(duì)應(yīng),每類數(shù)據(jù)元中有一個(gè)與模型單元中的貼圖模型對(duì)應(yīng)的素材獲取接口,數(shù)據(jù)對(duì)接時(shí),只需要覆寫這個(gè)素材獲取接口,告知中間件從何獲取貼圖素材,即可實(shí)現(xiàn)界面的半自動(dòng)刷新。
[0016]作為優(yōu)選,應(yīng)用程序數(shù)據(jù)對(duì)接中間件提供一套按鍵事件回調(diào)機(jī)制,實(shí)現(xiàn)3D界面焦點(diǎn)的自動(dòng)控制和數(shù)據(jù)元的按鍵回調(diào)處理。按鍵回調(diào)處理方法如下,3D View在獲取按鍵事件時(shí),將立即將此事件存入渲染線程的事件隊(duì)列中,當(dāng)渲染線程的循環(huán)輪詢到這個(gè)事件后,觸發(fā)GameKit的按鍵處理流程,GameKit將先檢測(cè)3D模型設(shè)計(jì)時(shí)注冊(cè)的GameLogic是否有此按鍵監(jiān)聽。如果有監(jiān)聽,則執(zhí)行GameLogic的操作,按鍵流程結(jié)束,如果沒有監(jiān)聽,則回調(diào)到模型元的按鍵回調(diào)接口,再回調(diào)數(shù)據(jù)元的按鍵事件處理,組成完整的按鍵事件回調(diào)鏈。
[0017]與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:本發(fā)明通過整合3D建模工具、跨平臺(tái)的3D圖形渲染引擎以及基于具體的應(yīng)用平臺(tái)Android系統(tǒng)的應(yīng)用開發(fā)庫(kù),形成一個(gè)開發(fā)平臺(tái)。分離程序功能數(shù)據(jù)和UI,實(shí)現(xiàn)界面UI設(shè)計(jì)和開發(fā)的一次設(shè)計(jì),一次成型;并提供穩(wěn)定的數(shù)據(jù)組織架構(gòu)和程序運(yùn)行框架,實(shí)現(xiàn)數(shù)據(jù)和Π的快速對(duì)接,極大的縮減程序開發(fā)周期,降低開發(fā)與維護(hù)的難度和成本。
【附圖說明】
[0018]圖1為本發(fā)明開發(fā)平臺(tái)的框架圖;
[0019]圖2為本發(fā)明模型和用戶數(shù)據(jù)框架圖;
[0020]圖3為本發(fā)明刷新流程圖。
【具體實(shí)施方式】
[0021]下面將對(duì)本發(fā)明作進(jìn)一步說明。
[0022]實(shí)施例:參見圖1,一種基于3D引擎的智能電視UI開發(fā)平臺(tái),其特征在于:該平臺(tái)框架主要由3D引擎、3D界面設(shè)計(jì)開發(fā)庫(kù)、應(yīng)用程序數(shù)據(jù)對(duì)接中間件組成,所述3D引擎,采用Ogre圖形植染引擎,基于Ogre引擎再引入一個(gè)GameKit封裝引擎的植染接口,并根據(jù)智能電視界面開發(fā)需求導(dǎo)出粒子系統(tǒng)、光照系統(tǒng)、物理系統(tǒng)的3D特效開關(guān);所述3D界面設(shè)計(jì)開發(fā)庫(kù),采用定制Blender工具,界面設(shè)計(jì)人員可以方便快捷地進(jìn)行Π前端設(shè)計(jì),并提供與GameKit對(duì)接了的開發(fā)庫(kù);所述應(yīng)用程序數(shù)據(jù)對(duì)接中間件,主要包括3D Activity組件、3D界面的View組件;
[0023]所述3D引擎上帶有前端設(shè)計(jì)開發(fā)庫(kù)和中間件JNI接口,所述3D引擎通過前端設(shè)計(jì)開發(fā)庫(kù)與3D界面設(shè)計(jì)開發(fā)庫(kù)對(duì)接,所述3D引擎通過中間件JNI接口與3D界面的View組件對(duì)接。
[0024]所述View組件提供單獨(dú)3D線程管控,維護(hù)了一個(gè)渲染緩沖線程,所述渲染線程自帶循環(huán),將3D引擎運(yùn)行在這個(gè)線程中,實(shí)現(xiàn)界面的循環(huán)刷新。
[0025]所述應(yīng)用程序數(shù)據(jù)對(duì)接中間件基于渲染線程的循環(huán),再維護(hù)一個(gè)事件隊(duì)列,用于3D UI的刷新請(qǐng)求以及按鍵事件的有序處理。
[0026]所述應(yīng)用程序數(shù)據(jù)對(duì)接中間件提供一個(gè)兩極數(shù)據(jù)分層匹配架構(gòu),實(shí)現(xiàn)UI和數(shù)據(jù)分離。所述兩極數(shù)據(jù)分層匹配架構(gòu),如圖2,將界面上相同結(jié)構(gòu)的模型單元?dú)w成一個(gè)模型列表,一個(gè)模型單元,并與之對(duì)應(yīng)的創(chuàng)建數(shù)據(jù)元類和數(shù)據(jù)元列表類。模型列表和數(shù)據(jù)元列表以名稱一一對(duì)應(yīng),模型單元和數(shù)據(jù)元以在列表中的序號(hào)一一對(duì)應(yīng),每類數(shù)據(jù)元中有一個(gè)與模型單元中的貼圖模型對(duì)應(yīng)的素材獲取接口,數(shù)據(jù)對(duì)接時(shí),只需要覆寫這個(gè)素材獲取接口,告知中間件從何獲取貼圖素材,即可實(shí)現(xiàn)界