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


手軽にhumanoidモデル作りたいなら↑こういうソフト使うか、或いはboothで出来合いのアバター買っちゃうのが楽でいいかもしれません。
でも自分で一から作ってみると仕組みがわかるし勉強になるので、一から作ってみます。
参考にした頭のいい先輩のページ
とても参考になりました。
ありがとうございます(*^-^*)


メッシュがなくても必須ボーンがあってボーン構成が間違ってなければ、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だとスカートとか髪の毛のボーンとかも設定されてたりするけど、そういうのは基本のボーンを満たしたうえで、必要に応じて追加すればいいかも。
具体的な手順
大きさとかはテキトーです…。
とりあえず構成が合ってれば後で整えればいいのでざっくりと。
1,最初にHipsを作ってテイルを選択し、Spine,Chest,Neck,HeadとEキーで伸ばしていく
2,Chestのテイルを選択して、X軸ミラーをオン。Shift+Eキーで両側にShoulderを伸ばす。そこから左右のUpperArm、LowerArm,Handを伸ばしていく
3,Hipsのテイルを選択し、Shift+Eキーで左右のUpperLegの伸ばしていく。その後「関係」の接続をオフにして、下に移動させる。UpperLeg,LowerLeg,Footと伸ばしていく。
「関係」メニューにある「接続」のチェックを外すと、接続が外れて点線で表示されるようになる。
ボーンの長さとかは適当に整えれば良し。
ちょっと足が太すぎるかな?
まぁだいたいで…(;^_^A
unityに持っていった!…humanoidとして認識された!
fbxエクスポートで、メッシュとアーマチュアだけ選択してエクスポートすればOK。メッシュはないからアーマチュアだけでもいいかも。
humanoidのリグ設定はOK。
でもボーンだけだから何も表示されないですね…。当たり前か。
veryanimationでアニメーション作って動かしてみようかと思ったけど、メッシュがないとボーンの表示もバグるのか?なんかおかしい(-_-;)
まぁ一応認識はされたから、メッシュをつけてみます。
適当にメッシュを配置して、自動でウェイト付けする
ボーンに沿って、UV球やら円柱やらで適当にメッシュを配置して見ました。
バラバラにツギハギしただけなので、Shift押しながらメッシュをまとめて選択して、Ctrl+Jで結合したほうがいいかも。
アーマチュアをクリックして選択、Shift押しながらメッシュを選択して、 オブジェクト ⇒ ペアレント ⇒ 自動のウェイトで をクリック
ちゃんとメッシュの中にボーンが配置されてれば、自動ウェイトでだいたい行けると思います。
ポーズモードにして、ボーンを回転させてみてメッシュが追従するかどうかチェック
ボーンを動かせばちゃんとメッシュも一緒に動いてますね(*^-^*)
ボーンを動かしてもメッシュが追従しない場合、アーマチュアとメッシュの親子関係に注意
ボーンを動かしてもメッシュがついていかない場合、ウェイト付けに失敗している。
アーマチュアをクリックしてからメッシュを選択しないと、メッシュが親になってしまってダメ。
メッシュが親になってると、ポーズモードでボーン動かしてもメッシュが追従しない↓。
アーマチュアを先にクリック⇒Shift押しながらメッシュをクリック⇒自動のウェイトで の順番で、アーマチュアの子にメッシュがくるようにするのが正解↓。
注意点として、↑のシーンコレクションの画面でShift押して選択しようとすると、間にあるものまですべてまとめて選択されてしまうっぽい。
多分「ここからここまでまとめて選択」みたいになっちゃうからだと思うけど、シーンコレクションの配置によっては意図しないオブジェクトまで選択してしまって、ウェイト付けで不具合が出る可能性があるかも。
メイン画面のシーンビュー?でアーマチュアとメッシュをクリックして選択していったほうが確実かもしれない。
あとはボーンとメッシュの位置が離れてたり、形状が複雑な場合は自動ウェイトだとダメかも。
その場合は頂点グループの設定とかやって、自分でウェイト塗らないといけないからめんどくさいです。
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として認識されたからいいかな(笑)。
今回みたいな簡単なモデルなら必須ボーンさえあればいいから、一から単一ボーン組んでやってもいいかも。
一回やっとくと仕組みが分かって勉強になりますからね。
おわりに
結構簡単にhumanoidのモデルを作ってunityに持って行けました。
すごく難しいと思ってたけど、そうでもないっぽい。
あとはいかにメッシュやテクスチャとかを作り込むか?次第かな。
せっかくだから後でVRchatに持って行くところもやってみようかな?( *´艸`)
他人様の作ったアバターしか使ったことがないので、自分で一から作ったアバターをVRChatで使うのは初めてだし…。
VRChat Descripterとかのコンポーネント追加すればなんか行けそうな気もするけど…。
色々他にも設定が必要で大変そうだったら保留にしときますが( ̄▽ ̄;)
まぁもうちょっといじってみます(*^-^*)
2022/06/22追記:
VRChatにアップしてみました。



だいぶ日が空いたけど(;^_^A