亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種可無限擴展動畫屬性的方法與流程

文檔序號:12598089閱讀:377來源:國知局
一種可無限擴展動畫屬性的方法與流程

本發(fā)明涉及計算機游戲開發(fā)領域,具體涉及一種在動畫系統(tǒng)中可無限擴展動畫屬性的方法。



背景技術:

現(xiàn)在市面上比較常見的游戲編輯器通用的動畫為骨骼動畫、關鍵幀動畫和序列幀動畫。骨骼動畫對以關節(jié)連接的骨骼制作關鍵幀來驅(qū)動皮膚完成動畫,優(yōu)點是可以角色動作更流暢自然,并且換膚方便。序列幀是在一定時序內(nèi)連續(xù)切換圖片,達到視覺上的連貫動作,優(yōu)點是制作簡單,但是明顯缺點為資源占用空間大,且較對性能消耗大。關鍵幀動畫主要針對位置、旋轉(zhuǎn)、縮放三個基本屬性的卡幀來完成對象的動作。比如目前比較流行的Spine、Unity等,可以在編輯器中用于制作動畫的屬性就只有位置、旋轉(zhuǎn)、縮放三個基本屬性,所有實現(xiàn)的效果有限,如果需要實現(xiàn)更加復雜的效果,例如空間撕裂或者角色穿墻等效果就不得不人工的編寫代碼來實現(xiàn)。

CocoStudio是一套基于cocos2d-x專業(yè)的永久免費的游戲開發(fā)工具集,幫助開發(fā)者快速創(chuàng)建游戲資源,將大部分繁瑣的游戲開發(fā)工作使用編輯器來快速制作,CocoStudio包含了游戲開發(fā)中核心的幾個游戲編輯器,UI編輯器、動畫編輯器、場景編輯器、數(shù)據(jù)編輯器,用于處理游戲中的動畫資源、UI界面、游戲場景、游戲數(shù)據(jù),針對于開發(fā)團隊中不同的職業(yè)進行深度設計,規(guī)范了整個開發(fā)流程,讓開發(fā)團隊中每個人各執(zhí)其職,發(fā)揮自己最大的作用。從而達到高效率,高質(zhì)量,低風險,低成本的效果。

其中的動畫編輯器是用于編輯游戲中使用的角色動畫、特效動畫、場景動畫等動態(tài)的游戲資源。主要使用人員是美術設計師,美術設計師可以將繪制好的圖片資源導入到動畫編輯器中,然后按照策劃設計來編輯各種動畫效果,并且在編輯器中演示編輯后的內(nèi)容。動畫編輯器支持關鍵幀動畫,序列幀動畫,骨骼動畫等多種動畫編輯方式。并支持碎圖導出,整圖導出等多種資源優(yōu)化方式。同時動畫編輯器支持對Flash,PSD,Plist資源的解析。

例如,中國專利文獻(公布號:CN102541567A)公開了一種2D手機游戲引擎及兼容手機操作系統(tǒng)的方法,該方法外部應用程序可以調(diào)用操作系統(tǒng)里的驅(qū)動服務或應用服務,使得應用程序和操作系統(tǒng)可以分開,操作系統(tǒng)可以兼容不同的應用程序,能解決手機游戲開發(fā)中的平臺移植過于繁重兩大問題,以實現(xiàn)跨平臺,簡化平臺移植工作。再如,中國專利文獻(公布號:CN104267963A)公開了一種跨平臺角色扮演網(wǎng)絡游戲客戶端引擎,包括游戲編輯器和游戲引擎,游戲編輯器用于通過采用所見既得的方式來動態(tài)編輯游戲數(shù)據(jù),對游戲中各個模塊進行可視化編輯,游戲引擎用于為建立編寫游戲所需的各種工具模塊,大大縮短網(wǎng)頁、手機游戲開發(fā)商開發(fā)同類游戲的開發(fā)周期。

