【Unity/UE4】Hi 5 Glove を使ってみた
はじめに
Hi 5 Glove 出ました。
ちょっと値が張りますが、ビタッと決まる環境だと結構いい感じになる…気がします。
ほかのグローブものをあまり試してないのでなんとも言えないところがありますが…。
さて、これ一応サンプルプロジェクトもろもろ公開されてるので、試してみたのを書いておきます。
ちなみに去年一足先にUE4でバリバリ遊んでました。
忘れそうなのでメモっておきます。
Unity 編
検証バージョンは以下のとおりです。
- Unity 2017.4.0f1
- Hi5 Unity SDK 1.0.0.655
こちらからDLできます。
ドキュメントは英語で同梱されてますが、ざっくり日本語で流れを紹介すると、
- Vive の基本的なセットアップは済ませておく
- Hi 5 GloveにTrackerをつけてペアリング
- Hi 5 用ドングルをPCに挿す
- 同梱してるキャリブレーションアプリを実行して、やる(ありがとありがと~ みたいなBポーズ と おけまる的なPポーズ)
- Unity Project に Steam VR Plugin を入れる
- Hi 5 の Unity Packageを入れてEditorを再起動
- [CameraRig]_HI5 を置く
動く!! らしい。
まず手元の環境のせいか、キャリブレーションアプリで手が出ないケースがあるので不安になる。 最初でなくてエラー出ないから分からないし、出ない仕様なのかと思った()
でるっちゃ出るんですが、途中で消えたりしました。謎い。Trackerはいきてる。 アプリを再起動したりすると出ました。うーん。
ちなみに去年試したときとキャリブレーションのポーズが一つ減ったので、お手軽になりました。 バッテリー残量と磁気状況を取得できるようです。まだちゃんと見れてないですが、APIがありそう。
---------------- 追記 2018/05/22 ---------------------
ありました。 GetMagneticState() と GetPowerLevel() がありますね。
これも便利そう
振動はこれ 振動箇所は1Trackerをマウントしてる下部分が振動します。 これは完全におまけ機能っぽい(振動の強さや振動パターンはない)(Touchのがいっぱいある)
両手同時に発火できるっぽい
とりあえず動いたので貼っとく ちゃんと読んでないのであれですが、 ものによってはGloveStatus()が必要そうです(ぱっと出てこなくてあせった)
using System.Collections; using System.Collections.Generic; using UnityEngine; using HI5; public class Hi5Test : MonoBehaviour { // Use this for initialization void Start() { } // Update is called once per frame void Update() { print("Magnetic State: " + HI5_Manager.GetGloveStatus().GetMagneticState(Hand.LEFT).ToString()); print("Power level: " + HI5_Manager.GetGloveStatus().GetPowerLevel(Hand.RIGHT).ToString()); if (Input.GetKeyDown(KeyCode.V)) { print("vibration"); HI5_Manager.EnableBothGlovesVibration(1000, 20000); } if (Input.GetKeyDown(KeyCode.L)) { print("vibration L"); HI5_Manager.EnableLeftVibration(1000); } if (Input.GetKeyDown(KeyCode.R)) { print("vibration R"); HI5_Manager.EnableRightVibration(10000); } } }
---------------- 追記 2018/05/22 おわり ---------------------
これで準備が終わったはず。ちなみにサンプルシーンの中にこのキャリブレーションのシーンも同梱されていたので、 同一アプリ内でキャリブレーションからVTuberへみたいなことができそうです。
先程の手順どおりにPluginなりをいれると動きます。
ハマりポイント
手が出ない
おそらくですが、手が出ない状態でキャリブレーションを済ませるとUnity側でキャリブレーション終わってないよエラーが出る…かも。 うーん、わからん状態であれこれ試してみました。
状況的には
- キャリブレーションをアプリからやった
- 試しに見つけたUnity側の Calibration Scene でもキャリブレーションしてみた
- やっぱり出ないのでExample_Inertia Scene を見てみる
- 地に張り付いた手がもにょもにょ動いてた → きてることはきてる
- キャリブレーションアプリに戻ると手が映るように
- そのままキャリブレーション たまに再起動
- 手が見えた状態でキャリブレーション終了 Unityに戻ると普通に動く
といった感じでした。単に環境が悪いせいで一人でハマっていた可能性があります…
UE4 編
DLはこちら。
キャリブレーションアプリもUE4製になっていました。Hi5_Mix ってやつ。
中身は同じっぽいので省略。
サンプルプロジェクトを開く前にバージョンを見てみると… 4.14.…
これ去年のときと変わってないのでは!?!? つらみ…
しかしPlugin単体の方はこれだけ対応してるので使えることには使えますね セーフ よかった。
とりあえずドキュメントを参考にセットアップしていきます。 UE4.19で試しました。
ドキュメントに長々と書いてますが、読むのが面倒でほぼ画像だけみて設定できます。ざっと流れだけ。
- Plugins に該当VersionのMotion Capture Pluginを追加 & Editorで有効後 再起動
- GameInstance を作って、初期化と終了処理を書く(Projectに設定も忘れずに)
- 同階層にある Hand Model をimport このとき Z Rotationを -90 に
- 両手分のAnim BP を作成 (以下は両手分行う)
- NewPose Calc ノードをFinal Animation Pose につなぐ
- NewPose Calc ノードの設定をする
- Pawnを作成、Motion Capture Avatar Component を追加 その下に手のSkeltal Mesh を追加
- Motion Capture Avatar Component の設定をする
- VR Preview で見る
すると動きます。やったー!
これをつないで、
こんな感じでせっせと設定します。Index 4 に該当するボーンがないので、今回はInvalidのままにします。
Motion Capture Avatar Component はこんなかんじ。 Avatar Name は右と左で同じであればなんでもいいっぽい。
でサクッと試してみると動きました。
サンプルプロジェクトは一応4.14でVSからビルドして開けたんですが、
文字化けしててファイル読めてないやんけ!!!!(やめた
まとめ
手汗のことを考えると使い捨てのビニール手袋を使うのがいい気がします。
ちなみにHi 5 + Vive コン を使うときはVive Tracker のドングルが必要です。
逆に言うと HMD + Hi 5のときはドングルがいりません。
コメントより指摘がありましたので修正します
これはHi 5 のドングル側でTrackerをペアリングできるっぽいです。
HMD側にコントローラー用のドングル相当のものが内蔵されているので不要です