Unity Anima2Dについてのメモ書き

巷で話題のUnity Anima2Dについての調べたので投稿します.

f:id:Taka8:20170116121657p:plain

Asset Store

Unity Anima2Dとは?

 Unity Anima2D は,2Dスケルタルアニメーションのプラグインです.2Dキャラクターでボーンアニメーションのようなことができます.操り人形みたいな動きをさせたり,首長竜の首を動かしたりできます.

スケルタルアニメーションさせることの利点

  • テクスチャサイズの合計を小さくできる.
  • 後から変更を加えやすい.
  • 動きがなめらか
  • アニメーション間の遷移が滑らか

Anima2Dでできること

  • スプライト図形の完全なコントロール
  • ウェイトを自動的につける.
  • Scene上でボーンを表示
  • 2D Inverse Kinematics
  • 上記をEditor上でできる.

使い方①

www.youtube.com

Unite Europe 2016 の映像を見て勉強します.

Anima2Dの基本

  • 適当なSceneを作成し,Unity Anima2Dをimportする.
  • 使用したい画像を入れ,inspectorでTexture TypeSprite(2D and UI)に,SpriteModeMultipleに変更しApplyします.
  • そのままinspectorのSprite Editorを選択し,ドラッグで,スプライトを分割しApplyします.
  • 次に,対象の画像ファイルを選択した状態で,右クリック->[Create]->[Anima2D]->[SpriteMesh]をクリックする.

f:id:Taka8:20170117210802p:plain
上の画像のようになれば成功.

  • 作成されたパーツ(どれか)をScene上に配置します.
  • hierarchyウィンドウでパーツを選択した状態で右クリック->[2D Object]->[Bone]を選択する.
  • Scene上で,ボーンの移動や回転をドラッグで行うことができます.Bone 2D (Script) のオプションは以下の通りです.
フィールド 内容
Color ボーンの色を変える.
Alpha ボーンの透明度を変える.
Child ボーンの子要素.後述.
Length ボーンの長さを変える
  • Boneを増やし,下の画像のようにします.

f:id:Taka8:20170117220117p:plain

  • Sprite Mesh EditウィンドウでPivot(中心)を調整します.

f:id:Taka8:20170117221232g:plain

  • Sprite Mesh EditウィンドウのSliceを選択し,パーツを囲むように枠を調整しApplyをクリックすることでメッシュを分割することができます.

f:id:Taka8:20170117222203g:plain

  • パーツを選択しinspector上のSprite Mesh InstanceのBoneに各Boneを入れていきます.
  • Sprite Mesh Editウィンドウを開き,Bindをクリックします.
  • 右下に表示されているWeight toolのAutoをクリックして自動的に重みを付けます.

ひとまず基本は完了

f:id:Taka8:20170129142302g:plain
しかし,このままではアニメーションを付けるのが面倒.

IKを使う

2種類のIK

 Anima2DのIKには,IK CCD 2DIK Limb 2Dという2種類のIKが用意されています.IL Limb 2Dはその名の通り,腕や足といった四肢に使います.IK CCD 2Dはその他(尻尾や頭)に使います.

以下,いっしょに入っているのPDFファイルより.

  • Ik Limb 2D (Script)
Record アニメーションモードの間,ボーンのキーフレームを記録します.
Target​ IKが適用されるボーン
Weight​ IKのポーズに対する影響度
Restore Default Pose 計算を実行する前に初期ポーズを設定する.
Orient Child ​ターゲットの子ボーン(使用可能な場合)を数学IKローテーションに回転させます.
Flip​ 関節を反転させる.
  • Ik CCD2D (Script)
Record アニメーションモードの間,ボーンのキーフレームを記録します.
Target​ IKが適用されるボーン
Weight​ IKのポーズに対する影響度
Restore Default Pose 計算を実行する前に初期ポーズを設定する.
Orient Child ターゲットの子ボーン(使用可能な場合)を数学IKローテーションに回転させます.
Num bones IKの影響を受けるボーンの数.最大はルートボーンまで.
Iterations​ solverの反復回数.
Damping​ ソルバのステップ速度を制御する.値が小さいと曲がりが大きく,大きいと曲がりが小さくなる.

Orient ChildとIterationsはいまいち分からなかった.まあ,なあなあでいいんじゃない.

IKの使い方(IK CCD2D)

  • 下図のように空のゲームオブジェクトを作成します.(必ずしも親子関係である必要はない)

f:id:Taka8:20170129162727p:plain

  • IK 1IK 2Ik Limb 2D (Script)をアタッチします.
  • Ik Limb 2D (Script)Targetに対象となるボーンを選択します.(今回はつま先と膝下のボーンを選択)
  • IKの位置やFlipオプションを調整し完成.(これを2回繰り返す)

f:id:Taka8:20170129163645g:plain

Assetに入っているユニティちゃんで遊びたい

不具合(?)1/29現在

  1. IKを動かそうとすると手や足の角度が変になる
  2. 服のスリーブがついてこない


  • 1の解決法

 Unity chanオブジェクトのPose Manager (Script)のBase (Pose)をLoadするだけでなんとかなる.

  • 2の解決法

 [Unity chan]->[Hips]->[Spine]
  [Right Arm]->[Right Forearm Clothes][Right Forearm]の子にする.
  [Left Arm]->[Left Forearm Clothes][Left Forearm]の子にする.

f:id:Taka8:20170129175148g:plain
いいかんじ.もっとIKを増やしてもいいかもしれない.

最後に

他にも,AnimationとかOnion Skinとか触ったら追記する予定.

Multiplayer Networking/Unity/Standard Assets/Nintendo Switch/Asset Store/Git/GitHub for Windows/Arduino/Blender/はてなブログ/