目前的動畫編輯器中支持的動畫屬性很少 ,而且不可以進行擴展,這樣該編輯器可實現(xiàn)的動畫效果會很有限,很難制作出效果更為豐富的動畫。因此,為了解決現(xiàn)有技術中存在的問題,研究一種在動畫系統(tǒng)中可無限擴展動畫屬性的方法已經(jīng)成為一項重要任務。



技術實現(xiàn)要素:

本發(fā)明解決的技術問題是提供一種可無限擴展動畫屬性的動畫系統(tǒng)及方法,目的是通過設置對象的屬性來制作相應的屬性動畫,并以時間軸驅(qū)動屬性變化來完成對象的復雜動作和變換。

本發(fā)明的技術方案為:

為了解決上述技術問題,本發(fā)明提供了一種可無限擴展動畫屬性的方法,將可無限擴展動畫屬性的動畫系統(tǒng)集成到編輯器中,根據(jù)不同的對象持續(xù)擴展不同的屬性,在動畫編輯器中實現(xiàn)對象屬性的設置,根據(jù)對象屬性的變化同步生成相對應的幀保存在時間軸中,通過時間軸記錄對象的屬性變化,并將時間軸記錄的屬性變化單獨或任意組合來進行動畫,從而完成動畫屬性的擴展。

目前的動畫編輯器中支持的動畫屬性很少,大都局限于位移、旋轉(zhuǎn)、縮放這三種基本屬性,可以實現(xiàn)的效果會非常有限,如果需要實現(xiàn)一些復雜的效果,例如空間撕裂、穿墻等效果,美術人員和動畫師就不能通過編輯器實現(xiàn),只能交給開發(fā)人員另外編寫代碼完成,導致溝通成本、開發(fā)難度增大,不通過編輯器而通過代碼調(diào)試來實現(xiàn)這些細微的動畫效果的話,代碼調(diào)試比可視化編輯預覽所消耗的時間和精力大得多,所能調(diào)出來的最終效果也會有所差距。與現(xiàn)有技術相比,本發(fā)明根據(jù)不同的對象擴展不同的屬性,對象的變化都是通過改變其屬性或是其他對象屬性來實現(xiàn),并將這些屬性疊加,進而在編輯器中改變屬性記錄屬性變化在時間軸中,比如穿墻的效果就可以通過擴展混合結(jié)合位移,空間撕裂可以通過擴展斜切和燈光的一些特性實現(xiàn),這樣極大的提高了開發(fā)效率、減小了難度、節(jié)省了開發(fā)和溝通成本。

可無限擴展動畫屬性的動畫系統(tǒng)包括可設置屬性的對象和記錄屬性變化的時間軸兩個核心部分,對象可以是場景、角色、地圖、UI、特效粒子、精靈、光源等,可根據(jù)對象不同擴展不同的屬性,如燈光用光強弱、照射范圍做動畫,精靈可以用混合來做動畫,粒子可以用方向等做動畫。時間軸在一定時間差內(nèi)記錄對象的屬性變化,記錄的屬性變化可以單獨提出來進行動畫,同理也可以任意組合在一起進行動畫,例如將斜切和位移結(jié)合則能實現(xiàn)擠壓的效果,直接擴展重力做屬性可以代替位移旋轉(zhuǎn)實現(xiàn)更加真實的懸浮效果,通過在時間軸中改變對象的屬性,從而形成連續(xù)的動態(tài)影像。

進一步的,所述方法包括以下步驟:

步驟1、構(gòu)建一個擴展屬性的類作為基類;

步驟2、構(gòu)建一個幀的組,保存幀并完成跳幀;

步驟3、構(gòu)建一個幀的基類,通過幀啟用和幀作用這兩個方法完成對象屬性的設置;

步驟4、構(gòu)建時間軸,完成動畫系統(tǒng)無限擴展動畫屬性的基本功能;

步驟5、按需要在動畫系統(tǒng)中擴展對象的屬性;

步驟6、在動畫編輯器中完成擴展動畫屬性的同步預覽。

