一種動(dòng)畫數(shù)據(jù)處理方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開一種動(dòng)畫數(shù)據(jù)處理方法及系統(tǒng),其中,方法包括步驟:將待計(jì)算的動(dòng)畫數(shù)據(jù)定義為統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),CPU根據(jù)數(shù)據(jù)結(jié)構(gòu)中的輸入值計(jì)算出時(shí)間進(jìn)度,并將計(jì)算出的時(shí)間進(jìn)度保存在數(shù)據(jù)結(jié)構(gòu)中;GPU根據(jù)時(shí)間進(jìn)度,對(duì)動(dòng)畫數(shù)據(jù)進(jìn)行并行計(jì)算得到動(dòng)畫進(jìn)度;GPU計(jì)算完畢后,CPU根據(jù)GPU計(jì)算出的動(dòng)畫進(jìn)度及數(shù)據(jù)結(jié)構(gòu)中的輸入值計(jì)算出當(dāng)前物體各屬性的最終值,并利用圖形渲染系統(tǒng)渲染計(jì)算結(jié)果。本發(fā)明由于將動(dòng)畫計(jì)算量最大的動(dòng)畫進(jìn)度計(jì)算部分交由GPU并行計(jì)算,從而能夠很好的提高計(jì)算效率,提高整個(gè)系統(tǒng)的運(yùn)行效率。
【專利說(shuō)明】一種動(dòng)畫數(shù)據(jù)處理方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及動(dòng)畫領(lǐng)域,尤其涉及一種用于快速計(jì)算動(dòng)畫數(shù)據(jù)的動(dòng)畫數(shù)據(jù)處理方法及系統(tǒng)。
【背景技術(shù)】
[0002]由于智能手機(jī)以及智能電視的興起,3DLauncher (3D桌面)等3D應(yīng)用被大規(guī)模應(yīng)用在智能設(shè)備中,但類似于3D動(dòng)畫等應(yīng)用還無(wú)法大規(guī)模應(yīng)用在智能設(shè)備中,其主要原因是:對(duì)于動(dòng)畫數(shù)據(jù),目前仍采用CPU循環(huán)計(jì)算的方式,其流程如下:S1、根據(jù)時(shí)間進(jìn)度,由CPU循環(huán)計(jì)算動(dòng)畫數(shù)據(jù);S2、動(dòng)畫計(jì)算完畢后,全部物體狀態(tài)已經(jīng)確定,此時(shí)使用GPU進(jìn)行渲染;S3渲染完畢一幀后,重新計(jì)算下一幀動(dòng)畫數(shù)據(jù)。其中的動(dòng)畫數(shù)據(jù)計(jì)算過(guò)程由CPU循環(huán)執(zhí)行,這對(duì)于平面動(dòng)畫等動(dòng)畫數(shù)據(jù)量較小的動(dòng)畫尚可執(zhí)行,但是若動(dòng)畫數(shù)據(jù)量大,尤其是對(duì)于3D動(dòng)畫,其數(shù)據(jù)處理量規(guī)模非常龐大,所以若采用傳統(tǒng)的CPU循環(huán)計(jì)算方式,其計(jì)算效率非常低,將大大拖慢整個(gè)系統(tǒng)運(yùn)行速度,影響整個(gè)系統(tǒng)性能。
[0003]因此,現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。
【發(fā)明內(nèi)容】
[0004]鑒于上述現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供一種動(dòng)畫數(shù)據(jù)處理方法及系統(tǒng),旨在解決現(xiàn)有的動(dòng)畫數(shù)據(jù)處理方法計(jì)算效率低的問(wèn)題。
[0005]本發(fā)明的技術(shù)方案如下:
一種動(dòng)畫數(shù)據(jù)處理方法,其中,包括步驟:
A、將待計(jì)算的動(dòng)畫數(shù)據(jù)定義為統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),CPU根據(jù)數(shù)據(jù)結(jié)構(gòu)中的輸入值計(jì)算出時(shí)間進(jìn)度,并將計(jì)算出的時(shí)間進(jìn)度保存在數(shù)據(jù)結(jié)構(gòu)中;
B、GPU根據(jù)時(shí)間進(jìn)度,對(duì)動(dòng)畫數(shù)據(jù)進(jìn)行并行計(jì)算得到動(dòng)畫進(jìn)度;
C、GPU計(jì)算完畢后,CPU根據(jù)GPU計(jì)算出的動(dòng)畫進(jìn)度及數(shù)據(jù)結(jié)構(gòu)中的輸入值計(jì)算出當(dāng)前物體各屬性的最終值,并利用圖形渲染系統(tǒng)渲染計(jì)算結(jié)果。
[0006]所述的動(dòng)畫數(shù)據(jù)處理方法,其中,所述步驟B具體包括:
B1、使用圖形渲染系統(tǒng)在GPU顯存中創(chuàng)建用于共享數(shù)據(jù)的數(shù)據(jù)緩沖區(qū);
B2、將包含有時(shí)間進(jìn)度計(jì)算結(jié)果的動(dòng)畫數(shù)據(jù)寫入到數(shù)據(jù)緩沖區(qū);
B3、從數(shù)據(jù)緩沖區(qū)中獲取計(jì)算過(guò)程中的各輸入值,并根據(jù)時(shí)間進(jìn)度以及輸入值計(jì)算動(dòng)畫進(jìn)度;
B4、將計(jì)算出的動(dòng)畫進(jìn)度寫入到數(shù)據(jù)緩沖區(qū)中的相應(yīng)位置。
[0007]所述的動(dòng)畫數(shù)據(jù)處理方法,其中,所述步驟B3具體包括:
B31、獲取用于處理數(shù)據(jù)緩沖區(qū)中每份動(dòng)畫數(shù)據(jù)對(duì)應(yīng)的并行線程ID ;
B32、根據(jù)并行線程ID獲取數(shù)據(jù)緩沖區(qū)相應(yīng)的操作首地址;
B33、根據(jù)操作首地址獲取相應(yīng)動(dòng)畫數(shù)據(jù)計(jì)算過(guò)程中的各輸入值。
[0008]所述的動(dòng)畫數(shù)據(jù)處理方法,其中,步驟C具體包括: Cl、CPU從數(shù)據(jù)緩沖區(qū)中讀取數(shù)據(jù)結(jié)構(gòu)中的各輸入值及動(dòng)畫進(jìn)度;
C2、CPU根據(jù)各輸入值及動(dòng)畫進(jìn)度計(jì)算出當(dāng)前物體各屬性的最終值;
C3、利用圖形渲染系統(tǒng)進(jìn)行動(dòng)畫渲染,以將動(dòng)畫繪制到屏幕上。
[0009]所述的動(dòng)畫數(shù)據(jù)處理方法,其中,所述數(shù)據(jù)緩沖區(qū)由OpenGL或者direct3d創(chuàng)建。
[0010]一種動(dòng)畫數(shù)據(jù)處理系統(tǒng),其中,包括:
時(shí)間進(jìn)度計(jì)算模塊,用于將待計(jì)算的動(dòng)畫數(shù)據(jù)定義為統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),CPU根據(jù)數(shù)據(jù)結(jié)構(gòu)中的輸入值計(jì)算出時(shí)間進(jìn)度,并將計(jì)算出的時(shí)間進(jìn)度保存在數(shù)據(jù)結(jié)構(gòu)中;
并行計(jì)算模塊,用于GPU根據(jù)時(shí)間進(jìn)度,對(duì)動(dòng)畫數(shù)據(jù)進(jìn)行并行計(jì)算得到動(dòng)畫進(jìn)度;
渲染模塊,用于GPU計(jì)算完畢后,CPU根據(jù)GPU計(jì)算出的動(dòng)畫進(jìn)度及數(shù)據(jù)結(jié)構(gòu)中的輸入值計(jì)算出當(dāng)前物體各屬性的最終值,并利用圖形渲染系統(tǒng)渲染計(jì)算結(jié)果。
[0011]所述的動(dòng)畫數(shù)據(jù)處理系統(tǒng),其中,所述并行計(jì)算模塊包括:
數(shù)據(jù)緩沖區(qū)創(chuàng)建單元,用于使用圖形渲染系統(tǒng)在GPU顯存中創(chuàng)建用于共享數(shù)據(jù)的數(shù)據(jù)緩沖區(qū);
時(shí)間進(jìn)度寫入單元,用于將包含有時(shí)間進(jìn)度計(jì)算結(jié)果的動(dòng)畫數(shù)據(jù)寫入到數(shù)據(jù)緩沖區(qū);動(dòng)畫進(jìn)度計(jì)算單元,用于從數(shù)據(jù)緩沖區(qū)中獲取計(jì)算過(guò)程中的各輸入值,并根據(jù)時(shí)間進(jìn)度以及輸入值計(jì)算動(dòng)畫進(jìn)度;
動(dòng)畫進(jìn)度寫入單元,用于將計(jì)算出的動(dòng)畫進(jìn)度寫入到數(shù)據(jù)緩沖區(qū)中的相應(yīng)位置。
[0012]所述的動(dòng)畫數(shù)據(jù)處理系統(tǒng),其中,所述動(dòng)畫進(jìn)度計(jì)算單元具體包括:
并行線程ID獲取子單元,用于獲取用于處理數(shù)據(jù)緩沖區(qū)中每份動(dòng)畫數(shù)據(jù)對(duì)應(yīng)的并行線程ID ;
操作首地址獲取子單元,用于根據(jù)并行線程ID獲取數(shù)據(jù)緩沖區(qū)相應(yīng)的操作首地址; 輸入值獲取子單元,用于根據(jù)操作首地址獲取相應(yīng)動(dòng)畫數(shù)據(jù)計(jì)算過(guò)程中的各輸入值。
[0013]所述的動(dòng)畫數(shù)據(jù)處理系統(tǒng),其中,所述渲染模塊包括:
數(shù)據(jù)讀取單元,用于從數(shù)據(jù)緩沖區(qū)中讀取數(shù)據(jù)結(jié)構(gòu)中的各輸入值及動(dòng)畫進(jìn)度;
最終值計(jì)算單元,用于根據(jù)各輸入值及動(dòng)畫進(jìn)度計(jì)算出當(dāng)前物體各屬性的最終值;
渲染單元,用于利用圖形渲染系統(tǒng)進(jìn)行動(dòng)畫渲染,以將動(dòng)畫繪制到屏幕上。
[0014]有益效果:本發(fā)明先將待計(jì)算的動(dòng)畫數(shù)據(jù)定義為統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),并由CPU根據(jù)數(shù)據(jù)結(jié)構(gòu)中的輸入值計(jì)算出時(shí)間進(jìn)度,然后由GPU根據(jù)時(shí)間進(jìn)度,對(duì)動(dòng)畫數(shù)據(jù)進(jìn)行并行計(jì)算得到動(dòng)畫進(jìn)度;在GPU計(jì)算完畢后,CPU根據(jù)動(dòng)畫進(jìn)度及輸入值計(jì)算出當(dāng)前物體各屬性的最終值,并利用圖形渲染系統(tǒng)渲染計(jì)算結(jié)果。本發(fā)明的方法由于將動(dòng)畫計(jì)算量最大的動(dòng)畫進(jìn)度計(jì)算部分交由GPU并行計(jì)算,從而能夠很好的提高計(jì)算效率,提高整個(gè)系統(tǒng)的運(yùn)行效率。
【專利附圖】
【附圖說(shuō)明】
[0015]圖1為本發(fā)明動(dòng)畫數(shù)據(jù)處理方法較佳實(shí)施例的流程圖。
[0016]圖2為圖1所示方法中步驟S102的具體流程圖。
[0017]圖3為線性漸變動(dòng)畫中動(dòng)畫進(jìn)度與時(shí)間進(jìn)度的關(guān)系圖。
[0018]圖4為曲線漸變動(dòng)畫中動(dòng)畫進(jìn)度與時(shí)間進(jìn)度的關(guān)系圖。
[0019]圖5為圖2所示流程中步驟S203的具體流程圖。[0020]圖6為并行線程與動(dòng)畫數(shù)據(jù)的對(duì)應(yīng)關(guān)系圖。
[0021]圖7為圖1所示方法中步驟S103的具體流程圖。
[0022]圖8為本發(fā)明動(dòng)畫數(shù)據(jù)處理系統(tǒng)較佳實(shí)施例的結(jié)構(gòu)框圖。
[0023]圖9為圖8所示系統(tǒng)中并行計(jì)算模塊的具體結(jié)構(gòu)框圖。
[0024]圖10為圖9所示模塊中動(dòng)畫進(jìn)度計(jì)算單元的具體結(jié)構(gòu)框圖。
[0025]圖11為圖8所示系統(tǒng)中渲染模塊的具體結(jié)構(gòu)框圖。
【具體實(shí)施方式】 [0026]本發(fā)明提供一種動(dòng)畫數(shù)據(jù)處理方法及系統(tǒng),為使本發(fā)明的目的、技術(shù)方案及效果更加清楚、明確,以下對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0027]請(qǐng)參閱圖1,圖1為本發(fā)明一種動(dòng)畫數(shù)據(jù)處理方法較佳實(shí)施例的流程圖,如圖所示,其包括步驟:
5101、將待計(jì)算的動(dòng)畫數(shù)據(jù)定義為統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),CPU根據(jù)數(shù)據(jù)結(jié)構(gòu)中的輸入值計(jì)算出時(shí)間進(jìn)度,并將計(jì)算出的時(shí)間進(jìn)度保存在數(shù)據(jù)結(jié)構(gòu)中;
5102、GPU根據(jù)時(shí)間進(jìn)度,對(duì)動(dòng)畫數(shù)據(jù)進(jìn)行并行計(jì)算得到動(dòng)畫進(jìn)度;
5103、GPU計(jì)算完畢后,CPU根據(jù)GPU計(jì)算出的動(dòng)畫進(jìn)度及數(shù)據(jù)結(jié)構(gòu)中的輸入值計(jì)算出當(dāng)前物體各屬性的最終值,并利用圖形渲染系統(tǒng)渲染計(jì)算結(jié)果。
[0028]具體來(lái)說(shuō),在步驟SlOl中,首先將需要計(jì)算的動(dòng)畫數(shù)據(jù)定義為統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),用于對(duì)動(dòng)畫數(shù)據(jù)進(jìn)行管理及統(tǒng)一計(jì)算,以一個(gè)典型的位移動(dòng)畫為例,可將動(dòng)畫數(shù)據(jù)定義為表一中的結(jié)構(gòu):
表一
【權(quán)利要求】
1.一種動(dòng)畫數(shù)據(jù)處理方法,其特征在于,包括步驟: A、將待計(jì)算的動(dòng)畫數(shù)據(jù)定義為統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),CPU根據(jù)數(shù)據(jù)結(jié)構(gòu)中的輸入值計(jì)算出時(shí)間進(jìn)度,并將計(jì)算出的時(shí)間進(jìn)度保存在數(shù)據(jù)結(jié)構(gòu)中; B、GPU根據(jù)時(shí)間進(jìn)度,對(duì)動(dòng)畫數(shù)據(jù)進(jìn)行并行計(jì)算得到動(dòng)畫進(jìn)度; C、GPU計(jì)算完畢后,CPU根據(jù)GPU計(jì)算出的動(dòng)畫進(jìn)度及數(shù)據(jù)結(jié)構(gòu)中的輸入值計(jì)算出當(dāng)前物體各屬性的最終值,并利用圖形渲染系統(tǒng)渲染計(jì)算結(jié)果。
2.根據(jù)權(quán)利要求1所述的動(dòng)畫數(shù)據(jù)處理方法,其特征在于,所述步驟B具體包括: B1、使用圖形渲染系統(tǒng)在GPU顯存中創(chuàng)建用于共享數(shù)據(jù)的數(shù)據(jù)緩沖區(qū); B2、將包含有時(shí)間進(jìn)度計(jì)算結(jié)果的動(dòng)畫數(shù)據(jù)寫入到數(shù)據(jù)緩沖區(qū); B3、從數(shù)據(jù)緩沖區(qū)中獲取計(jì)算過(guò)程中的各輸入值,并根據(jù)時(shí)間進(jìn)度以及輸入值計(jì)算動(dòng)畫進(jìn)度; B4、將計(jì)算出的動(dòng)畫進(jìn)度寫入到數(shù)據(jù)緩沖區(qū)中的相應(yīng)位置。
3.根據(jù)權(quán)利要求2所述的動(dòng)畫數(shù)據(jù)處理方法,其特征在于,所述步驟B3具體包括: B31、獲取用于處理數(shù) 據(jù)緩沖區(qū)中每份動(dòng)畫數(shù)據(jù)對(duì)應(yīng)的并行線程ID ; B32、根據(jù)并行線程ID獲取數(shù)據(jù)緩沖區(qū)相應(yīng)的操作首地址; B33、根據(jù)操作首地址獲取相應(yīng)動(dòng)畫數(shù)據(jù)計(jì)算過(guò)程中的各輸入值。
4.根據(jù)權(quán)利要求1所述的動(dòng)畫數(shù)據(jù)處理方法,其特征在于,步驟C具體包括: Cl、CPU從數(shù)據(jù)緩沖區(qū)中讀取數(shù)據(jù)結(jié)構(gòu)中的各輸入值及動(dòng)畫進(jìn)度; C2、CPU根據(jù)各輸入值及動(dòng)畫進(jìn)度計(jì)算出當(dāng)前物體各屬性的最終值; C3、利用圖形渲染系統(tǒng)進(jìn)行動(dòng)畫渲染,以將動(dòng)畫繪制到屏幕上。
5.根據(jù)權(quán)利要求2所述的動(dòng)畫數(shù)據(jù)處理方法,其特征在于,所述數(shù)據(jù)緩沖區(qū)由OpenGL或者direct3d創(chuàng)建。
6.一種動(dòng)畫數(shù)據(jù)處理系統(tǒng),其特征在于,包括: 時(shí)間進(jìn)度計(jì)算模塊,用于將待計(jì)算的動(dòng)畫數(shù)據(jù)定義為統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),CPU根據(jù)數(shù)據(jù)結(jié)構(gòu)中的輸入值計(jì)算出時(shí)間進(jìn)度,并將計(jì)算出的時(shí)間進(jìn)度保存在數(shù)據(jù)結(jié)構(gòu)中; 并行計(jì)算模塊,用于GPU根據(jù)時(shí)間進(jìn)度,對(duì)動(dòng)畫數(shù)據(jù)進(jìn)行并行計(jì)算得到動(dòng)畫進(jìn)度; 渲染模塊,用于GPU計(jì)算完畢后,CPU根據(jù)GPU計(jì)算出的動(dòng)畫進(jìn)度及數(shù)據(jù)結(jié)構(gòu)中的輸入值計(jì)算出當(dāng)前物體各屬性的最終值,并利用圖形渲染系統(tǒng)渲染計(jì)算結(jié)果。
7.根據(jù)權(quán)利要求6所述的動(dòng)畫數(shù)據(jù)處理系統(tǒng),其特征在于,所述并行計(jì)算模塊包括: 數(shù)據(jù)緩沖區(qū)創(chuàng)建單元,用于使用圖形渲染系統(tǒng)在GPU顯存中創(chuàng)建用于共享數(shù)據(jù)的數(shù)據(jù)緩沖區(qū); 時(shí)間進(jìn)度寫入單元,用于將包含有時(shí)間進(jìn)度計(jì)算結(jié)果的動(dòng)畫數(shù)據(jù)寫入到數(shù)據(jù)緩沖區(qū);動(dòng)畫進(jìn)度計(jì)算單元,用于從數(shù)據(jù)緩沖區(qū)中獲取計(jì)算過(guò)程中的各輸入值,并根據(jù)時(shí)間進(jìn)度以及輸入值計(jì)算動(dòng)畫進(jìn)度; 動(dòng)畫進(jìn)度寫入單元,用于將計(jì)算出的動(dòng)畫進(jìn)度寫入到數(shù)據(jù)緩沖區(qū)中的相應(yīng)位置。
8.根據(jù)權(quán)利要求7所述的動(dòng)畫數(shù)據(jù)處理系統(tǒng),其特征在于,所述動(dòng)畫進(jìn)度計(jì)算單元具體包括: 并行線程ID獲取子單元,用于獲取用于處理數(shù)據(jù)緩沖區(qū)中每份動(dòng)畫數(shù)據(jù)對(duì)應(yīng)的并行線程ID ;操作首地址獲取子單元,用于根據(jù)并行線程ID獲取數(shù)據(jù)緩沖區(qū)相應(yīng)的操作首地址;輸入值獲取子單元,用于根據(jù)操作首地址獲取相應(yīng)動(dòng)畫數(shù)據(jù)計(jì)算過(guò)程中的各輸入值。
9.根據(jù)權(quán)利要求6所述的動(dòng)畫數(shù)據(jù)處理系統(tǒng),其特征在于,所述渲染模塊包括:數(shù)據(jù)讀取單元,用于從數(shù)據(jù)緩沖區(qū)中讀取數(shù)據(jù)結(jié)構(gòu)中的各輸入值及動(dòng)畫進(jìn)度;最終值計(jì)算單元,用于根據(jù)各輸入值及動(dòng)畫進(jìn)度計(jì)算出當(dāng)前物體各屬性的最終值;渲染單元,用于利用圖形渲染 系統(tǒng)進(jìn)行動(dòng)畫渲染,以將動(dòng)畫繪制到屏幕上。
【文檔編號(hào)】G06T15/00GK103544729SQ201310437547
【公開日】2014年1月29日 申請(qǐng)日期:2013年9月24日 優(yōu)先權(quán)日:2013年9月24日
【發(fā)明者】張穎, 盧偉超 申請(qǐng)人:Tcl集團(tuán)股份有限公司