blenderでボーンを組んで人間モデルを作り、unityでhumanoidリグをインポートした備忘録

unity humanoid リグ 3Dモデリング
※記事内に広告が含まれています。

バーチャル3Dクリエイター神部まゆみです(*^-^*)

この記事は、blenderでhumanoidリグを組んで、unityに持って行って動かしてみた備忘録です。

私はVRoid StudioやMake Humanとかのソフトでしかhumanoidモデルを作ったことがなかったので、一から作ってみようと思ってやってみました。

VRoid StudioとMake Humanはこちら↓。

VRoid Studio
3D創作を誰でも楽しめる世界へ。VRoid Studioは3Dキャラクター制作ソフトウェアです。はじめての人にはかんたんに、慣れた人はよりこだわって、3Dキャラクターを作ることができることができます。
News page has moved | www.makehumancommunity.org

手軽にhumanoidモデル作りたいなら↑こういうソフト使うか、或いはboothで出来合いのアバター買っちゃうのが楽でいいかもしれません。

でも自分で一から作ってみると仕組みがわかるし勉強になるので、一から作ってみます。

動作確認した最新バージョンはblender4.5、Unity 6000.0.32ですが、以前blender2.93で同様の手順でできたので、どのバージョンのblenderでもやり方は同じだと思います。

●PRスペース●

〇まゆみマート|BOOTH