更進一步的,所述步驟2具體包括:

構(gòu)建一個幀的組,構(gòu)建的組用于保存一系列的同一個時間軸內(nèi)、同對象、同屬性的按索引排序的有序的幀,如果幀使用的是擴展屬性的相對屬性變化,則組還包括對象的初始屬性值;在幀的排序、遍歷過程中需要充分利用不同中編程語言的面向?qū)ο蟆⒍鄳B(tài)、排序、反射等方法最大化的達到簡便效果,由于對象的屬性之間有可能會產(chǎn)生相互影響的效果,所以在排序的時候需要對幀按屬性分組;

添加行為跳幀,跳幀中使用二分查找到當前索引和當前索引的組內(nèi)下一個關鍵幀,如果在當前索引存在關鍵幀,則直接調(diào)用幀的幀啟用方法;如果不存在關鍵幀,則調(diào)用幀作用方法。

更進一步的,所述步驟3具體包括:

構(gòu)建一個幀的基類,構(gòu)建的幀的基類包括動畫對象本身、對象的屬性變化值以及幀索引,所述對象的屬性變化值為相對屬性變化值或絕對屬性變化值,所述幀索引用于表達在時間軸中的位置關系;

按照時間順序遍歷所有的幀,通過幀啟用和幀作用這兩個方法完成對象屬性的設置;當時間進入在當前幀時調(diào)用幀啟用方法,設置對象的屬性,并在此時更新所保存的下一幀的屬性變化值;當時間處于當前幀到同一個組的下一幀的時間區(qū)間內(nèi)調(diào)用幀作用方法,使用當前索引、幀中的屬性和下一幀的屬性變化值計算對象屬性,并設置對象的屬性;

在動畫系統(tǒng)中,以時間驅(qū)動整個動畫系統(tǒng)的運行,按照時間順序遍歷所有的幀,在幀的內(nèi)部完成對象的屬性的設置,從而形成動畫。

優(yōu)選的,當調(diào)用幀作用方法時,還可以在幀中添加時間曲線的計算,用于幀作用時取屬性變化的百分比。

更進一步的,所述步驟4具體包括:

構(gòu)建時間軸,構(gòu)建的時間軸包括一系列的組,根據(jù)擴展的屬性定義時間軸內(nèi)組的順序,在時間軸內(nèi)部完成時間到幀索引的轉(zhuǎn)換;

添加行為,添加行為主要包括動畫需要的播放、停止、跳幀、切片行為,在跳幀和播放時,使用轉(zhuǎn)換后的幀索引遍歷所有的組,再以組進行跳幀;

每完成一次時間的轉(zhuǎn)換,遍歷所有的組,渲染一次,從而完成動畫系統(tǒng)無限擴展動畫屬性的基本功能;然而余下可選的實現(xiàn)一些動畫的功能,例如反轉(zhuǎn)、動畫混合等。

更進一步的,所述步驟5具體包括:

按需要在動畫系統(tǒng)中擴展對象的屬性,對象擴展的每一種屬性的類型都有對應的幀的基類,如果沒有,則繼承幀的基類對應擴展,重新通過幀啟用和幀作用這兩個方法完成對象屬性的設置。

更進一步的,所述步驟6具體包括:

將動畫系統(tǒng)集成到編輯器中,在動畫編輯器中開啟自動記錄幀,通過可視化操作設置對象屬性,在渲染區(qū)或?qū)傩詤^(qū)做不同對象相對應的屬性的修改;

在設置對象屬性的操作過程中,根據(jù)對象屬性更改的相對變換或絕對變換信息同步生成相對應的組和幀添加保存到時間軸中,并在動畫編輯器渲染區(qū)同步步驟4中的渲染,從而完成擴展動畫屬性的同步預覽;

