VTuber撮影用のHTC Vive位置合わせスクリプト

# 概要

今ままで，HTC Viveを使ったVTuber撮影用の便利スクリプトを公開してきました．

- [Unityで10点トラッキング専用のトラッカー自動認識](https://qiita.com/kotauchisunsun/items/4e741a601c807ad348f8)
- [Unityで10点トラッキングをする方法](https://qiita.com/kotauchisunsun/items/19d828383a63ed7fdece)

以前の記事のスクリプトを使うことでHTC Viveで簡単に10点トラッキングができるようになり，なめらかな動きができるようになりました．
また，運用上問題になっていたトラッカーとUnity上のオブジェクトの対応付けも自動認識が実装され，短時間でセットアップが可能となりました．

しかし，まだ撮影に関しては課題が残っておりました．それは，**VTuberの撮影セットとHTC Viveの位置合わせ**でした．
一般的に，撮影用のセットとカメラの位置をUnity上でセットアップすると思います．そうするとこのような画面になると思います．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/3f24476f-d98a-86d6-c860-f3acc2012d66.png)

しかし，実際の撮影となり，HTCViveの位置をアサインすると，

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/dc9358ae-1296-2a16-b51a-ac04f1d705ea.png)

このような形で元々の位置からずれてしまい，思った位置で撮影できないことがあります．これは，HTC Viveのトラッカーから取得した座標位置をそのままVTuberに適用してしまっていることが原因です．
そのため，初期位置(画面中央のキューブ)にモデルを移動させ，モデルの方向も調整する必要があります．そのような**運用上の位置ずれ・回転ズレを調整**し，キャラクターをきちんと決められたカメラのアングルに収まるようにすることで，迅速に撮影が入れるようにするスクリプトを作成しました．

# 必要なもの

- FinalIK
- HTC Vive
- [KotauchiTrackerCalibrator](https://github.com/kotauchisunsun/KotauchiTrackerCalibrator)


# 使い方
今回，前提として

 [Unityで10点トラッキング専用のトラッカー自動認識](https://qiita.com/kotauchisunsun/items/4e741a601c807ad348f8)

を行っていることが前提となっています．

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

https://github.com/kotauchisunsun/KotauchiTrackerCalibrator

➁空オブジェクト(Origin)を作成し，撮影時にキャラが立ってほしい場所に設置してください．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/0f9707d3-8cd8-e961-4db2-0a856c4d9641.png)

③空オブジェクト(MyPositionReplacer)を作成し，KotauchiPositionReplacerを追加してください．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/7d78cba4-a79f-a7bf-9e79-ff9cf9833405.png)

④MyPositionReplacerに対し，

- Trackerに対応したオブジェクトを，「Tracker01」～「Tracker10」へ
- Originには先ほど作った「Origin」へ
- 事前に導入した「KotauchiTrackerDetectController」の付与されたオブジェクトを「Detector」へ

アサインしてください

これで設定は完了です．

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

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

⑥Playボタンを押し，実行を押してください．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/f985c306-73e0-86b7-3651-16e9fbd29467.png)

そうすると，このような形で，キャラクターが立ってほしい位置と，トラッキングの位置がずれます．

⑦この状態でキーボードの「K」を押してください．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/29a3b07b-be64-ef62-4a09-68a977b0133c.png)

そうするとtarget0～target9までオブジェクトが作成されます．
それぞれのオブジェクトがTrackerに対応しており，「Origin」オブジェクトの付近に作成されます．これらのオブジェクトが，KotauchiDetectControllerに自動アサインされています．

⑧あとはLポーズ( [詳細はこちら](https://qiita.com/kotauchisunsun/items/4e741a601c807ad348f8))をとって，「P」を押す．Tポーズをとって「C」を押す．
とすると，トラッカーが自動認識され，キャリブレーションが走り，10点トラッキングと位置合わせが完了します．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/c69be9d5-8250-70aa-2772-464fc64fbbe5.png)

このように，Unityの座標上の好きな位置にキャラクターを持ってくることができます．そのため，撮影の度に位置の調整や，カメラの角度の調整をする必要がなくなります．

# 感想

最近，VTuberの撮影を行っていて，このあたりの位置ずれが非常に面倒でした．
UnityEditor上で番組のセットを構成して，きっちりカメラを設定しても，HTC Viveで普通にVTuberを動かしてしまうと，画角の外にキャラが行ってしまい，残念なことが起こりました．
そこで，このスクリプトを作り，運用してみたのですが，これを見た知り合いは，「あぁ．バミるのね」と言われて，あ．確かに．となりました．「バミる」というのは舞台とかで立ち位置が分かるようにテープ等で印をつけることです．いわゆるUnityの仮想的な空間で「バミる」を再現しました．
これで，一通り終わった！とか思っていたんですが，やっぱり撮影をしていると色々問題が出てくるものですね・・・まだVTuber支援スクリプトネタは続きそうです．


# 支援リンク

このプロダクトを支援いただける方は下記リンクからよろしくお願いします．
頑張って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

- [Unityで10点トラッキング専用のトラッカー自動認識](https://qiita.com/kotauchisunsun/items/4e741a601c807ad348f8)
- [Unityで10点トラッキングをする方法](https://qiita.com/kotauchisunsun/items/19d828383a63ed7fdece)
- [UniVRM+SteamVR+Final IKで始めるVTuber](https://qiita.com/sh_akira/items/81fca69d6f34a42d261c)
- https://github.com/sh-akira/VirtualMotionCapture