一種生成循環(huán)動畫的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種動畫處理方法,尤其涉及一種生成循環(huán)動畫的方法。
【背景技術(shù)】
[0002] 在游戲動畫領(lǐng)域中,通常是通過插件調(diào)整頂點動畫或者通過輔助軟件調(diào)整序列幀 動畫生成循環(huán)動畫的方法。對于頂點動畫,使用抽幀和修復技術(shù)讓動畫循環(huán),一般將動畫的 起始幀復制到動畫的結(jié)束位置,對動畫結(jié)束之前的最后幾幀進行修改。這種方法需要手動 調(diào)整單幀的動畫細節(jié),讓動畫播放起來是循環(huán)的,這樣的制作方式效率較低。而對于序列幀 動畫,使用半透明混合技術(shù)讓動畫循環(huán),一般將三維動畫輸出為二維動畫序列幀,在生成序 列幀后,通過半透明混合,得到新的動畫。這種方法在生成動畫后進行后期處理,將動畫正 序和倒序進行淡入和淡出混合,得到的混合效果較差。
[0003] 原有的技術(shù)都會破壞原始動畫來得到新的動畫。
[0004] 因此,需要一種技術(shù),可以在不破壞原始動畫的基礎(chǔ)上,獲得循環(huán)動畫。
【發(fā)明內(nèi)容】
[0005] 為了克服現(xiàn)有技術(shù)中的上述缺陷,本發(fā)明提出一種生成循環(huán)動畫的方法,該方法 包括步驟: 11) 模擬得到一段動畫D,該動畫的單位數(shù)量為N ; 12) 從動畫D中取兩段時間長度相同的動畫,第一段動畫和第二段動畫;其中第一段動 畫的結(jié)尾幀必須與第二段動畫的起始幀相同; 13) 為第一段動畫設(shè)置權(quán)重W,為第二段動畫設(shè)置權(quán)重W',其中W和W'分別為數(shù)組,數(shù) 組長度為N,其中數(shù)組中的元素對應(yīng)動畫中的每個單位的權(quán)重值;每個單位的權(quán)重值在第 一段動畫的起始幀均為〇,在結(jié)尾幀均為1 ;每個單位的權(quán)重值在第二段動畫的起始幀均為 1,在結(jié)尾幀均為0 ;在第一段動畫和第二段動畫對應(yīng)的其他中間幀,權(quán)重不受限制,根據(jù)生 成循環(huán)動畫的整體效果進行設(shè)計; 14) 第一段動畫和第二段動畫按照每幀對應(yīng)的權(quán)重值進行融合; 15) 去掉最后一中貞。
[0006] 這里需要說明一點:動畫的單位,是指動畫可劃分的最小單元。以頂點動畫為例, 每個動畫單位是指該頂點動畫的每個頂點,而對于序列巾貞動畫,每個動畫單元則表示該序 列幀動畫的每個像素點。因此,單位數(shù)量是指對于每一幀,單位的數(shù)量;而時間的長度則表 示幀數(shù)或其等同概念。
[0007] 進一步,所述動畫D的長度為Y,其中Y蘭2X+1幀,X為欲生成的循環(huán)動畫的長度; 從動畫D中取從第Z幀開始,到第Z+X幀的動畫片段,得到第一段動畫,其中Z f Y-2X ;從 動畫D中取第Z+X幀開始,到第Z+2X的動畫片段,得到第二段動畫。
[0008] 進一步,所述動畫D可以為兩種類型,頂點動畫和序列幀動畫,兩種類型的動畫融 合方法的原理相同。其中,頂點動畫的融合方法是對每個頂點在第一段動畫的位置和第二 段動畫的位置進行融合;序列幀動畫的融合方法是對每個像素在第一段動畫的顏色和第二 段動畫的顏色進行融合。
[0009] 進一步地,所述權(quán)重W和W'的變化過程可以是線性的,也可以是其他合理形式的 動態(tài)變化。由于W和W'分別為數(shù)組,因此這里的線性變化表示W(wǎng)和W'中的每個元素隨著 動畫的幀數(shù)而線性變化。
[0010] 在第一段動畫和第二段動畫的起始幀和結(jié)尾幀,每個單位的權(quán)重都為〇或1 ;在第 一段動畫和第二段動畫的每個中間幀中,每個單位的權(quán)重可以相同也可以不同。
[0011] 優(yōu)選地,步驟13)進一步包括: 61) 正整數(shù)I表示每個單位的索引號,其中1蘭I蘭N;數(shù)組W和W'的長度為N; 62) G和G'為數(shù)組,數(shù)組中的元素對應(yīng)每個單位的權(quán)重在每一幀的計算函數(shù),數(shù)組的長 度為N; 其中,第一段動畫中第I個單位的權(quán)重值由W[I]記錄,第二段動畫中第I個單位的權(quán) 重值由W' [I]記錄;W[I]從0到1的變化過程使用函數(shù)G[I]計算得到;則第I個單位在第 1幀的權(quán)重為G[I]⑴=0,第M幀的權(quán)重為G[I] (M),第X幀的權(quán)重為G[I]⑴=1 ;W' [I]從 0到1的變化過程使用函數(shù)G' [I]計算得到;則第I個單位在第1幀的權(quán)重為G' [I] (I)=I, 第M幀的權(quán)重為G' [I] (M),第X幀的權(quán)重為G' [I]⑴=0。
[0012] 本發(fā)明的有益效果在于,可以在游戲中實現(xiàn)更加逼真的效果,提高游戲的真實感。 本發(fā)明將頂點動畫和序列幀動畫生成循環(huán)動畫并引入到游戲中;優(yōu)點在于在生成動畫時, 可以使用已有的各種物理學運算技術(shù),在生成序列幀動畫時,可以使用已有的各種流體運 算及渲染技術(shù);以動態(tài)的融合過程來生成循環(huán)動畫,可以使用已有的各種融合算法來設(shè)計 權(quán)重計算函數(shù);生成的循環(huán)動畫不破壞原始動畫的效果。
【附圖說明】
[0013] 下面結(jié)合附圖,對本發(fā)明的【具體實施方式】進行更詳細的說明,其中 圖1所示為根據(jù)本發(fā)明一實施例,生成每幀所有的單位的權(quán)重一致的循環(huán)動畫流程 圖; 圖2所示為根據(jù)本發(fā)明一實施例,生成每幀所有的單位的權(quán)重不一致的循環(huán)動畫流程 圖。
【具體實施方式】
[0014] 實施例1 : 如圖1所示,該實施例目的在于獲得一段長度為X幀的循環(huán)動畫。首先,模擬生成一段 動畫D,其中動畫的長度為Y,其中Y 3 2X+1幀;然后,從動畫D中取從第Z幀開始,到第Z+X 幀的動畫片段,得到第一段動畫,長度為X+1 ;從動畫D中取第Z+X幀開始,到第Z+2X的動 畫片段,得到第二段動畫,長度為X+1。
[0015] 然后,為第一段動畫設(shè)置權(quán)重W,為第二段動畫設(shè)置權(quán)重W' ,第一段動畫和第二段 動畫的第M幀的權(quán)重值W和W'分別由F(M)和F' (M)計算得到,其中1蘭M蘭X+1。例如, 在一特定實施例中,Y=3〇〇, X=l〇〇, Z=90, F (M) = (M-I) /100, F' (M) = (101-M) /100 ;則第一段動 畫從90到開始,到190結(jié)束,長度為101 ;第二段動畫從190開始,到290結(jié)束,長度為101 ; 第一段動畫的第1幀的權(quán)重值為0,第M幀的權(quán)重值為(M-I)/100,第101幀的權(quán)重為I ;第 二段動畫的第1幀的權(quán)重值為1,第M幀的權(quán)重值為(101-M)/100,第101幀的權(quán)重值為0。
[0016] 然后,第一段動畫和第二段動畫按照每幀對應(yīng)的權(quán)重值進行融合,對于頂點動畫, 設(shè)第一段動畫第M幀的某頂點位置為[xl,yl,Zl],該頂點在第二段動畫第M幀的位置為 [x2, y2, z2],則該頂點按照對應(yīng)的權(quán)重值進行融合得到的位置為[xl* (M-I)/100+X2* (101 -Μ)/100, yl*(M-I)/100+y2*(101-M)/100, zl*(M-I)/100+z2*(101-M)/100];對于序列幀動 畫,設(shè)第一段動畫第M幀的某個像素顏色為[rl,gl,bl],該像素在第二段動畫第M幀的顏色 為[r2, g2,b2],則該像素按照對應(yīng)的權(quán)重值進行融合得到的位置為[rl*(M-l)/100+r2*(l 01-M) /100, gl* (M-I) /100+g2* (101-M) /100, bl* (M-I) /100+b2* (101-M) /100]。計算完成后 第1幀和第101幀的結(jié)果相同,去掉最后一幀,得到長度為100幀的循環(huán)動畫,這樣處理的 目的在于保證動畫連續(xù)的視覺效果。
[0017] 在本實施例中,對于第一段動畫/第二段動畫的每一幀,各個單位的權(quán)重值都是 一致的。
[0018] 實施例2: 如圖2所示,該實施例目的在于獲得一段長度為X幀的旗幟動畫。首先,使用物理學 布料運算模擬生成一段頂點動畫D,其中動畫的長度為Y,其中Y 3 2X+1幀;然后,從動畫D 中取從第Z幀開始,到第Z+X幀的動畫片段,得到第一段動畫,長度為X+1 ;從動畫D中取第 Z+X幀開始,到第Z+2X的動畫片段,得到第二段動畫,長度為X+1。然后,設(shè)模型的頂點列數(shù) 為C,頂點所在的列數(shù)索引為I,其中1 = I = C。然后為第一段動畫的第I列頂點設(shè)置權(quán) 重W[I],為第二段動畫的第I列頂點設(shè)置權(quán)重W' [I],W和W'分別為第一段動畫和第二段動 畫的頂點權(quán)重,第M幀的權(quán)重值W[I]和W' [I]分別由G [I] (M)和G' [I] (M)計算得到,G [I]
【主權(quán)項】
1. 一種生成循環(huán)動畫的方法,其特征在于,方法包括步驟: 11) 模擬得到一段動畫D,該動畫的單位數(shù)量為N ; 12) 從動畫D中取兩段時間長度相同的動畫,第一段動畫和第二段動畫;其中第一段動 畫的結(jié)尾峽與第二段動畫的起始峽相同; 13) 為第一段動畫設(shè)置權(quán)重W,為第二段動畫設(shè)置權(quán)重r,其中W和r分別為數(shù)組,數(shù) 組長度為N,其中數(shù)組中的元素對應(yīng)動畫中的每個單位的權(quán)重值;每個單位的權(quán)重值在第 一段動畫的起始峽均為0,在結(jié)尾峽均為1 ;每個單位的權(quán)重值在第二段動畫的起始峽均為 1,在結(jié)尾峽均為0 ; 14) 第一段動畫和第二段動畫按照每峽對應(yīng)的權(quán)重值進行融合; 15) 去掉最后一中貞。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述動畫D的長度為Y,其中Y ^ 2X+1 峽,X為欲生成的循環(huán)動畫的長度;從動畫D中取從第Z峽開始,到第Z巧峽的動畫片段,得 到第一段動畫,其中Z ^ Y-2X ;從動畫D中取第Z巧峽開始,到第Z+2X的動畫片段,得到第 二段動畫。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,模擬得到的動畫D有兩種類型,頂點動畫 和序列峽動畫;兩種類型的動畫融合方法的原理相同,即分別對頂點動畫的頂點位置和序 列中貞動畫的像素顏色進行融合。
4. 根據(jù)權(quán)利要求1或3所述的方法,其特征在于,在第一段動畫和第二段動畫的融合過 程中,動畫的權(quán)重W和r的變化過程是線性的。
5. 根據(jù)權(quán)利要求1所述的方法,其特征在于,在第一段動畫和第二段動畫的每個中間 峽中,每個單位的權(quán)重值相同或者不同。
6. 根據(jù)權(quán)利要求1或5所述的方法,其特征在于,步驟13)包括: 61)正整數(shù)I表示每個單位的索引號,其中1蘭I蘭N;數(shù)組W和r的長度為N; 62乂和G'為數(shù)組,數(shù)組中的元素對應(yīng)每個單位的權(quán)重在每一峽的計算函數(shù),數(shù)組的長 度為N; 其中,第一段動畫中第I個單位的權(quán)重值由W[I]記錄,第二段動畫中第I個單位的權(quán) 重值由W' [I]記錄;W[I]從0到1的變化過程使用函數(shù)G[I]計算得到;則第I個單位在第 1中貞的權(quán)重為G[I] (1)=〇,第M巾貞的權(quán)重為G[I] (M),第X巾貞的權(quán)重為G[I]佩=1 ;W' [I]從 0到1的變化過程使用函數(shù)G' [I]計算得到;則第I個單位在第1峽的權(quán)重為G' [I] (1)=1, 第M峽的權(quán)重為G'山(M),第X峽的權(quán)重為G'山佩=0。
【專利摘要】本發(fā)明涉及一種生成循環(huán)動畫的方法,方法包括模擬生成一段動畫D;從動畫D中取兩段長度相同的第一段動畫、第二段動畫;其中第一段動畫的結(jié)尾幀必須與第二段動畫的起始幀相同;為第一段動畫設(shè)置權(quán)重W;為第二段動畫設(shè)置權(quán)重W`,W和W`使用不同的計算方式得到;第一段動畫和第二段動畫按照每幀對應(yīng)的權(quán)重值進行融合;以及去掉最后一幀。本發(fā)明有益效果在于可以在游戲中實現(xiàn)更加逼真的效果,提高游戲的真實感。將物理學和流體的動畫效果引入到游戲中;優(yōu)點在于在生成動畫時,可以使用已有的各種物理學運算技術(shù),可以使用已有的各種流體運算技術(shù)和渲染技術(shù);可以使用已有的動態(tài)融合技術(shù)來生成循環(huán)動畫,不破壞原始動畫的效果。
【IPC分類】G06T13-00
【公開號】CN104599306
【申請?zhí)枴緾N201510008662
【發(fā)明人】侯一濤, 孟巖, 何文雅
【申請人】珠海金山網(wǎng)絡(luò)游戲科技有限公司, 成都西山居互動娛樂科技有限公司
【公開日】2015年5月6日
【申請日】2015年1月8日