擴展的屬性變化最好是可視化的,才能在動畫效果的體現(xiàn)處理;當然屬性的變化不可見的也可以作為動畫中的擴展屬性,例如事件幀,也可以將其放在時間軸中的某一個點上,當動畫運行在此處時,觸發(fā)用戶自定義的事件;對象擴展的每一種屬性的類型都在動畫系統(tǒng)中有對應的幀的基類,如果沒有,則繼承幀的基類對應擴展即可,幀的基類保存幀在時間軸中的位置信息、對象本身和對象擴展屬性的相對變化或絕對變化信息;在編輯器中開啟自動記錄幀后,在渲染區(qū)或?qū)傩詤^(qū)做對應屬性的修改,就會根據(jù)屬性更改的相對變換或絕對變換信息生成相對應的幀保存在時間軸中;在編輯器中,幀記錄擴展屬性的相對屬性變化比絕對變化在用戶體驗上會更好。

優(yōu)選的,所述在時間軸內(nèi)部完成時間到幀索引的轉(zhuǎn)換過程中還可以添加時間縮放的計算,用作動畫播放的變速處理。

本發(fā)明的技術效果為:

本發(fā)明提供了一種可無限擴展動畫屬性的方法,通過繼承幀的基類按需要持續(xù)擴展屬性,降低了開發(fā)門檻;擴展屬性后增加了動畫的效果展現(xiàn)種類,屬性間的結(jié)合功能又進一步增加了動畫效果的展現(xiàn)種類,因此整體上增加了動畫效果,給開發(fā)人員提供了更多的效果選擇,方便開發(fā)人員制作出畫面更加豐富的動畫;此外,本方法擴展的每一個屬性也可以單獨提出來進行動畫,使得動畫編輯器可以支持單屬性動畫,方便可開發(fā)人員查看動畫的效果,以便于更好的制作動畫,同時也可以組合不同的動畫屬性完成一些復雜特殊的動畫效果,減少了美術、動畫師和開發(fā)的反復協(xié)調(diào)工作,使動畫師可以更完美的設計和實現(xiàn)想要的結(jié)果,降低了溝通、開發(fā)成本。

附圖說明

圖1為本發(fā)明可無限擴展動畫屬性的方法流程圖。

圖2為本發(fā)明使用高級語言無限擴展動畫屬性的方法流程圖。

具體實施方式

下面結(jié)合附圖說明本發(fā)明的具體實施方式:

實施例1:

如圖1所示,本發(fā)明提供了一種可無限擴展動畫屬性的方法,將可無限擴展動畫屬性的動畫系統(tǒng)集成到編輯器中,根據(jù)不同的對象持續(xù)擴展不同的屬性,在動畫編輯器中實現(xiàn)對象屬性的設置,根據(jù)對象屬性的變化同步生成相對應的幀保存在時間軸中,通過時間軸記錄對象的屬性變化,并將時間軸記錄的屬性變化單獨或任意組合來進行動畫,從而完成動畫屬性的擴展。本實施例是在cocos2d-x中實現(xiàn)無限擴展動畫屬性的。

所述無限擴展動畫屬性的方法包括以下步驟:

步驟1、構(gòu)建一個擴展屬性的類作為基類,使用Node作為動畫系統(tǒng)中擴展動畫屬性的基類;

步驟2、構(gòu)建一個幀的組,保存幀并完成跳幀;

設置Timeline,構(gòu)建的組用于保存一系列的同一個時間軸內(nèi)、同對象、同屬性的按索引排序的有序的幀,如果幀使用的是擴展屬性的相對屬性變化,則組還包括對象的初始屬性值;

添加行為跳幀,跳幀中使用二分查找到當前索引和當前索引的組內(nèi)下一個關鍵幀,如果在當前索引存在關鍵幀,則直接調(diào)用幀的幀啟用方法;如果不存在關鍵幀,則調(diào)用幀作用方法;

步驟3、構(gòu)建一個幀的基類,通過幀啟用和幀作用這兩個方法完成對象屬性的設置;

構(gòu)建Frame作為基類幀,構(gòu)建的幀的基類包括動畫對象本身、對象的屬性變化值以及幀索引,所述對象的屬性變化值為相對屬性變化值或絕對屬性變化值,所述幀索引用于表達在時間軸中的位置關系;

