
[VRChat]Unityによるアバター改変① 下準備~衣装着替え時のポイント編
はじめに
これはシリーズ物として執筆しています。
今回はアバターの衣装着せ替え編ということですが、着せ替えについてはインターネットで検索するとかなりたくさん見つかります。
そのため、衣装を着せる改変部分についてはあまり詳しく記載されておらず、私が注意しているポイントなどをまとめることにしました。
衣装の着せ方、ギミックやパーティクルの入れ方などについて詳しく知りたい方は別の方の記事などをご参照ください。
また、内容的にある程度改変を行った経験のある方向けとなっています。
なお、この記事で使用するUnityのバージョンは
2022.3.22f1(2024年5月時点で最新のバージョン)
※表記言語は英語表記を使用しています
OSはWindows11となっています。
もしこの記事が少しでもご参考になりましたら幸いです。
Unity作業をする前にやっていること
Unityは結構PC負荷が高め(私のPCはあまりつよつよではないので…)なのと、過去にTempフォルダ内のデータのせいなのか、アバターデータを読み込んだ際やアップロード時にエラーが発生し、それらを削除・解放したらエラーが解消されたという経験があります。
それからはごみ箱の中身を消してから一旦再起動してメモリやキャッシュなどに残っている余計な情報を整理してから作業を始めています。
(※2024.05.30修正)
使用しているプロジェクトパッケージやツール類
ALCOMを使っています
VRChat公式で使用を推奨されているツールはVCC(VRChat Creator Companion)ですが、anatawa12さんが「ALCOM」というツールを開発・配布しています。
ALCOM (anatawa12.com)
VCCの代替ツールなのですがVCCよりも高速に動作してくれて、パッケージの一括更新ができる上に日本語で表記されているため大変便利です。
ただし、現状(2024年5月)はVCCがないと動作しないらしいので、VCCはインストールしておく(アンインストールしない)必要があります。
むしろVCCでの作業ができる環境にしてからALCOMをインストールする、という順番のほうが良さそうです。
VCCのインストール方法についてはここでは省略させていただきます。
今後、これがどうなるのかは作者さんからの情報次第ですね。
ツール類は出来るだけVCC版を使用しましょう
プロジェクトパッケージ・ツールは、BoothやGitHubなどで販売・配布されていますが、もし「unitypackage版」と「VCC版」があったら、「VCC版」を適用するようにしましょう。
こうすることによって、そのパッケージを常に最新版で使用することができます。
バージョンダウンも可能なので、最新版で不具合が生じた場合などは以前のバージョンに戻すことも可能です。
ただし、あまり古いバージョンのものを適用しようとするとUnityのバージョンも古いものにしか対応していません、という警告が出ます。
これが unitypackage版 ですと、そのパッケージ・ツールが最新版かどうかの確認やその後の切替え(バージョンアップ/ダウン)を手動で行う必要があるのでちょっと面倒なのです。
VCC版であれば、パッケージ選択画面でドロップダウンで適用したいバージョンを選択できます。
また、製作者様の中にはVCC版の更新を優先し、unitypackage版はメジャーアップデート時のみ更新という方もいらっしゃるようです。
そういう意味でも特に製作者様がunitypackage版を推奨しない限り、VCC版を適用する方が良いと思います。
共通適用しているパッケージ・ツール
改変内容に応じてパッケージ・ツールをインストールしていくのですが、私が現状共通でインストールしているものは以下のパッケージです。
これに改変内容に応じてパッケージ・ツールを追加していく感じです。
※今回の一連の記事では使用しないパッケージも含まれています。
有名なものばかりなので、インストール方法については割愛させてください。
「modular avatar vcc」などと検索すると見つかると思います。
Avatars 3.0 Manager
Gesture Manager
Modular Avatar
Non-Destructive Modular Framework
lilToon
lilAvatarUtils
AAO: AvatarOptimizer
anatawa12's gists pack
FaceEmo
LightLimitChanger
TexTransTool
Floor Adjuster
Module Creator

上記はVCC版ですが、unityproject版のツールも共通としてインストールしています。
こちらはBoothのリンクも貼っておきます。
MeshDeleterWithTexture
MeshDeleterWithTexture beta - がとーしょこらのおみせ - BOOTHMantis LOD EditorのNDMF化ツール
【無料】【非破壊でポリゴン削減】Mantis LOD EditorのNDMF化ツール - ひつぶの倉庫 - BOOTH
※UnityのAsset Storeから「Mantis LOD Editor」をインストールする必要があります確認に最適な体操アニメーション集"ErrorChecker"
【無料モーション】確認に最適な体操アニメーション集”ErrorChecker” 【VRC/改変/ゲーム向け】 - V WORLD - BOOTHVRCアバター/ワールド体重計
https://booth.pm/ja/items/2638525
Unity作業画面構成の紹介
ここでちょっと私が普段Unityで作業する時のウィンドウ構成について紹介しちゃいます。
お好みの配置で全然構いませんので、スルーしちゃってもいいです。

