がとーしょこらの技術録(旧)

記録や技術的な記事を書いていきます

UnityでSteamVRPluginとTobiiXRSDKを使ったプロジェクト開発でのトラブルシューティング【備忘録】

ViveProEyeの視線トラッキングを使ったUnityアプリケーションの開発をするためにはViveEyeTrackingSDK(SRanipal)が必要である

Tobii社はこれをいい感じに使えるようにするためにTobiiXRSDKを開発した

VRアプリケーション開発でよく用いられるSteamVRPluginを使用したプロジェクトで
これを使用した際にいくつかの問題が発生したので、その内容と解決方法を残しておく

新しい問題が発生したら随時更新予定

開発環境

  • Unity 2019.4.4f1
  • SteamVRPlugin 2.6.1 (sdk 1.13.10)
  • ViveEyeTrackingSDK(SRanipal) v1.3.1.0
  • TobiiXRSDK v2.0.0.174

動作プロジェクトの構築

おおまかには以下のリンク先の手順に沿って作成した

https://vr.tobii.com/sdk/develop/unity/getting-started/vive-pro-eye/

最小設計としてはシーン内に

  • [CameraRig] (SteamVRPluginに同封されたPrefab)
  • TobiiXR Initializer (TobiiXRSDKに同封されたPrefab)

があれば動く

ViveEyeTrackingSDKに含まれるSRanipal_Eye_Framework.prefabはなくても動くようである

発生した内容と解決策

Valve.VRに既に存在するみたいなエラーが発生する

openvr_api.csというファイルがSteamVRPluginとTobiiXRSDKの両方に存在するため発生している

HMD Specific Information - Cognitive3D - Documentation

上記リンク先の内容に従って片方のopenvr_api.csを削除すると発生しなくなった

TobiiXRSDK v2.0.0.174ではAssets/Examples/Utilities/Controller/Pluginsの中にopenvr_api.csがあったため、これを削除した

DllNotFoundException: openvr_apiというエラーが発生する

上記ツイートにあるようにUnityのPackageManagerでOpenVR DesktopというものをインストールしてUnityを再起動すると発生しなくなった

これ自体は本環境に関わらずUnityでのVRアプリケーション開発において発生する可能性がある

アイトラッキングがうまくいかない

  • 起動時にActiveなカメラが複数あると別のものを参照しているのかうまくいかないことが多い
  • TobiiXR.FocusedObjectsの配列に入るものはIGazeFocusableを持つコンポーネントがついたものだけ