UnityとMMDとKinect v2で10分でVTuberっぽくなってみる

## 前書き
最近 VTuber の人気、すごいですよね。

VTuber の 3D モデルを動かす手段はいろいろあるかと思いますが、今回はトラッカーなどを使わずにお手軽に全身をトラッキングできる Microsoft の Kinect v2 を使って VTuber っぽいことをやってみようと思います。

Kinect v2 は 2017 年に販売が終了してしまっているのですが、もうすぐよりパワフルになった [Azure Kinect](https://azure.microsoft.com/ja-jp/services/kinect-dk/) が購入できるようになりそうですので、今のうちに復習しておこうという狙いもあったりします。

※現在 Azure Kinect は米国と中国のみで販売中です。

## 成果物
10分程でこんな感じに 3D モデルを自分の動きに追従させて動かすことができました。
![Miku3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97193/7352e0bb-e6ea-37f5-1449-cd72f892dc70.gif)
※モデルは MMD の Tda式初音ミクV4X を使用させていただきました。可愛い。天使。

## 使ったもの
Unity 2019.1.13
Kinect v2
[Kinect for Windows SDK v2.0](https://www.microsoft.com/en-us/download/details.aspx?id=44561)
[Kinect v2 Examples with MS-SDK and Nuitrack SDK](https://assetstore.unity.com/packages/3d/characters/kinect-v2-examples-with-ms-sdk-and-nuitrack-sdk-18708)
[MMD4Mecanim Beta 20180523](http://stereoarts.jp/)
[Tda式初音ミクV4X](https://3d.nicovideo.jp/works/td30681)

## 事前準備
- Unity と Kinect for Windows SDK v2.0 は事前にインストールしておいてください。
- Kinect v2 を PC に接続しておいてください。

## 手順
Unity で 3D プロジェクトを新規作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97193/5d81e196-3479-5059-3610-93446e72097e.png)

Asset Store から Kinect v2 Examples with MS-SDK and Nuitrack SDK をインポートします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97193/20659aa4-c909-a62b-bdde-8da4ccc1b456.png)

[こちらのサイト](http://stereoarts.jp/)から MMD4Mecanim の最新版をダウンロードします。
ダウンロードしたら zip を展開して MMD4Mecanim.unitypackage をインポートします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97193/65cbd7a3-e1b3-a714-af16-59051625b455.png)

API Update Required の警告が表示されるので `I Made a Backup. Go Ahead!` を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97193/66b1b5d4-2f8d-8c7a-4f68-56a6d746f272.png)

MMD モデルをインポートします。
今回は[こちらのサイト](https://3d.nicovideo.jp/works/td30681)からTda式初音ミクV4Xを使わせていただきます。
ダウンロードして zip を展開したらフォルダごと Unity の Asset 配下に保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97193/50b0c9d7-507c-50cd-a963-1eb561cbbc76.png)

モデルのフォルダの中に .MMD4Mecanim ファイルが生成されるので選択します。
選択すると Inspector に利用規約が表示されるのでよく読んで `同意する` を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97193/1cd21772-cd26-ffc6-cde3-47a8ee7015f7.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97193/e2998bb7-272d-18d5-7250-ef63b365348f.png)

Inspector の表示が変わったら `Process` を押して暫く待ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97193/b05d1d12-03cb-b940-6fd6-44449e8ccc69.png)

モデルの Prefab が生成されるので選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97193/88a74753-738b-f01d-0ffe-f49458c581ce.png)

Inspector で `Rig` を開き、AnimationType を `Humanoid` に設定し、`Apply` を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97193/1347b000-70d8-e3ac-cd6f-87259507bb72.png)

モデルを Scene に配置し、Transform を適当に設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97193/d8f2db61-235e-20ee-a111-c9f63516ee0b.png)

モデルに AvatarController を AddComponentし、FingerOrientations にチェックを入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97193/2643c12b-c4da-c802-8e1b-98e816689eae.png)

MainCamera に KinectManager を AddComponent します。
設定はとりあえずこのままで大丈夫です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97193/513b4c12-6606-dcd7-76e2-c498506c6055.png)

これで Scene を再生すると、画面上のモデルが自分の動きに合わせて動きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97193/b51d9db7-54fa-6343-0334-978c5cc24d1e.png)

## まとめ
Unity + Kinect お手軽に使えてすごいですね！

今回はモデルの手足などを動かしただけでしたが、 Kinect ではモデルの表情を制御することも可能ですので、今度はそのあたりもやってみたいと思います。

Azure Kinect の日本での発売も楽しみです！