專利名稱:多圖層動畫渲染系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種動畫渲染系統(tǒng)及方法,特別是關(guān)于一種多圖層動畫渲染系統(tǒng)及方法。
背景技術(shù):
動畫是用多幅靜止畫面連續(xù)播放,利用視覺暫留形成連續(xù)影像。隨著動畫制作技 術(shù)的發(fā)展,動畫在很多領(lǐng)域得到了廣泛應(yīng)用。在網(wǎng)絡(luò)上,動畫經(jīng)常被放在網(wǎng)頁中的某個區(qū) 域,用以強調(diào)某項內(nèi)容,如用作廣告宣傳。在電子產(chǎn)品中,動畫越來越多地用來改善用戶界 面,開發(fā)新功能,提高用戶體驗。例如,將動畫應(yīng)用于手機彩信,使用戶能夠傳遞更加活潑生 動的信息。動畫一般是用多個圖層制作,每一個圖層好象是一個紙片,每個紙片上有獨立的 內(nèi)容。將各個圖層按一定的順序疊放在一起,就形成了一個完整的畫面。對一個圖層進行 修改,不會對其他的圖層造成影響。動畫渲染存在數(shù)據(jù)量大,渲染速度緩慢的問題。這個問題在嵌入式系統(tǒng)中尤為突 出。由于存儲空間、處理速度的限制,手機、個人數(shù)字助理(PDA)等嵌入式系統(tǒng)難以完成復(fù) 雜性較高的動畫渲染,并且難以滿足實時性的要求。
發(fā)明內(nèi)容
鑒于以上內(nèi)容,有必要提供一種能夠簡單、快捷、高效地完成多圖層動畫渲染任務(wù) 的多圖層動畫渲染系統(tǒng)。此外,還有必要提供一種能夠簡單、快捷、高效地完成多圖層動畫渲染任務(wù)的多圖 層動畫渲染方法?!N多圖層動畫渲染系統(tǒng),該多圖層動畫渲染系統(tǒng)包括查找模塊,用于查找需 要渲染的圖層;選擇模塊,用于按照與動畫相對應(yīng)的可視樹的層次遍歷的順序逐一選擇需 要渲染的圖層;繪制模塊,用于根據(jù)需要重新繪制選擇的圖層;更新模塊,用于根據(jù)選擇的 圖層的屬性的目標值更新選擇的圖層的屬性的當(dāng)前值,屬性的當(dāng)前值表示該屬性的當(dāng)前狀 態(tài),屬性的目標值表示該屬性將要進入的狀態(tài);及合成模塊,用于根據(jù)對選擇的圖層的重新 繪制及屬性當(dāng)前值的更新,將選擇的圖層合成到渲染結(jié)果緩沖區(qū)。一種多圖層動畫渲染方法,該方法包括步驟查找需要渲染的圖層;按照與動畫 相對應(yīng)的可視樹的層次遍歷的順序選擇一個需要渲染的圖層;根據(jù)需要重新繪制選擇的圖 層中的內(nèi)容;根據(jù)選擇的圖層的屬性的目標值更新選擇的圖層的屬性的當(dāng)前值,屬性的當(dāng) 前值表示該屬性的當(dāng)前狀態(tài),屬性的目標值表示該屬性將要進入的狀態(tài);根據(jù)對選擇的圖 層的重新繪制及屬性當(dāng)前值的更新,將選擇的圖層合成到渲染結(jié)果緩沖區(qū);及若還有其他 需要渲染的圖層,則返回選擇一個需要渲染的圖層的步驟。本發(fā)明根據(jù)與動畫相對應(yīng)的可視樹逐一對各個需要渲染的圖層進行渲染,從而簡 單、快捷、高效地實現(xiàn)多圖層動畫渲染。
圖1為可視樹的示意圖。 圖2為本發(fā)明多圖層動畫渲染系統(tǒng)的功能模塊圖。圖3為本發(fā)明多圖層動畫渲染方法的流程圖。
具體實施例方式動畫是由多個幀組成的,一幀就是一個靜止的畫面。在多圖層動畫中,每一幀由多 個圖層疊合而成。每個圖層上可以繪制任何想要的內(nèi)容。每個圖層具有一個深度,如Z序, 用以表示該圖層在畫面中的前后順序。深度小的圖層在前面,深度大的圖層在后面,深度小 的圖層會遮擋深度大的圖層。每個圖層具有位置、高度、寬度及透明度等屬性。位置就是圖層的坐標,包括橫坐 標和縱坐標。例如,用(χ,y)表示圖層的位置,χ表示橫坐標,y表示縱坐標。一個文字的 移動,就是改變文字圖層的位置。高度和寬度表示圖層的大小。透明度表示圖層內(nèi)容顯示 的清晰程度,通過調(diào)節(jié)圖層的透明度可以實現(xiàn)各種半透明效果。本發(fā)明利用動畫的可視樹實現(xiàn)多圖層動畫渲染??梢晿涫莿赢嫷母鱾€圖層的一個 樹形數(shù)據(jù)結(jié)構(gòu)。可視樹的每個節(jié)點代表一個圖層。節(jié)點的深度對應(yīng)相應(yīng)圖層在畫面中的深 度。各個節(jié)點根據(jù)可視關(guān)系形成父子關(guān)系。一個節(jié)點的子節(jié)點表示該子節(jié)點在該節(jié)點的前 面。參閱圖1所示,是可視樹的示意圖。NodeO代表根節(jié)點,根據(jù)實際情況可以代表一個窗 口或整個屏幕。NodeO Node6分別對應(yīng)于圖層0 圖層6。其中,Nodel、Node2、Node3是 NodeO的子節(jié)點,Node4、Node5是Nodel的子節(jié)點,Node6是Node3的子節(jié)點。也就是說,圖 層1、圖層2、圖層3位于圖層O之前,圖層4、圖層5位于圖層1之前,圖層6位于圖層3之
、r -刖。參閱圖2所示,是本發(fā)明多圖層動畫渲染系統(tǒng)的功能模塊圖。所述多圖層動畫渲染系統(tǒng)20包括查找模塊201、選擇模塊202、繪制模塊203、更新 模塊204及合成模塊205。所述查找模塊201用于查找需要渲染的圖層。在本實施例中,利用臟矩形(Dirty Rectangle)技術(shù)確定需要渲染的圖層。在臟矩形技術(shù)中,發(fā)生變化的區(qū)域稱為臟矩形。臟矩形一般由圖層的屬性發(fā)生變化而產(chǎn)生。例如,假設(shè)一個圖層的位置為(0,0), 寬為100,高為200,將該圖層移動到位置(0,50)。則圖層移動到位置(0,50)所產(chǎn)生的臟矩 形的位置為(0,0),寬為150,高為200。如果一個圖層和臟矩形有交集,則該圖層是需要渲 染的圖層。利用臟矩形技術(shù)減少了需要處理的數(shù)據(jù)量,提高了動畫渲染的效率。在本實施例中,進一步地,查找模塊201還根據(jù)各個圖層的可視關(guān)系,從需要渲染 的圖層中剔除不可見圖層。所述不可見圖層是指完全被其他圖層擋住的圖層。可以通過從 前向后遍歷各個圖層(即從下往上遍歷可視樹),以判斷是否存在完全被其他圖層遮擋的 圖層。如果某一圖層是完全不透明的,則將該圖層沒有擋住的區(qū)域劃分成若干矩形,判斷該 圖層后面的圖層是否與矩形有交集,若有交集就是可見圖層,若沒有交集就是不可見圖層。 不可見圖層的查找在算法上可以用棧來實現(xiàn)。所述選擇模塊202用于按照可視樹層次遍歷的順序逐一選擇需要渲染的圖層。層次遍歷的順序是指從下到上、從左到右的順序。也就是說,采用由深至淺(即由后往前)的順序逐一對各個需要渲染的圖層進行渲染。所述繪制模塊203用于根據(jù)需要重新繪制該選擇的圖層。例如,若需要增加新的 內(nèi)容、刪除原有的內(nèi)容或者修改原有的內(nèi)容,則繪制模塊203重新繪制該選擇的圖層。所述更新模塊204用于根據(jù)該選擇的圖層的屬性的目標值更新該選擇的圖層的 屬性的當(dāng)前值。屬性的當(dāng)前值表示該屬性的當(dāng)前狀態(tài),目標值表示該屬性將要進入的狀態(tài)。 例如,假設(shè)一個圖層的位置的X坐標的當(dāng)前值為0,目標值為100。假設(shè)動畫有100幀,則需
要將該圖層的X坐標從0依次更新為1,2,3,......,98,99,100。若選擇的圖層的屬性的
目標值等于當(dāng)前值,則不需要更新該選擇的圖層的屬性的當(dāng)前值。所述合成模塊205用于根據(jù)對該選擇的圖層的重新繪制及屬性當(dāng)前值的更新,將 該選擇的圖層合成到渲染結(jié)果緩沖區(qū),亦即把變化后的圖層輸出到渲染結(jié)果緩沖區(qū)。渲染 結(jié)果緩存區(qū)相當(dāng)于一個畫布,各個圖層相當(dāng)于一個個紙片,將一個圖層合成到渲染結(jié)果緩 沖區(qū)就相當(dāng)于把相應(yīng)的一個紙片帖到畫布上。本步驟即為把變化后的圖層輸出到渲染結(jié)果 緩沖區(qū)。參閱圖3所示,是本發(fā)明多圖層動畫渲染方法的流程圖。該方法適用于各種數(shù)據(jù) 處理系統(tǒng),例如,手機、個人數(shù)字助理(PDA)等嵌入式系統(tǒng)。下面以動畫的一幀為例進行說 明。步驟S301,查找模塊201查找需要渲染的圖層。在本實施例中,利用臟矩形(Dirty Rectangle)技術(shù)確定需要渲染的圖層。在臟矩形技術(shù)中,發(fā)生變化的區(qū)域稱為臟矩形。臟矩形一般由圖層的屬性發(fā)生變化而產(chǎn)生。例如,假設(shè)一個圖層的位置為(0,0), 寬為100,高為200,該圖層將要移動到位置(0,50)。圖層移動到位置(0,50)所產(chǎn)生的臟矩 形的位置為(0,0),寬為150,高為200。如果一個圖層和臟矩形有交集,則該圖層是需要渲 染的圖層。利用臟矩形技術(shù)減少了需要處理的數(shù)據(jù)量,提高了動畫渲染的效率。在本實施例中,進一步地,查找模塊201根據(jù)各個圖層的可視關(guān)系,從需要渲染的 圖層中剔除不可見圖層。所述不可見圖層是指完全被其他圖層擋住的圖層。可以通過從前 向后遍歷各個圖層(即從下往上遍歷可視樹),以判斷是否存在完全被其他圖層遮擋的圖 層。如果某一圖層是完全不透明的,則將該圖層沒有擋住的區(qū)域劃分成若干矩形,判斷該圖 層后面的圖層是否與矩形有交集,若有交集就是可見圖層,若沒有交集就是不可見圖層。不 可見圖層的查找在算法上可以用棧來實現(xiàn)。步驟S302,選擇模塊202按照可視樹層次遍歷的順序選擇一個需要渲染的圖層。 層次遍歷的順序是指從下到上、從左到右的順序。也就是說,采用由深至淺(即由后往前) 的順序逐一對各個需要渲染的圖層進行渲染。步驟S303,繪制模塊203根據(jù)需要重新繪制該選擇的圖層。例如,若需要增加新的 內(nèi)容、刪除原有的內(nèi)容或者修改原有的內(nèi)容,則繪制模塊203重新繪制該選擇的圖層。若不 需要改變該選擇的圖層的內(nèi)容,則進入下一步驟。步驟S304,更新模塊204根據(jù)該選擇的圖層的屬性的目標值更新該選擇的圖層的 屬性的當(dāng)前值。屬性的當(dāng)前值表示該屬性的當(dāng)前狀態(tài),目標值表示該屬性將要進入的狀態(tài)。 例如,假設(shè)一個圖層的位置的X坐標的當(dāng)前值為0,目標值為100。假設(shè)動畫有100幀,則需 要將該圖層的X坐標從0依次更新為1,2,3,......,98,99,100。若選擇的圖層的屬性的目標值等于當(dāng)前值,則進入下一步驟。
步驟S305,合成模塊205根據(jù)對選擇的圖層的重新繪制及屬性當(dāng)前值的更新,將 該選擇的圖層合成到渲染結(jié)果緩沖區(qū),亦即把變化后的圖層合成到渲染結(jié)果緩沖區(qū)。渲染 結(jié)果緩存區(qū)相當(dāng)于一個畫布,各個圖層相當(dāng)于一個個紙片,將一個圖層合成到渲染結(jié)果緩 沖區(qū)就相當(dāng)于把相應(yīng)的一個紙片帖到畫布上。步驟S306,判斷是否還有其他需要渲染的圖層。若沒有其他需要渲染的圖層,則流 程結(jié)束。否則,若還有其他需要渲染的圖層,則返回步驟S302,按照可視樹層次遍歷的順序 選擇下一個需要渲染的圖層。
權(quán)利要求
一種多圖層動畫渲染系統(tǒng),其特征在于,該多圖層動畫渲染系統(tǒng)包括查找模塊,用于查找需要渲染的圖層;選擇模塊,用于按照與動畫相對應(yīng)的可視樹的層次遍歷的順序逐一選擇需要渲染的圖層;繪制模塊,用于根據(jù)需要重新繪制選擇的圖層;更新模塊,用于根據(jù)選擇的圖層的屬性的目標值更新選擇的圖層的屬性的當(dāng)前值,屬性的當(dāng)前值表示該屬性的當(dāng)前狀態(tài),屬性的目標值表示該屬性將要進入的狀態(tài);及合成模塊,用于根據(jù)對選擇的圖層的重新繪制及屬性當(dāng)前值的更新,將選擇的圖層合成到渲染結(jié)果緩沖區(qū)。
2.如權(quán)利要求1所述的多圖層動畫渲染系統(tǒng),其特征在于,所述可視樹的每個節(jié)點代 表一個圖層,節(jié)點的深度對應(yīng)相應(yīng)圖層的深度,各個節(jié)點根據(jù)可視關(guān)系形成父子關(guān)系。
3.如權(quán)利要求1所述的多圖層動畫渲染系統(tǒng),其特征在于,所述查找模塊利用臟矩形 技術(shù)確定需要渲染的圖層。
4.如權(quán)利要求1所述的多圖層動畫渲染系統(tǒng),其特征在于,所述查找模塊還用于根據(jù) 各個圖層的可視關(guān)系,從需要渲染的圖層中剔除不可見圖層,所述不可見圖層是指完全被 其他圖層擋住的圖層。
5.如權(quán)利要求4所述的多圖層動畫渲染系統(tǒng),其特征在于,該多圖層動畫渲染系統(tǒng)適 用于嵌入式系統(tǒng)。
6.一種多圖層動畫渲染方法,其特征在于,該方法包括步驟查找需要渲染的圖層;按照與動畫相對應(yīng)的可視樹的層次遍歷的順序選擇一個需要渲染的圖層;根據(jù)需要重新繪制選擇的圖層中的內(nèi)容;根據(jù)選擇的圖層的屬性的目標值更新選擇的圖層的屬性的當(dāng)前值,屬性的當(dāng)前值表示 該屬性的當(dāng)前狀態(tài),屬性的目標值表示該屬性將要選入的狀態(tài);根據(jù)對選擇的圖層的重新繪制及屬性當(dāng)前值的更新,將選擇的圖層合成到渲染結(jié)果緩 沖區(qū);及若還有其他需要渲染的圖層,則返回選擇一個需要渲染的圖層的步驟。
7.如權(quán)利要求6所述的多圖層動畫渲染方法,其特征在于,所述可視樹的每個節(jié)點代 表一個圖層,節(jié)點的深度對應(yīng)相應(yīng)圖層的深度,各個節(jié)點根據(jù)可視關(guān)系形成父子關(guān)系。
8.如權(quán)利要求6所述的多圖層動畫渲染方法,其特征在于,所述查找需要渲染的圖層 是利用臟矩形技術(shù)進行查找。
9.如權(quán)利要求6所述的多圖層動畫渲染方法,其特征在于,所述查找需要渲染的圖層 的步驟還包括根據(jù)各個圖層的可視關(guān)系,從需要渲染的圖層中剔除不可見圖層,所述不可 見圖層是指完全被其他圖層擋住的圖層。
10.如權(quán)利要求9所述的多圖層動畫渲染方法,其特征在于,該多圖層動畫渲染方法適 用于嵌入式系統(tǒng)。
全文摘要
一種多圖層動畫渲染方法,該方法包括步驟查找需要渲染的圖層;按照可視樹的層次遍歷的順序選擇一個需要渲染的圖層;根據(jù)需要重新繪制該選擇的圖層;更新該選擇的圖層的屬性的當(dāng)前值;將該選擇的圖層合成到渲染結(jié)果緩沖區(qū);及若有其他需要渲染的圖層,則選擇下一個需要渲染的圖層。本發(fā)明還提供一種多圖層動畫渲染系統(tǒng)。本發(fā)明能夠簡單、快捷、高效地實現(xiàn)多圖層動畫渲染。
文檔編號G06T13/00GK101847269SQ20091004846
公開日2010年9月29日 申請日期2009年3月27日 優(yōu)先權(quán)日2009年3月27日
發(fā)明者劉俊成, 方華, 朱維松, 賀甲 申請人:上海科泰世紀科技有限公司