テンプレートファイルのサードパーソンキャラクターに、Blenderでアニメーションを付ける。
一旦Unreal Engineからキャラを書き出し、Blenderにインポートし、アニメーションを作った後にそのアニメを読み込みする。
もくじ
インポートとエクスポート
Unreal Engineからキャラを書き出す
- 書き出したいキャラのスケルタルメッシュを、開いているレベル内にドラッグ&ドロップで追加する。
- 今回は、All/Game/Characters/Mannequins/Meshes/SKM_Quinn_Simple を書き出す。
- トランスフォームがそのまま書き出されるので、全て初期値の状態しておくこと。
- トップバー > ファイル > 選択されたものをエクスポート...で、書き出す。
- 名前はなんでもいいが、ひとまず同名(SKM_Quinn_Simple)としておく。
書き出したキャラをBlenderでインポートする
- Blenderにて、トップバー > ファイル > インポート > FBX(.fbx)から、先ほど書き出したファイルをインポートする。
- インポート設定の変更は特になし。
失敗例
子を強制的に無視オプション。
ボーン方向を自動整列オプション。
上記のインポート設定を有効にすると、通常のアーマチュアのようにボーンの先がつながっている状態でインポートできるが、Unreal Engineに戻した時にねじれてしまう。
アニメを作って書き出す
- 好きにアニメーションを付ける。
- アーマチュアだけを選択する。
- Blenderにて、トップバー > ファイル > エクスポート > FBX(.fbx)で、選択したアーマチュアをエクスポートする。
- アニメーション > "NLAストリップ"と、"全アクション"のチェックを外す。
ただ、不要なアニメーションがエクスポートされないようにする。 - その他の設定は特にしなくて問題なかった。
- アニメーション > "NLAストリップ"と、"全アクション"のチェックを外す。
作成したアニメをUnreal Engineでインポートする
- Unreal Engineにて、作成したFBXファイルをドラッグ&ドロップする。
- インポートメニューが出るので、Common Skeletal Meshes and Animations > Skeletonに、"SK_Mannequin"を設定する。
- インポートを実行する。
エラー
[C:/~~~/SKM_Quinn_Simple_blender_02.fbx : '', AnimSequence] アニメーションの長さ 0.033 はインポート フレームレート 25 fps (サブフレーム 0.833) と互換性がありません。アニメーションはフレームの境界線をそろえなければなりません
空のアニメーションを書き出した時に出るエラーの模様。
複数のアニメーションをエクスポートした時、意図しない空のアクションも書き出していたことでこのエラーが出た。
意図しないものを書き出さないように、BlenderでのFBXエクスポートでは、"全アクション"オプションは無効化した方がいい。
再度インポートする時にインポート設定を変えたい場合
一度インポートした同名ファイルを再度インポートしようとすると、自動で同じ設定でインポートされる。
2度目以降でインポート設定を変えたい場合は、一度そのファイルをUE内で消すか、エディタ設定を変更する。
編集 > エディタの環境設定 > importで検索 > 「再インポート時にインポートダイアログを表示」を有効化する。
アニメーションモンタージュを作成する
より詳細にアニメーションを活用できるように、アニメーションモンタージュを作成しておく。
- 追加したアニメーションシーケンスを右クリックし、作成する > AnimMontageを作成を実行する。
動作確認する
ちゃんとアニメーションが利用できるかの動作確認のため、Gキーでアニメーション再生をしてみる。
- "Keyboard events G"と検索し、Gキーのイベントノードを追加する。
- 確認用なのでキーはなんでもよい。
左クリックにしたいならleft mouse button。
- 確認用なのでキーはなんでもよい。
- "Play Montage"ノードを追加し、作成したアニメーションモンタージュを選んで設定する。
- In Skeletal Mesh Componentに、キャラのMeshをドラッグ&ドロップで設定する。
- Gキーのノードとつなげる。
アニメーションを確認
プレイ中にGキーを押すと、作ったアニメーションが再生できる。
アニメーションを付けやすくする(任意)
モーション作成に不要なボーンは非表示にし、キャラにIKリグを付けるとモーションを作りやすい。
- ボーンコレクションで整理して、不要なボーンは非表示にしておく。
- 元のIK・ツイスト・指などをボーンコレクションに分ける。
- 編集モードでアーマチュアのボーンをいじると、書き出した時におかしくなってしまうので、極力元のボーンはいじらず調整する。
- 下腿部と前腕のボーンのテール位置はずらしても問題なかったので、IKを付けるためにhand位置に移動した。
- IK用ボーンは元からあるが、自分で新規作成したボーンでつけた方がいじりやすそう。
- リグを付ける。
- 下腿部と前腕にIKを付ける。
手・足用に、IKボーンを自分で新規作成する。 - 手・足に、IKボーンの回転コピーコンストレイントを付ける(ワールド座標対象で)。
- IKロールで、IKのひざ・ひじの向きを調整可能にする。
ボーンのロールをいじれないので、IKポールを設定するとズレが生じてしまう。
なので、レストポーズに合うように、手動でポールの角度を調整する。
- 下腿部と前腕にIKを付ける。
- カスタムシェイプで見た目だけ変えておくといじりやすい。
- 特に指や背骨は縦に見えるように直方体を付けると見やすい。
- 腰を触りやすいように、大きめのカスタムシェイプを設定する。
- キャラのアーマチュアオブジェクトの親エンプティには0.01スケールがかかっているので注意。
アニメーションでキャラの位置を変更する(ルートモーション)
Unreal Engine におけるルート モーション | Unreal Engine 5.5 ドキュメンテーション | Epic Developer Community
そのままでは、再生が終わると元の位置に戻ってしまう。
攻撃しながら前進して、アニメーション終了後にそこにキャラを移動したい場合、"Root"にアニメーションを付けて、ルートモーションを有効化する。
アーマチュアオブジェクトにアニメーションを付ける
アーマチュア自身のオブジェクトの方にアニメーションを付ける(このモデルでは"Root"オブジェクト)。
アーマチュアを選択して、オブジェクトモードでキーをつければよい。
アニメを付けてから再度エクスポートする。
複数のリグをインポートしていた場合は、Root.002のように名前が変わってしまっているので、書き出すものは"Root"にリネームしておく。
エクスポートする際は、タイムスライダーを最初のフレームに移動しておく。
UEにインポートし、動きを確認する
上画像のように、インポートしたアニメーションのアニメーションシーケンスファイルを開き、スケルトンツリーからrootボーンを選択すると、赤く表示されて動くのがわかる。
ルートモーションを有効化する
アニメーションシーケンス設定にて、アセット詳細 > ルートモーション > "Enable Root Motion"を有効化する。
うまくいかない場合は、メインでいじっているプロジェクトではなく、テンプレートキャラのプロジェクトを新規作成してみて、そちらで確認してみると問題の切り分けがしやすい。
自分はこれでプロジェクト(もしくは自分がいじったキャラ)の方に問題があることがわかった。
あとがき
インポート・エクスポート設定はほとんどいじらなくても問題なかった0。
逆にいじると再度UEに戻した時におかしくなってしまう。
テンプレートのサードパーソンキャラクターをどうにかBlenderでいじろうとしたので、ボーン内容の編集が許されず面倒くさいことになった。
可能ならBlender内で自キャラを作ってUEに入れた方が、よほど加工はしやすい。q