本日はUnity枠です。
Unityでは[Humanoid Rig]と呼ばれる人型の3Dキャラクターを使用することができます。
これによってUnity内でアニメーションを別々のキャラクターで使いまわすことができます。
今回はHumanoidのAnimationを製作する際に問題が発生したので忘備録として記事にします。
〇UnityHumanoidとは?
3Dキャラクターモデルには実際の人間同様キャラクターの腕や足、頭などを動かすことができるようにボーン(骨)が入れられています。
HumanoidはUnityでボーンの構造を統一することであるHumanoidのキャラクターに作成したアニメーションを別のHumanoidのキャラクターで使用することができます。
〇Humanoidのアニメーションを作成する(失敗した話)
UnityではAnimationClipを作成してAnimationControllerに設定することでObjectやキャラクターにアニメーションを作成することができます。
通常はAnimationClipで[AddPropertiy]で動かしたいボーンやオブジェクトのRotation、Transformを追加してドープシートに沿って0秒目の値、x秒目の値をそれぞれ入力することで0~x秒目までの間緩やかにプロパティの値が変化するようなアニメーションが作成できます。
しかしHumanoidのキャラクターにアニメーションをアタッチすると
このようにキャラクターが鉛直軸(Y軸)に沈み込み変な格好になってしまいます。
通常ひとつづつ必要なプロパティを追加してアニメーションを付けますが、このままでは大変膨大な作業になりそうです。
〇Blenderでアニメーションを作成する。
Unityでアニメーションを作成することはとても大変なのでBlenderを使用してアニメーションを作成します。
Blenderを起動してHumanoidRigのキャラクターをインポートします。
[ポーズモード]に切り替えて動かしたいボーンを選択し[R]キーとマウスで骨を動かします。
ポーズを付けた状態で[ポーズモード]で[A]キーを押し、全選択状態にします。
次にマウスの右クリックを押し[キーフレームを挿入]をクリックします。 次に[キャラクター全体(選択したボーンのみ)]をクリックします。
これでこの状態のすべてのボーンの情報がキーフレームとして保存されました。
Blenderの下部にあるドープシートを展開して、時間軸を適当な場所に移動します。(ここでは100にしました。)
最初と同様ボーンを選択してポーズを付けキーフレームを挿入します。
二つ目のキーフレームを挿入することで一つ目のキーフレームのポーズから緩やかに二つ目のポーズへと変化するアニメーションが作成できました。
これでアニメーションが作成できました。
〇Unityへエクスポートする。
FBXとしてキャラクターをエクスポートします。
UnityのProjectウィンドウにインポートして、fbxを展開して中身を見てみるとアニメーションクリップが入っています。 これがBlenderで作成したアニメーションです。
インポートしたFbxを選択しInspectorウィンドウから[Rig]の[Animation Type]を[Humanoid]に変更します。(Applyすることを忘れず)
Humanoidに変更した状態でアニメーションクリップを選択し[Ctrl]キー+[D]キーで複製することでアニメーションクリップとして編集ができます。
複製したアニメーションクリップをAnimationControllerに設定しHumanoid のキャラクターのアニメーションとして設定し実行します。
Unity自体でアニメーションを付けることもできますが、すべてのパラメータを手打ちで行っていては大変です。
今回Blendereを用いることでボーン自体を可視化してポーズを付けることでより簡単にHumanoidのアニメーションが作成できました。