LoginSignup
1
2

More than 3 years have passed since last update.

[Unity] Humanoid animation をデフォルメキャラに適用する

Last updated at Posted at 2019-12-16

gif_animation_001.gif

Mechanimに対応したモデルはアニメーションをいろいろ流用できて便利ですが、通常の8等身モデル用アニメーションをデフォルメキャラに適用するとどうしても腕が頭や体に埋まりがちです。
そこで、腕のアニメーションを補正して、頭と体に埋まりにくいようにしてみます。
2019-12-16_235206.png

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace Demo
{
    [System.Serializable]
    public class RotationTuner
    {
        public Transform transform = null;
        public Quaternion defaultRotation = Quaternion.identity;
        [Range(0f, 1f)] public float rate = 0.5f;
    }

    public class AnimationTuner : MonoBehaviour
    {
        [SerializeField] RotationTuner[] m_tunerArr = null;
        [SerializeField,Range(0f,1f)] float m_intensity = 1f;

        // Start is called before the first frame update
        void Start()
        {
            for (int i = 0; i < m_tunerArr.Length; ++i)
            {
                m_tunerArr[i].defaultRotation = m_tunerArr[i].transform.localRotation;
            }
        }

        // Update is called once per frame
        void Update()
        {
        }

        void LateUpdate()
        {
            for (int i = 0; i < m_tunerArr.Length; ++i)
            {
                m_tunerArr[i].transform.localRotation = Quaternion.Lerp(m_tunerArr[i].defaultRotation, m_tunerArr[i].transform.localRotation, m_tunerArr[i].rate + (1f- m_tunerArr[i].rate)*(1f-m_intensity));
            }
        }
    }
}

上記のスクリプトをアニメーションのついたモデルにアタッチし、腕(およびアニメーションを補正したい)のTransformおよび補正度合いをセットします。

2019-12-17_011022.png

2019-12-17_011500.png

補正度合いはDefaultRotationと現在のアニメーションのRotationの合成割合です。1に近いほど元のアニメーションに近くなります。
DefaultRotationにはTポーズ等ベースとなるポーズのRotationを入れますが、
入力せず(全て0)にしておけばStart時のポーズを自動的に入力してくれます。

また、Intensityの値をアニメーションに合わせて変更することで、モーションに合わせてさらに細かく制御することも可能です。

動画
関連:アニメーションIKで、(やだ、あの人こっち見てる・・・)にする

この「特定の関節を後から補正する方法」は個人的に比較的よく使用していて、他にも
・Mechanim以外のアニメーションで自然に特定の方向を向かせる
・多関節やしっぽなどを特定の場所に自然に動かす
等にも応用可能です。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2