株式会社ヒストリアさん主催の第13回UE4ぷちコンが待ちきれずに、それ用の作業を始めてしまったメモ。
※テーマ発表はあしたの12:00。(待てばいいのに)
各地のグレイマンのアニメーションを一つのスケルトンにまとめる
今日は帰宅が遅かったので、サクッとできることを。
毎月の無料コンテンツや永久無料コンテンツで入手したアニメーション群は、スケルトンがそれぞれのコンテンツの持つグレイマンを参照している。実際、混ぜて使いたいときに面倒くさい。
これはあの「おかずさん」が
[UE4]Animation Sequenceをアセット複製せずに直接リターゲットする方法について - Qiita@EGJ-Kaz_Okada
で解決策を教えてくださっているので、ありがたく頂戴して対応しようかと。
最終的にこうした
- もともとAnimation Starter Packに入っていたUE4_MannequinフォルダをContentフォルダ直下に移動。すべてのアニメーションアセット(Anim Sequence)はこのグレイマンを参照することにする。
- その下にAnimationsフォルダを作って、さらにその下に各種パッケージのフォルダを作成。
- その中にそれぞれのアニメーションアセット(Anim Sequence)を置いた。
- すべてのアニメーションをおかずさんのツールでUE4_Mannequin/Meshの下のSK_Mannequinを参照するように変更。
※EditorAnimUtils::RetargetAnimations() を使っている付近だけを目コピして使わせていただきました。
うん。使いやすくなった。
(おかずさん、ありがとう)
おかずさんのコードを一部変更して使わせてもらいました
汎用性を捨てて、自分の欲しい機能のみに特化した形に。
つまり「複製しない」「リネームしない」「コンポーネントスペースでコンバートしない」の決め打ちに。
変更箇所
EditorAnimUtils::RetargetAnimations(
animSequence->GetSkeleton(), // USkeleton* OldSkeleton
InNewSkeleton, // USkeleton* NewSkeleton
objectToRetarget, // TArray<TWeakObjectPtr<UObject>> AssetsToRetarget
true, // bool bRetargetReferredAssets
nullptr, // const FNameDuplicationRule* NameRule
false); // bool bConvertAnimationDataInComponentSpaces
※引数の最後の3つ(true, nullptr, false)がそれ。
今日はここまで。
明日のテーマ発表が待ち遠しい…