【VRChat】アバターをQuest対応させたついでに、表情もQuest対応させる

## はじめに
・本記事で使用するUnityのバージョンは 2022.3.6f1 です
・UnityHubとVCCがインストールされている前提で話を進めます
・[前回の記事](https://qiita.com/Hellcat_152/items/116895e63cefd31c870a)に引き続いての内容なので、必要に応じてそちらもご覧ください

:::note info
#### 更新履歴
2024/02/27
PC用の表情がQuest用の表情に上書きされてしまうことが発覚したため修正
:::

## 前置き
前回、VRCQuestToolsを用いて、PC用アバターをQuest対応させる方法について解説しました
しかしながら前回の方法だけでは、Quest版に対応するシェーダーが透過テクスチャをサポートしていないことから、アバターによっては表情に一部問題が発生するものとなっていました
そこで今回は、表情改変ツールであるFaceEmoを利用し、表情のうち透過テクスチャを含むシェイプキーを無効化することで対応してみようと思います

## 作業開始
では前置きもほどほどに、早速取り掛かっていきましょう

### 1. FaceEmmoをインストールする
予めUnityのプロジェクトを開いておき、BoothからFaceEmoをダウンロードします
ツール本体は無料です

https://booth.pm/ja/items/4915091

ダウンロードしたzipファイルを解凍すると、こんな感じの中身が入っているので、拡張子が".unitypackage"のものをダブルクリックします
![スクリーンショット 2024-01-25 132939.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/8277571c-72af-c081-7f60-a99be6607f1d.png)

そうするとUnityの画面にこんな表示が出てくるので、Importをクリックします![スクリーンショット 2024-01-25 133507.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/28bff4a2-a340-0ccc-14c4-39678b3244fc.png)

これでFaceEmoのインストールは完了です

### 2. アバターを用意する
今回はアバターとして、CRIM SODA氏の「レモネ -Lemone-」を使わせて頂きます

https://booth.pm/ja/items/4222437

公式ではPC版のみ対応のアバターです![88d72261199f3a81fef01dd9bcdf4b98.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/349c0c42-855e-899e-721a-a8fea97773df.jpeg)


ここではVRCQuestToolsでQuest対応を行ったものとして話を進めます
※Quest対応については[こちら](https://qiita.com/Hellcat_152/items/116895e63cefd31c870a)も併せてご覧ください


### 3. PC用アバターの表情を編集する
FaceEmoの導入に成功していれば、画面左のHierarchyビューに「Emo」というボタンが追加されています
![スクリーンショット 2024-02-27 095458.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/6260cfd3-d566-f831-40d3-247209fe7827.png)

まずは**PCアバターの**表情を編集し、アバターに適用しましょう(ここでは上側)
未編集のアバターの「Emo」ボタンをクリックした場合、デフォルトの表情設定が自動的に読み込まれます

使い方については公式マニュアルで詳しく解説されていますので、ここでは割愛させて頂きます

https://suzuryg.github.io/face-emo/ja/docs/tutorials/simple-menu/

一通り編集が終わったら、右下の「アバターに適用」をクリック
![スクリーンショット 2024-02-27 100026.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/6bb0e2b7-8c85-b275-59c8-da4a63749525.png)

続けて「適用」をクリックし
![スクリーンショット 2024-02-27 100116.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/eb4659a8-1e6e-a6b4-703b-3b9632defbc8.png)

このダイアログが出ればPCアバターの編集は完了です
![スクリーンショット 2024-02-27 100225.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/564e5d2c-9a6c-e874-8f9e-20a2ef4596ab.png)

### 4. 透過シェイプキー削除の下準備
ここまで来たらさっさとQuest用アバターの表情も編集したくなるんですが、その前に一つやることがあります
それが、「**PC用とQuest用で表情ファイル(.anim)を分けること**」です

「なぜ分けるのか」と思う方もいらっしゃるかもしれません、解説しましょう

:::note info
#### 透過シェイプキー削除の流れ
① PC用アバターの表情ファイルを編集
② 適用
③ Quest用アバターの表情ファイルを編集
④ 適用
⑤ アップロードして完了
:::

やることとしてはこんな感じなんですが、このままだと③のタイミングで不都合が生じます
というのも、素の状態だと**PCとQuestで参照するファイルが同じ**なんです
その結果、**Quest用に編集した表情が、PC用に編集した表情を上書きしてしまう**、という事態が発生します

このままだとセルフ透過禁止縛りになってしまいますので、参照する表情ファイルを分けてやる必要があるわけです

ご理解いただけましたら、早速作業に取り掛かりましょう


#### ①表情ファイルの場所を探す
まずはアバターの表情ファイル(.anim)の場所を探します

今回の場合は
```txt
Assets
├─Lemone
   ├─Anim
      ├─Clothes
      ├─Exmenu
      └─Face <<ココ！
          ├─Anger.anim
          ├─Aozame.anim
          ├─Be.anim
          ├─Be_2.anim
          (以下略)
```
に表情ファイルがありました

#### ②フォルダーを作る

したらば表情ファイルのあるディレクトリに"PC"と"Quest"というフォルダーを作ります
画面下のファイルがある部分を右クリックし、**Create->Folder**という順に進んでください
![スクリーンショット 2024-02-27 105428.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/77e17575-a097-a40d-8818-16fad75e720b.png)

以下２つのフォルダーが作成できればOKです
![スクリーンショット 2024-02-27 110402.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/7b7c7839-a8ba-a680-8f44-7cdd592842c8.png)


#### ③表情ファイルを移動する
ファイルを作り終えたら
1. まずそこにある表情ファイルを、先ほど作った**PCフォルダーに**全て移動します
![スクリーンショット 2024-02-27 110455.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/81f45ee3-fd55-f138-551f-2f6687ca48c5.png)

2. 次に、今PCフォルダ内に移した表情ファイルを全てコピーし、**Questフォルダ内に**ペーストします
PCフォルダとQuestフォルダの中身が同じ状態になれば、下準備は完了です
![スクリーンショット 2024-02-27 111139.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/f2f4fad9-82f7-b411-1b20-e911e84d85ca.png)

### 5. 透過シェイプキーを消す
ここからはQuest用アバターの表情をいじって、透過テクスチャを含むシェイプキーを消していきます

#### ①編集が必要な表情を確認する
まずはQuest用アバターの「Emo」ボタンをクリックし、どの表情が透過テクスチャを含んでいるのか確認します
「どの表情も大丈夫！」という場合であればそのままアップロードで構わないのですが、PC用アバターにはほぼ確実に透過を含む表情が実装されています

今回は以下５つの表情が対象です
![スクリーンショット 2024-02-27 115821.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/d690edc0-9528-7154-1670-cd7e0776de34.png)
![スクリーンショット 2024-02-27 115814.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/4bbd79b5-8986-3b32-4c58-4c7df8477cc2.png)
![スクリーンショット 2024-02-27 115808.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/158295bf-4489-85f3-e63b-cffe36fb1a67.png)
![スクリーンショット 2024-02-27 115748.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/a8b161b4-420a-834d-9b08-d12ce6b3db29.png)
![スクリーンショット 2024-02-27 115741.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/92ee101b-7762-0a4d-d65a-6d2af8fd7fd9.png)

#### ②表情のシェイプキーを置き換える
編集が必要な表情が分かったら、次に表情ファイルをQuest用のものに置き換えます
先ほども触れましたが、今の状態だと、透過を消すための表情編集がPC用アバターにも反映されてしまうからです

画面下側でQuestフォルダーを開き、対応する名前のファイルを表情プレビューの下の欄にドラッグします
この際、**ファイル名の末尾に"_quest" **と付けておきましょう

例)
・Anger⇒Anger_quest
・Heart⇒Heart_quest


![スクリーンショット 2024-02-27 120953.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/49428b23-f0aa-7b7b-8bc3-b1f27cf50841.png)

同じものをコピーしているためドラッグしても見た目は変わりませんが、ファイル名を確認して置き換わっているか確認しましょう

#### ④表情を編集する
ここではAngerの表情を例にとります
もとの表情はこんな感じで、頬染めと怒りマークが透過テクスチャを使っていることが分かります
![スクリーンショット 2024-02-27 121928.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/8dec9f29-74c4-7ef9-1efc-e69a0c76e9c5.png)

ここから右のウィンドウで"other_cheek_1(頬染め)"と"other_mark_angry(怒りマーク)"を消すと...？
![スクリーンショット 2024-02-27 122106.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/3385d92f-a696-6099-64e6-47c74576a75a.png)

こんな感じに、少し物足りない感じはしますが、透過テクスチャの部分が消えました
![スクリーンショット 2024-02-27 122304.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/66e16517-8bc4-cace-651b-404d7661fa3d.png)

あとはこれを表情の数だけやっていって、最後に**アバターに適用**すれば作業は完了です！

PC版、Quest版それぞれでの**アップロード**を忘れないようにしましょう


## まとめ
今回は、FaceEmoを使って、**透過テクスチャを含む表情シェイプキーを削除する**方法について解説しました(厳密には「削除」だと間違っている気もしますが...)
かなり強引とも言える方法ですが、私は現状これで**問題なく**使えています

PC版からはPC版用の表情が、Quest版からはQuest版用の表情が見えるので、この作業によって**元のアバターの表情が損なわれることはありません**

今回は少し逸脱した使い方をしましたが、FaceEmoは**単なる表情改変ツールとしても優秀**です
UIが分かりやすく、撫でたときに表情を変えられたりと機能も豊富なので、結構おすすめです

では今回も長くなりましたが、良きVRChatライフを！

## 余談(割と重要)
割と面倒な今回の作業ですが、二回目以降の表情改変時は、PC、Questそれぞれの表情を普通にFaceEmoで編集するだけで済みます
透過を**含まない**表情は、参照ファイルが同じなのでどちらか**片方で編集すれば同期します**が、透過を**含む**表情は**個別に編集する必要がある**のでそこだけ注意です！

また、FaceEmoはアバターオブジェクト1個につき、"FaceEmo"というオブジェクトを生成するのですが、アバターオブジェクトを一度削除した際はこれを使うことで、表情を引き継ぐことができます

①引き継ぎたい表情の入った"FaceEmo"オブジェクトを選択
②画面右の「対象アバター」の欄に、引き継ぎ先のアバターをドラッグ
③「FaceEmo起動」を押して、出て来たメニューから表情を適用
![スクリーンショット 2024-02-27 133229.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2016616/1d94f0d7-ea1c-301e-be95-a9aee6ede453.png)

以上の手順を踏むことで、アバターオブジェクトを消した際の、表情の再設定を回避することができます

## 使用したツール等
FaceEmo

https://booth.pm/ja/items/4915091

レモネ -Lemone-

https://booth.pm/ja/items/4222437

前回の記事

https://qiita.com/Hellcat_152/items/116895e63cefd31c870a