Unityよわよわ勢がVRChat上で服を着替えるのに挑戦してみた話

「Unityよわよわ勢が服を導入するまでに困った箇所を知りたい」との要請を受けましたのでこの記事を書いてます。


同じよわよわ勢や、説明書を書きたいつよつよ勢の参考になればと思います。


この記事は決して各作者様を中傷したりする記事ではありません。
基本的によわよわ勢の思考回路の方がイカれとるのです。そこをお間違え無く。

 

※2020/5/12追記

近頃検索による来訪が増えているため、混乱しないように軽く追記を入れます。(追記は青字で入れます)

筆者の体験談のお話ですので、内容は変えません。

 

この記事ではUnity 2017を使用しております。

追記時点のVRChat用バージョンはUnity 2018.4.20 fになってますが、基本的な概念は変わってません。

唯一の注意点としましては、PrefabファイルをHierarchyに入れた際、初期は青いボックスで表示される(編集不能になってる)ので、右クリック⇒Unpack prefabして編集出来るようにすることぐらいです。

 

 


〇筆者の手持ちのVRChatスキル

アバターのアップロードが出来る。
参考:

keiki002.com

 

アバターに物を持たせたり出し入れが出来る。
参考:

shiasakura.hatenablog.com

 

☆ワールドの作成方法を一応知っている。

 

Blenderで簡易なアバターを作成しUnityに持ち込んでVRChatにアップロードすることができる。
参考:ワニでもできるモデリング for VRChat (この一連の動画はBlenderやUnityを使用するためだけではなく、VRChatで遊ぶ上で本当に有益だと思います。)

www.youtube.com

 

 

 

2019年11月某日

私の脳天に衝撃が走った。

 

 

『ポチポチ押してるだけでVRChatの着せ替えができちゃう~~~?』

 

私は普段別段Unityや3DCADソフトに特化している業務をしているわけではない。


機械の扱いは嫌いではないが、データさえ出れば問題無いと思いながら動かしてるので肝心な箇所以外はかなり雑に事をこなす。


そんな雑な私にとってVRChatでの行動には大きな苦痛が伴う。

 

思えばアバターを購入するも、最初に購入したアバターはカスタムオーバーライドエンプティーが設定されておらず、表情を出すまで苦労した。


アニメーションオーバーライドで物を出し入れするのさえ最初は苦労した。

 

VRChatをご存知無い方は何を言ってるか分からないだろうが、このゲームは常に何かを導入するためにはUnityというゲームエンジンと向き合うことが常に求められる。

場合によっては3DCGソフトの活用も要する。

 

そう、VRChatはいちいちひたすらに面倒くさいのである。

 

 


そんな私にとってUnityやBlenderと向き合わず「ポチポチ押してるだけ」の脳死行動で事を成せるツールというのはまごう事なき""神ツール""なのだ。


記事の説明も分かりやすそうだし、ツールの説明もものすごいシンプル…
これは期待できる!と即行動に移した。

 

※2020/5/12追記 

現在は結構色んな着せ替えツールが出てます。

基本的には利便性向上のマイナーチェンジですので(根本的なシステムは変わってないので)、やってることは変わりません。

 

今回使用するモデルは心街さん(@kokoromati_orz)のモデル『きんつば』ちゃん

 

着せようと思ったのはこちらの『パーカー』である。

booth.pm


とりあえずブログに書いてある手順通りにUnityに「VRChat SDK」、「アバターモデル」、「服モデル」、「対応するシェーダー」、「AutoDresser」を入れていく。


アバターモデルの上着をチェックボタンで脱ぎ脱ぎさせて、服を上に持ってきて…

 

f:id:mekasue:20191117022540p:plain

 

ん???

 

f:id:mekasue:20191117022603p:plain

これからの格闘を予感させる

 

ん~~~???

 

これはZENさんの動画(※上記のワニでもできるモデリング動画)で見たことあるゾ~~~…


Aポーズというやつだな

一方、服はTポーズ…


いや、問題無い

 

何故なら私は今"神ツール"を持っているのである。
ポチポチしていれば多少の問題等全て吹き飛ぶ!故に神ツール!

 

説明書に書いてる通りClothのHipを持ってきて…
Body Objectを設定して…

f:id:mekasue:20191117022834p:plain

よし!Dressing on!!

 

