はじめに
猫でも分かるシリーズの放送日だったのでそちらを見ることに
今回はアニメーションですね。Blenderでもほとんどいじってないのでほぼ素人です。
参照元
猫でも分かる UE4を使ったゲーム開発 超初級編 #6 自作・購入したキャラクタを動かしてみよう!
本日の動画の目標
- SK_Mannequin 以外の3Dモデルに SM_Mannequin向けのアニメーションを流用する
- ただしこれを見れば X のアニメーションを Y モデルに適用する方法がわかるとの事
今回の内容
- 「アニメーションを流用だ!あれ?できない・・・?」はなぜ起こるのか?について
- モデルのモーションをSkeletonに合わせる方法
- モーションをモデルの Skeleton に合わせる方法
今回使用するモデル
- 本日講座で例として使うのは有志の方が作成したグレイちゃんというモデルとブループリントちゃんというモデル
- ダウンロードはリンクページの最下部にあります。
- 利用規約などを読みダウンロードしましょう。
- ブループリントちゃん
www.indie-us-games.co.jp - グレイちゃん
rarihoma.xvs.jp
開始
0. 事前準備
- プロジェクト作成
- カテゴリ: ゲーム
- テンプレート: サードパーソン
- プロジェクト設定
- Epicランチャーよりアニメーションスターターパックを入手してプロジェクトに追加
- アニメーションが追加されている事が確認できる
1. 「アニメーションを流用だ!あれ?できない・・・?」はなぜ起こるのか?について
- BPchan.fbxをインポートする
- インポートされる
- インポートされる
- BPChanをダブルクリックしてペルソナエディタを開く
- アニメーションを確認する
- BPChanが独自に元々持っていたアニメーションは選べるもののスターターキットのアニメーションは選べない
原因
Skeltonが選択されていないため
- 今回流用したいスターターパックのアニメーションのスケルトンを指定し、動かしたいスケルタルメッシュのスケルトンと統合する必要がある。
- スターターパックにある任意のAnimationをダブルクリックしアセット詳細を見るとスターターパックで使用されているスケルトンが UE4_Mannequin_Skeleton というスケルトンである事がわかる。
- これをBPChanに適用する必要がある
- 適用する方法はインポート時に行う方法とインポート後に行う方法がある
- スケルタルメッシュ → アニメーション に紐付ける場合と、アニメーション → スケルタルメッシュ へ紐付ける場合があるので順に見ていく
1. モデルのモーションをSkeletonに合わせる方法
スケルタルメッシュ → アニメーションに紐付ける方法
A. インポート時に紐付ける方法
- インポート時に UE4_Mannequin_Skeletonを指定する
- 作業は終了。確認の為の手順が続きます
- BPChanをダブルクリックしてペルソナエディタを開く
- アニメーションを見るとよく見るマネキンが画面に表示されている
- これは UE4_Mannequin_Skeleton に紐付けられているものが表示されているとの事
- 右下にはスターターパックのアニメーションが表示されている
- プレビューシーン設定のメッシュで BPChan を選択しアセットブラウザよりスターターパックのアニメーションをクリックすると実行されている事がわかる
尚、GrayChan.FBXをインポートしようとするとエラーになります。
そちらの原因や対応はマージ時エラーについてという項目でまとめています。
B. インポート後に紐付ける方法
- BPChanのスケルタルメッシュを右クリック→スケルトン→スケルトンを割り当てるをクリック
- 割り当てたいスケルトンをクリックして承認
- 次の画面もOKをクリック
- BPChanをダブルクリックしてペルソナエディタを開く
- プレビューシーン設定でBPChanを選択し、アニメーションを再生させるとちゃんと動いている事がわかる
尚、GrayChan.FBXをインポートしようとするとエラーになります。
そちらの原因や対応はマージ時エラーについてという項目でまとめています。
2. モーションをモデルの Skeleton に合わせる方法
- アニメーション → スケルタルメッシュ に紐付ける方法
- ここでは機能別サンプルの中にある JumpingJacks.FBX を BPChan に適用する。
- 機能別サンプルのアニメーションをエクスポートする手順は本記事のアニメーションエクスポート手順という項に記載しました
- インポート時に紐付ける方法
- インポート後に紐付ける方法の2種類がある
A. インポート時に紐付ける方法
- アニメーションをインポートする
- インポート画面で BPChan のスケルトンを選択する
- 紐付け先のBPChanに足りない骨があるのでその部分はインポートしないというメッセージが表示される
- 完了です。動作確認の手順が続きます
- JumpingJacks(インポートしたアニメ)をダブルクリックするとすでにアニメーションが適用されている事がわかる
- 身長が伸びているのはリターゲットオプションという設定があり、そこで設定されている内容が元々のアニメーションの情報を尊重する設定となっているため。これをスケルトンに変更する事で修正可能
- 紐付け先のBPChanに足りない骨があるのでその部分はインポートしないというメッセージが表示される
B. インポート後に紐付ける方法
リターゲットを使う。アニメーションリターゲットにてまとめる
マージ時エラーについて
GrayChan.fbxインポート時にSkeltonを選択するとエラーになります。その内容です。
- GrayChan.FBXをインポートする
- インポート時 Skeleton の項目で使いたいアニメーションが使用している Skeletonを選択する
- インポートしたらうつ伏せだったため、修正のためXに270度回転している
- GrayChanだとエラーが出てくる
ボーンの統合に失敗
重要な階層的な変更が行われた時に発生する可能性があります。例えばノード間にボーンが挿入されている。 このメッシュからスケルトンを再作成しますか?
注意 これはアニメーションデータの再圧縮の無効化または再圧縮を要求する場合があります - 「すべてはい」を押したらメッセージが表示される
- 統合に失敗とのメッセージが表示される。その後も何度かメッセージが表示される
- 完了後、GrayChanスケルタルメッシュをダブルクリックしペルソナエディターでGrayChanでアニメーションをプレビューしても明らかにアニメーションが正しく行われていない事が確認できる
スケルトンマージエラーの原因
Skeltal Meshが持つボーン階層とSkeleton アセットが持つボーン階層が一定の条件を満たさない場合、Skeletonを再設定する事ができない。以降マージについて記載する
スケルトン マージについて
マージ前提
- スケルタルメッシュはボーン階層を持つ
- スケルトンアセットはボーン階層のリストを持つ
- ボーンリスト例
- ベースのボーン階層
- ベースを拡張した羽付きバージョン
- ベースを拡張した尻尾付きバージョン
- ボーンリスト例
- スケルトンアセットのボーンリストを順番に参照しスケルタルメッシュと同じ階層が発見できればマージする
- 左端がスケルトンアセット、右3つは3種類のスケルタルメッシュ
- 左端がスケルトンアセット、右3つは3種類のスケルタルメッシュ
- またはスケルタルメッシュのボーン階層がスケルトンアセットのボーン階層の部分集合であればリストに追加される
- 左端がスケルトンアセット、右2つは2種類のスケルタルメッシュ
- 左端がスケルトンアセット、右2つは2種類のスケルタルメッシュ
- 上記のいずれにもマッチしなければエラーとなる
- フローイメージ(ただのイメージです)
構造確認
自分でスケルトンの階層を比較する方法です
- Animationに設定されているスケルトンの階層を確認
- Skeltal Meshに設定されているスケルトンの階層を確認
- 名前も階層も違う事が確認できる。
- これはアニメーション リターゲットという方法によって解消できる
アニメーション リターゲット
- 2つのスケルトン間の対応関係を作成する
- 流用先と流用元で同じ作業を行う必要がある
リターゲット手順
- Animation 側作業
- GrayChan 側作業(スケルタルメッシュ側)
- Animアセットをリターゲット
Animation 側作業
- 使用したいアニメーションのスケルトンを開き、リターゲットマネージャを選択
- リグを選択で「ヒューマノイド」を選択
- 下記図のようにそれぞれのパーツ(左)に対応する部位を右から選ぶ
- すでに設定されているのでそのままにする
- 下記図のようにそれぞれのパーツ(左)に対応する部位を右から選ぶ
GrayChan 側作業(スケルタルメッシュ側)
- ソースに合うターゲット(GrayChanのボーン)を選択していく作業
- おそらく通常はヒューマノイドを選択した時点でほぼ全て自動で埋められる
- ここでは練習のためクリアし、あえて手動で設定
- ターゲットのコンボボックスからソースに合うものを選択していく
- 設定完了
- 尚詳細設定を押すと指の設定なども可能
- 設定完了
- 保存ボタンを押す
Animアセットをリターゲット
- 使用したいアニメーションを右クリック、Animアセットをリターゲットする
- 設定を行いリターゲットを行う
- 互換性のあるスケルトンのみ表示にチェックが入っているとアニメーションリターゲットを作成したもののみ表示できる。
- 左側でアニメーションをどのスケルトンにコピーするかを選択する。今回はGrayChan_Skeletonにコピーする為GrayChanを選択
- プレフィックス(接頭辞)/サフィックス(接尾辞)で作成されるアセットに対する命名規則が設定可能
- 右下の変更でコピーされたアセットの保存先が変更可能
- 結果
- 関節がおかしい。この原因は下記図にあるようにデフォルトのポーズが異なっているからとの事。
- ペルソナエディタのスケルトンよりスケルタルメッシュのポーズをマネキンに合わせポーズを変更する
- 現在のポーズを使用するをクリック
- 少しマシになったがまだおかしかったため、動画内でも紹介されていた記事でどれだけ調整すればよいかという情報が載っているとの事だったので見ることに。
- monsho.blog63.fc2.com
最後に
リターゲットが必要なのはAnimationをスケルタルメッシュで使う場合でしたね。あまり使わなそうなのでリターゲットが下手ですがそのままにしておきます。しかしリターゲットを除けば他の統合方法は至極簡単でした。これは簡単にできそうなうえに理解もできたので敬遠せずに済みそうです。
メモ
アニメーションエクスポート手順
- コンテンツブラウザよりアニメーションを選択→右クリック→エクスポート
- またはペルソナエディタよりアセットブラウザよりアニメーションを右クリック→FBXへエクスポート
- エクスポート実行
アニメーション リターゲット
docs.unrealengine.com
SK_Mannequin(グレイマン)のアニメーションをT-Poseのモデルに「いい感じに」リターゲットする方法について(T-Poseアニメーション配布)