[VRChat]はじめてのアバター衣装改変[Unity]
はじめに
(2024/09/06追記)
本記事の改訂版といえる記事を執筆しました。
よかったらそちらもご覧ください。
この記事では、Unityを使ってVRChat用のアバターにはじめて衣装を着せようと思っている方に向けたものとなります。
なお、衣装はBoothで購入することを想定しています。
自作衣装の製作やBlenderを使用した衣装改変(衣装替え)をしたい方、VRMやVRoid関連でのアバター制作・改変は他の方が記事や動画などを作成なさっていますのでそちらをご覧ください。
また、1度はアバターをアップロードしたことがある方を想定しています。
はじめてアバターをアップロードされる方はこちらの記事もありますのでご参考までに。
記事作成時の環境
使用OS:Windows11
使用Unity:Unity 2022.3.22f1(英語表記)
アバターの利用規約を確認しておきましょう
アバターによっては改変内容に制限がある場合があります。
たとえば
・センシティブ表現の禁止
・TS(性転換)改変、素体・頭部のすげ替え改変の禁止
などと記載されている場合がありますので、アバターの改変を行う場合はそのアバターの利用規約を確認してから改変内容を検討しましょう。
これらの規約に抵触しているかどうかは製作者(SHOP)様の解釈次第となりますので、利用規約はよく読んでおきましょう。
衣装選びと購入
お気に入りのアバターが決まりいよいよ衣装を選ぼうとBoothで検索してみると、「〇〇対応」や「〇〇専用」というものが見つかるかもしれません。
この意味はそのアバター用に制作・調整された衣装のことで、それ以外は「非対応」ということになります。
気に入った衣装が自分の選んだアバターに対応しているものであれば簡単に着せることができる(若干の調整が必要な場合もあります)のですが、非対応の場合あきらめなくてはいけないのか、というとそうでもありません。
ネットで検索すると「非対応衣装の着せ方」などの記事や動画を見かけることから、衣装によっては非対応でもUnityで着せることができます。
ですが、この記事をご覧になっている方は「はじめて衣装替え(衣装改変)をしようと思っている方」だと思いますので、まずは対応衣装から選ぶことをおすすめします。
選んだ衣装にフルセット版があった場合、自分のアバターに対応した衣装だけを購入するのではなく、できたらちょっとがんばってフルセットを購入することを検討しましょう(あくまでご自身のお財布事情に合わせて購入検討してください)。
なぜフルセット版を検討するのかというと、たとえば自分のアバターがAというアバターだったとします。
今後、BoothやVRChat内で見かけて気に入った衣装があったときに、その衣装が自分のアバターに対応しておらず、BやCというアバターに対応していた場合、かつてフルセットで購入した衣装の中にBやCのアバター用のものが含まれていてその衣装が着せられるようであれば、欲しいと思った衣装のBやCに対応した衣装で購入できるのです(この時は自分の持っているアバターの分だけでも構いません)。
このように、非対応衣装であっても「このアバターに対応している衣装なら着せられる」という具合に衣装選びの時の選択肢を増やすことができるようになります。
フルセットは単品と比べて値が張りますし、アバターを購入した直後であれば中々厳しいかもしれませんので、すぐにとは言いませんが1度は購入しておいても良いと思います。
新作衣装のRP(リポスト)キャンペーンでフルセットをプレゼントする企画を行っているSHOP様もいらっしゃるので、自分の持っているアバターが含まれていたらそれに応募してみるのも手です。
着せ替えに使用するアバターと衣装
それでは実際に着せ替えてみます。
アバターには シフォン/あまとうさぎ様 を使用します。
衣装は Angelic_Lapin/P_Store様 を使用します。
このSHOP様の衣装は対応アバターが豊富なものが多いです。
今回検討する衣装は
マヌカちゃん用と桔梗ちゃん用
で検討してみます。
対応衣装が豊富なお二人を選んでみました。
ちなみにシフォンちゃんはライムちゃんと素体構造が共通なのでライムちゃん対応/専用の衣装を軽度な調整で着せることができます。
Unityで作業する場合に注意すること
アバターの衣装替え(改変)に限らず、Unityで作業をするときに是非覚えておいて欲しいことがあります。
それは、Console を逐次確認する ことと、 こまめに保存する ことです。
Consoleとはいわゆるログのことで、なにかを追加したりした際にエラーがないかチェックした結果をConsoleに残していきます。
Consoleの左側にアイコンが表示されて、それぞれ以下の意味となっています。
白い吹き出し:特に問題のないログ
黄色い!:注意 → 内容を確認して問題なければスルーしても構いません
赤い!:エラー → 必ず確認しましょう。内容によっては対応が必要です
赤い!のメッセージが出たらエラーの意味なのでこのアイコンが出たときは作業を一旦止めましょう。
エラーの内容によって対応策が異なってきますので、まずはエラー内容を確認しましょう。
直前の作業でエラーがでた場合は Ctrl+Z で戻ることができる場合がありますので、原因を特定しやすいです。
中にはインポートが正常に出来ていないためにエラーが出てる場合があり、一度消した後に再インポートしたら直ったという例もあります。
そういう意味でも Console は逐次確認しておくと良いでしょう。
それから、これは特にアップロード時に発生しやすいエラーですが、たまにUnityを一度終了して再起動させると何事もなかったかのようにアップロードできることもありますので、アップロード前には一旦保存するようにしておきましょう。
ファイル名を変えて保存しておいて履歴を追えるようにするのも非常に有効です。
前準備
VCCのパッケージ
VCCを起動して新規プロジェクトを作成します。
Manage Packageから以下をインストールします。
・Gesture Manager
・AAO: AvatarOptimizer
・anatawa12's gists pack
・Modular Avatar
・Non-Destructive Modular Framework
(Modular Avatarと一緒にインストールされます)
・lilToon
・lilAvatarUtils
(lilToonと一緒にインストールされます)
上記の太文字のパッケージはほぼ必須と思ってください。
lilToonはほとんどの衣装で使用されているシェーダーで、とりあえずな感じで入れています。
下記リンクからVCC版をインストールしましょう。
(古かったりリンクが切れていたらネット検索で探してください)
モジュラーアバター | Modular Avatar (nadena.dev)
Introduction | Avatar Optimizer (1.7.6) (anatawa12.com)
lilToon (lilxyzw.github.io)
Introduction | anatawa12's gist pack for Unity (0.14.0)
VCCパッケージ以外のunityファイルのダウンロード
VCCのパッケージ(VCC版ツール)以外にも必要となるファイルをダウンロードします。
・衣装のページで指定されているシェーダーなど
・動作確認用のアニメーション(好きなものでOKです)
例: 【無料モーション】確認に最適な体操アニメーション集”ErrorChecker” 【VRC/改変/ゲーム向け】 - V WORLD - BOOTH
Prefab variantの作成?
アバター改変で広く言われているのが Prefab variant を作って(ダウンロードしたファイル中にある元々の Prefab や Prefab variant を直接改変せずに改変する準備状態にしたものから改変用の Prefab variant を作る)、それを改変した方が良いとされています。
この記事では非対応衣装が着れるかを検討する内容となっていますので、詳細説明については省略します。
ご興味ある方やきちんとやりたい方は「アバター Prefab variant」などと検索すると記事が出てきますのでそちらをご覧ください。
この記事でのUnityウィンドウレイアウトについて
この記事に掲載されているUnityのウィンドウ(タブ)レイアウトは、デフォルトのものとは異なります。
ご自身で見やすい、使いやすいレイアウトにしていただいて構いませんし、もちろんデフォルトのままでも構いません。
Unityにツールを表示させる
Unityでプロジェクトを開いて改変前準備としてツールを表示(適用)させます。
① Gesture Managerの適用
メニューの「Tools」から「Gesture Manager Emulator」を選択します。
② anatawa12's gists packの適用
メニューの「Tools」から「anatawa12's gist selector」を選択します。
別ウィンドウが起動するので、リストから「ActualPerformanceWindow」にチェックを入れて「Apply Changes」を押すとロードウィンドウが出るので終わったらウィンドウを閉じます。
③ lilAvatarUtilsの適用
メニューの「Window」から「_lil」→「AvatarUtils」を選択します。
別ウィンドウが開くので適当な場所に置いておきます。
指定シェーダーなどをインポートする
今回の衣装で使用するシェーダーは lilToon なのですでにVCCから導入済みの状態です。
他にPoiyomiなどのシェーダーが指定されている場合は別途ダウンロードしてメニューのAssetsからインポートしましょう。(VCC版出るんでしょうかねぇ…?←VCC版出てました!)
また、動作チェック用のアニメーションもインポートしておきましょう。
アバターをインポートする
一通りツール類やシェーダーなどを適用・インポートし終えたらアバターをインポートします。
今回は衣装改変のみ行うので省略しますが、目の色や髪などを変えたい方はこの段階で変更してしまってもOKです。
プロジェクトを保存する
ここまで終わったら一旦プロジェクトを保存します。
このプロジェクトフォルダをコピーして別の名前に変えてVCCにインポートしておきます(他アバター用衣装検討用)。
プロジェクトのコピーの仕方
Unityの「Project」タブにある「Assets」を右クリックしたメニューから「Show in Explorer」を選択してプロジェクトが保存されているフォルダ(一つ上の階層)に移動してプロジェクトをコピーして名前を変更します。
またはVCCからプロジェクトのバックアップを作成し、解凍したフォルダの名前を変えてプロジェクトが保存されているフォルダに移動、またはコピーします。
対応衣装にお着換え~アップロードまで
対応衣装をインポートします。
インポートする際に一番上に表示されているフォルダ名を確認しておくとインポート後のフォルダが見つけやすいです。
インポートしたフォルダやファイルをわかりやすくするツールがBoothにありますのでそちらを使用しても良いです。
「Project」タブの「Assets」にある衣装のPrefabファイルを「Hierarchy」タブのアバタールートにドラッグ&ドロップします。
アバターに衣装が重なりました。
この状態でおかしなところ(肌などが露出していたり、位置がずれていたり、など)がないか確認します。
ここでちょっとTipsを。
Sceneタブで確認するときにカメラを動かしていくのですが、通常であれば真ん中クリックや右クリック、ホイールを使っていると思います。
このとき、右クリック+WASDでもカメラを前後(拡大/縮小)左右に振ることもできます。なお、右クリックを押したままホイールを回すと前後(拡大/縮小)左右に振る幅(倍率)が変えられます。
特におかしなところは見当たらなかったので、アバターに衣装を着せます。
Modular Avatarをインストール済みなので、衣装のルートを右クリックしたときのメニューから「Modular Avatar」→「Setup Outfit」をクリックして衣装のルートに「MA Mesh Settings」というタブが表示されれば衣装をアバターに着せる(紐づける)ことができます。
ちなみにModular Avatarは「MA」と省略されて呼ばれたり記載されたりしますので覚えておくと良いかもしれません。
このときエラーが出てしまってMAが適用できない場合があるので、その時はキセテネなどを使うと着せることができる場合があります。
キセテネはVCC版がありますのでもしものときのためにインストールしておくとよいかもしれません。
(2024/09/06追記)
ただし、キセテネを使用するとPrefabをUnpackしてしまうので、失礼を承知で言いますとあまり推奨されません。
どうしてもという場合以外にはUnpackはしない方が良い、というのが現在の主流です。
なぜUnpackがいけないのか、ということについて詳しくは書きませんので興味ある方は検索してみてください。
なので、出来るだけMAを使用するようにしましょう。
この後検討する非対応衣装を着せる場合はAmatureの関連性によってMAがエラーとなっている場合がありますので、その時はAmatureを修正してから再度MAで着せてみてください。
今回の衣装は特におかしなところはなかったのですが、衣装によってはたとえば髪飾りが髪に埋まってしまっていたりします。 特に多いケースはヒールを履く場合で、このときはBlendShapes(シェイプキー)の「Foot_HighHeel」などで調整しないとつま先がヒールの上にのっかっている状態になったりします。
髪飾りが埋まってしまっているような場合は、衣装側のArmatureで位置調整が必要になります。
Anchor Overrideの設定
VRChatのワールドを巡っていると暗い場所や夕暮れなどの場面があると思います。 そこで写真を撮った時に顔と服、髪への光の当たり方が違っていたりするケースがあります。
これを解消するために「Anchor Override」を設定しましょう。
詳しくは省略しますが、簡単に紹介するとアバターは特定の点で光を受けます。 この点が先ほどの顔や服、髪などでずれているとそれぞれの点で受けた光の状態で表示されるので統一しておきましょう(あえて変えるという選択肢もありますが、最初は統一しておいた方が無難です)。
シフォンちゃんのAnchor Overrideは「Chest」で統一されています。
図はBody(顔)ですが、他のパーツも同様に確認してみると「Chest」になっています。
ご自身のアバターの各パーツ部分を選択して「Inspector」にある「Anchor Override」を確認してみてください。
アバター側の Anchor Override と同じになるように衣装側を合わせます。
① アバター側のAnchor Overrideの設定欄をクリックすると設定されている
パーツがクローズアップされます。(すぐに消えてしまうので見逃さない
ようにご注意ください)
② 衣装側のパーツを選択してAnchor Overrideをアバター側のものと同じも
のをドラッグ&ドロップします。
③ ②の作業を衣装を含めたすべてのパーツに行います。
ちょっとした手間になるので、面倒だと思われる方はBoothにツールがあるようなのでそちらを使用しても良いかもしれません。
ただし、確認だけは必ず行ってください。
各種光源による見え方の確認(lilAvatarUtilsによる確認)
プロジェクトにlilAvatarUtilsのパッケージをインストールしていると各種光源による見え方を確認することができます。
① メニューの「Window」から「_lil」→「AvatarUtils」を選択します。
② ウィンドウが表示されるので、上の欄にアバタールートをドラッグ&ドロ
ップします。
③ タブから「Lighting」を選択すると各種光源による見え方が確認できま
す。 Sceneでカメラを移動させると連動します。
このツールは他にもテクスチャ容量の確認やマテリアル一覧なども確認できますがこの記事では省略します。
詳しく知りたい方は検索してみてください。
動作確認(Gesture Managerによる確認)
それでは衣装を変更(改変)したアバターがVRChatでどのように動くのか確認してみます。
確認するにはGesture Managerを使用します。
「Hierarchy」から「Gesture Manager」(無い方は上のほうを参考に適用してください。 VCCに標準で含まれているパッケージなので特にダウンロードしてくる必要はありません)をクリックした状態で上にある三角(プレイボタン)を押してプレイモードに入ります。
プレイモードでは様々な確認ができます。
「Scene」でアバターを移動させたり、「Inspector」タブの「Gesture Manager」で手のジェスチャー(握ったり、開いたりなど)に設定した表情の確認、さらにはExpressionsメニューの確認などもできます。
いろいろと出来るので一通り試してみると良いと思います。
さて、この記事でご紹介するのはアニメーションによる動作確認です。
先の下準備の項で例としてご紹介した
【無料モーション】確認に最適な体操アニメーション集”ErrorChecker” 【VRC/改変/ゲーム向け】 - V WORLD - BOOTH
を使用します。
すでにインポートされている方は「Project」の「Assets」に「V World」というフォルダがあると思いますので、そのフォルダ下の「ErrorChecker_001」というアニメーションファイルを選択できる状態にしてください。
次に「Inspector」タブの「Gesture Manager(Script)」にある「Tools」をクリックすると、メニューっぽいものが表示されます(ここでもいろいろなことができますが今回は省略します)ので、この中から「Test Animation」を選択します。
するとアニメーションファイルを指定できる欄が表示されるので、ここに先ほどの「ErrorChecker_001」をドラッグ&ドロップします。
ドラッグアンドドロップした欄のすぐ横にある「Play」を押すとアバターが動き出しますので、「Scene」タブからカメラを移動させつつアバターが動いた際におかしなところがないか確認します。
特に気を付ける点としては、腕や足の曲げ伸ばし時の衣装の貫通(衣装を突き抜けて中のパーツが出てくる現象)でしょうか。
一通り確認が終わったら先ほどの「Play」と表示されていたボタンが「Stop」になっているので、これを押してアニメーションを停止させます。
おかしなところがあった場合は、上の三角を押してプレイモードを解除して直します。
直し方はおかしなところによりますので、ここでは省略します。
VRChat 2024年8月のアップデートについて
VRChat公式発表によると、2024年8月のアップデートでVRChatにアップロードできるアバター容量の制限値が下がる(500MB→200MB)ようです。
詳細はネットの記事や公式を直接見てください。
今回のような単に1着の衣装に着替えた程度であれば特に気にする必要はないでしょうが、中にはギミックを使って複数の衣装に着替えられるようにしたり、髪飾りやバッグなどをアバターに着せたり、綺麗なパーティクルを仕込んだりした場合、アバターの容量が大きくなってしまうことがあります。
この容量(サイズ)が200MB(圧縮状態)を超えるとアップロードできなくなる、というのがアップデートの内容となります。
これを解決する手段が「アバターの軽量化」になるのですが、ここでは省略します。
ご興味ある方は記事を執筆しておりますのでご参考までに。
アバターの最適化(AAO Trace&Optimize)
下準備の項で Actual Performance Window を開きました。
同じような項目が VRChatSDK にもあるのですが、VRChat SDK に表示されているパラメータは実際にVRChatにアップロードすると変わる(主に減る)ことがあります。
これはアップロード時に適用されるものを使用する(している)ため、Unity上のもので計算しているVRChat SDKの数値と異なるためです。
では毎回アップロードしてVRChatにログインして確認しなくてはいけないのか?と非常に面倒に思われるかもしれませんが、実はプレイモードはVRChatにログインした状態を再現してくれるモード、いわゆるシミュレーションモードなのです。
そして、Actual Performance Window はプレイモード時の状態を計算してくれるので、実際にVRChatにアップロードした状態とほぼ同じといってもいいくらいの精度で計算してくれます。
この記事で作成しているアバターは特になにもしていないので、VRChat SDKで表示されるパラメータとActual Performance Window に表示されるパラメータとに差異はほとんどありません(Bone数が少し違う程度です)。
以下の作業を行ってみてください。
① 「Hierarchy」タブからアバタールートを選択して、「Inspector」タブの
一番下にある「Add Component」を押します。
② 表示されたドロップダウンリストの上にある検索欄に「aao」と入力して
リストから「AAO Trace And Optimize」を選択します。
もう一度プレイモードに入って確認してみましょう。
赤枠部分の数値が変わっているのがわかります。
AAOはアップロード時に適用されるツールで、Unity(エディター)上では計算されないため、VRChat SDK のパラメータには反映されないのです。
この AAO Trace&Optimize は、パーツが多いとより効果を発揮する傾向にありますし、非常に簡単に導入できますので是非ご活用ください。
もう一度これまでの内容を確認して特におかしいところが無いようでしたら一旦保存してからアバターをアップロードしてください。
アップロードが終わったらプロジェクトを保存して閉じてください。
(ブループリントというものが含まれた状態で保存されます)
非対応衣装の検討①(マヌカちゃん用)
先の項で作成した非対応衣装検討用のプロジェクトを開いてください。
プロジェクトを開いたらマヌカちゃん用の衣装をアバタールートにドラッグアンドドロップしてください。
図では他のアバター用衣装の時と区別するために衣装の色を変えています。
マヌカちゃん用衣装の検討と桔梗ちゃん用衣装の検討を区別するために、「File」メニューから「Save As…」を選択してファイルを分けます。
プロジェクトを分けても構いません。
対応衣装の時とは違い、アバターと衣装の位置や大きさなどが違います。
もちろんのことですがシフォンちゃんとマヌカちゃんでは身体の大きさが違うからです。
ボーン、Armature、メッシュとは?
ボーンといわれると骨を連想すると思いますがそのままで骨格、骨だと思っておいて良いと思います。
ですがArmatureは点で指定されています。
ではArmatureは何なのかというと、関節だと思って良いでしょう。
HerarchyにあるArmatureパーツ(ShoulderやLegなど)がどの位置から始まるのかを設定しているのがArmatureだと思っておいて良いと思います。
実は衣装はアバター(素体)が無くても動きます。
それは衣装にもArmature、つまりボーンがあるためです。
上でも書いたようにボーンは骨格です。
このボーンに合わせて衣装として見えるようにしているのがメッシュです。
メッシュは生地だと思って良いと思います。
つまり、アバターのボーンやメッシュに衣装のボーン、メッシュを合わせてあげるとアバターが動いたときに衣装も動いてくれるということになります。
非対応衣装を着せる作業はこのボーンやメッシュ、つまりAmatureを調整することで衣装をアバターに着せることができるのです。
ですが、ぴったりフィットさせることは難しい(ほぼ無理)と思ってください。
どうしてもという方はBlenderを使用するか、以下のようなものがBoothにありますので試してみるのも良いかもしれません。
【UnityEditor拡張】にゃんにゃんメッシュエディター(MeshModifyTool) - HOTATE's VIRTUALAB - BOOTH
Armatureを確認する(ボーン構成の確認)
上にもありますように、衣装合わせはArmatureを調整する作業となります。
そして、ある程度は共通していますが、基本的にArmature(ボーン)の名前の付け方は製作者様によって異なります。
もちろん衣装のAmatureは、対応するアバターに合わせたものとなっています。
それではシフォンちゃんと衣装のArmatureを比較してみましょう。
左がシフォンちゃん、右が衣装のArmatureです。
こうしてみるとアバターのボーン名と衣装のボーン名が近いことがわかります。
衣装側の「ccloak~」などは衣装のメッシュを決めているボーンです。
ここでModular Avatarについて少し触れておきます。
Modular Avatar(MA)は、アバターと衣装のArmatureが部分一致している箇所にボーンを統合させるようになっていますので、たとえば、アバターの「Breast_L_Root」と衣装の「Breast_L」は部分一致で統合されると思います(まだMAについてきちんと理解できていなくてすみません)。
ボーン名を修正する必要がなさそうなので、実際に着せていくことにします。
Amatureの変え方
AmatureというよりUnity全体に言えるのですが、階層構造の下位になっているパーツは上位の設定に従います(親子関係という言い方もあります)。
「UpperLeg」と「LowerLeg」を例にして説明すると、「LowerLeg」は「UpperLeg」の下位階層になっている(「紐づいている」といいます)ので、先に「LowerLeg」を調整した後に「UpperLeg」を調整すると「UpperLeg」の調整した場所を基準にして「LowerLeg」が位置決めされます。
つまり、Amatureの変更は上位階層から順に行った方が効率的なのです。
衣装のスケールを変える
最初に衣装のルートを選択してアバターの肩に合うように「Scale(スケール)」を変更します。
次に衣装全体がアバターよりも前に行ってしまっているので、矢印のZ軸をドラッグするか、「Position」で調整します。
衣装の胴の部分で中の肌がみえてしまっているので、「Scale」や「Position」を調整して肌が衣装の中が見えないように調整します。
脇の部分の隙間が気になるかもしれませんが、これがぴったり合わせることはできない部分です。
また、上腕部分にアバターの腕が衣装からはみでていますが、これは後で調整していきます。
参考までに上の図の状態時の値は以下となりました。
各パーツの調整
衣装のルートを調整することで大枠としてのスケールやポジション調整が終わったら、次は各パーツの細かい調整となります。
こちらも対応するAmatureで行っていきます。
先ほど上腕部分がはみ出していたので、これを例にして調整方法を紹介します。
上腕部分に対応しているAmature(ボーン)は、「UpperArm」なのでこのボーンを選択してスケールやポジションを調整します。
このようにアバターと衣装を合わせていきます。
結果、このように着せることができました。
MAによるSetup Outfitで着せることもできましたし、動作確認して特に問題もありませんでした。
非対応衣装の検討②(桔梗ちゃん用)
作業内容については①のマヌカちゃん用の時と同じなので、いきなりですが結果を…
こちらも着せることができました。
MAのSetup Outfitも、動作確認も特にエラーやおかしなところはありませんでした。
非対応衣装の検討まとめ
今回マヌカちゃん用と桔梗ちゃん用の衣装を着せてみた感想ですが、今回の衣装のように肩紐があるような場合は、やはりそこの部分の隙間が気になる人はいるかもしれない、という印象です。
なので、着る衣装は多少選ぶものの全く着せられないという訳ではなかったため、ひとまず非対応衣装であったとしてもマヌカちゃん、桔梗ちゃんに対応していれば視野にいれてもいいのかな、と言ったところです。
ただ、アバターのシルエットにぴったり合うようなデザインの衣装は厳しいと思います。
まとめ
いかがだったでしょうか?
「はじめての」という割には少々ハードルが高いと感じたかもしれませんが、アバターによっては本当に対応している衣装が少なく苦労なされている方をお見掛けしますので、簡単ではありますが非対応衣装の検討もご紹介させていただきました。
気に入ったアバターに気に入った衣装を着せて遊ぶのは楽しいですからね。
それではみなさま良いVRChatライフを!