このままでもいいのですが、作業を進めていく時に VRChat SDK でチェックして 、対象となった衣装などを[Hierarchy]→[Inspector]に移動したりすることを繰り返す時にやりやすい(※個人の意見です)ようにレイアウト構成は下のように変えています。


今後出来ることが増えてきたらまた変えるかもしれませんが、現状はこんな感じです。
※(2024.05.30) ウィンドウレイアウトを変更しました。
特徴としては
・[Inspector]と[Hierarchy]を隣同士にしたかった
・[Inspector]、[Hierarchy]、[VRChat SDK]、[Console]などが同時に見える
(見ながら操作できる)ようにしたかった
・SceneとGameのタグを並べました (2024.05.30更新)
という感じです。
画面の左側を操作系統、右側をパラメータ確認系統というのを意識して配置しています。
アバター改変
前置きが長くなりましたがいよいよ改変について記していきます。
冒頭でも記しましたが、私が衣装を着せるときに注意している簡単な注意事項やポイントについて記したいと思います。
今回使用するアバターはこちらです。
衣装はこちら
衣装を着せる前の注意点 ~Prefab Variant~
アバターのPrefabデータはそのまま使わず、Prefab Variantを作成したもので行うようにした方がよい、と言われています。
都度プロジェクトを新規で作成する方は特に必要ないかもしれませんが、一度作成したプロジェクトを修正するような場合や、複数のアバターを一つのプロジェクトにまとめている方はPrefab Variantを作成しておいた方が事故が減るかもしれないですね。
詳しくは省略しますが、私がこの方法の最大の恩恵として考えているのはアバターバージョンアップをした際に元々調整していた箇所がすべてデフォルトに戻されることを防止する、ということと、元々のPrefabと比較することによってどこを変更したかがわかるようにする、という2点です。
このことについては「アバター改変 prefab variant」や「アバター管理 prefab variant」などで検索するといろいろと資料が見つかると思います。
ベースアバターのPrefab Variant化
私はベースプロジェクトというものを作って、それをコピーしたものを改変しています。
ベースプロジェクトというのは、改変したいアバターの衣装を着せかえる場合、都度最初からやるのではなく、ある程度下準備(デフォルトで着ている服を非表示にしたり、ジェスチャーと表情の紐づけを設定したり、などなど)をしたプロジェクトを作成したものです。
Boothで購入したアバターデータをそのまま使用するのではなく、下準備を行った後のアバターデータをPrefab Variantとして使用しています。
やり方は非常に簡単で、下準備を終えた後にアバタールートをAssetsにD&Dするだけです。
あとは出来上がったPrefab Variantをバックアップしておけば下準備後のPrefabデータを他のプロジェクトに呼び出せる、ということになります。


衣装を着せる
VRChat(VCCかも?)公式では、「1プロジェクトにつき1体が原則」とされています。
複数のアバターを所有している方は、プロジェクト毎にアバターを分けたほうがわかりやすいと思いますが、1プロジェクトに複数アバターで改変したものを保存していると、プロジェクトファイル容量が非常に大きくなり、操作が重くなる場合もあれば、アップロード時に時間がかかったり、最悪エラーでUnityが落ちてしまう場合もあります。
なので、極力1プロジェクトにつき多くても3アバター程度にしておきましょう。
VCCがフォルダ階層に対応していただけるといいんですけどねぇ…。
さて、いよいよアバターに衣装を着せていくわけですが、アバター対応衣装でMA対応の場合は Modular Avatar(MA)という神ツールのお陰でPrefabデータをアバタールートにD&Dで終わります。
※ライムちゃんは着せ替え用のPrefabがあらかじめ用意されていますが、自主規制的な理由で図では服を着ている方を使用しています


