渋谷ほととぎす通信

エンジニア社長によるUnityとAIのブログ & エンジニアの生存戦略

【Unity】Humanoidでアニメーションを使い回せる?

【Unity】Humanoidでアニメーションを使い回せる?

こんにちは、Unityエンジニアのオオバです。

お悩みさん
お悩みさん
  • 複数キャラで同じアニメーションを使いまわしたい
  • HumanoidとGenericの違いって何?
  • オオバ
    オオバ
    本記事ではこれらの悩みを解決します。

    Unityでキャラクターをアニメーションさせる時、 同じAnimationClipを使いまわしたい って思ったことはありませんか?試しに他のキャラクターに同じAnimationClipを適用したら動かなくなった。。。という経験もあるかもしれません。

    実はUnityにはAnimationClipを使い回すための仕組みが用意されています。

    それが 「Humanoid Avatar」 です。

    Humanoid Avatarを使うと 1つのAnimationClipを複数のキャラクターで再生させることが可能 になります。

    そこで本記事ではHumanoid Avatarを使ってAnimationClipを使い回す方法を解説していきます。

    1つのAnimationClipをいろんなキャラで使ってみたい方はぜひ最後まで読んでみてください。

    HumanoidAvatarを使うとAnimationClipを使い回せる

    はじめに結論を簡単にまとめます。

    HumanoidAvatarを使うとAnimationClipを使い回せる

    ①Humanoid AvatarはUnityが用意したアバターシステム

    ②複数のキャラに対して同じAnimationClipを適用可能

    ③AnimationClipを使い回せて大幅なコストカットできる

    ④自然なアニメーションブレンドが可能

    Humanoid Avatarを使うことでAnimationClipを使い回せます。

    特に3Dキャラを使ったゲーム開発は 予算が問題 になります。クオリティを求めれば求めるほどお金のかかる世界です。アニメーションデータも例外ではありません。

    しかしHumanoid Avatarを使うことで作成個数を減らし コストカット できるかもしれません。

    ぜひ本記事を参考にHumanoid Avatarの使い方を覚えてみましょう。

    👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!

    GenericとHumanoidの違い

    具体的なHumanoid Avatarの解説の前に、Unityが提供する「Generic」と「Humanoid」という2つのアニメーションシステムについて理解を深めておきましょう。

    両者の違いは AnimationClipの再生ターゲット です。

    Genericは一般的なアニメーションシステムで、GameObjectの階層と名前が再生ターゲットです。つまりGameObjectの階層構造通りのAnimationClipを用意する必要があるのです。

    【Unity】Humanoidでアニメーションを使い回せる?_0
    ↑上図はGenericのAnimationClipです。ご覧の通りGameObjectの階層と名前がAnimationClipのターゲットになっています。

    一方Humanoidの再生ターゲットはGameObject名ではありません。Unity側が定義するターゲットが再生ターゲットなのです。
    【Unity】Humanoidでアニメーションを使い回せる?_1
    ↑上図はHumanoidのAnimationClipです。Genericと比べて階層が存在しません。またGameObject名も無視されていることがわかります。

    このようにGenericとHumanoidは全くの別物です。GenericとHumanoidのAnimationClipは使い回すことはできないことに注意しましょう。

    ゲーム開発を始める際にHumanoidを使うのかGenericを使うのか決めておくことをオススメします。

    HumanoidAvatar(ヒューマノイドアバター)とは?

    では本題のHumanoid Avatarとは何か解説していきます。Humanoid AvatarとはUnityが用意したアバターシステムです。アバターとはキャラクターのこと。つまりHumanoidAvatarは人型専用のシステムを指します。

    アバターにはボーンが組み込まれていて、ボーンを動かすことでアバターはアニメーションする仕組みです。

    そして 人型のボーン構造は基本的に同じ であるためUnityは人型キャラクターに対してHumanoid Avatarという特別な仕組みを提供しているのです。

    例えばUnityが無償提供しているUnityちゃんを確認してみましょう。
    【Unity】Humanoidでアニメーションを使い回せる?_2
    UnityちゃんのFBXファイルの Inspector > Configureボタン をクリックしてください。

    【Unity】Humanoidでアニメーションを使い回せる?_3
    するとこのような画面が表示されます。

    ターゲット先とターゲット元を紐づけることができます。この仕組みによって、ボーン名が異なっていてもターゲットさえ設定できていれば同じAnimationClipが再生できるということです。

    【Unity】Humanoidでアニメーションを使い回せる?_4
    2つの別のアセットを比べてみました。ターゲット元(ボーン名)がそれぞれ異なっていますがHumanoid Avatar側のターゲットと紐づけています。

    【Unity】Humanoidでアニメーションを使い回せる?_5
    ↑上の動画のように1つのアニメーションを両方のモデルで再生できていることがわかります。

    Humanoid Avatarのメリット

    Humanoid Avatarを使うメリットは多いです。

    1. 異なるキャラクターに同じアニメーションの適用
    2. アニメーションブレンドの利用
    3. IKが標準搭載

    メリット1.異なるキャラクターに同じアニメーションの適用

    HumanoidAvatarを使うと異なるキャラクターに対して同じアニメーション(AnimationClip)を適用できます。

    ↑こちらのポストのようにさまざまなキャラに対して同じアニメーションを適用することが可能です。

    同じアニメーションを適用することで ゲーム開発の大きなコストカット にも繋がります。

    身長差があってもアニメーションを使い回せるのは大きなメリットです。また先のポスト内のサンプル動画では、それぞれ作成者の異なるキャラクターアセットを複数組み合わせて使用しています。

    Humanoid Avatarを使うことで同じアニメーションを使い回せるため開発の幅が大きく広がりますね。

    メリット2.アニメーションブレンドの利用

    Humanoid Avatarのメリット2つ目はアニメーション同士のブレンドがより自然になることです。

    例えば歩きから走り出す、走った後攻撃するなど、アバターは複数のアニメーションがつながることが多いです。

    これらのアニメーションをブレンドすることで自然な動作に仕上げることができます。もちろんGenericでもアニメーションブレンドは可能ですが、Humanoid Avatarの方が より自然なアニメーションブレンド ができます。

    メリット3.IKが標準搭載

    Humanoid Avatarのメリット3つ目はIKが利用できることです。IK(アイケー)とはインバースキネマティクスの略でボーン制御方法の名称です。

    お悩みさん
    お悩みさん
    IKと言われてもよくわからない

    IKは一言で表すと「先端を動かす」です。

    例えば腕、肘、手の中で先端の「手」を動かすことで肘、肩の座標と角度が自動で計算されてアニメーションします。

    Humanoid Avatarの使い方

    具体的なHumanoid Avatarの使い方を解説していきます。Humanoidはインポートしたファイル設定で行います。

    MayaやBlenderといった3D作成ツールから書き出されたFBXを用意してください。

    FBXをUnityにインポートすると、Inspectorウィンドウ上でAnimationTypeを指定できます。
    【Unity】Humanoidでアニメーションを使い回せる?_6
    FBXファイルInspectorウィンドウ内の Rig タブをクリック。すると AnimationType プルダウンから「Humanoid」を選択可能です。

    必ずここがHumanoidであることに注意してください。

    Unity Asset Storeの人型アバターは基本的にHumanoid設定

    お悩みさん
    お悩みさん
    AssetStoreで購入したアバターにいろんなモーションを適用したいけどできるかな?

    せっかくUnity Asset Storeでキャラクターモデルのアセットを購入してもモーションが適用できないと意味がありません。

    そこでオオバが過去にUnity Asset Store 購入してきた人型アバターが1つのモーションで動作するのか検証してみました。

    結論、Unity Asset Storeで購入したアバターたちはHumanoidで作られており、1つのモーションを使い回すことができました。

    とはいえ実際に見てみないとわからないと思うので、動画撮影したものを紹介していきます。

    KAWAII ANIMATIONS 100

    ↑今回使用するモーションは過去Unity Asset Storeで購入したKAWAII ANIMATIONS 100の中に収録されている歩行モーションです。

    【Unity】Humanoidでアニメーションを使い回せる?_7

    この歩行モーションを複数のアバターアセットに対して適用してみたいと思います。

    Humanoid 3D Charactor_P07_ver.3.0_Coco

    まずはHumanoid 3D Charactor_P07_ver.3.0_Cocoのアバターを使ってモーションを再生させてみます。

    【Unity】Humanoidでアニメーションを使い回せる?_8


    Anime Girls Pack

    次にAnime Girls Packを使ってみます。

    【Unity】Humanoidでアニメーションを使い回せる?_9


    Ultimate Hypercasual Characters (43 BodyTypes)

    次にハイパーカジュアルゲームで使われてそうなキャラアセットUltimate Hypercasual Characters (43 BodyTypes)を使ってみます。

    【Unity】Humanoidでアニメーションを使い回せる?_10

    POLYGON Fantasy Characters - Low Poly 3D Art by Synty

    ローポリキャラのPOLYGON Fantasy Characters - Low Poly 3D Art by Syntyです。

    【Unity】Humanoidでアニメーションを使い回せる?_11


    等身の高いUnityちゃん、3等身のSD Unityちゃん、身長差があっても同じアニメーションを再生できてしまいます。

    【Unity】Humanoidでアニメーションを使い回せる?_12

    このようにUnity Asset Storeで購入したアバターはHumanoid Avatarであるため、モーションはさまざまなキャラクターで使いまわせそうです。

    みなさんもぜひ手持ちのアバターとモーションを組み合わせて動かしてみましょう。

    KAWAII ANIMATIONS 100
    詳しくはこちら
    KAWAII ANIMATIONS 100

    また今回使用した再生モーションKAWAII ANIMATIONS 100には大量の女の子の仕草アニメーションが大量に格納されていてオススメです。オオバもよく使っています。

    Humanoidが適用できない条件

    ここでHumanoidが使用できない条件について解説しておきます。人型だからHumanoidを使えるということで、千手観音でもHumanoidが使える?と思われがちですが使用できません。

    あくまで手足が2本ずつの人型モデルにしか提供できない点に注意してください。

    【Unity】Humanoidでアニメーションを使い回せる?_13

    もちろん魚や4足歩行の動物(上図の象など)もGenericを使用する必要があります。

    Animancerを使ってAnimationClip確認を効率化

    お悩みさん
    お悩みさん
    AnimationClipの確認が面倒くさい...

    AnimationClipを使い回せて便利だけど、AnimationClipを確認するまでに以下の手順を踏む必要があり面倒くさいですよね。

    1. AnimatorControllerの作成
    2. ステート作成
    3. ステートにAnimationClipをセット
    4. AnimatorControllerをAnimatorにセット

    そこで便利なのがAnimancerです。

    Animancer

    Animancerは数行のコードでAnimationClipを簡単に再生できるアセットです。その他に旧来のAnimatorの課題を解決しています。

    Animancerを使うと次の2ステップでサクッとAnimationClipの再生確認ができます。

    【Unity】Humanoidでアニメーションを使い回せる?_14

    1. AnimancerComponentをセット
    2. AnimationClipをセット

    Animancerは以下の数行のコードでAnimatorと連携してAnimationClipを再生できます。

    public class PlayAnimationOnEnable : MonoBehaviour  
    {
        [SerializeField] private AnimancerComponent _Animancer;  
        [SerializeField] private AnimationClip _Animation;  
    
        protected virtual void OnEnable()  
        {
            _Animancer.Play(_Animation);  
        }
    }
    

    すると以下のようにHumanoid AvatarでAnimationClipを簡単に確認できます。

    【Unity】Humanoidでアニメーションを使い回せる?_15

    Animancerはお試し用のLite版もあるため興味ある方は触ってみてください。

    ※ただしビルドしたアプリ上では使用できないため注意

    Animancer Lite
    詳しくはこちら
    Animancer Lite

    Animancerは内部実装にPlayableAPIを使用していてAnimatorControllerを使わずAnimationClipを再生できます。

    またPlayable APIはアニメーションに限らずはさまざまな場面で活用可能で便利です。ぜひ一度自分で簡単な処理をPlayable APIで作ってみることをオススメします。ゲーム開発の幅が広がるでしょう。

    初心者向けのPlayable API入門記事を執筆しているので、ぜひ読んでみてください。

    まとめ

    本記事ではUnityが提供する人型アニメーションの仕組みHumanoid Avatarについて解説してきました。Humanoid Avatarを使うと 1つのAnimationClipを複数のモデルで使い回せてとても便利 だということがわかりました。

    人型から外れたモデルには適用できないため、従来のGenericを選択する必要があります。しかし人型モデルを使用する場合は積極的にHumanoid Avatarを採用した方が良いことが多いです。

    もしこれから3Dキャラを使ったゲームを作る場合、 人型ならHumanoid Avatarを選択することをオススメ します。

    この記事があなたのゲーム開発の役に立ったら嬉しいです。

    ちなみに今回背景として使用したのはJapanese School Gymnasiumです。

    Japanese School Gymnasium
    Japanese School Gymnasiumは日本の学校の体育館を精密に再現した3Dモデルアセットです。

    Unityエディタから懐かしさが漂ってくる味わいのあるアセットです。興味ある方はチェックしてみてください。

    Japanese School Gymnasium
    詳しくはこちら
    Japanese School Gymnasium
    記事内で使用したアセット
    オススメ記事
    検証環境
    • Unity6000.0.32f1
    参考サイト