UnityでUrtraleapを動かそうと思ったら地獄を見た話
次どんなアプリを作ろうかなと思ったとき、今ちょうどオンデマンド動画作るのに使ってる3Dキャラがいるので、それを使って何かしたいと思ったんです。
そうなると、やっぱり指差しとか手で何かを示すようなジェスチャーが欲しいなと思い。そしてちょうど手元にはUrtraLeapがある。
ならば、自作モーションだな!と思って手を出したら地獄を見ました。
【UltraLeap × Unity】 UnityでUltraLeapを操作できるようにするまでの手順 #LeapMotion - Qiita
こちらのページを参考にさせていただきました。意外とできるのかなって思ったら私は全然でした。
(結局10時間くらいやって、なんとかうごいたけれど、結局ハンドトラッキングの反応も良くなくて微妙な感じだった…)
🌀 試行錯誤の経緯
とりあえず公式のサイト通りに必要なものを入れる
UrtraLeapのソフトウェア
Unity側のプラグイン
サービス自体は単体で動作するのに、Unityから繋がらない。
connected=false / Idle [No Apps] のまま変化なし。
設定ファイルやキャッシュを疑って削除 → 余計にサービスが起動できなくなる。
サービスのログには「Value is not a hash」といった例外。
最終的にたどり着いたのは、バージョンの不一致 でした。
💡 解決の決め手
Ultraleap Tracking Software(サービス側):バージョン 5.20.0.0
Unity Plugin(手のスクリプトやSDK):最新版を導入していた(6.最新)
この組み合わせだと、どうも通信仕様が噛み合わないようで、Unityから正しく認識できませんでした。
試しに Unityのプラグインを 6.14 にダウングレード したところ、
ようやくサービスが Active [Unity.exe] に切り替わり、正常にトラッキングされました。
🤔 なぜこうなった?
私の使っているのは Ultraleap Controller 1 という古いデバイスです。
ハード側のソフトウェアはすでに 5.20.0.0 で開発終了 していて、これ以上新しくなりません。
ところがUnityのプラグインは今でもアップデートが続いているため、
「プラグインだけ最新、サービス側は旧世代」 というアンバランスな状態が発生しました。
つまり、「ソフトは更新されるのにハードが追いつかない」という、
古いデバイスならではの罠だったのだと思います。
✅ 結論
古いUltraleap ControllerをUnityで使う場合は、プラグインのバージョンを下げること!
サービス(Tracking Software)のバージョンと、Unity Pluginの対応を揃えるのが大事。
今回のケースでは
「サービス5.20.0.0 × Unity Plugin 6.14」 で安定動作しました。
