モーリーのメモ

アプリ開発等(プログラミング、CG作成)、興味を持ったことを実践してまとめるブログです。

モーリーのメモ

ボーンを使って走る2Dアニメーションを作る!:DragonBones

【 今回やること! 】

  • DragonBonesを使って、2Dの走るアニメーションを作ります!
  • 作成したアニメーションをGIFファイルで出力します。
 
 素材の画像はInkscapeで描きました。ゲームっぽく2.5頭身キャラです。
    f:id:mmorley:20190806220650p:plain
 アニメーションにするためにパーツに分けています。
    f:id:mmorley:20190809134627p:plain:w400
 この作業は少し手間ですが、1コマずつ描くより少ない労力、データサイズでいろいろなモーションが作成出来ます。
 
 今回の作るアニメはこちらです。
 *gifです。画像をクリックすると動きます。
 
 それでは作成を開始します!

使用環境

 私が使用している環境です。

画像データを入手

 使用した画像データです。練習用に使って下さい。
 参考用に完成版のプロジェクトデータも同梱しています。

  1. 下記のURLを開く
    github.com
  2. 『Download』をクリック
    『Character.zip』がダウンロードされます。
  3. 『Character.zip』をダブルクリックして解凍
    『Character』内の『library』フォルダに画像データが入っています。

新規プロジェクトを作成

    『DragonBones』で作業

  1. 『File』→『New Project』をクリック
  2. 『Create Animation』をクリック
  3. 下図の設定で、『Finish』をクリック
    f:id:mmorley:20190807133243p:plain:w400
  4. 『Save Project』をクリック
    f:id:mmorley:20190807172731p:plain
    プロジェクト名とプロジェクトフォルダを決めるために、最初に保存します。
  5. プロジェクト名とフォルダ名を変更して、『Finish』をクリック
    f:id:mmorley:20190807173602p:plain:w400

画像のインポート

    『Library』パネルで作業

  1. 『Import assets...』をクリック
    f:id:mmorley:20190807201509p:plain
  2. 先程ダウンロードした『Character/library』フォルダ内の画像ファイルを全て選択し、『開く』をクリック
  3. 『Armature』→『library/』とツリーを展開する
    画像ファイルがインポートされていることを確認します。

画像の配置

 キャラクターのパーツを組み立てます。各画像の名前の先頭の番号(00_~、01_~、・・・)は重ねる順番です。『00_~』が一番下(奥)です。同じ番号の画像は切り替えて使う画像です。
 画像の重なる順番は『Draw Order』パネルで変更出来ます。

    『Library』パネルで作業

  1. 『00_all』を『Scene』パネルの『root』にドラッグ&ドロップ
    f:id:mmorley:20190817000644p:plain
    『00_all』はパーツの位置合わせに使います。

    『Scene』パネルで作業

  2. 下図の場所をクリック
    f:id:mmorley:20190808110020p:plain
    『00_all』が動かないように選択不可にします。

    『Library』パネルで作業

  3. 『01』から『02_hand_lower_l_1』まで順番に『描画エリア』に配置
    f:id:mmorley:20190817001236p:plain

    『Armature』パネルで作業

  4. 『02_hand_lower_l_1』を『02_hand_lower_l_0』にドラッグ&ドロップ
    f:id:mmorley:20190808112252p:plain
    画像が切り替えられるようになります。

    『Library』パネルで作業

  5. 『03』から『11』まで同様に配置
    f:id:mmorley:20190817001440p:plain
  6. 『12』番として『08_shoe』を配置
    f:id:mmorley:20190817001529p:plain
    靴の画像は左右同じです。

    『Armature』パネルで作業

  7. 『08_shoe_l1』をダブルクリックし、名前を『12_shoe_r』にして『OK』をクリック

    『Library』パネルで作業

  8. 『13』から同様に配置
    『18_hand_lower_r_0 〜 1』と『24_eye_0 〜 3』は、それぞれ『Scene』パネルで1つにまとめます。
    目は下まつ毛で位置合わせします。
    f:id:mmorley:20190808142813p:plain:w500

ボーンを作成

頭、体、髪

    『描画エリア』で作業

  1. 『Create Bone』をクリック
    f:id:mmorley:20190808152533p:plain
  2. 下図のようにボーンを配置し、『Scene』パネルで名前を変更する
    f:id:mmorley:20190808202923p:plain

    『Scene』パネルで作業

  3. ボーンと画像をドラッグ&ドロップして、下図のツリー構造にする
    *ツリーの階層が同じなら順番が違ってもOK。
    f:id:mmorley:20190808203116p:plain

肩、スカート

    『描画エリア』で作業

  1. 下図のようにボーンを配置し、『Scene』パネルで名前を変更する
    f:id:mmorley:20190809102513p:plain
  2. ボーンと画像をドラッグ&ドロップして、下図のツリー構造にする
    f:id:mmorley:20190814114906p:plain

