バッテラが如く

プログラミングしましょ!

【Unity】キャラクター(ヒューマノイド)にモーションをつけるまでやってみた

この記事の情報は次のバージョンで動作確認しています。

  • MacOS Monterey (12.1)
  • Unity (2021.3.2f1)
  • Unity

    はじめに

    どうも、バッテラです。

    これまで3Dに対して苦手意識があり避けていたのですが、そろそろ腰を据えて向き合う時かなと思いましたので、人体モデルに走るモーションをつけるまでを学習しましたので手順を共有したいと思います。

    キャラクターをダウンロードする

    AssetStoreにあるモデルを使うと何もせずに終わってしまい学習にならないので、それ以外で確保していきます。

    とりあえず人型モデルであればなんでもいいです。

    なので今回はTurboSquidというサイトから3Dキャラクターをダウンロードしてみます。

    TurboSquidについては以下の記事で解説しています。

    www.m2game.net

    たぶん人型であろうこのキャラクターをダウンロードしてみます。

    このサイトでダウンロードできるFBXファイルにはテクスチャが含まれていないので、FBXとは別にテクスチャファイルもダウンロードする必要があります。

    基本的にはFBXとテクスチャは2つを1セットとして覚えておきましょう!

    キャラクターをUnityにインポートする

    それでは入手したモデルとテクスチャをUnityに取り込みましょう。

    FBXとテクスチャをUnityにドラッグ&ドロップでインポートするだけです。

    こっからが結構重要です!

    記事の後半で実装するモーション(アニメーション)でHumanoidAvatarが必要になってきます。

    HumanoidAvatarについては以下で解説しています。

    www.m2game.net

    ということでHumanoidAvatarを作っていきます。

    リギングしてHumanoidAvatarを作る

    FBXファイルを選択し「Rig」タブを開きましょう。

    [Animation Type]GenericになっているのでHumanoidに変更しApplyをクリック。

    そうするとこのような緑の人型のアイコンが表示されますがこれがHumanoidAvatarです。

    これでモデルのヒューマノイド設定は完了です。

    モデルに含まれるモーションを使わない

    モデルによってはメッシュに加えてモーションデータも含まれてることがあります。サンプル用とかね。

    今回はモーションは別で用意したものを使うので不要ですが、Unityでは自動でモーションをインポートするようになってしまっているので使用しないのであればインポートしないようにしましょう。
    ※不要にインポートしてエラーになることがたまにありますので・・・

    インポートをオフするには、

    FBXファイルを選択し「Animation」タブを開き[Import Animation]のチェックを外しApplyをしましょう。

    マテリアルの調整

    キャラモデルのFBXであれば大体マテリアルもセットで含まれていると思います。デフォルトではFBX内にあるマテリアルを使うようになっています。

    しかし、このように正しく表示されない部位もあったります。

    原因としてはBlenderなどのモデリングソフトで作ったマテリアル情報を全部Unityに引き継ぐことができないからです。

    このモデルはBlenderファイルも存在していたので確認してみると、テクスチャの[ブレンドモード][アルファクリップ]になっていました。

    しかし、インポートした時のマテリアルには Standard のシェーダーが割り当てられています。

    Blenderでいうブレンドモードに相当するRenderingModeOpaqueに固定されています。ちなみにOpaqueは不透明(アルファなし)という意味です。

    正しく表示するにはRenderingModeCutoffにしないといけません。

    モデルに内包されているマテリアルを書きかえたい場合は以下の記事を参考にしてね。

    www.m2game.net

    モーションをダウンロード

    mixamoというモーションを配布しているサービスがあるのでそちらを使っていこうと思います。

    www.mixamo.com

    AdobeIDがあれば全て無料で使うことができます。

    mixamoでモーションを探す

    モデルとモーションの2種類ダウンロードできますが、今回モーションだけを使っていきます。

    モーションはAnimationsタブにあります。

    画面左側にはこのようにモーションのサンプルが表示されます。

    キーワードで検索もできるので欲しいモーション名を入れると見つけやすくなります。

    mixamoでモーションをダウンロードする

    好きなモーションが見つかったらサムネをクリックして右画面を確認します。

    スライダーをいじるとアニメーションの調整ができます。この辺は本筋と関係ないのでまたの別の機会に解説します。

    最後にダウンロードする方法についてです。

    Downloadをクリックすると設定画面が表示されます。

    使用環境によってここを調整する必要があるようです。Unityで使う場合は以下のようにしてください。

    Formatは 「FBX for Unity(.fbx)」

    Skinは「With Skin」 を選びます。

    他はそのままでいいと思います。

    設定を変えたらDownloadをクリックします。これでダウンロードができます。

    モーションをUnityにインポート

    モーションのFBXファイルをAssetsにドラッグアンドドロップします。

    モデルと同じように Animation TypeHumanoid に変更します。

    FBXファイルの矢印をクリックするとモーションが入ってるのが分かります。

    キャラクターにモーションをセットする

    AnimatorControllerを作る

    モーション単体では動作はしないのでAnimatorControllerが必要となります。

    CreateメニューからAnimatorControllerを作ります。

    ファイルをダブルクリックすると専用エディタが表示されます。

    ここでモーションを登録していきます。

    モーションをドラッグアンドドロップすることで簡単に登録できます。

    キャラにAnimatorをアタッチ

    キャラクターのゲームオブジェクトにAnimatorControllerドラッグ&ドロップします。

    そうすると自動でAnimatorというコンポーネントがアタッチされます。

    AnimatorAnimatorControllerはセットで使うものだと覚えておきましょう。

    そしてAvatarにキャラモデルのHumanoidAvatarをセットします。

    これで再生してみると・・・

    一瞬で止まりましたね。。

    mixamoのプレビューだと歩き続けていましたがインポートするとショット(単発)になってますね。

    歩くとか走るといったモーションは基本ループして使うと思いますよね?

    ループにするには、モーションの[Animation]タブを開きます。

    そして [Loop Time] にチェックを入れます。 Applyを押して反映します。

    これで実行してみると・・・

    おぉー、いい感じに歩くモーションがつけられましたね。

    これで完成です。お疲れ様でした〜。