按照時間順序遍歷所有的幀,通過幀啟用和幀作用這兩個方法完成對象屬性的設置;當時間進入在當前幀時調(diào)用幀啟用方法,設置對象的屬性,并在此時更新所保存的下一幀的屬性變化值;當時間處于當前幀到同一個組的下一幀的時間區(qū)間內(nèi)調(diào)用幀作用方法,使用當前索引、幀中的屬性和下一幀的屬性變化值計算對象屬性,并設置對象的屬性;當調(diào)用幀作用方法時,還可以在幀中添加時間曲線的計算,用于幀作用時取屬性變化的百分比;

步驟4、構(gòu)建時間軸,完成動畫系統(tǒng)無限擴展動畫屬性的基本功能;

構(gòu)建Action Timeline作為時間軸,構(gòu)建的時間軸包括一系列的組,根據(jù)擴展的屬性定義時間軸內(nèi)組的順序,在時間軸內(nèi)部完成時間到幀索引的轉(zhuǎn)換;所述在時間軸內(nèi)部完成時間到幀索引的轉(zhuǎn)換過程中還可以添加時間縮放的計算,用作動畫播放的變速處理;

添加行為,添加行為主要包括動畫需要的播放、停止、跳幀、切片等行為,切片則是將動畫按時間分為不同的時間片段,在跳幀和播放時,使用轉(zhuǎn)換后的幀索引遍歷所有的組,再以組進行跳幀;對于組的排序以及遍歷方法都需要充分運用不同編輯語言的面向?qū)ο蟆⒍鄳B(tài)、排序、反射等方法最大化的達到簡便效果,由于部分屬性的設置產(chǎn)生的效果會相互影響,所以需要保證時間軸內(nèi)的組有序,根據(jù)擴展出來的屬性定義時間軸內(nèi)組的順序,需要對幀按屬性分組;

每完成一次時間的轉(zhuǎn)換,遍歷所有的組,渲染一次,從而完成動畫系統(tǒng)無限擴展動畫屬性的基本功能;余下可選的實現(xiàn)一些動畫的功能,例如反轉(zhuǎn)、動畫混合等;

步驟5、按需要在動畫系統(tǒng)中擴展對象的屬性;對象擴展的每一種屬性的類型都有對應的幀的基類,如果沒有,則繼承幀的基類對應擴展,重新通過幀啟用和幀作用這兩個方法完成對象屬性的設置,例如擴展顏色混合BlendFuncFrame等作為擴展屬性;

步驟6、在動畫編輯器中完成擴展動畫屬性的同步預覽;

將動畫系統(tǒng)集成到編輯器中,在cocos studio中的動畫編輯器中開啟自動記錄幀,通過可視化操作設置對象屬性,在渲染區(qū)或?qū)傩詤^(qū)做不同對象相對應的屬性的修改;

在設置對象屬性的操作過程中,根據(jù)對象屬性更改的相對變換或絕對變換信息同步生成相對應的組和幀添加保存到時間軸中,并在動畫編輯器渲染區(qū)同步步驟4中的渲染,從而完成擴展動畫屬性的同步預覽。

實施例2:

如圖2所示,在擴展動畫屬性的開發(fā)過程中,如果開發(fā)語言不同,則無限擴展動畫屬性的方法也會存在不同;例如在使用C#、Java、ruby等高級語言時,所述無限擴展動畫屬性的方法包括以下步驟:

步驟1、構(gòu)建一個幀的組,保存幀并完成跳幀;

設置 Timeline,構(gòu)建的組用于保存一系列的同一個時間軸內(nèi)、同對象、同屬性的按索引排序的有序的幀,如果幀使用的是擴展屬性的相對屬性變化,則組還包括對象的初始屬性值;