f:id:mekasue:20191117023257p:plain

なんかダメそうな感じがもうしますね

ん~~~~~?????


いや、一見ズレてるように見えてるけど多分VRChatに持って行ったら反映されてたりするんでしょ?


流石に大きさは後で調節しなきゃならないだろうけども

何せ""神ツール""だしな~~~無敵なんだよな~~~

 

よーしアップロード!
とりあえず着れてるか確認!

 

f:id:mekasue:20191117022907p:plain

f:id:mekasue:20191117023403p:plain

ダメみたいです

 


まぁ…

まぁまぁまぁ…

 

現状分析していこうじゃないですか…
こんなの日常茶飯事ですよね…

 

動いてみると服自体はついてくる。
そしてクネクネしてみると、どうやら腰のあたりだけ張り付いているっぽい。

f:id:mekasue:20191117023456p:plain

腰を曲げたら一応服はついてくる

 

「Auto Dresser」の設定の時にHipボーン指定はしたから、ここだけくっついてる感じなのか…?

 

とりあえず1回脱ぎつつ、服の方に付属してる説明書も読んでみるか…

 

あ、なるほど。
Dressing on⇔offするとパーカーの紐づけされる階層が変わるのね

 

f:id:mekasue:20191117023624p:plain

アバターの服のデータって、大体各アバターのすぐ下の階層についてるのでやっぱりツール自体は動作してくれてるっぽい。

 

んじゃ服の説明書はっと…

 

f:id:mekasue:20191117023803p:plain

ついてきた説明書の一部抜粋


うお~~~分かんね~~~


なんだそのアバターがボーンだけになってる編集画面は!
QWER系統の変形移動ショートカットって何~~~
ググっても出てこね~~~

 


まぁとにかく「服にボーンが設定されてるので、それをアバターのボーンに合わせれば動く」らしい

なるほど。


手に物を持たせる場合は、手のボーンの階層にオブジェクトを放り込んでやるんだから、道理だ

 

しかし、服ってアバター本体の階層に紐づいてるよな…各ボーン設定するのどうするんだ???

 

そしてやっぱり「Auto Dresser」だとHipのボーンは追従できたけど、その他のボーンが追従出来てなかったってことか…


ちょっと他の資料をまた探しましょう。

 

 

www.pixiv.net

「スキニング済み」か否かで着せ替え方が変わるかが全く分からん(多分変わんないんじゃないかと考えてる)のだがこれを読んでた。

ん!?!?!?!?

 

>着せ替え服(Humanoid対応済み)

 

Humanoid対応とは???

 

ygr.jpn.org

次にこれを読んでた

 

>Unityの規定するHumanoid形式では、あるボーンの配下にあるオブジェクトはそのボーンに追従すること、そして何らかのボーンとスキニングされたメッシュはボーンに追従することを利用して、着せ替えシステムが考案された

 

これじゃん!!

ってことはやっぱり服にアバター本体と同様のボーンが構築されてる必要があって、追従させる必要があるっぽい。

 

 

このページにあった参考ツイートを追従

>①着せ替えたいアバター(頭のみ)と衣装の両方をhumanoidにします。

 

これ一番大事じゃん~~~~~~~

 

そんでパーカーはデフォルトでhumanoidになってないじゃん~~~~~~~

勝った!コレ勝ったでしょ!

 

 

パーカーをhumanoidにして…

f:id:mekasue:20191117024508p:plain



もっかい「Auto Dresser」でHipボーン振り分けして…

よしっ!アップロード!!

 

f:id:mekasue:20191117023456p:plain

まだダメみたいです

はーーーボーン追従してないーーー


いやまて、この「Auto Dresser」、これまで神ツールと崇めてきたが、所詮はプログラムの一つ


どうにかして各ボーンを連動させるために識別するアルゴリズムがあるはずだ…

 

いや、そんな高尚なものじゃなく、僕なら同じ名前のボーン紐づけするが…

 

とりあえずボーンの名前見に行くか。

 

アバターのモデル選んで…Animation TypeはHumainoidになってる。
で、骨の構成確認はたしかConfigure押して…

f:id:mekasue:20191117024519p:plain

ZENさんの動画で見たことある構成だな?

f:id:mekasue:20191117024659p:plain

f:id:mekasue:20191117024723p:plain

