一種頂點動畫的數(shù)據(jù)壓縮方法
【專利摘要】本發(fā)明提出一種頂點動畫的數(shù)據(jù)壓縮方法,其首先從磁盤讀入動畫文件,按特定的數(shù)據(jù)組織格式保存在內存中,存儲的動畫文件的文件頭包含動畫幀數(shù)目和頂點數(shù)目,而文件數(shù)據(jù)則包含每幀動畫的時間戳以及所有頂點的位移數(shù)據(jù),然后逐幀遍歷數(shù)據(jù),對動畫幀的位移數(shù)據(jù)進行比較分析,其中若一個頂點相鄰動畫幀的位移數(shù)據(jù)是相同的,則將重復位移數(shù)據(jù)剔除,只保存一幀數(shù)據(jù),最后將壓縮后的動畫數(shù)據(jù)重新寫入磁盤。對于頂點數(shù)目巨大的動畫文件,通過本發(fā)明所提出的方法,可以將動畫中相對靜止的頂點篩選出來,僅保存少量數(shù)據(jù)即可完成動畫。相對于保存頂點所有位置數(shù)據(jù),采用本發(fā)明所提出的方法可以節(jié)省大量的內存、磁盤空間,極大地減少文件I/O操作,最小化對系統(tǒng)性能的影響。
【專利說明】-種頂點動畫的數(shù)據(jù)壓縮方法
【技術領域】
[0001]本發(fā)明涉及一種數(shù)據(jù)處理方法,尤其是一種頂點動畫的數(shù)據(jù)壓縮方法。
【背景技術】
[0002]現(xiàn)有頂點動畫通常采用關鍵幀導出的方式保存幀動畫,每一幀保存了該幀的時間戳信息以及所有頂點的位置信息。頂點數(shù)目往往數(shù)以萬計,即使某些頂點在幾幀中并未發(fā)生位移變化,也會將位置數(shù)據(jù)導出,從而增加了文件大小。在加載播放動畫時,也耗去了不少內存和大量的文件I/o操作,影響性能。
【發(fā)明內容】
[0003]為了解決現(xiàn)有技術中存在的上述問題,本發(fā)明提供一種頂點動畫的數(shù)據(jù)壓縮方法,運用此方法可以壓縮動畫中未發(fā)生位移的頂點的數(shù)據(jù)量,從而降低動畫文件大小,改善磁盤占用。
[0004]本發(fā)明的目的通過以下技術方案實現(xiàn):
一種頂點動畫的數(shù)據(jù)壓縮方法,含有以下步驟:
數(shù)據(jù)解析:從磁盤讀入動畫文件,按特定的數(shù)據(jù)組織格式保存在內存中,存儲的動畫文件的文件頭包含動畫幀數(shù)目和頂點數(shù)目,而文件數(shù)據(jù)則包含每幀動畫的時間戳以及所有頂點的位移數(shù)據(jù);
數(shù)據(jù)壓縮:逐幀遍歷數(shù)據(jù),對動畫幀的位移數(shù)據(jù)進行比較分析,其中若一個頂點相鄰動畫幀的位移數(shù)據(jù)是相同的,則將重復位移數(shù)據(jù)剔除,只保存一幀數(shù)據(jù);
數(shù)據(jù)存盤:將壓縮后的動畫數(shù)據(jù)重新寫入磁盤。
[0005]作為對以上技術方案的進一步改進,在動畫更新時,即動畫文件的逐幀播放期間,在某一時刻取所有頂點的位置數(shù)據(jù)時,遍歷該幀數(shù)據(jù)時,逐個取頂點的位移數(shù)據(jù),若有位移則取位移數(shù)據(jù),沒有則取數(shù)據(jù)索引中對應幀的位移數(shù)據(jù)。
[0006]本發(fā)明的有益效果在于:
對于頂點數(shù)目巨大的動畫文件,通過本方法,可以將動畫中相對靜止的頂點篩選出來,僅保存少量數(shù)據(jù)即可完成動畫。相對于保存頂點所有位置數(shù)據(jù),可以節(jié)省大量磁盤空間。
【專利附圖】
【附圖說明】
[0007]本發(fā)明的目的、優(yōu)點和特點,將通過下面優(yōu)選實施例的非限制性說明進行圖示和解釋。這些實施例僅是應用本發(fā)明技術方案的典型范例,凡采取等同替換或等效變換而形成的技術方案,均落在本發(fā)明要求保護的范圍之內。這些附圖當中:
圖1為本發(fā)明中頂點動畫文件的數(shù)據(jù)結構;
圖2為本發(fā)明中頂點動畫重復數(shù)據(jù)的剔除;
圖3為本發(fā)明中頂點動畫壓縮后的數(shù)據(jù)結構;
圖4為本發(fā)明數(shù)據(jù)壓縮方法的流程圖?!揪唧w實施方式】
[0008]本發(fā)明提供一種頂點動畫的數(shù)據(jù)壓縮方法,運用此方法可以將原動畫數(shù)據(jù)文件中的重復數(shù)據(jù)剔除,壓縮后存盤成新文件,從而降低文件的磁盤占用,同時也減少文件加載后的內存占用。
[0009]根據(jù)本發(fā)明,系統(tǒng)首先從磁盤讀入一個頂點動畫文件,并按一定的數(shù)據(jù)組織格式保存在內存中。具體上講,存儲的動畫文件的文件頭包含動畫幀數(shù)目和頂點數(shù)目,而文件數(shù)據(jù)則包含每幀動畫的時間戳以及所有頂點的位移數(shù)據(jù),如圖1所示,該動畫有M個頂點和N個幀。
[0010]然后,系統(tǒng)逐幀遍歷數(shù)據(jù),對動畫頂點相鄰動畫幀的位移數(shù)據(jù)進行比較。其中,若一個頂點相鄰動畫幀的位移數(shù)據(jù)是相同的,則保存一幀數(shù)據(jù)即可,將重復位移數(shù)據(jù)剔除。具體如圖2所示,其中頂點2第I到第N幀的位移數(shù)據(jù)是相同的,則保留第I幀,頂點3第2到第N幀的位移數(shù)據(jù)是相同的,則保留第2幀,頂點M第2和第3幀的位移數(shù)據(jù)是相同的,則保留第2幀。
[0011]當動畫更新時,在某一時刻取所有頂點的位置數(shù)據(jù)時,遍歷該幀數(shù)據(jù)時,逐個取頂點的位移數(shù)據(jù),若有位移則取位移數(shù)據(jù),沒有則取數(shù)據(jù)索引(DataIndex)中對應幀的位移數(shù)據(jù),如圖3所示。其中,對于DataIndex,當某一巾貞(比如第N巾貞)某一個頂點的位移數(shù)據(jù)與之前1、幀的位移數(shù)據(jù)某一幀(比如第M幀)相同,則DataIndex的值即為M,只需要存儲這個M數(shù)值即可,不需要再另存位移數(shù)據(jù)了,達到數(shù)據(jù)壓縮的目的。
[0012]此步驟核心點就是取某一幀頂點位移數(shù)據(jù)時,先判斷是否有Datalndex,有就直接引用DataIndex對應的位移數(shù)據(jù),沒有則走正常流程,取該幀該頂點的位移數(shù)據(jù)。
[0013]最后,將壓縮后的數(shù)據(jù)重新寫入磁盤保存。整個過程如圖4所示。
[0014]對于頂點數(shù)目巨大的動畫文件,通過本方法,可以將動畫中相對靜止的頂點篩選出來,僅保存少量數(shù)據(jù)即可完成動畫。相對于保存頂點所有位置數(shù)據(jù),可以節(jié)省大量的內存、磁盤空間,極大地減少文件I/o操作,最小化對系統(tǒng)性能的影響。
[0015]以上所述僅為本發(fā)明的優(yōu)先實施方式,只要以基本相同手段實現(xiàn)本發(fā)明目的的技術方案都屬于本發(fā)明的保護范圍之內。
【權利要求】
1.一種頂點動畫的數(shù)據(jù)壓縮方法,其特征在于,包括以下步驟: 1)數(shù)據(jù)解析:從磁盤讀入動畫文件,按特定的數(shù)據(jù)組織格式保存在內存中,其中動畫文件的文件頭包含動畫幀數(shù)目和頂點數(shù)目,而文件數(shù)據(jù)則包含每幀動畫的時間戳以及所有頂點的位移數(shù)據(jù); 2)數(shù)據(jù)壓縮:逐幀遍歷數(shù)據(jù),對動畫幀的位移數(shù)據(jù)進行比較分析,其中若一個頂點相鄰動畫幀的位移數(shù)據(jù)是相同的,則將重復位移數(shù)據(jù)剔除,只保存一動畫幀的位移數(shù)據(jù); 3)數(shù)據(jù)存盤:將壓縮后的動畫數(shù)據(jù)重新寫入磁盤。
2.根據(jù)權利要求1所述的頂點動畫的數(shù)據(jù)壓縮方法,其特征在于,在動畫更新時,在某一時刻取所有頂點的位置數(shù)據(jù)時,遍歷該幀數(shù)據(jù)時,逐個取頂點的位移數(shù)據(jù),若有位移則取位移數(shù)據(jù),沒有則取數(shù)據(jù)`索引中對應幀的位移數(shù)據(jù)。
【文檔編號】G06F17/30GK103605774SQ201310619209
【公開日】2014年2月26日 申請日期:2013年11月29日 優(yōu)先權日:2013年11月29日
【發(fā)明者】梁波, 吳才忠, 劉暢 申請人:珠海金山網(wǎng)絡游戲科技有限公司, 成都西山居互動娛樂科技有限公司