Unity Anima2Dについてのメモ書き
巷で話題のUnity Anima2Dについての調べたので投稿します.
Unity Anima2Dとは?
Unity Anima2D は,2Dスケルタルアニメーションのプラグインです.2Dキャラクターでボーンアニメーションのようなことができます.操り人形みたいな動きをさせたり,首長竜の首を動かしたりできます.
スケルタルアニメーションさせることの利点
- テクスチャサイズの合計を小さくできる.
- 後から変更を加えやすい.
- 動きがなめらか
- アニメーション間の遷移が滑らか
Anima2Dでできること
- スプライト図形の完全なコントロール
- ウェイトを自動的につける.
- Scene上でボーンを表示
- 2D Inverse Kinematics
- 上記をEditor上でできる.
使い方①
Unite Europe 2016 の映像を見て勉強します.
Anima2Dの基本
- 適当なSceneを作成し,Unity Anima2Dをimportする.
- 使用したい画像を入れ,inspectorでTexture TypeをSprite(2D and UI)に,SpriteModeをMultipleに変更しApplyします.
- そのままinspectorのSprite Editorを選択し,ドラッグで,スプライトを分割しApplyします.
- 次に,対象の画像ファイルを選択した状態で,右クリック->[Create]->[Anima2D]->[SpriteMesh]をクリックする.
上の画像のようになれば成功.
- 作成されたパーツ(どれか)をScene上に配置します.
- hierarchyウィンドウでパーツを選択した状態で右クリック->[2D Object]->[Bone]を選択する.
- Scene上で,ボーンの移動や回転をドラッグで行うことができます.Bone 2D (Script) のオプションは以下の通りです.
フィールド | 内容 |
Color | ボーンの色を変える. |
Alpha | ボーンの透明度を変える. |
Child | ボーンの子要素.後述. |
Length | ボーンの長さを変える |
- Boneを増やし,下の画像のようにします.
- Sprite Mesh EditウィンドウでPivot(中心)を調整します.
- Sprite Mesh EditウィンドウのSliceを選択し,パーツを囲むように枠を調整しApplyをクリックすることでメッシュを分割することができます.
- パーツを選択しinspector上のSprite Mesh InstanceのBoneに各Boneを入れていきます.
- Sprite Mesh Editウィンドウを開き,Bindをクリックします.
- 右下に表示されているWeight toolのAutoをクリックして自動的に重みを付けます.
ひとまず基本は完了
しかし,このままではアニメーションを付けるのが面倒.
IKを使う
2種類のIK
Anima2DのIKには,IK CCD 2DとIK 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)
- 下図のように空のゲームオブジェクトを作成します.(必ずしも親子関係である必要はない)
- IK 1とIK 2にIk Limb 2D (Script)をアタッチします.
- Ik Limb 2D (Script)のTargetに対象となるボーンを選択します.(今回はつま先と膝下のボーンを選択)
- IKの位置やFlipオプションを調整し完成.(これを2回繰り返す)
Assetに入っているユニティちゃんで遊びたい
不具合(?)1/29現在
- IKを動かそうとすると手や足の角度が変になる
- 服のスリーブがついてこない
Anima2Dのユニティちゃんの挙動がおかしいから修正する... pic.twitter.com/BOjYkDThfd
— たかねちゃん (@rsbp8) 2017年1月29日
- 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]の子にする.
いいかんじ.もっとIKを増やしてもいいかもしれない.
最後に
他にも,AnimationとかOnion Skinとか触ったら追記する予定.