見出し画像

【Vroid】Unityだけでアバターの体とコンバイン!Vroid非対応衣装でも着こなす方法(WIP)

0お詫びと注意

現在使っているPCのスクリーンショットの使い方がよくわかっておらず、現在画像が一切ありません。初投稿なので文面もクソです。
それでも良いという方は先に進んでください
更新:画像がつきました。
2023/05/04 文章修正

1.やりたいこと

このnoteが対象にしているのは「Vketとかでひとめぼれの衣装を見つけたけどVroid衣装テクスチャじゃない!けど自分のVroidアバターでちゃんと着たい!」とか「ペラペラ表裏のVroid衣装はあきた!」とかそういう人たちです。
VroidにはBoothにて多種多様な服が販売されており、正式版になった最近では最初から多くの服が用意されており、定期的に追加もされているため基本的に服に困ることはないでしょう。
しかし、一途な恋は一途なもの。他にウン千万と代わりがいるといわれたって着たい物は着たいものです。
そういうわけで、着たい「非Vroidの衣装」を着るためのnoteとなります。

1. まず身もふたもない結論

正直、ただ単に服を着せたいだけならboothにてとも屋さんから販売されている着せ替えツール、キセテネを使えば簡単に体の上からかぶせるようにできてしまいます。
【キセテネURL】

しかし、私も詳しくはないですが3Dモデルには「ウエイトペイント」というものがあり、これが一致しなければ胸などの揺れものが衣服を貫通してしまうなどの問題が起こるらしいです。
しかもモデラーさんも悲鳴を上げる代物だとか…
physboneなどの揺れものを切ればそれだけで済む話ではありますが、それでも職人さんの手によって体型に合わせられたものではないので多少不格好になってしまいます。
そんなわけでこのnoteでは「対応アバターの体を乗っ取って好きなように服を着ちゃおう!」というのが道筋になります。

2.用意するもの

  • 自分のVroidアバター

エクスポート時にマテリアルスロットを「8」に設定しておき、できる最大までマテリアルを分割しておくと後々楽です。
衣装もどうせ消し飛ばすのでなくても大丈夫です。
今回はオススメのVroid便利セットに同梱されていたデフォルトアバターAを使わせていただきます。
顔を変えるわけじゃないのでこの便利セットはVroidのアバターと同様使用可能です。


  • 着たい衣装

当然ですね。用意しましょう。
今回はVRCの中でも人気が高く対応アバターも多いロイヤルバニーを使わせていただきます。


  • 体を乗っ取るアバター

体も必要になってきます。買ってインポートしておきましょう。
今回は対応衣装が多く、後述する発生する問題の程度が低い桔梗ちゃんを使います


  • VRCSDK3AVATAR

常に最新版をダウンロードしておきましょう。

  • VRC/3Dアバター向け簡単着せ替えツール「キセテネ」

上記の簡単着せ替えツールです。

  • MeshDeleterWithTexture beta

  •  VRM Converter for VRChat

VroidアバターをVRChatでつかうためには必要なものです。

3.さあ作業開始!

  • まずは大前提条件

まずはUnityプロジェクトを作ります。
次に、一番最初にVRChat SDK3 AVATARをインポートします。
それ以降は次々に上記の準備するものをインポートしましょう。
(VCC移行はSDKのインポート方法が変わりました。プロジェクトを作る際にアバタープロジェクトとして設定しましょう。)

準備が終わったら上に現れたVRMアバターのプレハブを選択し、「VRM0」から「Duplicate and Convert For VRChat」を押してVRMアバターをVRChat用にコンバートしましょう。
コンバートが完了すると勝手に画面上においてくれます。これを以下Vroidアバターと呼びます。
この時点でアバターはほとんどアップロード可能な状態です。もしそうでなければ問題を解決してアップロード可能な状態にしておきましょう。
さてこれで必要なアセットが出そろいました

  • 作業開始!

上ができたら体を乗っ取るアバターを、「UnpackPrefabConpletely」を押して名前を灰色にます。
こうすることにより中のパーツをいじれるようになるので、髪の毛と顔を消します。アバターの名前が青いままだと消せません。

