MRが楽しい

MRやVRについて学習したことを書き残す

Blender2.8でカーブモディファイアを使って作成したアニメーションをUnityに持ち込む 後編(ボーンアニメーションへの変換と出力)

本日は Blender の技術調査枠です。
Blender2.8でカーブモディファイアを使って作成したアニメーションをUnityに持ち込む手順を記事にします。
f:id:bluebirdofoz:20201011003755j:plain

前回記事の続きです。
bluebirdofoz.hatenablog.com

カーブモディファイアを使ったアニメーション

前回作成した Cylinder オブジェクトにカーブモディファイアを使ったアニメーションを設定します。
以下の記事と同様の手順でアニメーションを作成しました。
bluebirdofoz.hatenablog.com

以下のように Cylinder オブジェクトが円状のカーブオブジェクトに沿って動くアニメーションが作成できました。
f:id:bluebirdofoz:20201011003807j:plain

ボーンアニメーションへの変換

作成したカーブモディファイアのアニメーションをボーンアニメーションに変換していきます。

ボーンの追従設定

最初に各ボーンがメッシュのアニメーションに追従して動くように設定を行います。
[アウトライナー]ウィンドウから Armature オブジェクトを選択して[ポーズモード]を開きます。
f:id:bluebirdofoz:20201011003818j:plain

開始点のボーン

最初に開始点のボーンをメッシュオブジェクトの下部に追従するよう設定を行います。
開始点の Bone ボーンを選択して[ボーンコンストレイント]タブを開きます。
f:id:bluebirdofoz:20201011003828j:plain

[ボーンコンストレイント追加]のプルダウンを開き、[位置コピー]のコンストレイントを選択します。
f:id:bluebirdofoz:20201011003839j:plain

[位置コピー]のコンストレイントが追加されるので、[ターゲット]に[Cylinder]を、[頂点グループ]に[Bone]を設定します。
これで Cylinder オブジェクトの Bone 頂点グループの位置に Bone ボーンが追従するようになります。
f:id:bluebirdofoz:20201011003850j:plain

次に再び[ボーンコンストレイント追加]のプルダウンを開き、[トラック]のコンストレイントを選択します。
f:id:bluebirdofoz:20201011003902j:plain

[トラック]のコンストレイントが追加されるので、[ターゲット]に[Cylinder]を、[頂点グループ]に[Bone.008]を設定します。
これで Cylinder オブジェクトの Bone.008 頂点グループの方向に Bone ボーンの先端が追従するようになります。
f:id:bluebirdofoz:20201011003911j:plain

中間のボーン

次の Bone.008 ボーンを選択して同じくコンストレイントを設定します。
[位置コピー]を設定するのは開始点のボーンのみなので、こちらは[トラック]のコンストレイントのみ設定します。
f:id:bluebirdofoz:20201011003921j:plain

[トラック]のコンストレイントが追加されるので、[ターゲット]に[Cylinder]を、[頂点グループ]に[Bone.007]を設定します。
これで Cylinder オブジェクトの Bone.007 頂点グループの方向に Bone.008 ボーンの先端が追従するようになります。
f:id:bluebirdofoz:20201011003932j:plain

Bone.008 と同じ手順を繰り返して、Bone.007 ~ Bone.002 までに追従先を指定した[トラック]を設定します。
f:id:bluebirdofoz:20201011003943j:plain

終端のボーン

終端の Bone.001 のみ追従する先がないので、コンストレイントは設定しません。
f:id:bluebirdofoz:20201011003954j:plain

この時点でアニメーションを再生して設定が正しく行われるか確認してみます。
メッシュの動きに合わせて各ボーンが追従すれば成功です。
f:id:bluebirdofoz:20201011004007j:plain

ボーンアニメーションのベイク

このボーンの動きをアニメーションとしてキーフレームを挿入します。
[ポーズ -> アニメーション -> アクションをベイク]を実行することで、まとめてキーフレームを挿入することができます。
f:id:bluebirdofoz:20201011004020j:plain

パネルが表示されるので以下の通り設定を行い、[OK]をクリックします。