元々の衣装と着せたい衣装の両方を着ている状態なので、元々の衣装の方を非表示(適用外)に設定し、動作確認などをしていく感じです。
衣装を着せるときのポイント2点と非表示(非適用)にするときの注意点について記させていただきます。
衣装を着せるときのポイント① ~Unpackについて~
1つおさえておきたいポイントがあります。
それは、「出来るだけUnpackしない」ことです。
上の図でも見れると思いますが、Unpackしていないアバターツリーはデフォルト状態では青い文字で書かれています(Unpackされたアバターツリーは白文字で表示されます)。
なぜUnpackしない方が良いのかというと、Prefab=プレハブという名前に聞き覚えはありませんか? お家やアパートなんかでよく聞く言葉なのですが、要するに「一つの構造がパッケージ化されたもの」ということです。
Prefabのままの最大の利点は「可逆性」にあります。
つまり、「やっぱや~めた」とか「こっちとこっちはどっちがいいかなぁ?」なんて時に、Unpackしてしまうと元に戻せないのです。
また、Unpackは一つの構造物のつながりを解いてしまう、言い換えると木組みをして重なったところを縄でしばっている状態(Prefab)から、その紐を切ってしまった状態(Unpack)にする、というイメージです。
これを元に戻そうとした場合はまた縄でしばらないといけなくなります。
2本の木で組まれた状態であれば簡単にしばりなおせますが、これがたとえばログハウスのようなものだった場合、元に戻す場合は1から組みなおさなくてはならなくなるので、かなりの重労働ですよね。
簡単にまとめますと、Unpackした場合の影響は
・元のPrefabに戻せなくなる
・どこを変えたかわからなくなる
・アバターの更新が大変になる
ということになります。
ただ、Unpack前提の衣装だったり、やりたいことをするためにUnpackが必要となってしまった場合は、
・一番最後にUnpackする
・改変後にPrefab化しておく
※Prefab化については上でご紹介しています
という感じで行うようにした方が良いと思います。
衣装を着せるときのポイント② ~MA非対応衣装の着せ方~
上にもありますが、MA対応衣装であればD&Dで終わりですが、MA非対応衣装について記しておこうと思います。
今回の衣装もMA非対応の衣装となります。
この衣装をUnityで着せる手順としては以下の感じです。
①元々の衣装や完全に隠れてしまう衣装を非表示にする
(注意点があるので後述します)
②着せたい服がちゃんと着れているかを確認する(貫通確認)
対処方法としては、以下があります
・衣装のルートを選択してTransform部分で調整を行う
・Bodyのシェイプキーを調整してきれいに着れるように調整する
③衣装のルートを選択して右クリック後に"Modular Avatar"→"Setup Outfit"
この操作を行うと、"Inspector"の部分に"MA Mesh Settings"というもの
が増えます。
④動作確認

衣装の中には、MAのSetup Outfitではエラーが出てしまうものがあります。その場合は、"キセテネ"などのツールを使うか、Unpackして自力でがんばって着せる感じになります。
上手く着せられた後はPrefab化しておきましょう。
非表示にする際の注意事項
上の図で若干暗めの青色になった文字がありますが、これが非表示なっている箇所です。
ブラウス(Blouse)を例にとって説明します。
注意点は、非表示にしたい箇所のチェックを外すだけではダメということです。
確認するためであればそれで良いのですが、非表示にしてVRChatにアップデートする前までには3つの作業を行ってください。
①非表示にしたい箇所(衣装部分)のチェックを外す
②チェックボックスの下にある"Tag"を"Untagged"→"EditorOnly"にする
③"Skinned Mesh Renderer"や"VRC Phys Bone"などがあったら、その項
目の右側にある、縦に点が3つ並んでいる個所をクリックして"Remove
Component"を選択する

特に②は注意してください。
VRChatにアップロードして確認したときに、非表示にしたはずの衣装などが残ってしまっているケースがあった場合は、②で"EditorOnly"にして再アップロードすると直るケースがあります。
逆に衣装のON/OFFを検討した後に、着せたい衣装が "EditorOnly" になっているとVRChatにアップロードした際に着ていない状態になってしまうので、アップロードする前に④の動作確認と一緒にきちんと着れているかを確認しましょう。
③については後述する軽量化作業によって自動で非適用にされますが、やっておいて損はないでしょう。
髪や顔と衣装の明るさを揃える ~Anchor Overrideの設定~
私もたまにやってしまうのですが、髪や顔、衣装の明るさが合っていないことがあります。
方法としてはいろいろありますが、一旦Anchor Overrideを髪や顔と合わせておきましょう。
①まず "Hierarchy" から "Body(顔)"を選択して、"Inspector"に表示される
"Skinned Mesh Renderer"欄にある "Anchor Override" の部分に注目します
②衣装側の "Anchor Override" を①で確認した顔で設定されているものに
合わせます
③念のため髪など相手から見える箇所も確認しておきます