次にscaleをいじって体型をもとのVRMアバターと同じにしましょう。
この時、Vroidアバターの体部分のマテリアルをtransparentに設定し半透明にすることでこの作業がやりやすくなります。
特に注意するのは肩や腕の高さです。X軸は手と手が重なるように、Y軸は腕の高さに合わせて、Z軸はX軸と同じ大きさにしましょう。
必要があれば小数点以下3桁までこだわって体を重ねさせましょう。

それが終わったらキセテネを起動し、乗っ取りたい体をVroidアバターに「着せ」ます。
こうなったら作業はほとんど終わりです。あとはMeshDeleterを起動しVroidアバターの体のメッシュを消します。

ここまでが終わったらルートを開いていき、それぞれがちゃんとした場所にあるか確認しましょう。乗っ取ったアバターのChestはVroidアバターのUpperChestの下にあります。

これで合体の基礎的なところは終わりです。段落からは多少厄介な話をします。

Vroidアバターにエモートを入れてアニメーションさせると桔梗ちゃんの腕がついてきます


4.手指の崩壊

コンバインしたアバターのルートを開いていくと、手のボーンがコンバインしていないことに気づくことができます。このまま上げると手が動かないチョップ人間が出来上がります。
そこで直すわけですが、指はただ単純に対応するものを子供に入れて直しただけでは崩壊してしまいます。すごくグロテスクな状態になります。

桔梗ちゃんのボディはこの問題が軽度ですがそれでもちょっとグロイ

これを解決するためにすごく頭を悩ませた結果、体アバターの指のX軸、Y軸を0にするとほとんどの場合、解決することに気づきました。
これはアニメーションの都合で、グロテスクな状態になってしまっていた状態では指の位置が(アニメーションの数値+Vroidアバターと体アバターの指の位置の差)の合計で計算されていたためです。
つまり、体の乗っ取られたアバターの指とVroidアバターの指の差を0にすればアニメーションの数値がそのまま反映されて指が治る、ということですね。

違和感は残るけどまあグロくはなくなりました


  •  もう一つの解決法

これで解決しない場合、もう残された手はチクチク直していくしかありません。アバターに付属していたらジェスチャーレイヤーをコンバインしたアバターのアニメーターに放り込んでアニメーションウインドウでアニメーションを実行させます。
そうするとグロテスクなことになると思うので、ひとつづつ関節を戻していき、直します。これは面倒くさいし、アニメーションレイヤーがついてないとできないのでお勧めできない方法です。

5.あとは好きな衣装上げてアップロード!

もう後は乗っ取った体にscaleを合わせた好きな衣装を着せてアップロードするだけです。ここでもまたキセテネを使うと楽です。
しかしこれは個人的なおすすめですが、キセテネでは普通にVroidアバターのボーンに着せてくれますがもう一歩入り込んで、手動で乗っ取った体ののボーンに服のボーンを入れると安心できます。特に指先にまで装飾がある衣装は乗っ取った体のボーンの位置に手を加えているので必須です。
これでやりたいことは達成されました。お疲れ様でした。

6.影のつけ方

実際にアップロードして使ってみると、ある問題が浮上してきます。
それは影の付き方です。VroidアバターでつかわれているVRM/Mtoonは基本的に販売アバターではめったに使われないシェーダーです。主流としてはほとんどがliltoonかUTS(UnityChanToonShader)またはpoiyomiなので、体の影の付き方を統一するために頭のVroidアバターでつかわれているシェーダーを体のシェーダーに統一しましょう。
ここは正直トライアンドエラーなのですが、もう何もかも面倒くさいと思う方は顔、体、すべてのマテリアルをliltoonに変更し、影/Shadowのチェックを外せば光の加減だけで見た目の色を表示してくれるのでお勧めです
questでVRChat/mobile/toon litでやりたいという方は、テクスチャの色を本当に正直に表すので、テクスチャをペイントソフトで変更するしかないので頑張りましょう。

追記
・記事内で使用してはいませんが、利用規約にて「他のデータ(つまり対応アバター以外)を改変するための利用」が不許可の衣装がありこの方法では対応アバターの素体を使って衣装を着ているものの、ぱっと見対応アバターでないのにその衣装を着ていることや、結果として「Vroidアバターの改変のために」対応アバターの素体を通しているに過ぎないので、そのような衣装の着用は避けた方がトラブルの原因にはならないと考えられます。
利用規約はちゃんと読みましょう。


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