VReducerを使ってVRoid アバターをclusterの制限に対応させる（2023年注、もう不要な手順です）

## 2023年現在、 cluster はアバターアップロード制限を撤廃したので、下記の操作は不要になりました！

https://note.com/cluster_official/n/nf266cd4d327a

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123/ff1582d1-4835-dcda-53f9-dca5db77cfd7.png)

バーチャルイベントプラットフォーム、またはソーシャルSNSのcluster( https://cluster.mu/ )にアバターを持ち込むためのTips。

## clusterのアバター制限とVRoid
clusterはVRM形式のカスタムアバターに対応しているが、イベントなどの大人数を一度に表示する利用用途を想定し、ある程度の容量に収まるよう制限がかけられている。

[カスタムアバターの制限 – ヘルプセンター | cluster（クラスター）](https://clusterhelp.zendesk.com/hc/ja/articles/360029465811-%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%82%A2%E3%83%90%E3%82%BF%E3%83%BC%E3%81%AE%E5%88%B6%E9%99%90)

また、アバター制作の手軽な手段としては pixiv社製のアバターモデリングソフト[VRoid](https://vroid.com/) があるが、ある程度リッチにしていくとこのアバター制限に引っかかってしまう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123/06136a4f-d85c-3442-9dda-9363e3342d32.png)
制限に引っかかったときの例([アバター管理画面](https://cluster.mu/account/avatar))

これを回避するには、まともにやるとここから UnityやBlenderを持ち出して、地道に指定の制限に収まるように修正が必要となる。しかし、3Dモデリングの知識がなければこれは難しい。

そこで、VReducerを利用する。

## VReducer とは
[kanno2inf/VReducer: VRoidモデルをClusterアバター用に軽量化するスクリプト](https://github.com/kanno2inf/VReducer)

VReducerは python 製のスクリプトで、まさに VRoid to cluster のために作られた。
このスクリプトを通すことでモデルのMaterial等をいい感じに結合してくれ、clusterの制限に通るくらいにしてくれるもの。元のモデルの作りによっては収まりきらない場合もあるので、VRoid側でも対応が必要なケースもある。

## VReducer を使う
### pythonインストール
python環境が必要なので、まずはその準備をします。
利用するのは **python3系** なので注意。OSによって違うので、自分の環境に合わせて用意する。
Windowsは少しハードル高いかもしれない。。

- Macの場合
    - [Python3インストール（Mac編） - Qiita](https://qiita.com/ms-rock/items/72b8f1abc661c539bb09)
- Windowsの場合
    - [【windows10】Python3.7をインストールしてpathを通して、pipでパッケージを入れる - なろう分析記録](https://karupoimou.hatenablog.com/entry/2019/04/29/064646)
    - 今だとWindows Terminalとかが使えるのかな
        - https://www.asobou.co.jp/blog/web/windows-terminal

### 使い方
pythonを入れたあとは、ほぼVReducerのGithubにあるREADME通りで引っかかるところはないはずなので、順番にやっていこう。

まずは以下の章にあるとおり、準備としてPillow のインストールを済ませておく。
https://github.com/usagi/VReducer#%E6%BA%96%E5%82%99

準備が出来たら、Terminalから下記のようにコマンドをたたくだけで、あとは自動で処理が走り、指定したファイルと同じ階層に`result` ディレクトリができて変換後のファイルが格納される。

`python vreducer.py VRoid.vrm`

いくつかオプションを渡せるが、特殊なものとしては下記がある。

> 2018/02/06時点でClusterの一部会場でモデルが暗くなる問題が出ているため、-eオプション付けることを推奨します。

この問題については cluster 側で対応されている状態で、現状指摘されている問題は発生していない（はず）。そのため現状では特に利用せずとも問題ない。

## VRoid アバターの表情を編集する
さて、うまくいけばこれだけでVRoidモデルを cluster に持ち込めるけれども、少し引っかかるのが表情の問題。
VRMアバターはモデルの中に表情のパラメータを持っていて、扱うサービスによってこれを呼び出すことができる。
clusterではちょっと面白い方法を採用しており、アバターの両手の位置によって表情を出しわけることができる。

[カスタムアバターの表情切替 – ヘルプセンター | cluster（クラスター）](https://clusterhelp.zendesk.com/hc/ja/articles/360003826992-%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%82%A2%E3%83%90%E3%82%BF%E3%83%BC%E3%81%AE%E8%A1%A8%E6%83%85%E5%88%87%E6%9B%BF)

```
「両手または片手を、顔より上に挙げる」→「JOY」で設定している表情になります
「両手または片手を、体より後ろに運ぶ」→「ANGRY」で設定している表情になります
「両手を、顔に近づける」→「SORROW」で設定している表情になります
「上記以外の動作中」→「NEUTRAL」で設定している表情になります
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123/4d1fc92d-43e8-d12f-518d-45a301c3b378.png)

こちらの画像では「両手を、顔に近づける」という動作（の、はずだがこれも両手または片手を、なのかな？）に設定されている、「SORROW」の表情がでている。

？と思う方もいるとおり、表情が全然「SORROW（悲しみ）」じゃないと思う。
これはデフォルトで「SORROW」に設定されているパラメータを編集し、好きな表情を当てはめているものだ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123/fc6c7860-5d9d-83ca-425d-3bf5b526386b.png)

ちなみに「SORROW」の初期設定はこのような顔。基本の表情設定のままだと、アバターの印象にもあっていない場合が多く、またそもそも悲しい顔をさせたいケースが必ずしも多いわけではないため使いづらい。
その他の「ANGRY」なども同様で、VRで手を動かすと突然怒り顔が出てしまって困る、、というケースもある。
そのため、嬉しそうな顔や上記のようにウインクなどを代わりにいれている。

表情のパラメータを調整するには、[vrm-c/UniVRM](https://github.com/vrm-c/UniVRM/releases)という、UnityでVRMを扱うプラグインを導入し、UnityにVRMファイルを読み込ませる。もちろんVReducerにかけた後のデータで問題ない。（Unity上で色々モデルを編集することもできる。意外と簡単にできることも多い）

手順は公式ヘルプの下記のドキュメントそのままでOK。
[カスタムアバターの表情切替 – ヘルプセンター | cluster（クラスター）](https://clusterhelp.zendesk.com/hc/ja/articles/360003826992-%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%82%A2%E3%83%90%E3%82%BF%E3%83%BC%E3%81%AE%E8%A1%A8%E6%83%85%E5%88%87%E6%9B%BF)

## まとめと、Cluster Wiki
- VReducer の最新状況と、使い方
- VRMアバターの表情を cluster 向けに修正

以上、細かい使い方の部分は丁寧なドキュメントがたくさんあるので、この記事からは概要と必要なポイントにとどめた。

### Cluster Wiki
また、clusterにおけるアバター情報については、下記 [Cluster Wiki](https://scrapbox.io/clusterwiki/) に、[アバター制作部 - Cluster Wiki](https://scrapbox.io/clusterwiki/%E3%82%A2%E3%83%90%E3%82%BF%E3%83%BC%E5%88%B6%E4%BD%9C%E9%83%A8) というタグがあり、こちらにもいろいろまとまっている。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123/c1fc327a-4f2d-210e-25e5-5b45d764b4a2.png)

実際にアバターを運用してみて、「ここ、こうなったらいいのにな」という点が出たら探してみてほしい。