この記事の執筆時点での環境:
Unity 2018.4.20f1
VRCSDK2 2020.04.17.11.34
目次
- マテリアル変更のメリット
- 作り方
マテリアル変更のメリット
ぱっと思いつくメリットというと、
1. 小物の出し入れと同時に服の柄を変えたい時に、服のメッシュを二つ入れなくて済む
2. 他種族への変身などで肌の色が変わるとき、顔肌で悩む心配が減る
といったところでしょうか。
作り方
今回の目標はこれをエモートスイッチ一つで実装します。

用意するもの:
- EmoteSwitchV3.3
- VRCSDK2
- 変更先のマテリアル
今回は日焼けした感じのテクスチャを用意してみました。
元のマテリアルが M_Body1 で、新しいマテリアルが M_Body2 です。

マテリアルが用意出来たら、さっそく作っていきましょう。
非表示にしたい Mishe_ear と、マテリアルを変更したい Body のメッシュを通常通りにEmoteSwitchに設定します。

EmoteSwitch V3_Body / Joint / Toggle1 を選択すると、アニメーターが付与されていると思います。これからこのアニメーションを編集しますが、これを弄ってしますとすべてのエモートスイッチに影響がでてしまうので、アニメーションファイルを複製して、複製したものを使用します。
Object_ON&OFF という感じの名前のアニメーションだと思うので、それを複製し、Toggle1 に元々ついていた Animator を削除します。
複製したアニメーションを Toggle1 に適用したら、新たに Animator コンポーネントが付与されると思うので、チェックを外して無効化しておきましょう。
Toggle1を選択した状態で、Animationウィンドウを開きます。表示を Curves に変更するとこんな感じのグラフが表示されると思います。

この黄色い線が上にあるところがスイッチON、下にあるところがスイッチOFF(初期状態)です。これにあわせて、マテリアルを変更する処理を追加します。
Add Property から、Object / Body / SkinnedMeshRenderer / Material Reference[0] を追加します。

先ほどの黄色い線に従って、スイッチ前後のマテリアルを配置します。すると、このようになります。

このままだと、スイッチ後(スイッチON)の状態のときに Body のメッシュが消えてしまうので、Object:Game Objrct.Is Active を削除します。
これで完成です。こんな感じになります。
以上で完成です!よきVRCライフを!