Unityで10点トラッキングをする方法

# 概要

最近，HTC Viveを用いたVTuberのシステムを作っており，その中で，10点トラッキングという技術を知りました．

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr"><a href="https://twitter.com/hashtag/%E3%83%90%E3%83%BC%E3%83%81%E3%83%A3%E3%83%AB%E3%82%AD%E3%83%A3%E3%82%B9%E3%83%88?src=hash&amp;ref_src=twsrc%5Etfw">#バーチャルキャスト</a> の3点・6点・10点トラッキング比較ですが、ソーラン節を踊ってみました。トラッカーの導入の参考にしてみてはいかがでしょうか？ 引き続きアバターは <a href="https://twitter.com/hashtag/V%E3%82%AB%E3%83%84?src=hash&amp;ref_src=twsrc%5Etfw">#Vカツ</a> で制作しましたフルトラマンです！ <a href="https://t.co/zfyM3zGn5h">pic.twitter.com/zfyM3zGn5h</a></p>&mdash; しゃら@超会議両日出没 (@syara_don) <a href="https://twitter.com/syara_don/status/1088129396081287168?ref_src=twsrc%5Etfw">2019年1月23日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

10点トラッキングとは，頭，右手，左手のコントローラーの3点に加え，右ひじ，左ひじ，腰，右ひざ，左ひざ，右足，左足の7点を追加して行うトラッキングです．トラッカーの数が増える分，お金もかかりますが，表現の幅が広がります．
10点トラッキングができるソフトとしては， @sh_akira さんの[バーチャルモーションキャプチャー](https://sh-akira.github.io/VirtualMotionCapture/)があり，個人でもできるようになっております．
しかし，もともと自分はVTuberのシステムを作っていたので，バーチャルモーションキャプチャーを自分のUnityプロジェクトに追加するのは難しい状態でした．そのため，公開されているコードを参考にしながら，自分のUnityプロジェクトに簡単に組み込める10点トラッキングのコードを制作しました．

# 必要なもの

- FinalIK
- HTC Vive

今回は，前提として，FinalIKで3Dモデルを動かしたことがある方を対象としています．

# 手順

① 下記のURLのリポジトリから，csファイルをすべてダウンロードし，自分のAssetsフォルダにコピーしてください．

https://github.com/kotauchisunsun/KotauchiTrackerCalibrator

➁ 動かしたい3DモデルにC#のスクリプトを追加し，VRIKを選んでアサインしてください．
一般的なFinalIKの使い方と同じです．わからない場合は参考リンクをご参考ください．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/da4b2cd4-92f7-4cfe-2dab-1a9f04bb3385.png)

参考：VRMで遊ぶ① ～ WindowsMR + VRMでやってみる～
https://qiita.com/amidaMangrove/items/dabb2cda8ae52767b685

③ 「Create Empty」を行い，空オブジェクトを作成し(ここではMyController)，Add ComponentでC#のスクリプトの「KotauchiVRIKController」を追加してください．

④ Kotauchi VRIK Controllerの設定を行います．

Ikに➁でVRIKをアサインした3Dモデルを設定してください．
そのあと，

- Head Tracker
- Body Tracker
- Left Hand Tracker
- Left Elbow Tracker
- Right Hand Tracker
- Right Elbow Tracker
- Left Foot Tracker
- Left Knee Tracker
- Right Foot Tracker
- Right Knee Tracker

の部分に，トラッカーを設定してください．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/39954790-da26-7370-8665-620a8dbd797e.png)

④ 体にトラッカーを付けてください．

- 頭はHTC Vive
- 右手，左手はコントローラー
- 右ひじ，左ひじ，腰，右ひざ，左ひざ，右足，左足はTracker

で動作確認(詳細は後述)しています．


⑤ Playボタンを押し，トラッカーを付けた人は「Tポーズ」を取ってください．そのあと，キーボードの「C」を押すことでトラッキング完了です．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/2e594aae-5dcb-88b1-e26c-2d94906afd21.png)

(立方体が，膝のBendGoalがアサインされているので，位置が一致しています．)

# 改造のヒント

キャリブレーションの制御はKotauchiVRIKController.csで行っています．コードのKeyCodeの部分を変えていただくことで好きなキーやボタンでキャリブレーションを実行できます．

# 感想

実はHTC Viveを個人では所有していません．そのため，自分のUnityの環境で仮想的な10点トラックの環境を作り，そのうえでデバッグして動かしています．前のバージョンの時に，知り合いの10点トラックの環境で動作確認してもらって，動いたので大丈夫なはずです．(そこから破壊的なリファクタリングが入っていないと思うので，おそらく)
動作確認できたり，バグや要望・質問がありましたら，githubのIssueか，@kotauchisunsunのTwitterアカウントに報告していただければと思います．

# 支援リンク

このプロダクトを支援いただける方は下記リンクからよろしくお願いします．
頑張ってHTC ViveとゲーミングPC買おうと思います．

Fanbox
https://www.pixiv.net/fanbox/creator/12173373

欲しいものリスト
https://www.amazon.jp/hz/wishlist/ls/18OKOS7JPDKNQ?ref_=wl_share

# ライセンス

ユニティちゃんは　© UTJ/UCL　のもと頒布されています．

# 参考URL

- [UniVRM+SteamVR+Final IKで始めるVTuber](https://qiita.com/sh_akira/items/81fca69d6f34a42d261c)
- https://github.com/sh-akira/VirtualMotionCapture