夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

Blenderでアニメーションを作成してUnityでHumanoidのAnimationとして使用する

本日はUnity枠です。

Unityでは[Humanoid Rig]と呼ばれる人型の3Dキャラクターを使用することができます。

f:id:Holomoto-Sumire:20200522091544j:plain

これによってUnity内でアニメーションを別々のキャラクターで使いまわすことができます。

今回はHumanoidのAnimationを製作する際に問題が発生したので忘備録として記事にします。

〇UnityHumanoidとは?

docs.unity3d.com

3Dキャラクターモデルには実際の人間同様キャラクターの腕や足、頭などを動かすことができるようにボーン(骨)が入れられています。

f:id:Holomoto-Sumire:20200522092716j:plain

 HumanoidはUnityでボーンの構造を統一することであるHumanoidのキャラクターに作成したアニメーションを別のHumanoidのキャラクターで使用することができます。

〇Humanoidのアニメーションを作成する(失敗した話)

 UnityではAnimationClipを作成してAnimationControllerに設定することでObjectやキャラクターにアニメーションを作成することができます。

 f:id:Holomoto-Sumire:20200522093235j:plain

 通常はAnimationClipで[AddPropertiy]で動かしたいボーンやオブジェクトのRotation、Transformを追加してドープシートに沿って0秒目の値、x秒目の値をそれぞれ入力することで0~x秒目までの間緩やかにプロパティの値が変化するようなアニメーションが作成できます。

 しかしHumanoidのキャラクターにアニメーションをアタッチすると

f:id:Holomoto-Sumire:20200522093424j:plain

f:id:Holomoto-Sumire:20200522094351g:plain

 このようにキャラクターが鉛直軸(Y軸)に沈み込み変な格好になってしまいます。

f:id:Holomoto-Sumire:20200522094539j:plain

 通常ひとつづつ必要なプロパティを追加してアニメーションを付けますが、このままでは大変膨大な作業になりそうです。

Blenderでアニメーションを作成する。

f:id:Holomoto-Sumire:20200522094925j:plain

Unityでアニメーションを作成することはとても大変なのでBlenderを使用してアニメーションを作成します。

Blenderを起動してHumanoidRigのキャラクターをインポートします。

[ポーズモード]に切り替えて動かしたいボーンを選択し[R]キーとマウスで骨を動かします。

f:id:Holomoto-Sumire:20200522095507g:plain

ポーズを付けた状態で[ポーズモード]で[A]キーを押し、全選択状態にします。

f:id:Holomoto-Sumire:20200522095839j:plain

次にマウスの右クリックを押し[キーフレームを挿入]をクリックします。 次に[キャラクター全体(選択したボーンのみ)]をクリックします。

f:id:Holomoto-Sumire:20200522095955j:plain

f:id:Holomoto-Sumire:20200522100146j:plain

これでこの状態のすべてのボーンの情報がキーフレームとして保存されました。

Blenderの下部にあるドープシートを展開して、時間軸を適当な場所に移動します。(ここでは100にしました。)

f:id:Holomoto-Sumire:20200522100523j:plain

最初と同様ボーンを選択してポーズを付けキーフレームを挿入します。

f:id:Holomoto-Sumire:20200522100835j:plain

二つ目のキーフレームを挿入することで一つ目のキーフレームのポーズから緩やかに二つ目のポーズへと変化するアニメーションが作成できました。

f:id:Holomoto-Sumire:20200522101129g:plain

これでアニメーションが作成できました。

〇Unityへエクスポートする。

f:id:Holomoto-Sumire:20200522101537j:plain

FBXとしてキャラクターをエクスポートします。

UnityのProjectウィンドウにインポートして、fbxを展開して中身を見てみるとアニメーションクリップが入っています。 これがBlenderで作成したアニメーションです。

f:id:Holomoto-Sumire:20200522101751j:plain

インポートしたFbxを選択しInspectorウィンドウから[Rig]の[Animation Type]を[Humanoid]に変更します。(Applyすることを忘れず)

f:id:Holomoto-Sumire:20200522102342j:plain

Humanoidに変更した状態でアニメーションクリップを選択し[Ctrl]キー+[D]キーで複製することでアニメーションクリップとして編集ができます。

f:id:Holomoto-Sumire:20200522102025j:plain

複製したアニメーションクリップをAnimationControllerに設定しHumanoid のキャラクターのアニメーションとして設定し実行します。

f:id:Holomoto-Sumire:20200522102846g:plain

Unity自体でアニメーションを付けることもできますが、すべてのパラメータを手打ちで行っていては大変です。

今回Blendereを用いることでボーン自体を可視化してポーズを付けることでより簡単にHumanoidのアニメーションが作成できました。