人型ではないモデルにBoneを入れてUnityでHumanoidにしたい
Mixamoはダメだった
BlenderでBone入れ
BlenderでBoneを追加している
ボーン
アドオンのRigifyを入れて
Shift+AでアーマチュアからBone追加。Human(Meta-Rig)だと複雑すぎるので基本>BasicHumanにした
こんなBone
Sprineが多すぎるので1つ消した。本当はもっとシンプルでいいんだけど、どれくらいまで消していいかよく分からなかった
メッシュと関連付け
あとはメッシュ>Bone選んでペアレント>自動ウェイトでできる・・・
けどボーンを動かすとメッシュが変形してしまう。まあウエイトとはそういうものだけど・・・変形させずに角度だけ動かしたい
あとメッシュが体と頭が親子関係になっているものにBoneを入れたいんだけど、親子関係を保ったままいい感じに動かすにはどうしたらいいのか。親が動いたら子も追従して欲しい
以前受けたBlenderのUdemyで服を体に追従させるときの方法があったから、それをやったけどうまくいかない
ウェイトを使わずにカクカク動かしたい。
チャイルドコンストレイント(だめ)
チャイルドコンストレイントやったら、Blenderではいい感じに動いた。
Sprine5を頭に紐づけて、Sprineを体に紐づけた
でもUnityに読み込まれないのでダメ
(追記)ボーンごとにウエイト計算
今は全てのボーンにメッシュが影響を受けているからややこしい
首のボーンからのみ頭を動かすようにしたい
こちらの方法でやったら、ボーンごとにメッシュの設定できた。
ボーン>メッシュで選んでウエイトモードに行って、Ctrlを押しながらボーンを選べばいい
あとウエイト>全てを正規化にしたらなんかいい感じになった
いい感じに追従するようになった
あと編集モードで頂点を選んで、ボーンのウエイトを個別に変えられる。いらないのは×で消す。
他の頂点まとめてこの値を変えるときは、頂点を選んだ後、一つの頂点だけ2回押す。するとその頂点がアクティブになって、その値が他のに反映される
できた!立方体は動かなくなった!
でもこれだとSpine(ボーンの一番親)を動かしてもついてこなくなるので、Spineだけウエイト1にした。
と思ったら何故かarmも1になってた・・・修正した
Unityへの書き出し
普通にfbxに書き出したけど、Boneの位置や角度がおかしかった
こちらの設定やった
変わったのかは分からない・・・
Unityで設定(Configure)
Humanoidにする
Configureを見る
Configureはうまくいってても、SceneビューでBoneの位置がBlenderで設定したものと違う。
PoseでResetすると正しくなるけど、
腕のないモデルなので腕周りが赤くなる
このままでも進める。
問題1:メッシュとBoneが紐づいていない
チャイルドコンストレイントで紐づけたメッシュとBoneがUnityだと紐づかない
そういうものなのだろうか
そういうものらしい
blenderのコンストレイントをunityのconstraintに変換するのは無理っぽいですね…
— samplegame6 vrc (@samplegame6) 2020年12月11日
一応ImportConstrainという設定はあった。でもだめだったっぽい
しょうがないので、Unity上で直接Sprine4の下にHeadメッシュを置いた
もしくはAnimationRiggingのコンストレインを使って手動で設定してもよさそう
(追記)解決
追記したボーンごとの計算でちゃんとウエイトつけて解決した
問題2:Animation入れると沈む
Animatorを設置していない状態だと、Sprine4などBoneは正しく頭の位置にある。
Boneの親のmetarigのTransform
なのにUnity-chanAnimationのWaitを再生したら、全体的に沈む
最後に
今回はAnimationさせたかったというよりは、Animator.GetBoneTransform.Headしたかっただけなので、あまり問題なさそう
でもせっかくだからちゃんとAnimationさせたいな
あとBlenderでBone入れるとき手動で入れたほうがいいのかな〜