2021-08-29追記 Unity 2019 環境になってからも同様の方法で利用可能です。ただし、Entry 直後の State (今回でいえば White
)でも切り替え対象のマテリアルを設定しないとうまく動作しない場合があるようです。その場合は、記録の際に一度別のマテリアルを選択した後、本来のマテリアルを再度選択することでアニメーションを作成できます。
2022-04-14追記 VRoid 正式版 (v1.x~) でも同様のテクニックで早着替えが可能です。本文を参照し、ベータ版と同様にテスクチャのレイヤーを切り替えたマテリアルを用意してください。ただし、透明メッシュを削除する
オプションがデフォルトでオンになっている点に注意して下さい。早着替えの仕組み上、メッシュが各 VRM で一致している必要がありますので、オフにしてください。
みなさん、VRChat 楽しんでいますか? 私はとても楽しんでいます。
さて、先日 VRCSDK3-AVATAR がリリースされました。その特徴は、なんといってもカスタマイズ性の高さです。もとよりプレイヤー自身がアバターやワールドを制作することが VRChat の醍醐味ではありますが、 その長所がより突き詰められた形です。
本記事では、従前のマテリアルアニメーションとアクションメニューのカスタマイズを組み合わせることで、アバターを切り替えることなく衣装をチェンジするバーチャル早着替えを実装します。
STEP0: VRM 素材の準備
VRoid で普通にアバターを作成します。
次に、着替える衣装を用意します。着替える前の服と後の服はモデルの切り替えではなく、テスクチャのレイヤー切り替えで表現してください。今回はマテリアル(=テクスチャ+シェーダ)を差し替えることで早着替えを行うためです。1
衣装が定まったら、着替え前・後で2つの VRM ファイルを出力してください。VRoid での作業は終了です。
STEP1: Unity プロジェクトへのインポート
Unity プロジェクトに VRCSDK3-AVATAR と VRM Converter for VRChat をインポートします。
2つの VRM ファイルをインポートします。続いて、VRM Converter 所定の手順に従い、着替え前のモデルだけ VRChat 用に変換します。
シーン中にある VRChat 用モデルを複製します。2
STEP3: アニメーションの作成
Animationウィンドウ(タブ)で[Create]をクリックし、新しいアニメーションクリップを作成します。名前は何でもよいですが、ここでは kigae
としました。
Animationウィンドウ(タブ)の左上にある記録ボタン(赤丸)を押し、アニメーションの記録を開始します。
足元に複製したモデルが埋まっているので、ヒエラルキーから[Body]を選択しインスペクタを開きます。[Skined Mesh Renderer]-[Materials]で任意のマテリアルを着替え後のマテリアルに差し替えます。ワンピースの場合はトップスのみなので、F00_002_01_Tops_01_CLOTH
を変更すれば OK です。
変更ができたら、再度記録ボタンを押してアニメーションの作成を終了します。複製したモデルは削除しておきましょう。
STEP4: FX の変更
FX はモデルの状態遷移図のようなものです。VRM Converter で変換したモデルでは、あらかじめカスタマイズされた FX が作成されています。
モデルのインスペクタで[VRC Avatar Descriptor]-[Playable Layers]-[FX]に設定されている FX をダブルクリックで開きましょう。
[Parameters]に int 型変数 Kigae
を追加します。この変数はアクションメニューとの連携に利用します。アクションメニューでの操作が変数に反映されるので、FX では Kigae
の変化で服装が変化するようにしましょう。
FX は複数の状態遷移図をレイヤーで重ねたような構造になっています。[Layers]タブで Kigae
レイヤーを追加し、オプションで Weight を 1 に変更します。デフォルトでは Weight が 0 ですが、そのままではモデルにアニメーションが反映されません。
状態遷移を作図していきます。右クリックで[Create State]-[Empty]から新たな状態を、状態を右クリックし[Make Transition]から新たな遷移を作成できます。下図のように「着替え前の状態」と「着替え後の状態」を作り、「Entry」から「Exit」がつながるようにしてください。
そして、「着替え後の状態」の[Motion]に先ほど作成したアニメーションを設定します。
Transition を選択し、遷移の条件を設定します。[Conditions]で Kigae equals 0
で「着替え前の状態」に、Kigae equals 1
で「着替え後の状態」へ遷移するようにします。
これで FX の設定は完了です。
STEP4: アクションメニュー の変更
最後に、設定したアニメーションをアクションメニューから呼び出せるようにしましょう。インスペクタで[VRC Avatar Descriptor]-[Expressions]-[VRCExpressionParameters]を開きます。
ここで、先ほど設定した変数 Kigae
との紐付けを行います。変数名と型を設定します。
[VRC Avatar Descriptor]-[Expressions]-[VRCExpressionsMenu]を開きます。
[Add Components]からアクションメニューの項目を追加します。
[Parameter]で Kigae, Int
を選択し、[Value]を 1
にします。
[Type]で toggle
を指定すると、次にボタンを押すまで着替えっぱなしになります。
ビルド&テストしてみましょう。
アクションメニューに項目が追加され、早着替えを行うことができました!