テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】Animationのカーブ対象とオブジェクト名が不一致でMissingが起こした際に何とかする手軽な方法

f:id:tsubaki_t1:20180207113425j:plain

今回はちょっとしたTipsです。

 

Unityでアニメーションを作成した際、AnimationClipに登録したボーン構造と、GameObjectの名前が一致してない場合、AnimationClipにMissing!と表示され動作しなくなります。

Avaterのようなリターゲットの仕組みを使っているなら兎も角、Unity内で作成したアニメーションは名前(パス)で操作先を取得しているので、こういった事が起こります。

 

どのように起こるのか?

例えば下のような感じです。

Animationで、Boneというオブジェクトを動かしています。

f:id:tsubaki_t1:20180207114617j:plain

何を思ったのか、オブジェクトの名称をGameObjectに変更します。
そうすると名前で解決できなくなるのでMissingになります。

f:id:tsubaki_t1:20180207114704j:plain

こうなるとアニメーションは「GameObject」オブジェクトを動かせません。

 

パスを修正する

パスをエディター機能で修正します。

 

実はパスはクリックして編集が可能みたいです。
下のGifアニメのように、クリックして新しいパスを入力すれば、Missingを解決可能です。

f:id:tsubaki_t1:20180207114749g:plain

 

深いパスでは自動化が必要な事も

少し厄介なのが、この手法では「一つのパスしか修正出来ない」事です。

 この問題は、下の画像のような複数階層のパスを持っている状態で、中間のオブジェクトを変更した際に起こります。

f:id:tsubaki_t1:20180207115424j:plain

 

実はAnimationClipの名前は、下のような階層化している訳ではありません。

・Root

  ・Bone

    ・Cube

実際には下のような構造です。

・Root

・Root/Bone

・Root/Bone/Cube

 その為、Boneオブジェクトの名前をSpine等に変更した場合、中間のSpineオブジェクトの名前を変更するだけでは不十分です。パス全てを変更してやる必要が出てきます。

・Root

・Root/Spine

・Root/Bone/Cube ←上のパスだけ変更してもMissingになる

 f:id:tsubaki_t1:20180207115703j:plain

 

一括で修正する

一括で修正する方法を考えた所、自分でブログに書いてました。

こちらの記事で紹介されているエディター拡張を使用すると、一括でパスを置換できます。

tsubakit1.hateblo.jp

f:id:tsubaki_t1:20180207120230g:plain

 

関連

UnityTipsで紹介された内容からアイディアを得ました。