バーチャル3Dクリエイター神部まゆみです(*^-^*)
この記事は前回の続きで、blenderでベッドを作ってunityに持って行ってみました。
前回までの記事はこちら。


今回はベッドにボーンを組んだりシェイプキー入れて動かせないか?試行錯誤してみました。
unityではジェネリックで動かせるようなので、動いたら面白いかなぁと思って。
試行錯誤しながらやったから、文章がかなりとっちらかってるかも(;^_^A
ベッドにボーンを組んだりできるのか?
これ布団部分にボーン入れたら、布団をめくったりできて良いかなと思ったんだけど(笑)。
まぁウェイト載せれば普通にいけるとは思う。
unityではジェネリックリグで読み込めばいけるはず。
適当にボーンを組んでみる
とりあえず頭側を三つに分かれさせる感じで作れば十分かな?
ボーンは以前何回か組んだから、以前の記事を見ると参考になるかも。


X軸ミラーにして先端を分岐させて、最後に真ん中から伸ばして三股みたいにしてみる。
分かりにくいと思うけどこんな感じに組んでみた。
もっとマシな組み方があると思うけど、どこまでやるべきか…?
シェイプキーは頂点移動だけでもかなり作れそうだし、一応このくらいでいいだろうと思ってこれで行ってみます。
自動でウェイト付けしてみる
オブジェクトモードにして布団を選択 ⇒ Shiftキー押しながらアーマチュアを選択 ⇒ オブジェクト ⇒ ペアレント ⇒ 自動のウェイトで を選ぶ。
被ってて選択しにくいから、一旦マットレスとかは非表示にしておくとやりやすいかも。
ポーズモードにして見てみる!一応動いたっぽい
つられて足側の布団も動いちゃってるけど、一応動きました( *´艸`)
これ一応足側と側面にもボーン伸ばしておくと、良い感じにウェイト載せてくれるかも?
或いは自分でウェイト塗ったほうがいいかもしれない。
布団全体にボーンを組めば、いい感じにウェイト付けできるかな?
概ね布団全体をカバーできるようにボーンを伸ばしてみた。
多分これならそれぞれのボーンにウェイトが分散されて良い感じになるはず。
お、今度はいい感じ。
前回作ったベッドスローが置いてきぼりになってるので、この後ウェイト付け前に戻して、布団とベッドスローをCtrl+Jでオブジェクト結合しました。
unityで使うなら、ポーズモードで動かした状態をシェイプキー化してしまったほうが指定しやすくて楽かな?

条件満たしたら布団がめくれるアニメーションに遷移させればいいし、多分↓の感じのスクリプトでも動かせると思う。

布団が盛り上がるシェイプキーを作ってみる
人物モデルが布団で寝るために、布団が盛り上がる感じのシェイプキーもあるといいかも。
これがないと布団の上に寝る羽目になって寒いし(笑)。
はみ出ないように少し大きめにするか…。
ボーンを組んだので、ポーズモードでボーンを動かした状態をシェイプキーに登録してみます。

私も毎回やり方を忘れるので(笑)、↑の記事を見ながらやります…。
自分用の備忘録を残しておくと便利ですね。
布団が盛り上がるシェイプキーを作る
布団をかぶって人が寝ている感じに使いたい。
ポーズモードでボーンを動かして…。
オブジェクトモードに移行して、布団メッシュを選択 ⇒ モディファイアメニューのアーマチュアの「シェイプキーとして適用」を押せばいいらしい。
やり方忘れてたけど、過去の私はそう書いている(笑)。
ちゃんとシェイプキーとして動作してますね。
名前はとりあえず up にしとく。
ボーンを戻して、メッシュにアーマチュアモディファイアを追加して完了
これをやらないとボーンが動いたまま、ボーンを動かしてもメッシュが追従しない。
ポーズモードでボーンを全選択、Alt+Gでボーン移動を戻す。そして布団メッシュにアーマチュアモディファイアを追加すればOK。
unityで動かしてみる
ちょっとこの状態でunityに持って行ってみます。
問題:スキンメッシュレンダラーにブレンドシェイプの項目がない…
unityに持って行って動作チェック……と思ったらなぜかブレンドシェイプがない(-_-;)
ちなみにblenderのシェイプキー = unityのブレンドシェイプです。念のため。
通常は「範囲」の下あたりにブレンドシェイプの項目があるんだけど…。
解決:モディファイアメニューのコリジョンを消したら動いた
なんかこれ消したらちゃんとブレンドシェイプ表示されました。
これはベッドスローをクロスシミュレーションした時に設定したんだけど、使い終わったモディファイアは適用するか消したほうが良さげ。
コリジョンを消して保存してunityに持っていったらちゃんとブレンドシェイプ使えました。
モディファイアが残っていて変な不具合が出ることは前にもあったかも?
まさかこんなことで…?と思ってコリジョンを追加し直してやり直したら、またブレンドシェイプが出なくなったので間違いなさそう。
こういう細かい点で躓いて、blenderやunityに挫折した人って結構いそう(;^_^A
不具合が出たら一つ一つ条件を変えて、問題を切り分けて特定するしかないですね。
まぁ動いたからいいかな。
足がはみ出ちゃうからボーン動かして調整したほうがいいか…
一応動いたけど足がはみ出ますね( ̄▽ ̄;)
結局ボーンで調整するのがいいかな( ̄▽ ̄;)
ちなみにアニメーション編集に使っているのはVery Animationっていうアセットです。これ便利。
Very Animation|Unity Asset Store
ボーンでやるならもう少しボーン構造を考えたほうがいいかも。
まぁ試作品だからこんなものかな。
或いはメッシュコライダーとRigidbodyとかでやれるのかな?上手く調整しないとズリ落ちていきそうだけど…。
でもそこまでやらなくていいかな。
まぁシェイプキーでやりたいなら複数作っておいて、併用してやるといいかもしれない。
普通にメッシュ動かしてシェイプキー作ったほうがラクかも(;^_^A
普通に移動ツール+プロポーショナル編集で上に動かしたほうがラクかも。
パラメーターは100にする必要はないし、かなり大きめに作っておいて数値を調整すればいいかも。
大きめに作っておけば大きいキャラにも対応できるし。
まぁボーン組んで動かせることは分かったし、ボーンはあって困るものでもないだろう。
うんいい感じかな。
横と足側がはみ出しやすいかもしれない。
そこは別々にシェイプキー作って併用してもいいかも。
調整したら割といい感じに!もうこれでいいか…
布団を盛り上げるシェイプキーと、頭側をめくっていくシェイプキーを作って併用するようにしました。
いける!これで画面の前のあなたとも寝れる!( *´艸`)
シェイプキーを増やしてみる
味を占めた私は、シェイプキーを増やしてみるのであった…。
布団をめくるシェイプキー
ボーンを使って90度上げる、頂点移動で下げるシェイプキーを併用させた。
2つのシェイプキーを使ってめくることになるけど、シェイプキーならパラメーター指定するだけだからラク。
シェイプキーは線形補間なので、こうやって複数併用してアニメーションで自然に見せたほうがいいかも?
シェイプキーは始点から終点の形に一直線で変化するので、動く過程でマットレスを突き抜けたりして変な感じになってしまったので。
片側の布団をめくるシェイプキー
これもシェイプキー併用しないと途中経過ではみ出ちゃうっぽい。
- 上げる
- 移動させる
- 下げる
の三つを併用するといい感じっぽい。
自然な感じに動かすには、上げ50くらいになったフレームで移動シェイプキーを動かしはじめて、移動シェイプキー50くらいになったフレームで下げシェイプキーを動かし始めると、自然でいい感じになるかな?
unityで動作確認してみる
うん、ちゃんと動いてますね。
せっかくだからめくるアニメーションを作ってみるw
アニメーションはVery Animationっていうアセットでサクッと作りました。
Very Animation|Unity Asset Store
ベッドをモデルの子にすれば、モデルのアニメーションファイルでベッドを動かせるっぽい
ベッドを私のモデルにドラッグ&ドロップして、ベッドをモデルの子にしてみる。
これはVeryAnimatonの編集画面だけど、モデルのアニメーションファイル編集画面でベッドのシェイプキーが動かせる。
これならモデルの一つのアニメーションファイルだけで、ベッドと連動してアニメーションが作れますね。
これインスペクター表示非表示のスクリプトを以前動かしたことあるから、色々なオブジェクトをモデルの子にして仕込んでおけば、出し入れして動かせそう。

うん、キャラと連動して動かせた。
アニメーションファイルだけで色々表現したい時は結構使えそう。
【VRあり】せっかくだからwebXRビルドしてVRで見てみる(笑)
特に意味はないけど、せっかくだからVRで見れるようにビルドしてみた。
Oculus Quest2のOculusブラウザとFirefox RealityでVRで見れました。
https://knb-mayumi.com/webgl/bedxr/bedxr/index.html
ちなみにこんな感じ。重かったのでGIFにしたらカクカクになったけど…(;^_^A
でも作ったものを目の前で見れるとモチベーション上がるね(*^-^*)
Oculus Quest2は3万円台で安いし、メタバースに行けるのでオススメです。
Meta Quest 2—完全ワイヤレスのVRヘッドセット【2023/06/03まで「Space Pirate Trainer DX」「GOLF+」無料ダウンロード付】—128GB|Amazon
webXRは以前記事を書いたのでこちらを参照。


続く
ちょっと動かしてみたい程度だったけど、思いのほか長くなってしまった(^_^;)
でもこれで動かせることは分かったから、ベッドに近づいたら自動でめくれるとか、VRコントローラーで触れてトリガーを引いたら布団をめくる…とかもできそう。
判定さえできればアニメーションファイルを切り替えるだけだし。
次はunityでシェーダー設定してみるか…。
もう少しスタンダードシェーダーの勉強をして、いい感じにできるかやってみたい。
最終的に私の部屋を作ってwebXRビルドして、トップページあたりに置いておきたい。
いつ完成するか分からないけど(^_^;)
まぁぼちぼちやってみます(*^-^*)
追記:続きを書きました。