きんつばちゃんのボーン構成


次にパーカーも同様にConfigure押して…

f:id:mekasue:20191117024757p:plain


ん?????

 

f:id:mekasue:20191117024814p:plain

パーカーのボーン構成

 

ここでZENさんの動画で見たセリフが浮かんできた

「VRChatではこのUpper Chestというのは使わないので…」

 

なんか紐づけされとるが?

と、いうかアバター側と全然ボーンの名前が違うが…?

f:id:mekasue:20191117024906p:plain

f:id:mekasue:20191117024922p:plain

 

犯人コイツらか~~~???

とりあえずアバター側のボーンに合わせて対応しそうなボーンの名前を一つずつ統一していく
(Configure上のボーン名はBlender側で設定した名前が反映されてるだけっぽいので、Unity側のボーン名を揃えるだけでいけた。)

 

f:id:mekasue:20191117025118p:plain

ボーンの構成をアバターと合わせる



f:id:mekasue:20191117025153p:plain

f:id:mekasue:20191117025252p:plain

ボーンの名前もアバターと合わせる

 

全部変えたら保存して…

もっかい「Auto Dresser」を適用!

 

いや~~~これでいったでしょ!
アップロード!

f:id:mekasue:20191117025350p:plain

追従を開始しました


やったね!!


後はAスタンスのアバターをTスタンスにしなきゃだけど…
さてこれはどうするのかねー…

www.pixiv.net

アバターの上腕を回転させTスタンスにします。

 

どこでやんねん!!!

いやまぁ、でもこれは大体分かる。

 

アバターはUnity上で各ボーンの大きさをある程度いじることが可能なので、多分この辺を回転すれば…

f:id:mekasue:20191117025724p:plain

f:id:mekasue:20191117025741p:plain

 

f:id:mekasue:20191117025759p:plain

 

できました~~~

 

f:id:mekasue:20191117025817p:plain

この時点でもアップロードして確認するといいですね


後は同様に服の大きさを変えて、体に合うようにしていくだけですね

 

f:id:mekasue:20191117091300p:plain

各部位を調整することで、体への食いつきがよくなります



これにてUnityよわよわおじさんのお洋服着せ替え完了…!

 

f:id:mekasue:20191117091412p:plain

 

と、いうことでよわよわ勢の思考回路、いかがでしたでしょうか?


VRChat想定アバターの服の着替え方にもどうやら流派があるようですが、こちらのツールを使ったお着換えの手順を私なら以下のように示す感じになります。

 


また、この際の最低前提知識は「VRChatにアバターをアップロードしたことがある」です。

 

1. 準備編 各種ツールのインポート(ここはほぼ説明しないで省く)
1-1 VRChat SDKやDynamic Bornといった基本ツールをUnityにインポート。
1-2 アバターと服に必要なシェーダー(描画ツール)をインポート。(こちらは多分販売先のマニュアルに記載)
1-3 アバターと服をUnityにインポート
1-4 AutoDresserをUnityにインポート

 

2. 操作編
2-1 Humanoidであることの確認
2-2 各ボーンの名前の一致の確認
2-3 Auto Dresserの操作方法
2-4 ボーン追従確認

 

3. 調整編
3-1 アバターの調整方法
3-2 服の調整方法

 

4. アップロード(ここもほぼ省く)

 

「コレもっとこれ大事だよ!」みたいなことあったらコメントにて指摘お願いします。
色々試してみることにします。

 

 

※2020/5/12追記

多分この記事通りに服を着替えられるようになると「服から身体がはみ出るのをゼロにしたい!!」「もっとスマートに服が着たい!!」といった欲求が出てくると思います。

そういう時に大活躍するのががとーしょこらさんのMeshDeleterWithTextureです。

booth.pm

 

どうしても動いたらハミ出てしまう場所をこいつで塗り塗りして内側のメッシュを消してしまいましょう。

 

また、「別のアバターの服を持ってくる」みたいなことをする場合は火事屋さんが書いてるnoteに詳しく記載されています。

正直最初に取っかかるにはちょっと難しいですが、この記事を読んだ後なら、なんとなく理解できるようになってるかもしれません。

MeshDeleterWithTextureの詳しい使い方もこちらに記載されてますので、参考にしてみてください。

 

火事屋note

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

note.com

 

それでは楽しいVRChatライフを!