見出し画像

VRChatアバター改変:非専用お洋服の着せ替え方法

※この記事は私がBOOTHで販売しているアバター「U10」ちゃん用に作った振袖( https://kindergarten21.booth.pm/items/1747550 )を他の子にも着せるための方法を解説しています。振袖の取扱説明書を兼ねていますが、一般的なUnity上のみで着せ替えるやり方の参考になると思います。

今回は私火事屋がBOOTHで販売している振袖を素材として、U10ちゃん以外のアバターに着せ替える方法を解説します。U10ちゃんユーザーさんの場合はおまけのデフォルト頭部が入っておりますのでそちらに普段お使いのテクスチャを適応するか、こちらの頭部移植を参考にしてください→ https://note.com/kaziya21/n/n79dd8ad69f3c

手順としては、服とアバターのサイズ合わせ→はみ出しそうな部分のメッシュを削除する→アバターのボーンに服のボーンを入れ子する→完成、という流れです。

※なお、「ミーシェちゃん」「幽狐さん https://booth.pm/ja/items/1484117 」「キッシュちゃん https://booth.pm/ja/items/954376 」の3体に関しては振袖のパッケージの中におまけとしてそれぞれに合わせてサイズ調整済みのプレハブが入れてありますので、途中のサイズ調整の操作(工程1〜2)を飛ばして着せ替えが可能です。また3のメッシュ削除についてもツールで使える削除用のマスクを同梱してあります。「ますきゃっと https://booth.pm/ja/items/1216498 」用も入れてあるのですが体型がかなり違うのと素体が存在しないタイプの子なので本当におまけです…。

1:まずは大まかな位置合わせをします。

画像1

まずHierarchie上に着せ替えと、アバターを配置します。今回は火事屋作の振袖(左)を、ぽんでろ様作のミーシェちゃん(右)に着せていきます。(画像は見やすいように並べて配置していますが実際には重ねて作業することになります。

オリジナル3Dモデル「ミーシェ」ver1.02 | ポンデロニウム研究所 https://booth.pm/ja/items/1256087

とりあえず見やすいようにお互いの使わない部分を非表示にします。振袖側はおまけで付いている頭と髪の毛、ミーシェちゃんの方は服などが要らないので非表示にします(削除は最後に行います。

画像2

この時、服として使いたい側にアバターとしてアップする時に使うコンポーネント「VRC_Avatar Descriptor」「Pipleline Manager」の2つが付いていると悪さをする可能性があるのでついでに削除しておきます⇩

スクリーンショット 2019-12-29 01.52.08

(今回の場合は「U10F_ver.1.0 (1)」をクリックしてinspectorタブに表示されるものを確認/振袖に着せ替え用として入れてあるプレハブは最初から削除してあります)

まずはざっくりと重ねて、身長差を埋めていきます。肩の高さを合わせることを最優先にすると良いです。もし体格差が大きく肩を合わせると腰が全く合わないという場合は腰を基準に合わせて後のボーン調整でお腹のボーン(spine)より上を伸ばすことで肩を合わせたほうがいいかもしれません。

今回は服をアバターに合わせていきますので、アバター(ミーシェちゃん)の方は一切いじらず、服の方のみを編集していきます。服の全体のサイズを調整していく場合、いじるのは着せ替えの一番上(今回は「U10F_ver.1.0 (1)」)の部分の「拡大縮小」と「位置」です。

スクリーンショット 2019-12-26 19.11.36

全体の雰囲気を見ながら調整していきます。
今回の振袖は素体が入っていますので、振袖部分を表示させた状態で雰囲気を確認しつつ、振袖を非表示にして振袖の素体とミーシェちゃんの素体を合わせるとやりやすいと思います。

2スクリーンショット 2019-12-26 19.11.36

この段階で予想がつきますが、大きく体型の違う服とアバターを合わせることは難しいです。また、今回の振袖のようなゆったりとゆとりのある服の方が着せ替えはしやすくなります。

2:細かい部分を合わせていきます。

服とアバターのスケールを合わせたら、今度は細かい部分を調整していきます。今回は服にも素体が存在しているので、服の素体とアバターの素体を合わせて行けば大体うまくいきます(素体がない場合も細かい関節の位置などが分かりづらいというだけで同様の作業になります)

なお一般的なhumanoid形式のアバターは以下のようなボーンの流れと名称になっていますので、操作するべきボーンを探す時の参考にしてください。大体の場合似たような名前が付けられているはずです。

全体(armature)
 └腰(Hips)
   ├腹(Spine)
   │ └胸(Chest)
   │  ├首(Neck)
   │  │ └頭(Head)
   │  │   └両目(LeftEye/RightEye)
   │  └肩(Shoulder)
   │    └上腕(UpperArm)→下腕(LowArm)→手(Hand)
   └膝上(UpperLeg)→膝下(LowLeg)→足首(Foot)→つまさき(Toes)

この細かい調整は、主に服のボーンの「回転」と「拡大縮小」を操作することで行います。操作はこの二種類に絞って行った方が綺麗な仕上がりになります。

服の素体に対してミーシェちゃんの方が胸部が前に出ているので…

画像5

今回はまず服のHipsを回転させ、その後Chestを回転させるという方法で合わせました。

画像6

画像7

次に、今度は足を合わせていきます。
すべて同じように、該当のボーンを選んで「回転」と「拡大縮小」で位置を合わせていきます(ここでは大きさの差異はそれほどないので「回転」のみで作業しています)

画像8

画像9

画像10

画像11

両足共に作業していきます。まだつま先がはみ出していますがここでは気にしなくてOKです。ちなみに服とアバターの足の長さが全然違った場合には、以降で説明している手の長さを調整する方法を参考にしてください。

次に、着せ替えに靴がある場合はそちらとの位置合わせも必要です。今回は足袋と草履を履きますので、それと位置合わせをしていきます(見づらいので服の素体は非表示にしました。

画像12

足袋と草履を表示させてみると、足首の位置が全然合っていないのでこれを修正します。

画像13

画像14

画像15

あとでメッシュ削除を行いますので、靴系のパーツ関しては靴と足首の接地部分があっていればOKです!

もし足の調整を行った結果足裏と床の設置角度がずれて気になる場合は足首のボーンの角度を変更してください。

画像18

次は腕の位置合わせを行います。
腕は回転角度は合っているが長さが違う、という状態ですので、上腕のボーンを選んで「拡大縮小」モードにし、出てくるマニピュレーターの3色のうちの1色のみをつかんで操作するという方法で腕を太らせずに長さだけを変更していきます。

画像16

左右ともに行います。この時に服とアバターのひじの位置を合わせておくと仕上がりが綺麗になるので、お互いのボーンを曲げたりして位置の確認をした上で合わせておくと良いです。

画像17

胴/足/腕すべての調整が終わったので、ボーン修正による作業はこれで完成です。ですが…

画像19

おなかのメッシュがはみ出してる。

メッシュのはみ出しはボーン修正でカバーするのはかなり大変なので、潔く「はみ出す部分は消す!」という方法で解決していきます。

3:はみ出しそうなメッシュを削除する

ボーン修正で解決できなかった部分を解決していきます。

有志の方が配布してくださっている便利すぎるUnityのツールを使っていきます。今回は2種類のツールを紹介します(インストール手順は各ツール作者様のテキストをご確認ください。

まずはkiri様の「MeshSplitter」https://booth.pm/ja/items/1633965
マテリアルごとにメッシュを分割したり、指定した平面で上下に分割するといったような操作が可能です。

画像20

今回のミーシェちゃんでは使わないのですが、ますきゃっとのような全身がひとまとめになってしまっているようなタイプの子の場合大変便利ですのでぜひ導入してみてください。

もう一つが、今回メインで使うがとーしょこら様の「MeshDeleterWithTexture beta」https://booth.pm/ja/items/1501527
なんと今までblender等を使わなければできなかった「任意部分のメッシュ削除」が可能な神すぎるツールです。ちなみに振袖に同梱のマスクはここで使用できます。

画像21

ご覧の通り、指定したパーツのテクスチャが表示され、そのテクスチャ上で削除したい部分にペイントをするとその部分が削除される、というツールです。つまり、服からはみ出すお腹を消したり、靴からはみ出るつま先をなかったことにできます!!

使い方は難しくありません。
マスクの表示色を見やすいカラーに変更して、PENモードを選んだら左枠に表示されているテクスチャにペイントしていくとscene上のアバターにも色がつきます。この色つきの部分が削除されるメッシュになります。

画像22

画像23

今回は、胴体〜肘〜膝ぐらいまでと足首から先がない方が安心なのでそのあたりをがっつり削除していきます(同梱のマスクを読み込んだ場合はペイント作業をすっとばして以下のペイントが完了した状態にできます。

画像24

ミーシェちゃんの場合はこんな感じ(青色の部分が削除されます。

画像25

DeletMeshボタンを押せば削除が完了します。
ちなみに元の状態に戻したい時は「Reset to Default Mesh」ボタンで元に戻せます。失敗しても安心!

4:最後にボーンを入れ子にしアバターに服が追従するようにする。

最後の作業です。

画像26

位置合わせは完了しましたが、このままですとアバターにTポーズの服がくっついてくるだけという状態になってしまいますので、きちんとアバターのボーンに服のボーンが追従するようにしていきます。

アバターのボーンに同位置(腰なら腰、胸なら胸)の服のボーンを入れ子にしていくことで、アバターのボーンが曲がれば服のボーンも曲がるという状態を作ることができます。作業としては単調で難しくないのですが、入れ子忘れ等のミスをしやすいので気をつけて作業してください。

また、もう一つ重大な注意点として、この作業以降服のボーンの修正はしない方が良いです。もし現時点でうまく修正ができているか心配な場合、sceneの再生ボタンを押すことで状態を保存せずに状況を変更することができるので、その状態で以下の入れ子作業とアニメーションによる確認を取り、大丈夫であれば再生モードを終了させた後再度入れ子作業をするというようにしてください。

画像27

入れ子作業は本当に単純な作業で、服をアバターの中に、服のアーマチュアをアバターのアーマチュアの中に、服の腰(Hips)をアバターの腰に、服のお腹(Spine)をアバターのお腹に、服の胸(Chest)をアバターのお腹に…というように地道に入れ子していくだけです。単純ですが、見づらい故にとにかくミスをしやすい部分なのでよく確認しながら作業してください。

画像28

今回は服なので、首までと、下腕までのボーンを入れ子すれば、頭や手のボーンは無視して構いません。足はVRChatでの使用であれば多分足首まで入れてあればOKです。(この入れ子作業についてはBOOTHに有志の方の作った着せ替え支援ツールがあるのですが、うまく動作しなかったり等の話を聞くのでこの記事では手動で作業する方法を紹介しています。ツールをDLしてうまくいくか試してみるのもアリです。)

一応今回の場合の完成系としてはこんな感じです、大変に見づらい…

画像29

画像30

これでアバターの動きに服が連動するようになりました!

5:アニメーションを当てて確認を取ってみる

この状態で速攻VRChatにアップロードしてもよいのですが、もしミスがあった場合いちいちHMD外して戻ってくるの面倒くさいよねということでUnityで出来る範囲の確認をしてからにしたいと思います。

適当なダンスモーションをアバターに当てて、勝手に踊ってもらうのを眺めます。ちなみに注意点としては「Unityでは綺麗に動いてるのにVRChatだとIKのせいで変な動きになる」ということがままあるということです💩

今回はユニティちゃんの公式サイト( https://unity-chan.com )で配布されているデータを使います。ダウンロードページに進むと「ユニティちゃんライブステージ!」というのがあるので利用規約に同意した上でDLします。

スクリーンショット 2019-12-27 00.35.12

解凍すると色々ファイルが出てくるのですが、今回は一部しか使いませんのでその中のAssetというフォルダの中にある「UnityChan」というフォルダを探して、それをUnityのAssetの中にドラッグ&ドロップします。

スクリーンショット 2019-12-27 00.37.44

そうしたらその中の「Animations」というフォルダの中に「C86unitychan_001_SAK01_Final」というファイルがあるのでそれを展開してみると、中にアニメーションファイルが入っているのでこれを選んだ状態でCtrl+Dを押すとアニメーションだけを取り出すことができます!

画像35

sceneの再生ボタンを押して再生モードにしたら、先ほど取り出したアニメーションファイルをアバターにドラッグ&ドロップするとアバターが勝手に踊り出します。

画像37

画像38

踊っている様子を眺めて、おかしいところがないか確認しましょう。ちなみにこのアニメーション結構激しく動くので振袖の袖が時々干渉して裏面が出てしまうのですがそのあたりはまぁ…。服のパーツが付いてこない場合は4のボーン入れ子のミス、身体がはみ出してしまう場合は3のメッシュ削除か、場合によっては2のボーン修正の段階を見直しましょう…。

また、服の側のDynamicBoneの挙動がどうにも気になる場合、DynamicBoneはアバターのスケール等に影響されるため同じ数値をそのまま持ち込んでも着せ替え時の作業や元々のアバター自体のスケール等で挙動が変わってきてしまいます。大変ですが、微調整をして様子を見てみてください。

大丈夫そうであれば、本当に最後の作業をします。
不要なパーツの削除です。よくわからない場合この作業はやらなくても構いませんが、やっておいたほうがアバターのパフォーマンスは良くなるので可能な範囲でやっておくことをお勧めします。

画像36

画像37

画像38

今回は服におまけで付いていた素体用の頭〜髪のボーンを削除、ミーシェちゃんの使わないパーツの削除、振袖の素体や頭等の削除を行いました。デフォルトでスカートなどの揺れものがあるアバターの場合はそのあたりも削除しておくとパフォーマンスを良くすることができます。

これで完成です。
あとはVRChatで確認してください。

もしUnity上のアニメーションテストではうまく動いているのにVRchatではおかしい or そもそもVRchatにアップロードできない(ボーンマッピングがおかしいよ的なメッセージが出る)場合、ボーンの入れ子の親子関係が逆になってしまっていて身体の途中まではアバターのボーンが親だが途中から服のボーンが親になってしまっているという可能性があります。手順の4のボーンの入れ子をよくチェックしてください!

画像39

おつかれさまでした!

ちなみに。Unityでの非専用着せ替えはやや無理やりな部分があるので多少のうまくいかない部分には目を瞑ることをお勧めします。もし素体自体にこだわりがないのであれば、服付きの素体と、アバターの身体を消したものを合体させた方が簡単だし挙動も綺麗です。その場合は頭部結合の記事を参考にしてみてください! https://note.com/kaziya21/n/n79dd8ad69f3c

この記事が気に入ったらサポートをしてみませんか?