專利名稱:一種三維動(dòng)態(tài)圖形的生成方法、裝置和移動(dòng)終端的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及移動(dòng)終端上的三維圖像處理技術(shù),特別是指一種三維動(dòng)態(tài)圖形的生成方法、裝置和移動(dòng)終端。
背景技術(shù):
隨著移動(dòng)終端技術(shù)的不斷發(fā)展,用戶對(duì)移動(dòng)終端的開機(jī)平臺(tái)或者其它平臺(tái)的圖像界面的要求也進(jìn)一步提高,普通的二維界面已不能滿足用戶體驗(yàn)要求,開始追求更高層次的三維效果。在移動(dòng)終端支持GPU之后,復(fù)雜的三維場(chǎng)景畫面的實(shí)時(shí)顯示成為了可能。目前,在移動(dòng)終端上實(shí)現(xiàn)動(dòng)畫效果,常見的有兩種方法,一種是Tween動(dòng)畫,另一種是Frame動(dòng)畫。
其中,Tween動(dòng)畫框架是建立在View(瀏覽)級(jí)別上的,在View類中有一個(gè)接口 Start Animation,是動(dòng)畫開始,Start Animation會(huì)將一個(gè)Animation類別的函數(shù)傳給View, Animation用來(lái)指定使用的是哪種動(dòng)畫,現(xiàn)有的動(dòng)畫有平移、縮放、旋轉(zhuǎn)以及Alpha變換等。Frame動(dòng)畫,即順序播放事先做好的圖像,它的實(shí)現(xiàn)是通過(guò)Movie這個(gè)類對(duì)Gif文件進(jìn)行讀取和解碼,同時(shí)在OnDraw函數(shù)中不斷的繪制每一幀圖片來(lái)完成,這個(gè)示例代碼在Ondraw中調(diào)用Invalidate來(lái)反復(fù)讓View失效讓系統(tǒng)不斷調(diào)用Sample View的Ondraw函數(shù);至于選出哪一幀圖片進(jìn)行繪制,是傳入系統(tǒng)當(dāng)前時(shí)間給Movie類,然后讓它根據(jù)時(shí)間順序來(lái)選出幀圖片。上述Tween動(dòng)畫技術(shù),存在的問(wèn)題有:I)支持的動(dòng)畫類型單調(diào),只是簡(jiǎn)單的旋轉(zhuǎn)、淡入淡出等效果,不能滿足用戶的體驗(yàn)要求;2)創(chuàng)作出來(lái)的動(dòng)畫比較刻板,不能動(dòng)態(tài)的更改參數(shù),沒(méi)有實(shí)現(xiàn)實(shí)時(shí)交互。上述Frame動(dòng)畫技術(shù),存在的問(wèn)題有:I)反復(fù)讓View失效,比較消耗資源,給CPU帶來(lái)很大的運(yùn)算壓力,會(huì)造成開機(jī)延遲等現(xiàn)象;2)需要大量的Gif圖片,消耗內(nèi)存;3)因?yàn)锳ndroid中使用的Libgif庫(kù)存在不足,在播放一些Gif格式的動(dòng)畫時(shí),會(huì)出現(xiàn)移動(dòng)終端花屏的現(xiàn)象。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題是提供一種三維動(dòng)態(tài)圖形的生成方法、裝置和移動(dòng)終端,可以在移動(dòng)終端上實(shí)現(xiàn)真實(shí)的動(dòng)態(tài)三維效果的圖形,提高用戶的使用體驗(yàn)。為解決上述技術(shù)問(wèn)題,本發(fā)明的實(shí)施例提供一種三維動(dòng)態(tài)圖形的生成方法,應(yīng)用于移動(dòng)終端,所述方法包括:獲得一多邊形;
選擇所述多邊形內(nèi)任意一點(diǎn),并連接所述多邊形內(nèi)任意一點(diǎn)到所述多邊形的各個(gè)頂點(diǎn),得到多個(gè)三角形;獲得多個(gè)三角形中任意一個(gè)三角形中的任意一點(diǎn)的紋理坐標(biāo);獲得對(duì)所述紋理坐標(biāo)進(jìn)行擾動(dòng)的擾動(dòng)因子;根據(jù)所述擾動(dòng)因子對(duì)所述紋理坐標(biāo)進(jìn)行處理,得到擾動(dòng)后的紋理坐標(biāo);根據(jù)擾動(dòng)后的紋理坐標(biāo),對(duì)各個(gè)三角形進(jìn)行渲染,得到動(dòng)態(tài)三維圖形。其中,所述獲得一多邊形的步驟包括:繪制η個(gè)點(diǎn);將每一個(gè)點(diǎn)作為一個(gè)頂點(diǎn),繪制從第一個(gè)頂點(diǎn)到最后一個(gè)頂點(diǎn)依次相連的一組線段,第η和第η+1個(gè)頂點(diǎn)相連得到線段η,最后一個(gè)頂點(diǎn)和第一個(gè)頂點(diǎn)相連得到最后一個(gè)線段,總共繪制η條線段;把每三個(gè)頂點(diǎn)作為一個(gè)獨(dú)立的三角形,繪制一組相連的三角形,對(duì)于奇數(shù)η,,忽略最后一個(gè)頂點(diǎn),頂點(diǎn)η、η+1和η+2定義了第η個(gè)三角形;對(duì)于偶數(shù)η,頂點(diǎn)η+1、η和η+2定義了第η個(gè)三角形,總共繪制η-2個(gè)三角形,所有三角形組合在一起,形成所述多邊形。其中,獲得多個(gè)三角形中任意一個(gè)三角形中的任意一點(diǎn)的紋理坐標(biāo)的步驟包括:通過(guò)三角插值的方法獲得多個(gè)三角形中任意一個(gè)三角形中的任意一點(diǎn)的紋理坐標(biāo)。其中,通過(guò)三 角插值的方法獲得多個(gè)三角形中任意一個(gè)三角形中的任意一點(diǎn)的紋理坐標(biāo)的步驟包括:設(shè)置所述三角形的三個(gè)頂點(diǎn)在坐標(biāo)系中分別表示為Vl (xl,yl, zl),、V2(x2,y2,z2)和 V3(x3,y3, z3);根據(jù)所述V1、V2和V3的坐標(biāo),得到所述三角形中的任意一點(diǎn)的紋理坐標(biāo)為p0 =V1+U(V2-V1)+V(V3-V1),其中,參數(shù)U控制V2在結(jié)果中占多大的權(quán)值,參數(shù)V控制V3占多大權(quán)值,1-U-V控制Vl在結(jié)果中占多大權(quán)值。其中,獲得對(duì)所述紋理坐標(biāo)進(jìn)行擾動(dòng)的擾動(dòng)因子的步驟包括:通過(guò)基于時(shí)間的正弦函數(shù)CXsin(DXt)獲得對(duì)所述紋理坐標(biāo)進(jìn)行擾動(dòng)的擾動(dòng)因子;其中,所述擾動(dòng)因子包括圖形振動(dòng)的振幅和頻率,t為時(shí)間,C為指定的振幅初始值,D為指定的頻率初始值。其中,根據(jù)所述擾動(dòng)因子對(duì)所述紋理坐標(biāo)進(jìn)行處理,得到擾動(dòng)后的紋理坐標(biāo)的步驟包括:獲得一局部變量F = A X s+B X t ;根據(jù)所述局部變量和所述擾動(dòng)因子,獲得X方向的紋理坐標(biāo)X = (AlXs+BIXt) XCXsin(DXt),以及y方向的紋理坐標(biāo)Y =(A2Xs+B2Xt) XCXsin(DXt);其中,A和B為變量,s為紋理坐標(biāo),Al和A2為變量A的不同值或者相同值,BI和B2為變量B的不同值或者相同值。其中,上述方法還包括:對(duì)于X方向的紋理坐標(biāo)X和y方向的紋理坐標(biāo)Y對(duì)應(yīng)的紋理的每一幀,用不同的擾動(dòng)因子進(jìn)行擾動(dòng)。其中,根據(jù)擾動(dòng)后的紋理坐標(biāo),對(duì)各個(gè)三角形進(jìn)行渲染,得到動(dòng)態(tài)三維圖形的步驟包括:
根據(jù)擾動(dòng)后的紋理坐標(biāo),將完整的紋理映射到所述多邊形的所有頂點(diǎn)上;加載與所述紋理相關(guān)的圖像數(shù)據(jù),并將所述紋理渲染到所述移動(dòng)終端的屏幕上,得到顯示在所述移動(dòng)終端的屏幕上的動(dòng)態(tài)三維圖形。本發(fā)明的實(shí)施例還提供一種三維動(dòng)態(tài)圖形的生成裝置,應(yīng)用于移動(dòng)終端,包括:第一獲得模塊,用于獲得一多邊形;第一處理模塊,用于選擇所述多邊形內(nèi)任意一點(diǎn),并連接所述多邊形內(nèi)任意一點(diǎn)到所述多邊形的各個(gè)頂點(diǎn),得到多個(gè)三角形;第二獲得模塊,用于獲得多個(gè)三角形中任意一個(gè)三角形中的任意一點(diǎn)的紋理坐標(biāo);第三獲得模塊,用于獲得對(duì)所述紋理坐標(biāo)進(jìn)行擾動(dòng)的擾動(dòng)因子;第二處理模塊,用于根據(jù)所述擾動(dòng)因子對(duì)所述紋理坐標(biāo)進(jìn)行處理,得到擾動(dòng)后的紋理坐標(biāo);第三處理模塊,用于根據(jù)擾動(dòng)后的紋理坐標(biāo),對(duì)各個(gè)三角形進(jìn)行渲染,得到動(dòng)態(tài)三維圖形。 其中,所述第三獲得模塊具體用于:通過(guò)基于時(shí)間的正弦函數(shù)CXsin(DXt)獲得對(duì)所述紋理坐標(biāo)進(jìn)行擾動(dòng)的擾動(dòng)因子;其中,所述擾動(dòng)因子包括圖形振動(dòng)的振幅和頻率,t為時(shí)間,C為指定的振幅初始值,D為指定的頻率初始值。其中,所述第二處理模塊包括:第一處理子模塊,用于獲得一局部變量F = AXs+BXt ;第二處理子模塊,用于根據(jù)所述局部變量和所述擾動(dòng)因子,獲得X方向的紋理坐標(biāo)X = (AlXs+BIXt) XCXsin(DXt),以及y方向的紋理坐標(biāo)Y =(A2 X s+B2 Xt) XCXsin(DXt);其中,A和B為變量,s為紋理坐標(biāo),Al和A2為變量A的不同值或者相同值,BI和B2為變量B的不同值或者相同值。其中,所述第二處理子模塊還用于:對(duì)于X方向的紋理坐標(biāo)X和y方向的紋理坐標(biāo)Y對(duì)應(yīng)的紋理的每一幀,用不同的擾動(dòng)因子進(jìn)行擾動(dòng)。本發(fā)明的實(shí)施例還提供一種移動(dòng)終端,包括圖形處理器,設(shè)置于所述圖形處理器中的如上所述的三維動(dòng)態(tài)圖形的生成裝置。本發(fā)明的上述技術(shù)方案的有益效果如下:上述方案中,通過(guò)對(duì)多邊形進(jìn)行處理,得到三角形,并獲得三角形內(nèi)任意一點(diǎn)的紋理坐標(biāo),對(duì)該紋理坐標(biāo)利用擾動(dòng)因子進(jìn)行擾動(dòng),從而得到擾動(dòng)后的紋理坐標(biāo),最后再根據(jù)擾動(dòng)后的紋理坐標(biāo),對(duì)各個(gè)三角形進(jìn)行渲染,從而得到具有動(dòng)態(tài)效果的三維圖形,該動(dòng)態(tài)效果如可以是動(dòng)態(tài)拉窗簾效果的三維圖形;從而在移動(dòng)終端上實(shí)現(xiàn)了三維動(dòng)態(tài)圖形的展現(xiàn),尤其是該三維圖形應(yīng)用于移動(dòng)終端的開機(jī)畫面時(shí),實(shí)現(xiàn)了該移動(dòng)終端開機(jī)畫面的三維動(dòng)態(tài)畫面的展現(xiàn),提高用戶的體驗(yàn)。
圖1為本發(fā)明的實(shí)施例三維動(dòng)態(tài)圖形的生成方法流程示意圖;圖2-圖6為圖1所示方法中繪制一多邊形的過(guò)程示意圖;圖7為圖1所示方法中多邊形為六邊形時(shí)的示例圖8為本發(fā)明的實(shí)施例三維動(dòng)態(tài)圖形的生成裝置結(jié)構(gòu)框示意圖。
具體實(shí)施例方式為使本發(fā)明要解決的技術(shù)問(wèn)題、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體實(shí)施例進(jìn)行詳細(xì)描述。如圖1所示,本發(fā)明的實(shí)施例提供一種三維動(dòng)態(tài)圖形的生成方法,應(yīng)用于移動(dòng)終端,其中,所述方法包括:步驟11,獲得一多邊形;步驟12,選擇所述多邊形內(nèi)任意一點(diǎn),并連接所述多邊形內(nèi)任意一點(diǎn)到所述多邊形的各個(gè)頂點(diǎn),得到多個(gè)三角形;步驟13,獲得多個(gè)三角形中任意一個(gè)三角形中的任意一點(diǎn)的紋理坐標(biāo);步驟14,獲得對(duì)所述紋理坐標(biāo)進(jìn)行擾動(dòng)的擾動(dòng)因子;步驟15,根據(jù)所述擾動(dòng)因子對(duì)所述紋理坐標(biāo)進(jìn)行處理,得到擾動(dòng)后的紋理坐標(biāo);步驟16,根據(jù)擾動(dòng)后的紋理坐標(biāo),對(duì)各個(gè)三角形進(jìn)行渲染,得到動(dòng)態(tài)三維圖形。該實(shí)施例中,通過(guò)對(duì)多邊形進(jìn)行處理,得到三角形,并獲得三角形內(nèi)任意一點(diǎn)的紋理坐標(biāo),對(duì)該紋理坐標(biāo)利用擾動(dòng)因子進(jìn)行擾動(dòng),從而得到擾動(dòng)后的紋理坐標(biāo),最后再根據(jù)擾動(dòng)后的紋理坐標(biāo),對(duì)各個(gè)三角形進(jìn)行渲染,從而得到具有動(dòng)態(tài)效果的三維圖形;從而在移動(dòng)終端上實(shí)現(xiàn)了三維動(dòng)態(tài)圖形的 展現(xiàn),尤其是該三維圖形應(yīng)用于移動(dòng)終端的開機(jī)畫面時(shí),實(shí)現(xiàn)了該移動(dòng)終端開機(jī)畫面的三維動(dòng)態(tài)畫面的展現(xiàn),提高用戶的體驗(yàn)。在本發(fā)明的另一實(shí)施例中,包括上述步驟11-16的基礎(chǔ)上,上述步驟11具體可以包括:步驟111,繪制η個(gè)點(diǎn);步驟112,將每一個(gè)點(diǎn)作為一個(gè)頂點(diǎn),繪制從第一個(gè)頂點(diǎn)到最后一個(gè)頂點(diǎn)依次相連的一組線段,第η和η+1個(gè)頂點(diǎn)相連得到線段η,最后一個(gè)頂點(diǎn)和第一個(gè)頂點(diǎn)相連得到最后一個(gè)線段,總共繪制η條線段;步驟113,把每三個(gè)頂點(diǎn)作為一個(gè)獨(dú)立的三角形,繪制一組相連的三角形,對(duì)于奇數(shù)η,忽略最后一個(gè)頂點(diǎn),頂點(diǎn)η、η+1和η+2定義了第η個(gè)三角形;對(duì)于偶數(shù)η,頂點(diǎn)η+1、η和η+2定義了第η個(gè)三角形,總共繪制η-2個(gè)三角形,所有三角形組合在一起,形成所述多邊形;如圖2-圖6所示。在本發(fā)明的另一實(shí)施例中,包括上述步驟11-16的基礎(chǔ)上,上述步驟13可以包括:步驟131,通過(guò)三角插值的方法獲得多個(gè)三角形中任意一個(gè)三角形中的任意一點(diǎn)的紋理坐標(biāo)。具體地,上述步驟131可以包括:步驟1311,設(shè)置所述三角形的三個(gè)頂點(diǎn)在坐標(biāo)系(如迪卡爾坐標(biāo)系)中分別表示為 Vl(xl, yl, zl)、V2(x2,y2, z2)和 V3 (x3, y3, z3);步驟1312,根據(jù)所述V1、V2和V3和坐標(biāo),得到所述三角形中的任意一點(diǎn)的紋理坐標(biāo)為p0 = Vl+U (V2-V1) +V (V3-V1),其中,其參數(shù)U控制V2在結(jié)果中占多大的權(quán)值,參數(shù)V控制V3占多大權(quán)值,1-U-V控制Vl在結(jié)果中占多大權(quán)值。
在本發(fā)明的另一實(shí)施例中,包括上述步驟11-16的基礎(chǔ)上,上述步驟14中,擾動(dòng)因子優(yōu)選包括:圖形振動(dòng)的振幅和頻率,步驟14具體可以包括:步驟141,通過(guò)基于時(shí)間的正弦函數(shù)CXsin(DXt)獲得對(duì)所述紋理坐標(biāo)進(jìn)行擾動(dòng)的擾動(dòng)因子;其中,t為時(shí)間,C為指定的振幅初始值,D為指定的頻率初始值。相應(yīng)地,上述步驟15具體可以包括:步驟151,獲得一局部變量F = AXs+BXt ;步驟152,根據(jù)所述局部變量和所述擾動(dòng)因子,獲得X方向的紋理坐標(biāo)X= (AlXs+BIXt) XCXsin(DXt),以及y方向的紋理坐標(biāo)Y =(A2 X s+B2 Xt) XCXsin(DXt);其中,A和B為變量,s為紋理坐標(biāo),Al和A2為變量A的不同值或者相同值,BI和B2為變量B的不同值或者相同值。優(yōu)選的,該實(shí)施例中,在根據(jù)擾動(dòng)因子對(duì)紋理坐標(biāo)進(jìn)行擾動(dòng)時(shí),還包括:對(duì)于X方向的紋理坐標(biāo)X和y方向的紋理坐標(biāo)Y對(duì)應(yīng)的紋理的每一幀,用不同的擾動(dòng)因子進(jìn)行擾動(dòng)。其中,紋理通常是指一個(gè)二維的圖片,紋理坐標(biāo)是紋理圖片到要貼紋理圖像的表面(三維圖形)的一個(gè)映射,比如紋理坐標(biāo)是(0.5,0.0),就是把二維紋理圖像橫向二分之一處(整個(gè)是I)的點(diǎn)映射到隨后定義的物體頂點(diǎn)上去;紋理實(shí)際上是一個(gè)二維數(shù)組,它的元素是一些顏色值,單個(gè)的顏色值被稱為紋理元素或紋理像素。每一個(gè)紋理像素在紋理中都有一個(gè)唯一的地址,這個(gè)地址可以被認(rèn)為是一個(gè)列和行的值,它們分別由U和V來(lái)表示;紋理坐標(biāo)位于紋理空間中,也就是說(shuō),它們和紋理中的(0,0)位置相對(duì)應(yīng);當(dāng)將一個(gè)紋理應(yīng)用于一個(gè)圖元時(shí),它的紋理像素地址必須要映射到對(duì)象坐標(biāo)系中,然后再被平移到屏幕坐標(biāo)系或像素位置上。在本發(fā)明的另一實(shí)施例中,包括上述步驟11-16的基礎(chǔ)上,上述步驟16具體可以包括: 步驟161,根據(jù)擾動(dòng)后的紋理坐標(biāo),將完整的紋理映射到所述多邊形的所有頂點(diǎn)上;步驟162,加載與所述紋理相關(guān)的圖像數(shù)據(jù),并將所述紋理渲染到所述移動(dòng)終端的屏幕上,得到顯示在所述移動(dòng)終端的屏幕上的動(dòng)態(tài)三維圖形。其中,渲染是把物體坐標(biāo)(動(dòng)態(tài)三維圖形的各個(gè)頂點(diǎn)的坐標(biāo))所指定的圖元轉(zhuǎn)化成幀緩沖區(qū)中的圖像。優(yōu)選的,在渲染時(shí),還可以增加一些特效,如光照效果等,使該動(dòng)態(tài)三維圖形看起來(lái)更多樣化。下面結(jié)合具體的實(shí)現(xiàn)實(shí)例說(shuō)明上述方法的實(shí)現(xiàn)過(guò)程:利用OpenGL ES的著色語(yǔ)言實(shí)現(xiàn)上述動(dòng)態(tài)三維圖形的生成,OpenGl ES著色語(yǔ)言分為頂點(diǎn)著色器和片段著色器兩部分,動(dòng)態(tài)波浪三維圖形生成過(guò)程包括:I),繪制一多邊形;2),選擇所述多邊形內(nèi)任意一點(diǎn),并連接所述多邊形內(nèi)任意一點(diǎn)到所述多邊形的各個(gè)頂點(diǎn),得到多個(gè)三角形;該多邊形優(yōu)選為凸多邊形,即在多邊形內(nèi)選擇任意一點(diǎn),該點(diǎn)與該多邊形的各個(gè)頂點(diǎn)的連線在所述多邊形內(nèi)部;3),獲得多個(gè)三角形中任意一個(gè)三角形中的任意一點(diǎn)的紋理坐標(biāo);4),創(chuàng)建片段著色器對(duì)象;
5),在片段著色器可以使用之后,將紋理坐標(biāo)傳遞給著片段色器對(duì)象;6),獲得擾動(dòng)因子,該擾動(dòng)因子包括圖形的振幅和頻率;其中振幅值如為(0.05,
0.05);頻率值為(4,4);振幅初始值如為I等;7),根據(jù)擾動(dòng)因子,對(duì)紋理坐標(biāo)進(jìn)行擾動(dòng)處理,得到擾動(dòng)后的紋理坐標(biāo);8),根據(jù)擾動(dòng)后的紋理坐標(biāo),利用渲染引擎就可以畫出三維圖形的動(dòng)態(tài)波紋或者說(shuō)是拉窗簾的效果。按照上述算法,對(duì)一個(gè)原始多邊形為矩形表面進(jìn)行處理時(shí),用矩形模擬的窗簾進(jìn)行處理,可以實(shí)現(xiàn)動(dòng)態(tài)的有波浪感的 開機(jī)特效畫面。同時(shí),窗簾的貼圖也可以隨時(shí)更換,同時(shí)也可以增加不同形式的光照,增進(jìn)了趣味性,給用戶帶來(lái)良好的用戶體驗(yàn)。當(dāng)然,該原始多邊形還可以是圓形表面或者其它多邊形表面,在是圓形表面時(shí),可以對(duì)圓形用多邊形逼近的方法將其近似為多邊形,例如使用12邊形或者24邊形來(lái)逼近一個(gè)圓形;在對(duì)一個(gè)多邊形進(jìn)行動(dòng)態(tài)三維圖形生成時(shí),如圖7所示,對(duì)于一個(gè)六邊形,可以將該六邊形放入一個(gè)包圍盒中,包圍盒由A,B,C,D四點(diǎn)及其邊組成,內(nèi)部的六邊形由a,b,c,d, e,f六點(diǎn)以及邊組成,定義包圍盒的坐標(biāo)系Cl如下:A (0,0),B (1,0),C (1,I),D (0,I),然后根據(jù)a,b,c,d,e,f與A,B,C,D的相對(duì)位置給出其在Cl下的坐標(biāo),該坐標(biāo)類似于紋理坐標(biāo),再計(jì)算六邊形內(nèi)任意點(diǎn)的坐標(biāo),首先在其內(nèi)部定一個(gè)點(diǎn),假設(shè)為圖中的g點(diǎn),依次連接(a, g, b), (b, g, c), (c, g, d), (d, g, e), (e, g, f)則構(gòu)成六個(gè)三角形,對(duì)于任意一個(gè)三角形中的任意一點(diǎn),都可以通過(guò)三角插值的方法得到其紋理坐標(biāo),然后可以使用擾動(dòng)因子對(duì)該紋理坐標(biāo)進(jìn)行擾動(dòng)處理,最后再根據(jù)擾動(dòng)處理后的紋理坐標(biāo),根據(jù)擾動(dòng)處理后的紋理坐標(biāo)還原紋理頂點(diǎn)的位置,這樣可以得到新的具有波浪效果的3D圖像;該方法通過(guò)在片段著色器中對(duì)紋理坐標(biāo)的修改達(dá)到動(dòng)態(tài)3D窗簾的特效,實(shí)現(xiàn)過(guò)程中,在利用擾動(dòng)因子對(duì)紋理坐標(biāo)進(jìn)行修改時(shí),主要應(yīng)用了一個(gè)正弦函數(shù),它會(huì)在紋理查找操作之前擾動(dòng)紋理坐標(biāo),具體的過(guò)程如下:I)計(jì)算上述紋理坐標(biāo)X方向的擾動(dòng)因子(包括振幅和頻率):先計(jì)算一下局部變量F,它是紋理坐標(biāo)s和t的線性函數(shù),如F = AXs+BXt ;在這里以正弦函數(shù)為例,頻率為基于時(shí)間的正弦函數(shù)如CXsin(DXt),其中,t為時(shí)間,C為振幅,D為頻率,s為紋理坐標(biāo);最終乘以頻率的值,以控制震動(dòng)的快慢;最后的X方向的紋理坐標(biāo)X =(AXs+BXt) XCXsin(DXt);2)計(jì)算上述紋理坐標(biāo)y方向的擾動(dòng)因子和計(jì)算X方向的擾動(dòng)因子相同,也是先計(jì)算一個(gè)局部變時(shí),該局部變量也是s和t的一個(gè)線性函數(shù)。但是為了避免對(duì)稱,所用的函數(shù)盡可能不要相同,此處控制上述公式中的A和B可以得到不對(duì)稱的線性函數(shù);3)執(zhí)行紋理訪問(wèn);4)計(jì)算出片段著色器最終的顏色值(渲染的過(guò)程)。由于OpenGL ES基于GPU(圖形處理器)進(jìn)行處理,因此,相比于現(xiàn)有技術(shù)中的處理算法,使用具有可編程能力的圖形硬件(如GPU),可以在著色器內(nèi)部指定動(dòng)畫效果,可以減少CPU的負(fù)擔(dān);
當(dāng)上述動(dòng)態(tài)三維圖形應(yīng)用于移動(dòng)終端的開機(jī)畫面上時(shí),可以實(shí)現(xiàn)開機(jī)動(dòng)畫的多樣性、沉浸感:只需要簡(jiǎn)單修改片段著色器,就實(shí)現(xiàn)如:粒子系統(tǒng)、地形系統(tǒng)、自然景象等特效,并可以以非常簡(jiǎn)單的方式支持關(guān)鍵幀插值;創(chuàng)造出的動(dòng)畫真實(shí),奪目,更能滿足人們的要求;交互性更強(qiáng):通過(guò)交互操作,用戶可以任意修改貼圖(即上述紋理)、振幅和頻率等,甚至可以改變開機(jī)動(dòng)畫的方式,避免審美疲勞的出現(xiàn),滿足了娛樂(lè)身心的需要。當(dāng)然,本發(fā)明的上述方法實(shí)施例并不限于用OpenGL ES語(yǔ)言實(shí)現(xiàn),還可以用其它可以處理圖形的語(yǔ)言來(lái)實(shí)現(xiàn)。如圖8所示,本發(fā)明的實(shí)施例還提供一種三維動(dòng)態(tài)圖形的生成裝置,應(yīng)用于移動(dòng)終端,包括:第一獲得模塊81,用于獲得一多邊形;第一處理模塊82 ,用于選擇所述多邊形內(nèi)任意一點(diǎn),并連接所述多邊形內(nèi)任意一點(diǎn)到所述多邊形的各個(gè)頂點(diǎn),得到多個(gè)三角形;第二獲得模塊83,用于獲得多個(gè)三角形中任意一個(gè)三角形中的任意一點(diǎn)的紋理坐標(biāo);第三獲得模塊84,用于獲得對(duì)所述紋理坐標(biāo)進(jìn)行擾動(dòng)的擾動(dòng)因子;第二處理模塊85,用于根據(jù)所述擾動(dòng)因子對(duì)所述紋理坐標(biāo)進(jìn)行處理,得到擾動(dòng)后的紋理坐標(biāo);第三處理模塊86,用于根據(jù)擾動(dòng)后的紋理坐標(biāo),對(duì)各個(gè)三角形進(jìn)行渲染,得到動(dòng)態(tài)三維圖形。其中,所述第三獲得模塊84具體用于:通過(guò)基于時(shí)間的正弦函數(shù)CXsin(DXt)獲得對(duì)所述紋理坐標(biāo)進(jìn)行擾動(dòng)的擾動(dòng)因子;其中,t為時(shí)間,C為指定的振幅初始值,D為指定的頻率初始值。其中,所述第二處理模塊85包括:第一處理子模塊,用于獲得一局部變量F = AXs+BXt ;其中,第二處理子模塊,用于根據(jù)所述局部變量和所述擾動(dòng)因子,獲得X方向的紋理坐標(biāo)X = (AlXs+BIXt) XCXsin(DXt),以及y方向的紋理坐標(biāo)Y =(A2Xs+B2Xt) XCXsin(DXt);其中,A和B為變量,s為紋理坐標(biāo),Al和A2為變量A的不同值或者相同值,BI和B2為變量B的不同值或者相同值。其中,所述第二處理子模塊還用于:對(duì)于X方向的紋理坐標(biāo)X和y方向的紋理坐標(biāo)Y對(duì)應(yīng)的紋理的每一幀,用不同的擾動(dòng)因子進(jìn)行擾動(dòng)。其中,第三處理模塊具體用于:將擾動(dòng)后的紋理坐標(biāo),將完整的紋理映射到所述多邊形的所有頂點(diǎn)上;并加載與所述紋理相關(guān)的圖像數(shù)據(jù),并將所述紋理渲染到所述移動(dòng)終端的屏幕上,得到顯示在所述移動(dòng)終端的屏幕上的動(dòng)態(tài)三維圖形。需要說(shuō)明的是,該裝置實(shí)施例與上述方法實(shí)施例相對(duì)應(yīng),上述方法實(shí)施例中的所有實(shí)現(xiàn)方式均適用于該裝置實(shí)施例中,也能達(dá)到相同的技術(shù)效果,在此不再贅述。本發(fā)明的實(shí)施例還提供一種移動(dòng)終端,包括圖形處理器,設(shè)置于所述圖形處理器中的如上所述的三維動(dòng)態(tài)圖形的生成裝置??梢詫?shí)現(xiàn)在移動(dòng)終端上實(shí)現(xiàn)開機(jī)畫面的動(dòng)態(tài)波紋效果的三維圖形。
以上所述是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明所述原理的前提下,還可以作出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。·
權(quán)利要求
1.一種三維動(dòng)態(tài)圖形的生成方法,應(yīng)用于移動(dòng)終端,其特征在于,所述方法包括: 獲得一多邊形; 選擇所述多邊形內(nèi)任意一點(diǎn),并連接所述多邊形內(nèi)任意一點(diǎn)到所述多邊形的各個(gè)頂點(diǎn),得到多個(gè)三角形; 獲得多個(gè)三角形中任意一個(gè)三角形中的任意一點(diǎn)的紋理坐標(biāo); 獲得對(duì)所述紋理坐標(biāo)進(jìn)行擾動(dòng)的擾動(dòng)因子; 根據(jù)所述擾動(dòng)因子對(duì)所述紋理坐標(biāo)進(jìn)行處理,得到擾動(dòng)后的紋理坐標(biāo); 根據(jù)擾動(dòng)后的紋理坐標(biāo),對(duì)各個(gè)三角形進(jìn)行渲染,得到動(dòng)態(tài)三維圖形。
2.根據(jù)權(quán)利要求1所述的三維動(dòng)態(tài)圖形的生成方法,其特征在于,所述獲得一多邊形的步驟包括: 繪制n個(gè)點(diǎn); 將每一個(gè)點(diǎn)作為一個(gè)頂點(diǎn),繪制從第一個(gè)頂點(diǎn)到最后一個(gè)頂點(diǎn)依次相連的一組線段,第n和第n+1個(gè)頂點(diǎn)相連得到線段n,最后一個(gè)頂點(diǎn)和第一個(gè)頂點(diǎn)相連得到最后一個(gè)線段,總共繪制n條線段; 把每三個(gè)頂點(diǎn)作為一個(gè)獨(dú)立的三角形,繪制一組相連的三角形,對(duì)于奇數(shù)n,忽略最后一個(gè)頂點(diǎn),頂點(diǎn)n、n+1和n+2定義了第n個(gè)三角形;對(duì)于偶數(shù)n,頂點(diǎn)n+1、n和n+2定義了第n個(gè)三角形,總共繪制n-2個(gè)三角形,所有三角形組合在一起,形成所述多邊形。
3.根據(jù)權(quán)利要求1所述的三維動(dòng)態(tài)圖形的生成方法,其特征在于,獲得多個(gè)三角形中任意一個(gè)三角形中的任意一點(diǎn)的紋理坐標(biāo)的步驟包括: 通過(guò)三角插值的方法獲得多個(gè)三角形中任意一個(gè)三角形中的任意一點(diǎn)的紋理坐標(biāo)。
4.根據(jù)權(quán)利要求3所述的三維動(dòng)態(tài)圖形的生成方法,其特征在于,通過(guò)三角插值的方法獲得多個(gè)三角形中任意一個(gè)三角形中的任意一點(diǎn)的紋理坐標(biāo)的步驟包括: 設(shè)置所述三角形的三個(gè)頂點(diǎn)在坐標(biāo)系中分別表示為Vl (xl, yl, zl)、V2(x2,y2,z2)和V3 (x3, y3, z3); 根據(jù)所述V1、V2和V3的坐標(biāo),得到所述三角形中的任意一點(diǎn)的紋理坐標(biāo)為pO =Vl+U (V2-V1) +V (V3-V1),其中,參數(shù)U控制V2在結(jié)果中占多大的權(quán)值,參數(shù)V控制V3占多大權(quán)值,1-U-V控制Vl在結(jié)果中占多大權(quán)值。
5.根據(jù)權(quán)利要求1所述的三維動(dòng)態(tài)圖形的生成方法,其特征在于,獲得對(duì)所述紋理坐標(biāo)進(jìn)行擾動(dòng)的擾動(dòng)因子的步驟包括: 通過(guò)基于時(shí)間的正弦函數(shù)CXsin(DXt)獲得對(duì)所述紋理坐標(biāo)進(jìn)行擾動(dòng)的擾動(dòng)因子;其中,所述擾動(dòng)因子包括圖形振動(dòng)的振幅和頻率,t為時(shí)間,C為指定的振幅初始值,D為指定的頻率初始值。
6.根據(jù)權(quán)利要求5所述的三維動(dòng)態(tài)圖形的生成方法,其特征在于,根據(jù)所述擾動(dòng)因子對(duì)所述紋理坐標(biāo)進(jìn)行處理,得到擾動(dòng)后的紋理坐標(biāo)的步驟包括: 獲得一局部變量F = AXs+BXt ; 根據(jù)所述局部變量和所述擾動(dòng)因子,獲得X方向的紋理坐標(biāo)X = (Al X s+Bl Xt) XCXsin(DXt),以及y方向的紋理坐標(biāo)Y =(A2Xs+B2Xt) XCXsin(DXt);其中,A和B為變量,s為紋理坐標(biāo),Al和A2為變量A的不同值或者相同值,BI和B2為變量B的不同值或者相同值。
7.根據(jù)權(quán)利要求6所述的三維動(dòng)態(tài)圖形的生成方法,其特征在于,還包括:對(duì)于X方向的紋理坐標(biāo)X和y方向的紋理坐標(biāo)Y對(duì)應(yīng)的紋理的每一幀,用不同的擾動(dòng)因子進(jìn)行擾動(dòng)。
8.根據(jù)權(quán)利要求1所述的三維動(dòng)態(tài)圖形的生成方法,其特征在于,根據(jù)擾動(dòng)后的紋理坐標(biāo),對(duì)各個(gè)三角形進(jìn)行渲染,得到動(dòng)態(tài)三維圖形的步驟包括: 根據(jù)擾動(dòng)后的紋理坐標(biāo),將完整的紋理映射到所述多邊形的所有頂點(diǎn)上; 加載與所述紋理相關(guān)的圖像數(shù)據(jù),并將所述紋理渲染到所述移動(dòng)終端的屏幕上,得到顯示在所述移動(dòng)終端的屏幕上的動(dòng)態(tài)三維圖形。
9.一種三維動(dòng)態(tài)圖形的生成裝置,應(yīng)用于移動(dòng)終端,其特征在于,包括: 第一獲得模塊,用于獲得一多邊形; 第一處理模塊,用于選擇所述多邊形內(nèi)任意一點(diǎn),并連接所述多邊形內(nèi)任意一點(diǎn)到所述多邊形的各個(gè)頂點(diǎn),得到多個(gè)三角形; 第二獲得模塊,用于獲得多個(gè)三角形中任意一個(gè)三角形中的任意一點(diǎn)的紋理坐標(biāo); 第三獲得模塊,用于獲得對(duì)所述紋理坐標(biāo)進(jìn)行擾動(dòng)的擾動(dòng)因子; 第二處理模塊,用于根據(jù)所述擾動(dòng)因子對(duì)所述紋理坐標(biāo)進(jìn)行處理,得到擾動(dòng)后的紋理坐標(biāo); 第三處理模塊,用于根據(jù)擾動(dòng)后的紋理坐標(biāo),對(duì)各個(gè)三角形進(jìn)行渲染,得到動(dòng)態(tài)三維圖形。
10.根據(jù)權(quán)利 要求9所述的三維動(dòng)態(tài)圖形的生成裝置,其特征在于,所述第三獲得模塊具體用于:通過(guò)基于時(shí)間的正弦函數(shù)CXsin(DXt)獲得對(duì)所述紋理坐標(biāo)進(jìn)行擾動(dòng)的擾動(dòng)因子;其中,所述擾動(dòng)因子包括圖形振動(dòng)的振幅和頻率,t為時(shí)間,C為指定的振幅初始值,D為指定的頻率初始值。
11.根據(jù)權(quán)利要求10所述的三維動(dòng)態(tài)圖形的生成裝置,其特征在于,所述第二處理模塊包括: 第一處理子模塊,用于獲得一局部變量F = AXs+BXt ; 第二處理子模塊,用于根據(jù)所述局部變量和所述擾動(dòng)因子,獲得X方向的紋理坐標(biāo)X = (AlXs+BIXt) XCXsin(DXt),以及y方向的紋理坐標(biāo)Y =(A2Xs+B2Xt) XCXsin(DXt);其中,A和B為變量,s為紋理坐標(biāo),Al和A2為變量A的不同值或者相同值,BI和B2為變量B的不同值或者相同值。
12.根據(jù)權(quán)利要求11所述的三維動(dòng)態(tài)圖形的生成裝置,其特征在于,所述第二處理子模塊還用于:對(duì)于X方向的紋理坐標(biāo)X和y方向的紋理坐標(biāo)Y對(duì)應(yīng)的紋理的每一幀,用不同的擾動(dòng)因子進(jìn)行擾動(dòng)。
13.—種移動(dòng)終端,包括圖形處理器,其特征在于,還包括:設(shè)置于所述圖形處理器中的如權(quán)利要求9-12任一項(xiàng)所述的三維動(dòng)態(tài)圖形的生成裝置。
全文摘要
本發(fā)明提供一種三維動(dòng)態(tài)圖形的生成方法、裝置和移動(dòng)終端,其中,方法包括獲得一多邊形;選擇所述多邊形內(nèi)任意一點(diǎn),并連接所述多邊形內(nèi)任意一點(diǎn)到所述多邊形的各個(gè)頂點(diǎn),得到多個(gè)三角形;獲得多個(gè)三角形中任意一個(gè)三角形中的任意一點(diǎn)的紋理坐標(biāo);獲得對(duì)所述紋理坐標(biāo)進(jìn)行擾動(dòng)的擾動(dòng)因子;根據(jù)所述擾動(dòng)因子對(duì)所述紋理坐標(biāo)進(jìn)行處理,得到擾動(dòng)后的紋理坐標(biāo);根據(jù)擾動(dòng)后的紋理坐標(biāo),對(duì)各個(gè)三角形進(jìn)行渲染,得到動(dòng)態(tài)三維圖形。本發(fā)明的方案可以實(shí)現(xiàn)移動(dòng)終端上三維動(dòng)態(tài)圖形的展現(xiàn)。
文檔編號(hào)G06T15/04GK103247064SQ201210033250
公開日2013年8月14日 申請(qǐng)日期2012年2月14日 優(yōu)先權(quán)日2012年2月14日
發(fā)明者李寬 申請(qǐng)人:中國(guó)移動(dòng)通信集團(tuán)公司