添加行為跳幀,跳幀中使用二分查找到當前索引和當前索引的組內(nèi)下一個關鍵幀,如果在當前索引存在關鍵幀,則直接調(diào)用幀的幀啟用方法;如果不存在關鍵幀,則調(diào)用幀作用方法;

步驟2、構(gòu)建一個幀的基類,通過幀啟用和幀作用這兩個方法完成對象屬性的設置;

構(gòu)建Frame作為基類幀,構(gòu)建的幀的基類包括動畫對象本身、對象的屬性變化值以及幀索引,所述對象的屬性變化值為相對屬性變化值或絕對屬性變化值,所述幀索引用于表達在時間軸中的位置關系;

按照時間順序遍歷所有的幀,通過幀啟用和幀作用這兩個方法完成對象屬性的設置;當時間進入在當前幀時調(diào)用幀啟用方法,設置對象的屬性,并在此時更新所保存的下一幀的屬性變化值;當時間處于當前幀到同一個組的下一幀的時間區(qū)間內(nèi)調(diào)用幀作用方法,使用當前索引、幀中的屬性和下一幀的屬性變化值計算對象屬性,并設置對象的屬性;設置屬性時以object這個所有對象的基類通過反射來實現(xiàn),這樣可以使動畫擴展的整個架構(gòu)更簡單,主要體現(xiàn)在動畫編輯器中,在cocos studio中直接使用C#的PropertyInfo來設置和保存屬性,在擴展屬性時更加方便;當調(diào)用幀作用方法時,還可以在幀中添加時間曲線的計算,用于幀作用時取屬性變化的百分比;

步驟3、構(gòu)建時間軸,完成動畫系統(tǒng)無限擴展動畫屬性的基本功能;

構(gòu)建Action Timeline作為時間軸,構(gòu)建的時間軸包括一系列的組,根據(jù)擴展的屬性定義時間軸內(nèi)組的順序,在時間軸內(nèi)部完成時間到幀索引的轉(zhuǎn)換;所述在時間軸內(nèi)部完成時間到幀索引的轉(zhuǎn)換過程中還可以添加時間縮放的計算,用作動畫播放的變速處理;

添加行為,添加行為主要包括動畫需要的播放、停止、跳幀、切片等行為,切片則是將動畫按時間分為不同的時間片段,在跳幀和播放時,使用轉(zhuǎn)換后的幀索引遍歷所有的組,再以組進行跳幀;對于組的排序以及遍歷方法都需要充分運用不同編輯語言的面向?qū)ο蟆⒍鄳B(tài)、排序、反射等方法最大化的達到簡便效果,由于部分屬性的設置產(chǎn)生的效果會相互影響,所以需要保證時間軸內(nèi)的組有序,根據(jù)擴展出來的屬性定義時間軸內(nèi)組的順序,需要對幀按屬性分組;

每完成一次時間的轉(zhuǎn)換,遍歷所有的組,渲染一次,從而完成動畫系統(tǒng)無限擴展動畫屬性的基本功能;余下可選的實現(xiàn)一些動畫的功能,例如反轉(zhuǎn)、動畫混合等;

步驟4、按需要在動畫系統(tǒng)中擴展對象的屬性;對象擴展的每一種屬性的類型都有對應的幀的基類,如果沒有,則繼承幀的基類對應擴展,重新通過幀啟用和幀作用這兩個方法完成對象屬性的設置,例如擴展顏色混合BlendFuncFrame等作為擴展屬性;

步驟5、在動畫編輯器中完成擴展動畫屬性的同步預覽;

將動畫系統(tǒng)集成到編輯器中,在cocos studio中的動畫編輯器中開啟自動記錄幀,通過可視化操作設置對象屬性,在渲染區(qū)或?qū)傩詤^(qū)做不同對象相對應的屬性的修改;

在設置對象屬性的操作過程中,根據(jù)對象屬性更改的相對變換或絕對變換信息同步生成相對應的組和幀添加保存到時間軸中,并在動畫編輯器渲染區(qū)同步步驟3中的渲染,從而完成擴展動畫屬性的同步預覽。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1