BOOTHでVRoidテクスチャやVRChat向けオブジェクトなどを販売しています。いいねしてくれると励みになります(*^-^*)

  1. 参考にした頭のいい先輩のページ
  2. メッシュがなくても必須ボーンがあってボーン構成が間違ってなければ、humanoidとして認識されるっぽい?
  3. 具体的な手順
    1. ①HipsからHeadまでを作っていく
    2. ②X軸ミラーでChestから肩~手を生やしていく
    3. ③足のボーンを伸ばしていく
    4. ④この時点でunityに持っていき、humanoidとして認識されるか確認してみる
    5. ⑤適当にメッシュを配置して、自動でウェイト付けする
      1. アーマチュアをクリックして選択、Shift押しながらメッシュを選択して、 オブジェクト ⇒ 親(ペアレント) ⇒ 自動のウェイトで をクリック
      2. ポーズモードにして、ボーンを回転させてみてメッシュが追従するかどうかチェック
      3. ボーンを動かしてもメッシュが追従しない場合、アーマチュアとメッシュの親子関係に注意
    6. ⑥最後に一般的なサイズに調整する
    7. ⑦unityに持って行ってhumanoidリグ設定。ちゃんと動いてアニメーションさせられた!
  4. 失敗例:最初テキトーに作ったら、unityのhumanoidリグ設定でエラーが出た(-_-;)
    1. File ‘1’ has an invalid Avatar Rig Configuration. Missing or invalid transform:Required human bone ‘LeftHand’ not found ってエラーが出た
    2. humanoidがダメでもジェネリックならいける
    3. 単にボーンの名前が間違ってたみたいです(;^_^A
        1. VRoidやMakeHumanもボーン名がだいぶ違うみたいだから、だいたい構造と名前が合ってればhumanoidでいけるっぽい?
  5. 補足:blenderのRegifyアドオンを使えばhumanoidボーンのテンプレを使える
    1. ボーンの大きさを調整する必要がある
    2. 自動でウェイト付けしてunityに持って行ってみる
  6. 今回作ったモデルを配布します
  7. おわりに

参考にした頭のいい先輩のページ

とても参考になりました。

ありがとうございます(*^-^*)

BlenderからUnityのHumanoid互換でfbxをエクスポートする - Qiita
BlenderでUnity向けにウェイト付きメッシュを作る方法。 Rigify使わない。 Blender2.79 Unity5.6.3p1 Blender2.83でUnity向けヒューマノイドを Weight Paint する 更新 201...

メッシュがなくても必須ボーンがあってボーン構成が間違ってなければ、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 になるようにリネームしましょう。

↓これでこんな感じの階層構造ができます。

blender モデル humanoid 作り方 unity

②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

blender モデル humanoid 作り方 unity

④この時点でunityに持っていき、humanoidとして認識されるか確認してみる

fbxエクスポートで、メッシュとアーマチュアだけ選択してエクスポートすればOK。メッシュはないからアーマチュアだけでもいいかも。

blender モデル humanoid 作り方 unity

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

blender モデル humanoid 作り方 unity

↓エクスポートしたFBXモデルをアセットフォルダにD&D、インスペクターでRigをヒューマノイドにして適用すればOK。

一応ヒューマノイドにできたわけだからいけたのかな?

でもボーンだけだから何も表示されないですね…。当たり前か。

blender モデル humanoid 作り方 unity

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

blender モデル humanoid 作り方 unity

まぁこれで認識はされたから、メッシュをつけてみます。

⑤適当にメッシュを配置して、自動でウェイト付けする

ボーンに沿って、UV球やら円柱やらで適当にメッシュを配置して見ました。

blender モデル humanoid 作り方 unity

本当に適当にやった感じですが一応作業経過はこちら↓

バラバラにツギハギしただけなので、Shift押しながらメッシュをまとめて選択して、Ctrl+Jで結合したほうがいいかも。

一応HeadとBodyに分けておきましたが、まぁシンプルなアバターなのでBodyだけでもいいかも。

アーマチュアをクリックして選択、Shift押しながらメッシュを選択して、 オブジェクト ⇒ 親(ペアレント) ⇒ 自動のウェイトで をクリック

ちゃんとメッシュの中にボーンが配置されてれば、自動ウェイトでだいたい行けると思います。

blenderのバージョンによって親がペアレントになってたりするけど、↓このあたりにあります。

blender モデル humanoid 作り方 unity

ポーズモードにして、ボーンを回転させてみてメッシュが追従するかどうかチェック

ボーンを動かせばちゃんとメッシュも一緒に動いてますね(*^-^*)

ボーンを動かしてもメッシュが追従しない場合、アーマチュアとメッシュの親子関係に注意

ボーンを動かしてもメッシュがついていかない場合、ウェイト付けに失敗している。

アーマチュアをクリックしてからメッシュを選択しないと、メッシュが親になってしまってダメ。

メッシュが親になってると、ポーズモードでボーン動かしてもメッシュが追従しない↓。

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

blender ボーン humanoid unity

blender ボーン humanoid unity

注意点として、↑のアウトライナーの画面でShift押して選択しようとすると、間にあるものまですべてまとめて選択されてしまうっぽい。

多分「ここからここまでまとめて選択」みたいになっちゃうからだと思うけど、シーンコレクションの配置によっては意図しないオブジェクトまで選択してしまって、ウェイト付けで不具合が出る可能性があるかも。

メイン画面のシーンビュー?でアーマチュアとメッシュをクリックして選択していったほうが確実かもしれない。

あとはボーンとメッシュの位置が離れてたり、形状が複雑な場合は自動ウェイトだとダメかも。

その場合は頂点グループの設定とかやって、自分でウェイト塗らないといけないからめんどくさいです。

⑥最後に一般的なサイズに調整する

現状だと身長が9.36mもあるため、一般的なサイズに調整します。

blender モデル humanoid 作り方 unity

まぁ150cm~170cmとか、高くても2mくらいの身長にしておけば良いと思います。

オブジェクトモードでAキーを押して全選択、一般的なサイズになるまでSキーで縮小し、位置を調整します。

一応Ctrl+A ⇒ 全トランスフォームを適用しておきます。これやらないとunityに持って行った時にトランスフォームの数値がおかしくなる可能性あった気がする。

⑦unityに持って行ってhumanoidリグ設定。ちゃんと動いてアニメーションさせられた!

リグ設定をして、アニメーターコントローラーを作成。適当なアニメーションファイルをveryanimationで作って動かしてみました。

おお……こんな適当なモデルでもちゃんと動くとは…!

blender ボーン humanoid unity

自分が開発したロボットが無事起動したかのような嬉しさ(笑)。

VRoid StudioやMakeHumanなどのソフトでしか作ったことがなかったので、一からhumanoidのモデルを動かせたのはこれが初めてです。

また一つできることが増えたから嬉しい(*^-^*)

同じアニメーターコントローラーとアニメーションファイルを指定すれば、他のhumanoid

キャラも同期して動きます(笑)。

unity humanoid リグ

このモデルで作ったhumanoidアニメーションがほかのモデルで動いてるわけだから、ちゃんとhumanoidしてると思う。

ちなみにアニメーションはVeryAnimationっていうMMDっぽい感じでアニメーション作れるアセットで作りました。

Very Animation|Unity Asset Store

あとはメッシュを凝ったり、ボーンを細かく作ってウェイト付けしていけばいいのかな。

VRChatのデフォルメされた簡単な形状のキャラくらいなら作れるかもしれない。

うむ、次回やってみよう( *´艸`)

失敗例:最初テキトーに作ったら、unityのhumanoidリグ設定でエラーが出た(-_-;)

以下は「最初にこうやったら動かなかった」という失敗の記録ですが、後で見返すと参考になるかもしれないから書き残しておきます。

ここまでのやり方で動くはずなので、読み飛ばしても構いません。

ボーンの構造やボーン名をうろ覚えで、適当にHipsから生やしていって闇雲に作ったら、エラーでダメだった。

こんな感じの子ね。

blender ボーン humanoid unity

File ‘1’ has an invalid Avatar Rig Configuration. Missing or invalid transform:Required human bone ‘LeftHand’ not found ってエラーが出た

1っていうのはこのモデルのファイル名を適当につけただけです。

blender ボーン humanoid unity

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

blender ボーン humanoid unity

最初何も見ずに適当に作ったから、ボーンの命名規則と構造が間違ってたことが原因かな?

humanoidがダメでもジェネリックならいける

ジェネリックはhumanoid以外のその他全部みたいなやつだから、ボーンが適当でも受け入れてくれるようです。

blender ボーン humanoid unity

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

unity generic リグ

単にボーンの名前が間違ってたみたいです(;^_^A

こんな単純なことが原因だったとは(-_-;)

ボーンの名前がHips.002みたいなデフォルトの名前になっていて、unity側で見つけられなかったことが原因かな。

上半身だけ名前つけてたみたいだけど、下半身がデフォルトのまま(笑)。

blender ボーン humanoid unity

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

BlenderからUnityのHumanoid互換でfbxをエクスポートする - Qiita
BlenderでUnity向けにウェイト付きメッシュを作る方法。 Rigify使わない。 Blender2.79 Unity5.6.3p1 Blender2.83でUnity向けヒューマノイドを Weight Paint する 更新 201...
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を追加しておいて、だいたいボーンの大きさを決めて、それに合わせてメッシュを作ったほうがいいかな?

blender regify

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

blender regify

↑ではX軸ミラーをオンにして、R Y 30 でY軸で30度回転させて、移動ツール(Gキー)で位置調整したらだいたい丁度よくなった。

自動でウェイト付けしてunityに持って行ってみる

ちょっとズレてるからお腹のあたりのウェイト付けに失敗してるっぽい( ̄▽ ̄;)

blender regify

まぁ一応設定できたことはできたから、unityに持って行ってみる。

緑の子がそうですが…ウェイト付けに失敗してすごいことになってるけど(;^_^A

unity humanoid regify

でも他の部分はちゃんとウェイト付けできてるっぽい。

一応unityでhumanoidとして認識されたからいいかな(笑)。

今回みたいな簡単なモデルなら必須ボーンさえあればいいから、一から単一ボーン組んでやってもいいかも。

一回やっとくと仕組みが分かって勉強になりますからね。

今回作ったモデルを配布します

まぁ簡単すぎるモデルだからアレだけど、blendファイルとFBXファイルを置いておきます。

https://knb-mayumi.com/wp-content/uploads/2024/09/20240903-humanoid作成-1.zip

特に規約で縛るとかはないので煮るなり焼くなり好きにしてください。

おわりに

結構簡単にhumanoidのモデルを作ってunityに持って行けました。

すごく難しいと思ってたけど、そうでもないっぽい。

あとはいかにメッシュやテクスチャとかを作り込むか?次第かな。

せっかくだから後でVRchatに持って行くところもやってみようかな?( *´艸`)

他人様の作ったアバターしか使ったことがないので、自分で一から作ったアバターをVRChatで使うのは初めてだし…。

VRChat Descripterとかのコンポーネント追加すればなんか行けそうな気もするけど…。

色々他にも設定が必要で大変そうだったら保留にしときますが( ̄▽ ̄;)

まぁもうちょっといじってみます(*^-^*)


追記:

VRChatにアップしてみました。


タイトルとURLをコピーしました