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

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

ボーンアニメーションへの変換
作成したカーブモディファイアのアニメーションをボーンアニメーションに変換していきます。
ボーンの追従設定
最初に各ボーンがメッシュのアニメーションに追従して動くように設定を行います。
[アウトライナー]ウィンドウから Armature オブジェクトを選択して[ポーズモード]を開きます。

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

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

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

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

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

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

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

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

終端のボーン
終端の Bone.001 のみ追従する先がないので、コンストレイントは設定しません。

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

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

パネルが表示されるので以下の通り設定を行い、[OK]をクリックします。
開始フレーム:1 (キーフレームの挿入開始フレーム) 最終フレーム:250 (キーフレームの挿入最終フレーム) フレームステップ:1 (キーフレームの挿入間隔) 選択ボーンのみ:False (Falseで全てのボーンにキーフレームを挿入) ビジュアルキーイング:True (Trueでコンストレイント反映後の状態をキーフレームに挿入) コンストレイントをクリア:True (Trueでキーフレーム挿入と同時にコンストレイント設定を削除) 親子関係をクリア:False (Trueでアーマチュアの親子関係をクリア) 現在のアクションを上書き:False (Trueで現在のアクションを上書き) データをベイク:ポーズ (トランスフォームのベイク先、ポーズの場合はボーン)

これで全てのフレームにボーンの動きのキーフレームが挿入されます。

アニメーションを再生して正しく動作するか確認してみます。

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

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

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

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

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

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

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

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

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

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

作成した FBX ファイルをドラッグして Unity にインポートします。

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

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