両手、両足

    『描画エリア』で作業

  1. 下図のようにボーンを配置し、『Scene』パネルで名前を変更する
    *肘、膝の回転の中心(ボーンの始点)を『00_all』の関節の十字の交点の位置にします。
    f:id:mmorley:20190809175556p:plain
  2. 下図のようにボーンを配置し、『Scene』パネルで名前を変更する
    f:id:mmorley:20190809232315p:plain
  3. ボーンと画像をドラッグ&ドロップして、下図のツリー構造にする
    f:id:mmorley:20190814115722p:plain

メッシュを作成

 メッシュの作り方は、下記の記事の『メッシュを設定する』を参考にして下さい。

    『描画エリア』で作業

  1. 『15_body_upper』のメッシュを下図のように作成
    見えにくいのでボーンあり、なし
    f:id:mmorley:20190812102749p:plain:w200 f:id:mmorley:20190812102819p:plain:w200
  2. 『13_body_lower』のメッシュを下図のように作成
    f:id:mmorley:20190812114633p:plain:w200  f:id:mmorley:20190812114703p:plain:w200
  3. 『08_shoe_l』と『12_shoe_r』のメッシュを下図のように作成
    f:id:mmorley:20190813102213p:plain f:id:mmorley:20190813102240p:plain
  4. 『14_hair_0』のメッシュを下図のように作成
    f:id:mmorley:20190813123601p:plain:w200 f:id:mmorley:20190813123627p:plain:w200
  5. 『25_hair_3』のメッシュを下図のように作成
    f:id:mmorley:20190813215723p:plain:w200 f:id:mmorley:20190813215802p:plain:w200

IK Constraintとは?

 次に設定するIK Constraintについて説明します。
 IK Constraint(IK:Inverse Kinematics=逆運動学、Constraint:制約)は、ポーズの作成に使います。
 下図は、左右の足にそれぞれIK Constraintを設定しています。
 *gifです。画像をクリックすると動きます。

 『IKターゲット』の位置によって、足の上下のボーンの角度が変わります。ボーンの始点側を動かしても、ボーンの角度が変わります。
 ボーンがどちらに曲がる(回転する)かはプロパティで設定します。

IK Constraintを設定

右手

    『描画エリア』で作業

  1. 『hand_upper_r』と『hand_lower_r』を選択
    f:id:mmorley:20190814201219p:plain

    『Property』パネルで作業

  2. 『Create IK Constraint at End of the Bone』をクリック
    f:id:mmorley:20190814204514p:plain
    ボーンの色が変わり、『IK Target』が作成されます。
    f:id:mmorley:20190814212157p:plain

    『Scene』パネルで作業

  3. 『bone_ikTarget』をダブルクリックして、名前を『hand_r』に変更

左手

  1. 『hand_upper_l』と『hand_lower_l』に『IK Constraint』を設定
    f:id:mmorley:20190814211824p:plain
  2. 『bone_ikTarget』をダブルクリックして、名前を『hand_l』に変更

右足

  1. 『leg_upper_r』と『leg_lower_r』に『IK Constraint』を設定
    f:id:mmorley:20190814212331p:plain

    『Property』パネルで作業

  2. 『Positive』にチェックを入れる
    f:id:mmorley:20190814213524p:plain
    ボーンが曲がる(回転する)方向が逆になります。
  3. 『bone_ikTarget』をダブルクリックして、名前を『leg_r』に変更

左足

  1. 『leg_upper_l』と『leg_lower_l』に『IK Constraint』を設定
    f:id:mmorley:20190814214755p:plain
  2. 『Positive』にチェックを入れる

    『Scene』パネルで作業

  3. 『bone_ikTarget』をダブルクリックして、名前を『leg_l』に変更

右足と左足の位置の修正

 下絵の『00_all』と位置がズレたので、『leg_r』と『leg_l』の位置、『shoe_r_0』と『shoe_l_0』の角度を修正

    f:id:mmorley:20190814215347p:plain

