實習小白::(轉) 骨骼動畫詳解-Cocos Studio


 

骨骼動畫詳解-Cocos Studio

在之前的骨骼動畫詳解-Spine一文中,我們已經介紹過什么是骨骼動畫,骨骼動畫的優缺點,以及骨骼動畫編輯器-Spine的使用。接下來本文將結合另一個可編輯骨骼動畫的編輯器(Cocos Studio)介紹骨骼動畫的使用。

Cocos Studio介紹

Cocos Studio是一套基於Cocos2d-x的免費游戲開發工具集,它能幫助開發者快速創建游戲資源,將大部分繁瑣的游戲開發工作使用編輯器來快速制作,進一步幫助游戲開發者減短開發周期、提高開發效率。

Cocos Studio本身不光只是針對骨骼動畫的編輯而設計的,它還提供了UI、場景和數據等信息的編輯工作。就當前的Cocos Studio而言,主要分兩種,一種是Win版本的Cocos Studio,另一個則是剛剛發布不久的Mac版 Cocos Studio v1.0 alpha1。前者由UI編輯器、動畫編輯器、場景編輯器和數據編輯器四部分組成,分別用於處理游戲中的UI界面、動畫資源、游戲場景和游戲數據。而 Mac版的Cocos Studio整合了原有的UI和動畫編輯器,使小伙伴們的使用更加自由。但由於Mac版的編輯器現在還不穩定,所以本文將介紹Win版本的Cocos Studio。

Win版Cocos Studio的動畫編輯器支持關鍵幀動畫,序列幀動畫,骨骼動畫等多種動畫編輯方式。並且它還支持碎圖導出,整圖導出等多種資源優化方式。同時動畫編輯器支持對Flash,PSD,Plist資源的解析。

創建骨骼動畫

首先,打開Cocos Studio 的 Animation Editor(動畫編輯器),新建一個動畫工程。
同Spine一樣,Cocos Studio動畫編輯器也有兩種模式,但這里是形體模式和動畫模式。用戶需要在形體模式下組裝角色部件,並為其綁定骨骼;並在動畫模式下調整骨骼相應屬性生成骨骼動畫。

下面我們先來對編輯器整體做一個認識,見下圖。

形體模式下:

動畫模式下:

上面兩圖中,標記為1的部分是渲染區域,也就是我們的畫布,它是資源布局的主編輯區,在該區域可以對各對象進行移動,縮放,旋轉的操作,所有主要的操作結果都會在這個區域中顯示完成。

第2部分是快捷菜單欄,該窗口中有一些常用操作,其中包括模式的切換,創建骨骼,縮放,旋轉等等一系列操作。

第3部分是資源欄,本項目中使用的所有資源都必須導入到該面板才可以使用。

第4部分是預覽區域,當選中資源欄的資源時,會在該區域中顯示,達到預覽的作用。

第5部分是對象結構欄,編輯器將根據對象結構欄中對象的順序依次渲染對象,在最下層的對象將先於渲染,也就是說它可能會被后渲染的對象遮蓋。另外,對象的順序在該欄中是可調的。

第6部分是屬性欄,當選中一個對象時,屬性窗口會顯示出該對象的所有屬性。修改任意屬性都可以立即改變該節點在渲染區域的狀態。

第7部分是動作列表欄,一個動畫工程是允許有多個動作的,比如:行走、跳躍、奔跑等等。所以在該欄中用戶可以創建多個動作,並在多個動作中切換。

第8部分是動畫幀面板,該面板將顯示畫布中所有對象的序列幀,用戶可通過添加幀和改變對象屬性創建動畫序列幀。

對編輯器有了大致的了解后,現在就可以開始編輯動畫了。

  1. 在形體模式下,選擇 文件->導入資源 或在資源欄中右鍵選擇需要導入的資源文件,也可直接將資源拷入工程的Resources文件夾目錄下,然后刷新資源面板。
  2. 將資源拖到渲染區,並擺好位置。
  3. 開始創建骨骼:選中快捷菜單欄中創建骨骼的按鈕,在角色身體的各部位單擊左鍵並拖動鼠標畫出骨骼。
  4. 將資源素材與骨骼綁定,右擊渲染區的資源素材,選擇“綁定到骨骼”,然后選擇骨骼(選擇的骨骼會高亮顯示),就可以實現骨骼的綁定。
  5. 當綁定好所有素材和骨骼后,右擊骨骼選擇“綁定父關系”,再選擇該骨骼的父骨骼(選擇的骨骼同樣會高亮顯示),這樣依次根據身體部位的“父子”層級關系設定好。
  6. 切換到動畫模式,選中相應控件,移動鼠標到動畫幀一欄的某幀處,然后,改變被選擇控件的某個屬性,如旋轉它,這樣就能實現流暢的補間動畫。
  7. 導出項目為程序可用的資源:導出的資源在工程目錄的Export/..文件夾下,一共有三個資源文件,分別是 .ExportJson,.plist 和 .png文件。ExportJson文件中記錄了骨骼動畫的描述信息,plist文件則是記錄碎圖整合成大圖后圖片的位置描述信息,png文件是整合的大 圖。

在 Cocos2d-x 中加載動畫資源

前面我們花了很多精力來創建骨骼動畫,然而要將它運行在實際的項目中卻非常的簡單,只需幾行代碼,當然在這之前我們需要將動畫編輯器導出的資源復制到項目Resource目錄中去。

同樣地,在Cocos2d-x程序中使用Cocos Studio動畫首先需要包含相關頭文件,如下:

#include "cocostudio/CocoStudio.h"
using namespace cocostudio;

創建一個骨骼動畫對象,需要將動畫文件和資源文件載入到程序。這里我們通過ArmatureManager動畫數據管理器來加載動畫。 ArmatureManager本身是一個單例,它管理整個場景中的Armature。而Armature則封裝了我們播放動畫需要的 Animation。由此可見,這是一個三層締結的層次結構。其中ArmatureManager最大,然后是Armature,最后是 Animation。

說完了原理,下面來看看代碼。修改init函數, 在return前加入如下代碼:

ArmatureDataManager::getInstance()->addArmatureFileInfo("NewAnimation0.png" , "NewAnimation0.plist" , "NewAnimation.ExportJson");
Armature *armature = Armature::create( "NewAnimation");
armature->setPosition(Point(visibleSize.width * 0.5, visibleSize.height * 0.5));
// 播放動畫
armature->getAnimation()->play("walk");
this->addChild(armature);

效果圖:

我們在動畫編輯器中編輯的動作就是Animation,一個動畫工程中可以編輯多個動作,也就是動作列表中可創建多個動作。如下圖所示:

所以播放動畫需要根據具體地需要來播放,這樣才能知道用戶要播放的動畫是哪一個。可以像上面代碼一樣指定動畫名來播放動畫,也可以通過指定動作編號來播放動畫,如下:

armature->getAnimation()->playWithIndex(0);

播放連續地動畫可通過以下函數實現:

void playWithNames(const std::vector<std::string>& movementNames, int durationTo = -1, bool loop = true);
void playWithIndexes(const std::vector<int>& movementIndexes, int durationTo = -1, bool loop = true);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM