バーチャル3Dクリエイター神部まゆみです(*^-^*)
この記事は、blenderでhumanoidリグを組んで、unityに持って行って動かしてみた備忘録です。
私はVRoid StudioやMake Humanとかのソフトでしかhumanoidモデルを作ったことがなかったので、一から作ってみようと思ってやってみました。
VRoid StudioとMake Humanはこちら↓。


手軽にhumanoidモデル作りたいなら↑こういうソフト使うか、或いはboothで出来合いのアバター買っちゃうのが楽でいいかもしれません。
でも自分で一から作ってみると仕組みがわかるし勉強になるので、一から作ってみます。
動作確認した最新バージョンはblender4.5、Unity 6000.0.32ですが、以前blender2.93で同様の手順でできたので、どのバージョンのblenderでもやり方は同じだと思います。
- 参考にした頭のいい先輩のページ
- メッシュがなくても必須ボーンがあってボーン構成が間違ってなければ、humanoidとして認識されるっぽい?
- 具体的な手順
- 失敗例:最初テキトーに作ったら、unityのhumanoidリグ設定でエラーが出た(-_-;)
参考にした頭のいい先輩のページ
とても参考になりました。
ありがとうございます(*^-^*)


メッシュがなくても必須ボーンがあってボーン構成が間違ってなければ、humanoidとして認識されるっぽい?
humanoidとして認識できる最低限の必須ボーンさえ設定してあれば、メッシュがなくてもunityでhumanoidとして認識されるみたいです。
まぁ先輩のページ通り、基本的なボーンだけ設定しておこうかな。
- Head
- Neck
- Chest
- Spine
- Hips
- Shoulder.L
- Shoulder.R
- UpperArm.L
- UpperArm.R
- LowerArm.L
- LowerArm.R
- Hand.L
- Hand.R
- UpperLeg.L
- UpperLeg.R
- LowerLeg.L
- LowerLeg.R
- Foot.L
- Foot.R
このあたり。
このあたりのボーンはだいたいどのモデルでも持ってると思う。
UpperChestとかToesとか、手の指のボーンとかはとりあえず無くても大丈夫っぽい。
VRoidだとスカートとか髪の毛のボーンとかも設定されてたりするけど、そういうのは基本のボーンを満たしたうえで、必要に応じて追加すればいいかも。
具体的な手順
大きさとかはテキトーです…。
とりあえず構成が合ってれば後で整えればいいのでざっくりと。
①HipsからHeadまでを作っていく
追加 ⇒ アーマチュア ⇒ 単一ボーン を追加。
ボーンを選択したまま編集モードにして、ボーンの一番上の丸いやつ(テイルと言うらしい)を選択し、E+Zキーで上にボーンを伸ばしていき5つにする。
追加できたら編集モードのまま、ボーンを一つ一つ選択してリネームしていく。
下からHips,Spine,Chest,Neck,Head になるようにリネームしましょう。
↓これでこんな感じの階層構造ができます。


