ゴイサギ日記

東京でエンジニアとして頑張って何とか生きてます。。ゆる~く更新していきます

【Unity】AnimationClipPlayableでLegacyなアニメーションを再生する

大昔にAssetStoreから購入したアセットのアニメーションをAnimationClipPlayableで動かそうとしたところ、Legacyなアニメーションは動かせないよと怒られたので、何とか対応したお話。需要あるのかなこれ・・・

概要

f:id:aki517:20200325064601p:plain

上図のように Import Settings > Rigタグ にある Animation Type が Legacy のアニメーションデータを AnimationClipPlayable.Create() で設定すると以下のエラーが出て再生することができない。

ArgumentException: Legacy clips cannot be used in Playables.
対処1:AnimationType を Humanoid にする

Legacyをサポートしないと言ってるのでそれ以外に変えれば良いだけなので Animation Type は「Humanoid」を選択、Avatar Definitionを「Create From This Model」を選択後、Apply をクリックして Avatar を作成します。
f:id:aki517:20200325071528p:plain

ただ、私が確認したアニメーションデータのリグは 3DXMax Biped を使って組まれており以下のようなエラーが出てアニメーションが部分的にしか適用されませんでした・・
f:id:aki517:20200325071600p:plain

こんな感じにスカートしか動かないです。。
f:id:aki517:20200325075612g:plain

対処2:AnimationType を Generic にする

対処1が失敗する、またはモデルが人型ではない場合は AnimationType を「Generic」にすると上手くいくことがあります。私のデータはこれで解決しました。あと Avatarが必要無い場合は Avatar Definition を 「No Avatar」にしておくと良いです。
f:id:aki517:20200325071511p:plain

対処3:InspectorのDebugモードから変更する

これはオススメしないのですが、以下のような対処方法もあります。
1. 対象のFBX内のアニメーションデータをコピーして別animファイルとして出力
2. InspectorビューをDebugモードにする
3. 下図のLegacy という項目のチェックを外す
f:id:aki517:20200325071442p:plain

まとめ

個人的には 対処1 か 対処2 が良いなと思いました。どちらも一度作成したAvatarを使えば同じ構成のアニメーションデータに対して以降は下図のように「Copy From Other Avatar」を選択 > 作成したAvatarを適用すれば都度Avatarを作成する必要がないためです。
f:id:aki517:20200325075958p:plain

あとそもそも古いアニメーションデータを使うなよという話ですね ^ ^;
以上、誰に需要があるんだという内容でした。