開始フレーム:1 (キーフレームの挿入開始フレーム)
最終フレーム:250 (キーフレームの挿入最終フレーム)
フレームステップ:1 (キーフレームの挿入間隔)
選択ボーンのみ:False (Falseで全てのボーンにキーフレームを挿入)
ビジュアルキーイング:True (Trueでコンストレイント反映後の状態をキーフレームに挿入)
コンストレイントをクリア:True (Trueでキーフレーム挿入と同時にコンストレイント設定を削除)
親子関係をクリア:False (Trueでアーマチュアの親子関係をクリア)
現在のアクションを上書き:False (Trueで現在のアクションを上書き)
データをベイク:ポーズ (トランスフォームのベイク先、ポーズの場合はボーン)

f:id:bluebirdofoz:20201011004031j:plain

これで全てのフレームにボーンの動きのキーフレームが挿入されます。
f:id:bluebirdofoz:20201011004043j:plain

アニメーションを再生して正しく動作するか確認してみます。
f:id:bluebirdofoz:20201011004055j:plain

カーブモディファイアを使ったアニメーションの削除

ボーンアニメーションの準備が整ったので、カーブモディファイアを使ったアニメーションはもう不要です。
[オブジェクトモード]に戻り、Cylinder オブジェクトの[モディファイア]タブを開き、カーブモディファイアを削除します。
f:id:bluebirdofoz:20201011004114j:plain

Z軸移動のアニメーションも不要なので、こちらも削除します。
[アイテム]サイドバーから、[トランスフォーム]パネルの[位置]を右クリックして[キーフレームをクリア]を実行します。
f:id:bluebirdofoz:20201011004132j:plain

これでカーブモディファイアの設定とZ軸移動を使ったアニメーションを削除できました。
アニメーションを再生して Cylinder オブジェクトが動かないことを確認します。
f:id:bluebirdofoz:20201011004144j:plain

カーブオブジェクトの BezierCircle オブジェクトについても不要なため、選択して[削除]しても問題ありません。
f:id:bluebirdofoz:20201011004900j:plain

メッシュオブジェクトをボーンに追従させる

後は Cylinder オブジェクトをボーンに追従させるだけです。
[アウトライナー]ウィンドウから Cylinder オブジェクトを選択し、Ctrl キーを押したまま、Armature オブジェクトを選択して複数選択の状態にします。
f:id:bluebirdofoz:20201011004211j:plain

複数選択の状態で、[オブジェクト -> ペアレント -> アーマチュア変形]を実行します。
f:id:bluebirdofoz:20201011004221j:plain

これで Cylinder オブジェクトと Armature オブジェクトが親子関係で関連付けられます。
Cylinder オブジェクトにはボーンと同名の頂点グループを割り当てたため、各頂点が各ボーンに追従するようになります。
f:id:bluebirdofoz:20201011004233j:plain

アニメーションを再生して Cylinder オブジェクトがボーンに追従して変形と移動をすれば成功です。
これでボーンアニメーションに変換できました。
f:id:bluebirdofoz:20201011004249j:plain

Unityへの取り込み

作成したモデルとアニメーションを Unity に取り込みます。
作成したアニメーションモデルを[ファイル -> エクスポート -> FBX]で出力します。
f:id:bluebirdofoz:20201011004300j:plain

出力時の[オブジェクトタイプ]には必ず[アーマチュア]と[メッシュ]を含めます。
f:id:bluebirdofoz:20201011004312j:plain

作成した FBX ファイルをドラッグして Unity にインポートします。
f:id:bluebirdofoz:20201011004321j:plain

FBX ファイルの内容を確認すると、アニメーションデータが含まれています。
[アクションをベイク]時に別アクションとしてアニメーションを作成したので2つのアニメーションが保存されています。
f:id:bluebirdofoz:20201011004332j:plain

ボーンアニメーションの方を選択して再生すると、円の経路に沿った変形アニメーションが Unity 側でも再生できました。
これで Unity へのアニメーションの取り込みが成功しました。
f:id:bluebirdofoz:20201011004350j:plain
f:id:bluebirdofoz:20201011004401j:plain