②X軸ミラーでChestから肩~手を生やしていく
↓のようにリネームしていきます。 . じゃなくても _ でも分かればunityが勝手に推測してくれると思うので大丈夫だと思います。多分w
- Shoulder.L
- Shoulder.R
- UpperArm.L
- UpperArm.R
- LowerArm.L
- LowerArm.R
- Hand.L
- Hand.R
③足のボーンを伸ばしていく
Hipsのテイルを選択し、Shift+Eキーで左右のUpperLegを伸ばしていく。その後「関係」の接続をオフにします。
接続をオフにするとボーンの接続が外れて点線で表示されるようになるので、下に移動させます。UpperLeg,LowerLeg,Footと伸ばしていく。
最初のUpperLegは片方を選択して G X で横に移動、R Y -90 で回転させてSキーでちょっと大きくし、G Zで下に移動させます。
その後UpperLegのテイルを選択して E Z で下に伸ばしていきます。
伸ばした足のボーンは↓のようにリネームすればOK。
- UpperLeg.L
- UpperLeg.R
- LowerLeg.L
- LowerLeg.R
- Foot.L
- Foot.R
あとはFootにちょっと角度を付けます。
Footを選択し R X -70 、3キーで横視点にして G Y で位置を整えます。
もしかしたら90度のほうがいいかな?まぁシンプルなモデルだしあんまり変わらないかなと思います(;^_^A
最終的にこんな感じに。まぁ上半身と下半身の比率は適当に整えてください(;^_^A


④この時点でunityに持っていき、humanoidとして認識されるか確認してみる
fbxエクスポートで、メッシュとアーマチュアだけ選択してエクスポートすればOK。メッシュはないからアーマチュアだけでもいいかも。


↓あとは「すべてFBX」を選ばないとunityに持っていった時にトランスフォーム100倍になってしまうのでそこだけ変えておきます。


↓エクスポートしたFBXモデルをアセットフォルダにD&D、インスペクターでRigをヒューマノイドにして適用すればOK。
一応ヒューマノイドにできたわけだからいけたのかな?
でもボーンだけだから何も表示されないですね…。当たり前か。


veryanimationで表示してみたけど、ちゃんとhumanoidとして認識されてるみたいですね。


まぁこれで認識はされたから、メッシュをつけてみます。
⑤適当にメッシュを配置して、自動でウェイト付けする
ボーンに沿って、UV球やら円柱やらで適当にメッシュを配置して見ました。


本当に適当にやった感じですが一応作業経過はこちら↓
バラバラにツギハギしただけなので、Shift押しながらメッシュをまとめて選択して、Ctrl+Jで結合したほうがいいかも。
一応HeadとBodyに分けておきましたが、まぁシンプルなアバターなのでBodyだけでもいいかも。
アーマチュアをクリックして選択、Shift押しながらメッシュを選択して、 オブジェクト ⇒ 親(ペアレント) ⇒ 自動のウェイトで をクリック
ちゃんとメッシュの中にボーンが配置されてれば、自動ウェイトでだいたい行けると思います。
blenderのバージョンによって親がペアレントになってたりするけど、↓このあたりにあります。


ポーズモードにして、ボーンを回転させてみてメッシュが追従するかどうかチェック
ボーンを動かせばちゃんとメッシュも一緒に動いてますね(*^-^*)
ボーンを動かしてもメッシュが追従しない場合、アーマチュアとメッシュの親子関係に注意
ボーンを動かしてもメッシュがついていかない場合、ウェイト付けに失敗している。
アーマチュアをクリックしてからメッシュを選択しないと、メッシュが親になってしまってダメ。
メッシュが親になってると、ポーズモードでボーン動かしてもメッシュが追従しない↓。


アーマチュアを先にクリック⇒Shift押しながらメッシュをクリック⇒自動のウェイトで の順番で、アーマチュアの子にメッシュがくるようにするのが正解↓。




注意点として、↑のアウトライナーの画面でShift押して選択しようとすると、間にあるものまですべてまとめて選択されてしまうっぽい。
多分「ここからここまでまとめて選択」みたいになっちゃうからだと思うけど、シーンコレクションの配置によっては意図しないオブジェクトまで選択してしまって、ウェイト付けで不具合が出る可能性があるかも。
メイン画面のシーンビュー?でアーマチュアとメッシュをクリックして選択していったほうが確実かもしれない。
あとはボーンとメッシュの位置が離れてたり、形状が複雑な場合は自動ウェイトだとダメかも。
その場合は頂点グループの設定とかやって、自分でウェイト塗らないといけないからめんどくさいです。
⑥最後に一般的なサイズに調整する
現状だと身長が9.36mもあるため、一般的なサイズに調整します。


まぁ150cm~170cmとか、高くても2mくらいの身長にしておけば良いと思います。
オブジェクトモードでAキーを押して全選択、一般的なサイズになるまでSキーで縮小し、位置を調整します。
一応Ctrl+A ⇒ 全トランスフォームを適用しておきます。これやらないとunityに持って行った時にトランスフォームの数値がおかしくなる可能性あった気がする。
⑦unityに持って行ってhumanoidリグ設定。ちゃんと動いてアニメーションさせられた!
リグ設定をして、アニメーターコントローラーを作成。適当なアニメーションファイルをveryanimationで作って動かしてみました。
おお……こんな適当なモデルでもちゃんと動くとは…!


自分が開発したロボットが無事起動したかのような嬉しさ(笑)。
VRoid StudioやMakeHumanなどのソフトでしか作ったことがなかったので、一からhumanoidのモデルを動かせたのはこれが初めてです。
また一つできることが増えたから嬉しい(*^-^*)
同じアニメーターコントローラーとアニメーションファイルを指定すれば、他のhumanoid
キャラも同期して動きます(笑)。


このモデルで作ったhumanoidアニメーションがほかのモデルで動いてるわけだから、ちゃんとhumanoidしてると思う。
ちなみにアニメーションはVeryAnimationっていうMMDっぽい感じでアニメーション作れるアセットで作りました。
Very Animation|Unity Asset Store
あとはメッシュを凝ったり、ボーンを細かく作ってウェイト付けしていけばいいのかな。
VRChatのデフォルメされた簡単な形状のキャラくらいなら作れるかもしれない。
うむ、次回やってみよう( *´艸`)
失敗例:最初テキトーに作ったら、unityのhumanoidリグ設定でエラーが出た(-_-;)
以下は「最初にこうやったら動かなかった」という失敗の記録ですが、後で見返すと参考になるかもしれないから書き残しておきます。
ここまでのやり方で動くはずなので、読み飛ばしても構いません。
ボーンの構造やボーン名をうろ覚えで、適当にHipsから生やしていって闇雲に作ったら、エラーでダメだった。
こんな感じの子ね。


File ‘1’ has an invalid Avatar Rig Configuration. Missing or invalid transform:Required human bone ‘LeftHand’ not found ってエラーが出た
1っていうのはこのモデルのファイル名を適当につけただけです。


こっちには「Erro(s) found while importing rig in this animation file. Open “Import Messages” foldout below for more details」って書いてある。


最初何も見ずに適当に作ったから、ボーンの命名規則と構造が間違ってたことが原因かな?
humanoidがダメでもジェネリックならいける
ジェネリックはhumanoid以外のその他全部みたいなやつだから、ボーンが適当でも受け入れてくれるようです。


でもジェネリックだと、humanoid用のアニメーションを設定しても動きませんでした。当たり前だけど(;^_^A


単にボーンの名前が間違ってたみたいです(;^_^A
こんな単純なことが原因だったとは(-_-;)
ボーンの名前がHips.002みたいなデフォルトの名前になっていて、unity側で見つけられなかったことが原因かな。
上半身だけ名前つけてたみたいだけど、下半身がデフォルトのまま(笑)。


ボーンの名前を先輩のページ通りにやったらちゃんとhumanoidとして認識されました。


VRoidやMakeHumanもボーン名がだいぶ違うみたいだから、だいたい構造と名前が合ってればhumanoidでいけるっぽい?
ボーン名が指定されてて、完全一致じゃないとunityで認識されない、なんてことはないっぽい?
多分だいたい合ってればunity側で推定して認識してくれるのかな?
これがVRoidモデルのボーン。


これはMakeHumanで作ったモデルのボーン。


なんか全然構造が違うけど、必須ボーンがちゃんとあれば大丈夫なのかな?
深く掘って見ていったら、pelvis(骨盤)ってやつの下に足のボーンが、Spine01の下に肩~腕以降のボーンがありました。


こう見るとボーン構造と名前がだいたい合ってれば、unityが推測してhumanoidリグ設定してくれるのかな?
或いはhumanoidのボーン構造にもいくつか種類があって、どれかを満たしていればOKとか?
まぁだいたい合っていれば多分いける気がする。
補足:blenderのRegifyアドオンを使えばhumanoidボーンのテンプレを使える
最初から使ったら勉強にならないから使わなかったけど(;^_^A これが楽かもしれない。
blenderのアドオンでrigって検索すれば出てくるのでチェックすればOK。


そうするとアーマチュア追加のメニューに出てくる「Human(Meta Rig)」ってやつをクリックすればOK。
こんな簡単にhumanoidボーンが作れるとは…。


ただ、なんかボーンがかなり細かく設定されてるみたい。
あっても困らないならそのまま使ってもいいけど…どうだろ。
ボーンの大きさを調整する必要がある
メッシュと合わせないといけないので、大きさを調整する必要があります。
これなら最初にRigfyを追加しておいて、だいたいボーンの大きさを決めて、それに合わせてメッシュを作ったほうがいいかな?


これTポーズにしないといけないのかな?腕のボーンを調整してみる。


↑ではX軸ミラーをオンにして、R Y 30 でY軸で30度回転させて、移動ツール(Gキー)で位置調整したらだいたい丁度よくなった。
自動でウェイト付けしてunityに持って行ってみる
ちょっとズレてるからお腹のあたりのウェイト付けに失敗してるっぽい( ̄▽ ̄;)


まぁ一応設定できたことはできたから、unityに持って行ってみる。
緑の子がそうですが…ウェイト付けに失敗してすごいことになってるけど(;^_^A


でも他の部分はちゃんとウェイト付けできてるっぽい。
一応unityでhumanoidとして認識されたからいいかな(笑)。
今回みたいな簡単なモデルなら必須ボーンさえあればいいから、一から単一ボーン組んでやってもいいかも。
一回やっとくと仕組みが分かって勉強になりますからね。
今回作ったモデルを配布します
まぁ簡単すぎるモデルだからアレだけど、blendファイルとFBXファイルを置いておきます。
https://knb-mayumi.com/wp-content/uploads/2024/09/20240903-humanoid作成-1.zip
特に規約で縛るとかはないので煮るなり焼くなり好きにしてください。
おわりに
結構簡単にhumanoidのモデルを作ってunityに持って行けました。
すごく難しいと思ってたけど、そうでもないっぽい。
あとはいかにメッシュやテクスチャとかを作り込むか?次第かな。
せっかくだから後でVRchatに持って行くところもやってみようかな?( *´艸`)
他人様の作ったアバターしか使ったことがないので、自分で一から作ったアバターをVRChatで使うのは初めてだし…。
VRChat Descripterとかのコンポーネント追加すればなんか行けそうな気もするけど…。
色々他にも設定が必要で大変そうだったら保留にしときますが( ̄▽ ̄;)
まぁもうちょっといじってみます(*^-^*)
追記:
VRChatにアップしてみました。