”Humanoid”設定 体が伸びる時の原因と対処法

propError1

Humanoidは、アニメを流用できる優れもの

Unityのリグ設定に”Humanoid”というものがあります。

Unity ”Humanoid”設定とは、
多少骨が違っていても、同じアニメーションが使えるようになる便利な機能です。
たとえば、大人キャラ用に作ったアニメーションを 子供キャラにも流用することができます。

↓頭身の違う2体に 同じモーションが入った例

Unityデフォルトの”Generic”設定だと、骨の位置や名前 が変わるとアニメーションの流用はできません。
”Humanoid”設定なら、モデルの骨に多少の差異があっても、アニメーションの流用が可能です。

制作の工数を大きく減らすことができるため、ゲーム制作で利用されることがあります。


設定は正しいのにエラーになることがある

”Humanoid”設定には、1つ厄介な点があります。
Unityで正しく設定しているはずなのに、何故かうまく機能しないことがあります。

その時の症状は以下のようなものです。

  • 動くけど、”Humanoid”設定にもかかわらず、再生すると体が伸びる現象が起こる。
  • ↓このような↓エラー文が出ている。

原因はMaya側にあり


このような症状があるときは、Mayaでの作業に原因があります。

たとえばMayaで、
1体目キャラの骨を拡大/縮小して 2体目キャラの骨を作り、それをUnityで使用した場合によく発生する問題です。

スケール値のフリーズやヒストリの削除をしていても起こります。
どうやら、何かの隠しデータを持ったまま出力されるようで、それがUnityでうまく動かない原因になります。

有効な解決策は、Mayaで2体目の骨を新しく作り直すことです。

骨を拡大/縮小して、流用してはいけません。
そうすると、Mayaの隠しゴミが発生し、邪魔をします。


Unityでの確認ポイント

Unity側での”Humanoid”設定 確認ポイントは以下になります。

  1. 骨1つめ 骨2つめ どちらも”Humanoid”設定か
  2. アニメーションも”Humanoid”設定か
  3. 使っているアバターは間違いないか(困ったら「Create From This Model」で良い)
  4. アバター設定に抜けは無いか

骨を作り直したら、このようにうまくいきました。↓

あとがき

“Humanoid なぜかうまくいかない現象”は原因が分かりづらいため、対処が難しいでしょう。
骨を作り直すのは結構な手間だったりしますが、キャラ制作の時にルールを徹底していれば避けられる障害です。
うまく使えれば工数削減の効果は絶大です。
せっかくある機能ですから、利用してラクしましょう。
以上、参考になれば幸いです。