本日は 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 へのアニメーションの取り込みが成功しました。