走るアニメーションを作成

    『描画エリア』で作業

  1. 『Animation』をクリック
    f:id:mmorley:20190814215955p:plain

    『Animation』パネルで作業

  2. 『animation0』をダブルクリックして、名前を『run』に変更
    f:id:mmorley:20190814224856p:plain

    『描画エリア』で作業

  3. 何もないところを右クリックして、『Select All』をクリック
  4. どれでも良いので1つボーンを右クリック
    ボーンだけ選択されます。
  5. 『Move』と『Rotate』の『フラグ(旗のアイコン)』をそれぞれクリック
    f:id:mmorley:20190815102005p:plain
    『Timeline』パネルの1フレーム目にキーフレームが登録されます。
    『フラグ』の色が赤くなります。
  6. 何もないところを右クリックして、ボーンの選択を解除

    『Timeline』パネルで作業

  7. 『Auto Key』をクリックして、ON(赤色)にする
    f:id:mmorley:20190815105647p:plain
    描画エリアで、画像、ボーンに対して行った操作がキーフレームとして記録されるようになります。
  8. 『0』フレーム目をクリックして、現在のフレームにする(緑のラインを移動)

    『描画エリア』で作業

  9. ボーンとIKターゲットを動かして、下図のポーズを作る
    見えにくいのでボーンあり、なし
    f:id:mmorley:20190815223735p:plain:w200 f:id:mmorley:20190815223751p:plain:w200

    『Timeline』パネルで作業

  10. 『0』フレーム目のひし形の部分をクリックして、『Copy Key Frame』をクリック
    f:id:mmorley:20190815123552p:plain
  11. 『6』と『12』と『24』フレーム目で、『Paste Key Frame』をクリックしてペーストする
    f:id:mmorley:20190815142635p:plain
  12. 『6』フレーム目をクリックして、現在のフレームにする(緑のラインを移動)

    『描画エリア』で作業

  13. ボーンとIKターゲットを動かして、下図のポーズを作る
    f:id:mmorley:20190815223935p:plain:w200 f:id:mmorley:20190815223956p:plain:w200

    『Timeline』パネルで作業

  14. 『12』フレーム目をクリックして、現在のフレームにする(緑のラインを移動)

    『描画エリア』で作業

  15. ボーンとIKターゲットを動かして、下図のポーズを作る
    f:id:mmorley:20190815224139p:plain:w200 f:id:mmorley:20190815224204p:plain:w200

    『Timeline』パネルで作業

  16. 『6』フレーム目を『18』フレーム目にコピー&ペーストする
  17. 『18』フレーム目をクリックして、現在のフレームにする(緑のラインを移動)

    『描画エリア』で作業

  18. ボーンとIKターゲットを動かして、下図のポーズを作る
    f:id:mmorley:20190815224325p:plain:w200 f:id:mmorley:20190815224346p:plain:w200
     走るアニメーションが作成出来ました。
    f:id:mmorley:20190815173317p:plain
    『Play Foward(もしくはEnterキー)』で再生して、動きを確認して下さい。
    f:id:mmorley:20190815172621p:plain

まばたきを追加する

 走るアニメーションの再生時間は1秒です。1秒に1回だとまばたきが多いので、全体をコピーして、長さを2倍にします。

    『Timeline』パネルで作業

  1. 『6』、『12』、『18』、『24』フレーム目を選択(ひし形の行をドラッグで選択、またはcommandを押しながら選択)して、コピーする
  2. 『30』フレーム目にペーストする
    f:id:mmorley:20190815181124p:plain
  3. 『0』フレーム目をクリックして、現在のフレームにする(緑のラインを移動)

    『Scene』パネルで作業

  4. 『24_eye_0』をクリックして選択

    『Property』パネルで作業

  5. 『Display』の『フラグ(旗のアイコン)』をクリック
    f:id:mmorley:20190815182413p:plain

    『Timeline』パネルで作業

  6. 『2』フレーム目をクリックして、現在のフレームにする(緑のラインを移動)

    『Property』パネルで作業

  7. 『Display』を『24_eye_1』に変更
  8. 同様に下表のように変更
    フレームDisplay
    024_eye_0
    224_eye_1
    424_eye_2
    624_eye_3
    924_eye_2
    1124_eye_1
    1324_eye_0
    f:id:mmorley:20190815214300p:plain
    これでまばたきが追加されました。

不必要なキーフレームを削除

 キーの抜けがないように、全てのボーンをキーフレームに登録しましたが、使っていないキーは無駄なので削除します。

    『Timeline』パネルで作業

  1. 『Delete unnecessary keys』をクリック
    f:id:mmorley:20190815225547p:plain
    これで完成です。

GIFファイルに出力

 以前は、Cocos Creator用に出力しましたが、GIFファイルに出力することも出来ます。

    『描画エリア』で作業

  1. 『Armature』をクリック
    f:id:mmorley:20190815215450p:plain

    『Scene』パネルで作業

  2. 『00_all』を非表示にする
    f:id:mmorley:20190815215635p:plain
  3. 『Export Project』をクリック
    f:id:mmorley:20190815214927p:plain
  4. 『Image』をクリックし、下図のように設定して、『Finish』をクリック
    f:id:mmorley:20190816105416p:plain:w500
 
 Cocos Creator向けの出力の仕方は、下記の記事で説明しています。

あとがき

 画像の周りに空白(フチ)があると、メッシュが作成しやすいです。
 複数の画像にまとめてフチを付けるプログラムを作りました。

 コピペで使えるので試して見て下さい。