【VRChat】トラスとウェッジのトラスちゃんからケモミミを外して自由にしてあげる方法
トラスちゃん使いのフレンドがケモミミを外せないと悩んでいたので、自己流のやり方をここにメモしておきます。
今回改変するのは、nylonheart様制作のアバター、トラスとウェッジのトラスちゃんです。かわいいね。
まえがき
トラスちゃんにはケモミミがついています。
もちろんシェイプキーで消したり形を変えたりすることもできます。
ところが、髪の毛とケモミミが同じメッシュになっているため、例えば髪形を変更した時はケモミミを持っていくことができません。(Blenderを使えば可能)
この記事では、トラスちゃんのかわいいケモミミを髪の毛から解放し、他の髪形でも付けられるようにしたり、他のアバターの改変で活用したりすることができる方法を解説します。
改変をするときは、アセットの規約をしっかり守りましょう。
前提
Unity 2022.3.22f1 及び VRChat SDK 3.7.3 で記事作成
UnityからVRChatへアバターをアップロードできる環境が整っていること
Unity及びCreator Companion (VCC) または ALCOMの基本的な操作ができること
トラスとウェッジのアセットがUnityにインポートされていること
準備
今回の作業には下記3つのパッケージが必要になります。それぞれVCCまたはALCOMを使ってリポジトリを登録してパッケージをプロジェクトにインポートしてください。
Modular Avatar (https://modular-avatar.nadena.dev/ja)
言わずと知れた非破壊アバター組み立てツール。この記事では取り外したケモミミを他のアバターに組み込むために使用します。AAO: Avatar Optimizer (https://vpm.anatawa12.com/add-repo)
言わずと知れた非破壊アバター軽量化ツール。この記事ではケモミミ以外を消すために使用します。Module Creator (https://tliks.github.io/vpm-repos/)
アバターからメッシュの一部とボーンを取り出してパーツ化(Prefab化)してくれるツール。この記事では髪の毛を複製して分離するために使用します。
手順
1. 髪の毛を複製して分離する
Hierarchyに配置したトラスちゃんのHairを右クリックし、Module Creator から Create Moduleをクリックします
Module Creatorによって元のアバターはそのままに、Hierarchy上に「Hair_MA」というパーツが作られます。
Prefabもアセットフォルダ内に自動的に生成されています。
試しにトラスちゃんを非表示にしてみると、分離された髪の毛だけがシーンに表示されていることがわかります。
この「Hair_MA」には、髪の毛のメッシュと関連するボーンが含まれていますが、ケモミミ以外のメッシュも残ってしまっているため、次にケモミミ以外を消す作業を行います。
2. 髪の毛からケモミミ以外を消す
Hierarchy上の「Hair_MA」から「Hair」を選択し、Inspectorの「Add Component」から「AAO Remove Mesh By Mask」コンポーネントを追加します。
追加したコンポーネントの、「0番のマテリアルスロットに適用」にチェックを入れ、マスクテクスチャの右端にある「作成」をクリックします。
保存ウインドウが出てくるので、アセットフォルダ内の好きな場所にファイル名を付けて保存しましょう。
今回はAssetsフォルダ直下に「Tolass_Kemo_Mask.png」で保存しました。
もう一度追加したコンポーネントを見ると、作成したマスクテクスチャが割り当てられ、「作成」ボタンが「編集」に変わっていますので、「編集」をクリックして編集ウインドウ(AAO マスクテクスチャエディター)を開きます。
編集画面の下半分に「Hair」のテクスチャが表示されます。
ここで、ケモミミ以外の消したい場所を黒で塗りつぶしてください。
どこを塗るとどこが消えるかをリアルタイムで確認した場合は、コンポーネント内の「Preview」ボタンを押すと、シーンのメッシュに塗りつぶしした部分が反映します。
作業が完了したら「保存」ボタンをクリックしてマスクテクスチャを保存し、編集画面を閉じます。
マスクテクスチャの作成に成功すると、シーン上にケモミミのみが残っているはずです。
「Hair」以外をクリックすると消したはずのメッシュが復活しますが、AAOとMAの機能によってアップロード時に自動的に削除されるので安心してください。
ここまで作業できたら、Hierarchyの「Hair_MA」をProjectタブにドラッグ&ドロップして、Original PrefabもしくはPrefab Variantを作成しておきましょう。
今後の改変の時はこのPrefabをHierarchyに置くことでケモミミを使うことができます。
3. 取り出したケモミミを別の髪形 or アバターに組み込む
2の最後で作成したPrefabを活用して別の髪形に変更したトラスちゃんにケモミミをつけてみましょう。
ここではスタジオシャーロ様のスイートハーフアップへアを例に作業してみます。
スイートハーフアップへアをプロジェクトにインポートしてHierarchyにPrefabを配置、デフォルトの髪を非表示にしてから位置調整をします。
次に、2で作成した「Hair_MA」のPrefabも同様にHierarchyに配置します。
「Hair」を選択しておけば先ほどと同様にプレビューでケモミミのみが表示されるはずです。
追加したスイートハーフアップへアはマヌカちゃん用のため、HeadボーンについているMA Merge Armatureを削除して、MA Bone Proxyを使ってHeadボーンに追従させることにしました。
一方のケモミミは、Modular AvatarのSetup Outfitsでアバターに追従させることができます。
ここまでできたら作業完了です。
Avatars 3.0 Emulator などUnity上でデバッグをしている人はそのツールで、もしくはVRChatにアップロードして、問題なく新しい髪の毛とケモミミがアバターに組み込まれているか、オリジナルの髪の毛が消えているかを確認してみてください。
補足
今回の方法では、Module Creatorで作成したPrefab内に、デフォルトの髪の毛を揺らすための不要になったPhysboneが残ったままになります。
不要なPhysboneを探してVRC Physboneコンポーネントを無効化したり、不要なボーンごとEditor Onlyにするなどして軽量化も試してみてください。この方法を応用すれば、パーツの一部を比較的自由にいろいろなアバターで使うことができます。規約を守ってチャレンジしてみてください。
おわりに
完全自己流のやり方なので、もっといい方法があったりするかもしれません。こっそり教えてくれると嬉しいです。