Kinect v2とVIVEでVRChatフルトラ環境を作る


内容は表題の通りなのですが、実際に環境を構築するまでにいくつか躓いた点があったため、備忘録を兼ねた記事とします。


簡単な自己紹介を含めて、表題の環境構築に至った経緯を簡単に説明していきます。

普段はTwitterを中心に3Dモデルを用いた写真等を投稿しているのですが、静止画以外、つまるところ動画を主体としたコンテンツを制作をする際に“動き”の中心であるモーションを自前で用意する必要が生じてきました。

静止画であれば一通りポーズを設定してスクショするなりなんなりで終了ですが(それでも早くて1時間弱はかかってしまう)、モーションともなるとその作業量が膨大になり、とてもではないですが素人の手作業だけで賄える範疇を超えてしまいます。

3Dを本業としているわけでも、専門で学んだわけでもない。それでも3Dモデルを使った動画を作りたい。そう言った人間がモーションを作る際に、ゼロから作るよりはベターな結果が生まれるのではないかと考えた結果、モーションキャプチャーに白羽の矢が立ったわけです。

(最終目的としてはUE4でのモーションキャプチャーですが、VRChat向けの方が経る工程が少なく確実性が高いのと、今回実際にキャプチャに成功したためです。)



・なぜKinect v2?

手元にあったからです。他に理由はありません。

VR HMDを使ったモーションキャプチャーを行うのであれば、ほぼ標準装備となっているVIVEトラッカーなどを導入する方がトラブルに遭遇した際にも巷から得られる情報が多く対処しやすいはずなので、これから丸ごと環境を構築される方はそちらを選んだ方が断然良いと思われます。

また、今回使用したKinect v2はWindows向けモデルではなく、Xbox Oneを購入した際に付属していたものをそのまま利用しました。Xbox本体もそうですが、コンシューマ向けのものをそのまま開発に用いることができるのは嬉しい点ですね。



・必要機材

本題です。まずはVR HMD(VIVE)。そして要のKinect v2。そしてKinect v2をPCと接続するための変換ケーブル。以前はMicrosoft謹製のものが存在していたのですが、現在では販売を終了しているためサードパーティ製のケーブルを使用します。自分は下記のものを購入し使用しました。

またKinect v2をVR環境(SteamVR)で利用するために必要なソフトも導入します。無料であればKinecttoVR(K2VR)、有料であればDriver4VRなど。特にK2VRは必要なSDKやランタイムなどをまとめて導入してくれるので、Driver4VRを利用する場合であっても先に導入しておいた方が便利です。



・準備完了、しかし動作せず

機材とソフトを揃えていざフルトラ……と、簡単に成功していたらこの記事は存在していません。

(もし下記のエラーが発生しなかった場合はそのままキャプチャが可能なので、この先を読む必要はありません。)

K2VRを起動してみたところ、トラッキング自体はしているものの、画像のようにDriver Statusの欄が「SERVER ERROR (Code: -10)」となっており、詳細なトラッキング設定に進めない状態となっていました。K2VRはドライバの状態が正常でないと認識した場合はSteamVRにトラッキング情報を渡してくれないため、このままでは使用できません。行手を阻むこのCode 10エラーとは何なのか。結論としては、対象のデバイスが何らかの不具合により動作していない時に返されるもので、Kinectに限らずとも様々なデバイスで起こり得るありふれたエラーです。

画像1

では、ハードウェア側に問題がなく、トラッキングまで正常に行えているにも関わらずドライバエラーが出る理由は何故なのか。

原因を探るため、K2VR導入時に同時にインストールされたSDK Browser (Kinect for Windows) v2.0内のKinect Configuration Verifierから状態を確認すると、USB Controllerの項目が異常を示しています。

画像2

Kinect v2はそのデータの転送にUSBの帯域を非常に多く消費するため、USB 3.0のSuper Speedに対応した端子かつ、Intel製あるいはRenesas製のUSBコントローラを搭載したUSB接続環境でなければ正常に動作しないようです。
そのため、マザーボードやチップセットの相性によってはこのようにエラーが返されるとのこと。(自分の環境はIntel製コントローラかつSuper Speed対応端子だったのですが何故かこのエラーが出ました。謎です。)

このエラーが多くの環境で発生していることから、Kinect v2はPCでのモーションキャプチャーには不向きとされており、v1を使用した方がトラブルが少ないためそちらを使用した方が良いとのことです。

マザーボードのUSB接続端子でこのエラーが出た場合は新たにPCI接続のUSB拡張ボードを追加しそこに接続するしか対処法がなく、泣く泣く拡張ボードを購入しました。

が、結果は変わらず。



・Driver4VRの使用

エラーが解消されない以上はK2VRは使用できないため、かわりに前述したDriver4VRを使用します。

こちらも役割としてはKinect→SteamVRと、K2VRとほぼ同等の機能を備えますが、K2VRと違いドライバエラーが出ている状態でも動作してくれるというのが大きな違いです。

Driver4VRは有料ソフト(13.99ユーロ、約1900円)ですが、1セッションにつき10分間無料で使用できるため、購入前に動作検証が可能です。

画像3

起動するとこのようなウィンドウが表示されます。

ヘッドセット+コントローラx2+Kinectという最小構成の場合のトラッキング設定は上記の画像の通りです。

Kinectの詳細なトラッキング設定をするためには、まずDriver4VRを動作させなければならないので左上の"Start"をクリック。

SteamVR側にKinectアイコンのトラッカーがいくつか追加され、Kinectの設定にアクセス可能になります。

画像4

まずはCalibrateからManualを選び(自動でのキャリブレーションは私の環境ではどちらも正常に動作しませんでした) Feet TrackingのModeを"Kinect Rotation"に設定。

画像6

(一部モザイク処理しています)

ヘッドセットを被ると、下記の画像のようにトラッカーを模した3DモデルがVR空間内のどこかに配置されているはずなので、自身の足元に来るようにFeet Trackingの各オフセット値を調節します。

画像5

これでVRChat上でKinect v2を使った全身トラッキングの設定は完了です。実際にVRChatで動作している映像が下記のものになります。

注意点として、VRChatにログインした直後はアバターがKinectのトラッキングに追従していません。一度自身がTスタンスを取った状態でコントローラーのトリガーを引き続けてキャリブレーションを行なってください。

この記事が気に入ったらサポートをしてみませんか?