【Vive Pro Eye】【Unity】【SRanipal】【視線計測】 ViveSRのサンプルシーン落ちる

Unity

Vive Pro Eyeを使ってUnityで視線計測を実装してます。ただSRanipalのFrameworkの関数を使った途端Unityが落ちるので困り途方に暮れましたが解決したので書いていきます。

備忘録として書いていきます。

環境:

  • Vive Pro Eye
  • Windows 11 Home
  • SteamVR 1.24.6
  • Unity 2021.3.8f.1
  • SRanipal Runtime 1.3.2.0
  • VIVE Eye and Facial Tracking SDK 1.3.6.6

こちらの記事を参考に環境構築を進め、SteamVRでキャリブレーションをし、SRanipalRuntimeがタスクバーに表示された状態で以下のシーンを実行

Assets/ViveSR/Scenes/Eye/EyeSample_v2.unity

すると落ちる。Unityごと落ちるので原因わからず、立ち往生していましたが環境構築の参考にさせていただいたサイトとUnityバージョンが異なっていたので一度合わせてみることにしました。

Unity 2020.1.17f1 に変更しました。
https://unity3d.com/jp/get-unity/download/archive

でも解消されず。。。

ネット上の記事が見つからず。しょうがない。デバッグして原因を突き止めることを決意しました。コードをたどっていくと SRanipal_API.Initialで落ちていることが判明。

//========= Copyright 2019, HTC Corporation. All rights reserved. ===========
using System;
using System.Runtime.InteropServices;

namespace ViveSR
{
    namespace anipal
    {
        public class SRanipal_API
        {
            /// <summary>
            /// Invokes an anipal module.
            /// </summary>
            /// <param name="anipalType">The index of an anipal module.</param>
            /// <param name="config">Indicates the resulting ViveSR.Error status of this method.</returns>
            /// <returns>Indicates the resulting ViveSR.Error status of this method.</returns>
            [DllImport("SRanipal")]
            public static extern Error Initial(int anipalType, IntPtr config);

            /// <summary>
            /// Terminates an anipal module.
            /// </summary>
            /// <param name="anipalType">The index of an anipal module.</param>
            /// <returns>Indicates the resulting ViveSR.Error status of this method.</returns>
            [DllImport("SRanipal")]
            public static extern Error Release(int anipalType);

            /// <summary>
            /// Gets the status of an anipal module.
            /// </summary>
            /// <param name="anipalType">The index of an anipal module.</param>
            /// <param name="status">The status of an anipal module.</param>
            /// <returns>Indicates the resulting ViveSR.Error status of this method.</returns>
            [DllImport("SRanipal")]
            public static extern Error GetStatus(int anipalType, out AnipalStatus status);

        }
    }
}

dllファイルの処理でこけているっぽいですね。

これは困った。試しにSDKのバージョンを下げました。
VIVE Eye and Facial Tracking SDK 1.3.6.6 → VIVE Eye and Facial Tracking SDK 1.3.3.0

ダウンロードリンクはこちらです。
https://developer.vive.com/resources/vive-sense/eye-and-facial-tracking-sdk/download/archive/1_3_3_0/

やっとシーンが落ちずに実行することができた!

SDKのlatest のバージョン1.3.6.6はunityで実行できない模様。なんか競合しているのかも。Unity側でエラーが出ていないのでマジでお手上げ。

一日無駄にしたがこれでなんとか開発できる!!!

コメント