RDPとVPNを使用して遠隔でVroidモデルのトラッキングをする

VPNサービスのTailscaleとRDPのRemoteFX USBリダイレクトを使用して3teneFreeでVRoidモデルを動かしてみる。

:::note alert
本記事を見て、3teneFreeでVRoidモデルが動かなくても、3teneFreeの開発元のPLUSPLUSさんに絶対に問い合わせないでください。
そもそも本記事でやっていることはサポート外に近く、ここで書いてあることがわからない場合は自分で調べられる人向けです。
:::

### 前提となるもの
サーバー側のOS Windows 11 ProまたはWindows 10 Pro
クライアント側のOS RDPクライアントが使用できるOS
VRMモデルとそれを動かすVTuberアプリケーション(今回は3teneFree)

# クライアント・サーバー共通に導入するツール
LAN内でやる場合は導入不要ですが、遠隔でやるとなるとどうしても必要なツールなるので入れましょう。

https://internet.watch.impress.co.jp/docs/column/shimizu/1303751.html

上の記事を読んでクライアント・サーバー両方にインストールしてサーバー側のVPNのIPアドレスを控えます。

# サーバーマシン側の設定
サーバマシン側の設定として以下の設定をします。

1.Windowsキー+Rでファイルを指定して実行でgpedit.mscを開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323146/5bf7e044-8b1d-2034-f3b4-3aa1397db68a.png)

2.グループポリシーエディターが開いたら以下の順で階層を開きます
コンピュータの構成 > 管理用テンプレート > Windows テンプレート > リモートデスクトップサービス　> RemoteFX USBデバイスリダイレクト

3.サポートされている他の RemoteFX USB デバイスの、このコンピューターからの RDP リダイレクトを許可するを開いて有効に変更して、オプションのRemoteFX USBリダイレクトのアクセス権を管理者とユーザにしてOKをクリックしてサーバー側マシンを再起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323146/24b5a8e5-847b-2fa5-a650-4d5f495504eb.png)

これでサーバー側の設定は完了です。

# クライアント側の設定
クライアント側がWindows 11 Homeである前提で記載します。

1．リモートデスクトップ接続を開いてローカルリソースのタブを開く
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323146/e8a12de8-21e0-2a57-b521-10c395400a7b.png)

2.ローカルデバイスとリソースの詳細を開く
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323146/e0fbbe7e-f247-4910-dfb0-a14250138e0e.png)

3.ローカルデバイスとリソースでビデオキャプチャデバイスの+をクリックしてサーバーと共有したいWEBカメラを選択します
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323146/d7b12491-7e98-f29b-fe79-b78a3fdcb7d9.png)
なお、後からWEBカメラを接続したい場合は後で接続するデバイスとその他のサポートされているプラグアンドプレイ（PnP）デバイスにもチェックを入れてください。

この後、Tailscaleインストール後に控えたサーバ側のIPアドレスを入力し、接続したいユーザを入力してRDP接続します。

# 動作確認方法
1.カメラを開きます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323146/bc84883e-332e-50b8-b40d-4e786667e1bf.png)
2.カメラの切り替えを押して動作確認したいカメラに切り替えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323146/945fdd3b-5b87-31d7-b2a4-32d325602b01.png)
クライアント側のカメラに切り替わると”デバイス名リダイレクト済み”と表示されてクライアント側のカメラに切り替わったら設定は成功しています。
# モーションキャプチャー側の設定
1.3teneFreeを開きモデルをロードしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323146/05c52b1f-e735-e202-5561-c29364c1076b.png)
2.アバター調整を開きます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323146/eb87883a-a746-32a5-08b5-c11cd00340ca.png)
3.設定のタブを開き、フェイストラッキングの種類をウェブカメラ、ウェブカメラを選択しますが、クライアントマシン側で使用したいカメラ(リダイレクト済み)とついたカメラを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323146/2ba339e5-28c5-7b5d-cbaf-ec407ef8c708.png)
3．設定を保存し、トラッキングできてモデルが動いたら成功です。

# Macでの検証と注意
MacBookPro (13-inch Late 2011)+Parallels ClientでMacBook側のカメラを使用する設定をしましたが、3tene側でリダイレクトされた内蔵カメラをタイムアウトで起動できずキャプチャに失敗します。
もともと、Macの場合はタイムアウトが発生しやすいらしく、タイムアウト値を伸ばしても起動できないためデバイスの問題かクライアントツールの問題どちらかか、あるいは両方の問題で起動できない可能性があります。
最も手元に検証可能なほかのカメラがなくOSがHigh SierraのためMS純正のRDPクライアントが使用できないため検証できずにいます。
なお、カメラ自体はリダイレクト済みで起動はできます。

# 今後について
カメラが使用できたということは音声も遠隔で送れると思うのでこっちも試してみたいです。


## 参考にしたサイト
[【RDP】接続元パソコンのウェブカメラを使用する【リモートデスクトップ接続】](https://tamnology.com/windows-rdp-web-camera/)
[3tene トラブルシューティング](https://3tene.github.io/WebDocument/#troubleshooting.md)