この方法の他には、シェーダー(マテリアル)で合わせる方法もあります。
Unityつよつよな方は、これをEXメニューに入れてVRChat内で調整している方ももいらっしゃいますね。
また、LightLimitChangerでVRChat内でEXメニューから調整する方法もあります。 LightLimitChangerで調整するとアバター全体の明るさを一定に調整してくれます。
写真を撮ったら服が消えちゃった場合
たま~にあるのですが、ワールドに設置されているものだったり、他の方の衣装などだったりで、服が消えてしまう時があります。
これはマテリアルのところにある "基本設定" の "Render Queue(レンダーキュー)" を設定すると直るかもしれません。
イメージで簡単に説明すると、数値によって表示される順番が設定される感じですね。
お絵描きアプリ(Illustrator、Clip Studio Paintなど)や写真加工アプリ(Photoshop、GIMPなど)を使用した経験がある方は、レイヤーでイメージするとわかりやすいかもしれません。
ただ、いたずらに大きな数値や小さな数値にしてしまうと、衣装の表示がおかしくなったり、フレンドさんの衣装を消してしまったりと思わぬ事故になりかねないのでご注意ください。
シェーダーによって設定する数値が違うので、問題が起きてしまった場合は「アバター レンダーキュー」などで検索してみてください。

動作確認
Unityのメニューから"Tools"を選んで"Gesture Manager Emulator"をクリックしてHierarchyに入れます。

これは、プレイモードでEXメニューの確認や、手のジェスチャーに設定した表情変化の確認などができるパッケージツールです。
プレイモードは、VRChat内でどのように表示されるかをシミュレートできるモードという認識で良いと思います。
次にアバターが動いた場合の貫通や揺れ感などを確認するために動作チェック用アニメーションを入れます。
※手動で確認しても構いませんが無料なのでありがたく使わせていただきましょう(気が引けるという方は「ご支援版」を~)
今回使用するのは上にも書いてありますが、こちらを使用します。
これを "Import Package"すると、Project内に "V World" というフォルダが出来上がり、その中にあるアニメーションファイルを使用します。

Hierarchyにある "GesturerManager" を選択した状態で、プレイボタンを押します。

プレイモードに入ったら、"Console"にエラーが出ていないか確認します。
アバターが表示されない場合はカメラを調整するか、"Scene"をクリックするとアバターが表示されます。

私は慣れている"Scene"で動きを確認しています。"Game"、"Scene"どちらでも確認しやすい方で構いません。
(2024.05.30更新)
私の画面レイアウトは”Scene”と"Game"を並べているので、"Scene"でアバターを動かしたり、"Games"で髪やスカートの揺れなどを確認しています。
衣装がきちんと着れているか、ハンドジェスチャーの動作、Expressionメニューの確認やアバターを移動させたときの揺れ感の確認をしましょう。

一通り確認が終わっておかしい箇所がなければ "Inspector" の "Gesture Manager (Script)" の "Controlling Avatar:"の下にあるメニューの "Tools"を選択します。
"Tools"の"You can preview ~"の下にあるボックスに上でインポートしたErrorCheckerアニメーションファイルを入れます。

アニメーションファイルの横にある"Play"を押すと、アバターが動き出す(Play解除までオートリピート)ので、視点を変えながらおかしなところがないか確認します。
Boothには他にもテストに使えるアニメーションが販売されているので、気に入ったアニメーションファイル(つよつよな方は自作しちゃってもOK!)で動作、衣装のフィッティング、揺れ感などを確認しましょう。
正面から見た状態での動作確認例です。 実際の確認は視点(カメラ)をいろいろ動かして後ろ側から確認したりもしています。
複数の衣装を組合わせる(衣装キメラ)時に便利なツール ~Module Creator~
衣装の着せ替えを行うとき、「この衣装のここだけを使いたい」という場合に便利なツール "Module Creator" というものをご紹介します。
今回組み合わせる衣装はこちら
ALICE様のEverAfterをベースにして、silica gel様のJK Uniformにある靴(+靴下)を履かせます。
まずは普通2つの衣装を着せて、表示・非表示で組み合わせた後の状態を確認します。

JK Uniformの靴のパーツを選択して右クリックして、"Module Creator"→"Create Module"を選択

すると、選択したパーツだけが抜き出されますので、これをアバタールートにD&Dします。

アバターに組み込まれたら、そのパーツを右クリックして "Modular Avater" → "Setup Outfit" で着せます。

抜き出したパーツは独立したPrefabデータなので、元々のJK Uniformは非表示(非適用)にします。

Hierarchyが見づらい場合は、元の衣装データをHierarchyから削除しても問題ありません(Assetsからは削除しないでください)
このように、複数の衣装の一部だけを組み合わせて着せたい場合、Module Creatorを使用すると、必要最小限のPrefabデータの組み合わせでアバターに着せ替えができるため、Amatureがごちゃごちゃしなくなります。
また、抜き出されたパーツは名前も変えられるので、自分のわかりやすい名前に変えるのもアリですね。
[VRChat]Unityによるアバター改変② 軽量化編 につづく