CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Unity】ボーンを設定して動かす方法【Humanoid】

こんにちは!Unityでゲーム開発をしていると、キャラクターにアニメーションを設定するのは必須ですよね。
ですがいざ設定しようとすると、「ボーン」だとか「Humanoid」といった言葉が急に出てきて困惑した経験があります。
そこで本記事ではボーンを設定して動かす方法について解説していきます!
ボーンとは?
ボーンとは3Dモデルを動かすための骨の役割を持った構造のことです。
人型のキャラクターにリアルな動きをさせるために、ボーンを操作してそれに沿って3Dモデルを動かすといった風に使われています。
Unityにおいては人型のキャラクターのボーンを設定する仕組みとして「Humanoid Avatar」という機能が用意されています。

このHumanoid Avatarによって人型のキャラクターのアニメーションを楽に設定する事ができます。
ボーンを設定して動かす方法
ここではボーンを設定して動かす方法について解説していきます。
ボーンを設定するための、人型の3Dモデルのキャラクターをダウンロードしておきましょう。
キャラクターをフリーでダウンロードする方法については下の記事で解説しています。

今回はMixamoからダウンロードできる、こちらの「Remy」というキャラクターを使います。

Humanoid設定をする
キャラクターをUnityにインポートしたら、ボーンをHumanoidに設定しましょう。
キャラクターのインスペクター内、Rig→AnimationTypeからHumanoidを選択し、Applyしましょう。

ボーンを表示する
Humanoidの設定ができたら、3Dモデルについているボーンを表示して確認してみましょう。
先ほどと同じRigのタブの中に「Configuration…」がありますのでクリックします。

するとこのようなボーンの設定画面が表示されます。
右側の人型のアバターに表示されている◎がボーンを表しています。
◎が実践で表示されている箇所は必須のボーン、点線で表示されている箇所は任意で設定するボーンです。
下の画像では正しくボーンが設定されているのでアバターが緑色で表示されていますが

必須の箇所のボーンが設定されていないと下のように赤色で表示されます。
この場合ボーンを追加する必要があります。

ボーンを追加・削除する
ボーンを追加するには、下のように「None(Transform)」となっている箇所をクリックし、3Dモデルの対応する箇所を選択して設定しましょう。
今回はLeftArmが該当する箇所なので、ボーンを追加すると緑で表示されるようになりました。

ボーンの変更を適用するには毎回Applyを押す必要があることも覚えておきましょう。

また、必要のないボーンを削除することもできます。
下のようにボーンが設定されている箇所をクリックし、「None」を選択しApplyすることでボーンが削除できます。

Tポーズになっているか確認する

ボーン表示画面の真ん中には腕を広げた状態のキャラクターが表示されており、この体勢はTポーズと呼ばれています。
Tポーズが正しく設定できていないとアニメーションが上手く動きません。
Tポーズが正しく設定されていると上のようにボーンが緑で表示されます。
正しくTポーズになっていないと、下のように赤い表示で警告が出ます。

この場合下のように手動でボーンの位置や向きを変えて修正するか、

下のようにPoseタブから「Enforce T-pose」で強制的にTポーズにすることもできます。

ボーンの動作を確認する
設定したボーンが正しく動くか動作を確認することができます。
先ほどまではMappingのタブでしたが、Muscles&Settingsから動作が確認できます。

下のようにポーズを変える項目が用意されています。
ここの数値を操作することで自然な動作になっているかを確認することができます。

ボーンを取得して編集する方法
ボーンをスクリプトから取得して、向きを変えたり回転させることができます。
下のようなBoneTestスクリプトを作成します。
using UnityEngine;
public class BoneTest : MonoBehaviour
{
public Animator anim;
Transform rightLowerLeg;
void Start(){
rightLowerLeg = anim.GetBoneTransform(HumanBodyBones.RightLowerLeg);
}
void Update(){
rightLowerLeg.Rotate(new Vector3(0, 0, 1f));
}
}
GetBoneTransformでHumanoidの体のパーツを指定して取得できます。
この場合はRightLowerLeg、右足の膝下を取得しています。
各パーツの名称については下の記事が参考になります。

BoneTestスクリプトをキャラクターに設定し、AnimにキャラクターのAnimatorをセットしましょう。

これでプログラムを実行してみると下のような動きになります。
右足の膝下が毎フレーム回転しているのが分かります。
自然な動きにするには回転の可動域を設定する必要がありそうですね。

ボーンが動かないとき
Humanoidは人型の3Dモデルをアニメーションさせるのに便利ですが、
衣服の一部などにボーンが入っている3Dモデルの場合、Humanoidに設定すると上手くボーンが動かずアニメーションしないことがあるようです。
下のサイトの例では、Animation TypeをHumanoidではなくGenericに設定することで解決していますので、参考にしてみてください。

おすすめアセット
ボーンを揺らせる「Dynamic Bone」

Dynamic Boneはボーンを「揺らす」ことができる超人気アセットです。
髪の毛や尻尾などを揺らす事ができるので、躍動感のある3Dモデルを表現する事ができます。
設定も簡単なので、ボーンを触り慣れていなくても使えるおすすめアセットです!
ボーンの結合ツール「AvatarTools」

AvatarToolsはボーンの結合を簡単に行える無料アセットです。
アバターのモデルと服のモデルとを一つのボーンに結合するといった事ができ、
アバターの着せ替えをしたい時に役立つアセットです。
まとめ
以上、ボーンを設定する方法について解説してきました!
ボーンやHumanoidは最初とっつきにくいですが、人型のキャラクターにアニメーションを設定するためには必要になってきます。
この機会にマスターしておきたいですね!