BeatSaberのアバター用に.vrmを.avatarに変換する

# はじめに
![top.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85245/cb0183a0-1221-f861-2351-6e21e70c2853.jpeg)
(▲BeatSaberにアバターを導入したイメージ)

BeatSaberのアバター変換においては分かりやすいサイト(下記)があるので基本的にはそれで問題ないのですが、ところどころ躓いたりしたので、それを備忘録として書きます。

> ビートセイバー アバターの作り方 【初心者向け作成ガイド】
https://noshilog.com/beat-saber-avatar-creating

# 準備
前準備として、各ソフトを参考記事みつつインストールしていきます。
既にインストールされている場合は不要です。
Unityのみ、バージョンが指定されているので、該当バージョンをインストールしてください。

- Blender( https://www.blender.org/download/ )
    - Cats Blender Plugin( https://github.com/michaeldegroot/cats-blender-plugin )
    - (*1) VRM importer for blender( https://github.com/iCyP/VRM_IMPORTER_for_Blender2_79 Blenderのバージョンにあったものをダウンロード )
- Unity 2018.1.6f1( https://unity3d.com/jp/get-unity/download/archive からインストール。UnityHub でも大丈夫です )
    - カスタムアバター用のUnityプロジェクト( https://bs.assistant.moe/Avatars/ の記事内にある「Open the Avatar Unity Project.」よりダウンロード )


(*1)[参考記事](https://noshilog.com/beat-saber-avatar-creating)にはありませんが、今回は.vrmをインポートするので必要。

#[Blender] VRMを取り込むのは簡単
> 【Vroid】モデル（VRM）をBlenderで読み込む方法
https://www.cg-method.com/entry/blender-import-vrm/

こちらの記事がすごくわかりやすく、特に迷うこともないので割愛します。
上にも書きましたが、「VRM importer for blender」のダウンロードは自分のBlenderのバージョンに合わせる必要がありますので注意。
私は2.79bだったので、2.79用で取り込みました。

#[Blender] モデルの最適化～fbx形式での保存は苦戦しつつも順調に進む
モデルの取り込みは上記項目で終わっているため、[参考記事](https://noshilog.com/beat-saber-avatar-creating)にある「モデルの最適化」の項目まで進み、そのあとは記事の内容をなぞりつつfbx形式で保存します。

Blenderまったくわからんマンにはそもそも画面の操作からして独特なので、解説サイトみてまず最低限の操作を覚えるのが吉です。
> かんたんBlender講座
http://krlab.info.kochi-tech.ac.jp/kurihara/lecture/cg/BlenderWeb_Hayashi/html/basicOperation.html

#[Unity] プロジェクト作成～マテリアルの抽出も順調に進む
[参考記事](https://noshilog.com/beat-saber-avatar-creating)をたんたんと進めます。

#[Unity] マテルアルの設定で事件が起こる
###シェーダーを変えたらテクスチャが剥がれる
![テクスチャが剥がれる.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85245/40406bd9-1e92-53c1-2a4d-32f2f0d46796.jpeg)
マテリアル設定にて、ShaderをBeatSaber用のものに設定すると、その部分が真っ白になってしまいます。
（ここではまだモデルをHierarchyに配置しなくていいのですが、わかりやすくするためおいてます。）
これは記事にもかかれているのですが、Textureが外れてしまっており、スクショの右端にも映っているように「None(Texture)」となってしまっています。
そのため、テクスチャを貼りなおす必要があります。
###テクスチャを貼りなおす
![テクスチャを貼る.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85245/cb749f74-e136-39a2-d095-f61c5e028bd3.jpeg)
1. スクショ右側の①にある「Select」を押し、「Select Texture」のウインドウを開く。
2. テクスチャを探すため、②の欄にテクスチャ名を入れる。
マテリアル名と同様の名前がついていると思うので、マテリアル名の一部を入れてみると探しやすいです。
3. テクスチャを選択すると、真っ白になっていたモデルにも反映されます。（やったね！）
これをすべてのマテリアルに行います。

#[Unity] アニメーションタイプの設定～Headの位置調整も順調に進む
[参考記事](https://noshilog.com/beat-saber-avatar-creating)をたんたんと進めます。

#[Unity] LeftHandの位置調整はモデルによって様々
基本的には参考記事通りですが、モデルによって位置や角度が変わります。
###左手の位置調整
![Z軸は少し手前に.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85245/08ce117f-7916-876d-bcfe-019ae0a8a4a9.jpeg)
アバターにセイバーの中心を持たせるため、PositionのZ軸をこぶしよりも少し前に設定します。
このモデルの場合は「0.1」を指定することでセイバーの中心を握る感じになりました。

###左手の角度調整
![左手-90度.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85245/6f72adfd-1684-1459-c961-b0feda0fcdc2.jpeg)
ここはモデルによって様々なようで、今回のモデルではRotationのZ軸を「-90度」にすると丁度良い角度になりました。
この辺のパラメータは実際に調整して、ゲーム上で確認しての繰り返しが必要です。

#[Unity] あとはavatarファイルのエクスポートまでまっしぐら
[参考記事](https://noshilog.com/beat-saber-avatar-creating)をたんたんと進めます。

#[Unity] ゲームを起動して動作確認、そしてまたUnityで調整
終わったと思ったらキャラが尋常じゃないくらい内股になったので、そこを調整します。
これもありがたいことに、参考記事のブログの方が修正方法を書いてくれているのでそこをもとに調整します。
記事にあるように、「IK Manager Advanced」に切り替える必要があります。
> Beat Saber アバターのガニ股や内股を修正する方法
https://noshilog.com/beat-saber-custom-avatar-swivel-offset-locomotion-weight

![膝の曲がりを調整する.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85245/6ed872fe-b122-d9f2-7b0f-4150a42db531.jpeg)
Unity上での確認手段としては、再生中に「HeadTarget」のY座標を少し下げると、膝が曲がります。
ゲーム上で頭を下に下げた状態と同じですね。

![パラメータはこうした.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85245/bd818b69-b4c8-9369-f6e9-efcd3c36d49f.jpeg)
曲がり具合を確認しつつ、IK Manager Advancedのパラメータを調整します。
このモデルでは「Left Leg_swivel Offset」を「-30」、「Right Leg_swivel Offset」を「30」にしています。

ついでに、足の開き具合の調整の「Locomotion_weight」を「0.85」にしちゃいます。
そして再度avatarファイルのエクスポートをします。

#[BeatSaber] 遊ぶ！
あとはもうBeatSaberに取り込んで遊ぶだけです。
エンジョイ！


#謝辞
今回はVtuberのテレみ( https://twitter.com/teremi_ )さんの.vrmを.avatarに変換させていただきました。
また、記事を書くにあたってスクショなどの掲載許可をいただいております。
ありがとうございます。