※このページではアフィリエイト広告を紹介しています

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

unity humanoid リグ3Dモデリング

 

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

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

 

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

VRoid StudioとMake Humanはこちら↓。

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

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

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

■PR■

現在200個以上の新規unityアセットが最大50%オフで買える New Releaseセールをやっているみたいです。

unityアセット New Release割引 最大50%OFF

欲しいアセットはこの機会に買っておくと良いかも。

 
 

 

 

  1. 参考にした頭のいい先輩のページ
  2. メッシュがなくても必須ボーンがあってボーン構成が間違ってなければ、humanoidとして認識されるっぽい?
    1. 具体的な手順
  3. unityに持っていった!…humanoidとして認識された!
  4. 適当にメッシュを配置して、自動でウェイト付けする
    1. アーマチュアをクリックして選択、Shift押しながらメッシュを選択して、 オブジェクト ⇒ ペアレント ⇒ 自動のウェイトで をクリック
    2. ポーズモードにして、ボーンを回転させてみてメッシュが追従するかどうかチェック
      1. ボーンを動かしてもメッシュが追従しない場合、アーマチュアとメッシュの親子関係に注意
  5. unityに持って行ってhumanoidリグ設定。ちゃんと動いてアニメーションさせられた!
  6. 失敗例:最初テキトーに作ったら、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でいけるっぽい?
  7. 補足:blenderのRegifyアドオンを使えばhumanoidボーンのテンプレを使える
    1. ボーンの大きさを調整する必要がある
    2. 自動でウェイト付けしてunityに持って行ってみる
  8. おわりに

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

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

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

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

メッシュがなくても必須ボーンがあってボーン構成が間違ってなければ、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キーで伸ばしていく

blender humanoid リグ

 

2,Chestのテイルを選択して、X軸ミラーをオン。Shift+Eキーで両側にShoulderを伸ばす。そこから左右のUpperArm、LowerArm,Handを伸ばしていく

blender humanoid ボーン

 

3,Hipsのテイルを選択し、Shift+Eキーで左右のUpperLegの伸ばしていく。その後「関係」の接続をオフにして、下に移動させる。UpperLeg,LowerLeg,Footと伸ばしていく。

blender humanoid ボーン

「関係」メニューにある「接続」のチェックを外すと、接続が外れて点線で表示されるようになる。

blender humanoid ボーン

 

ボーンの長さとかは適当に整えれば良し。

blender ボーン humanoid unity

ちょっと足が太すぎるかな?

まぁだいたいで…(;^_^A

unityに持っていった!…humanoidとして認識された!

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

humanoidのリグ設定はOK。

blender ボーン humanoid unity

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

blender ボーン humanoid unity

veryanimationでアニメーション作って動かしてみようかと思ったけど、メッシュがないとボーンの表示もバグるのか?なんかおかしい(-_-;)

blender ボーン humanoid unity

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

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

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

blender ボーン humanoid unity

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

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

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

blender ボーン humanoid unity

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

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

blender ボーン humanoid unity

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

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

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

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

 

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

blender ボーン humanoid unity

 

blender ボーン humanoid unity

注意点として、↑のシーンコレクションの画面でShift押して選択しようとすると、間にあるものまですべてまとめて選択されてしまうっぽい。

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

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

 

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

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

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.79Unity5.6.3p1Blender2.83でUnity向けヒューマノイドをWeightPaintする...
VRoidやMakeHumanもボーン名がだいぶ違うみたいだから、だいたい構造と名前が合ってればhumanoidでいけるっぽい?

ボーン名が指定されてて、完全一致じゃないとunityで認識されない、なんてことはないっぽい?

多分だいたい合ってればunity側で推定して認識してくれるのかな?

 

これがVRoidモデルのボーン。

 

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

Makehumanの使い方②!キモオタっぽいリアルな3Dモデルを作ってみる
バーチャル3Dクリエイター神部まゆみです(*^-^*)前回の続きで、MakeHumanをいじっていきます。前回の記事はこちら。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として認識されたからいいかな(笑)。

 

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

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

おわりに

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

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

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

 

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

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

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

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

 

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


2022/06/22追記:

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

VRChat SDK3.0で自作Quest版Fallbackアバターなどをアップしてみた備忘録
VRChat SDK3.0で自作アバターをアップしてみました。Quest版Fallbackアバターも含めてアップしてみた備忘録。

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


 

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