てんちょーの技術日誌

自分がつまづいたこととかメモ

【Unity/UE4】Hi 5 Glove を使ってみた

はじめに

Hi 5 Glove 出ました。

Home | Hi5 VR Glove

ちょっと値が張りますが、ビタッと決まる環境だと結構いい感じになる…気がします。

ほかのグローブものをあまり試してないのでなんとも言えないところがありますが…。

さて、これ一応サンプルプロジェクトもろもろ公開されてるので、試してみたのを書いておきます。

ちなみに去年一足先にUE4でバリバリ遊んでました。

shop-0761.hatenablog.com

忘れそうなのでメモっておきます。

Unity 編

検証バージョンは以下のとおりです。

  • Unity 2017.4.0f1
  • Hi5 Unity SDK 1.0.0.655

こちらからDLできます。

Unity Plugin + Samples | Hi5 VR Glove

ドキュメントは英語で同梱されてますが、ざっくり日本語で流れを紹介すると、

  1. Vive の基本的なセットアップは済ませておく
  2. Hi 5 GloveにTrackerをつけてペアリング
  3. Hi 5 用ドングルをPCに挿す
  4. 同梱してるキャリブレーションアプリを実行して、やる(ありがとありがと~ みたいなBポーズ と おけまる的なPポーズ)
  5. Unity Project に Steam VR Plugin を入れる
  6. Hi 5 の Unity Packageを入れてEditorを再起動
  7. [CameraRig]_HI5 を置く

動く!! らしい。

まず手元の環境のせいか、キャリブレーションアプリで手が出ないケースがあるので不安になる。 最初でなくてエラー出ないから分からないし、出ない仕様なのかと思った()

でるっちゃ出るんですが、途中で消えたりしました。謎い。Trackerはいきてる。 アプリを再起動したりすると出ました。うーん。

f:id:shop_0761:20180521165403p:plain

f:id:shop_0761:20180521165021p:plain

f:id:shop_0761:20180521165859p:plain

f:id:shop_0761:20180521165952p:plain

ちなみに去年試したときとキャリブレーションのポーズが一つ減ったので、お手軽になりました。 バッテリー残量と磁気状況を取得できるようです。まだちゃんと見れてないですが、APIがありそう。

---------------- 追記 2018/05/22 ---------------------

ありました。 GetMagneticState() と GetPowerLevel() がありますね。

f:id:shop_0761:20180522162753p:plain

f:id:shop_0761:20180522162805p:plain

これも便利そう

f:id:shop_0761:20180522162822p:plain

振動はこれ 振動箇所は1Trackerをマウントしてる下部分が振動します。 これは完全におまけ機能っぽい(振動の強さや振動パターンはない)(Touchのがいっぱいある)

f:id:shop_0761:20180522163037p:plain

両手同時に発火できるっぽい

f:id:shop_0761:20180522163128p:plain

とりあえず動いたので貼っとく ちゃんと読んでないのであれですが、 ものによっては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へみたいなことができそうです。

f:id:shop_0761:20180521170702p:plain

先程の手順どおりにPluginなりをいれると動きます。

ハマりポイント

手が出ない

おそらくですが、手が出ない状態でキャリブレーションを済ませるとUnity側でキャリブレーション終わってないよエラーが出る…かも。 うーん、わからん状態であれこれ試してみました。

状況的には

  1. キャリブレーションをアプリからやった
  2. 試しに見つけたUnity側の Calibration Scene でもキャリブレーションしてみた
  3. やっぱり出ないのでExample_Inertia Scene を見てみる
  4. 地に張り付いた手がもにょもにょ動いてた → きてることはきてる
  5. キャリブレーションアプリに戻ると手が映るように
  6. そのままキャリブレーション たまに再起動
  7. 手が見えた状態でキャリブレーション終了 Unityに戻ると普通に動く

といった感じでした。単に環境が悪いせいで一人でハマっていた可能性があります…

UE4

DLはこちら。

Unreal Plugin + Samples | Hi5 VR Glove

キャリブレーションアプリもUE4製になっていました。Hi5_Mix ってやつ。

f:id:shop_0761:20180521172629p:plain

中身は同じっぽいので省略。

サンプルプロジェクトを開く前にバージョンを見てみると… 4.14.…

これ去年のときと変わってないのでは!?!? つらみ…

しかしPlugin単体の方はこれだけ対応してるので使えることには使えますね セーフ よかった。

f:id:shop_0761:20180521180248p:plain

とりあえずドキュメントを参考にセットアップしていきます。 UE4.19で試しました。

ドキュメントに長々と書いてますが、読むのが面倒でほぼ画像だけみて設定できます。ざっと流れだけ。

  1. Plugins に該当VersionのMotion Capture Pluginを追加 & Editorで有効後 再起動
  2. GameInstance を作って、初期化と終了処理を書く(Projectに設定も忘れずに)
  3. 同階層にある Hand Model をimport このとき Z Rotationを -90 に
  4. 両手分のAnim BP を作成 (以下は両手分行う)
  5. NewPose Calc ノードをFinal Animation Pose につなぐ
  6. NewPose Calc ノードの設定をする
  7. Pawnを作成、Motion Capture Avatar Component を追加 その下に手のSkeltal Mesh を追加
  8. Motion Capture Avatar Component の設定をする
  9. VR Preview で見る

すると動きます。やったー!

f:id:shop_0761:20180521182955p:plain

これをつないで、

f:id:shop_0761:20180521183054p:plain

こんな感じでせっせと設定します。Index 4 に該当するボーンがないので、今回はInvalidのままにします。

f:id:shop_0761:20180521183622p:plain

f:id:shop_0761:20180521183216p:plain

Motion Capture Avatar Component はこんなかんじ。 Avatar Name は右と左で同じであればなんでもいいっぽい。

でサクッと試してみると動きました。

f:id:shop_0761:20180521182334p:plain

サンプルプロジェクトは一応4.14でVSからビルドして開けたんですが、

f:id:shop_0761:20180521192014p:plain

文字化けしててファイル読めてないやんけ!!!!(やめた

まとめ

手汗のことを考えると使い捨てのビニール手袋を使うのがいい気がします。

ちなみにHi 5 + Vive コン を使うときはVive Tracker のドングルが必要です。

逆に言うと HMD + Hi 5のときはドングルがいりません。 これはHi 5 のドングル側でTrackerをペアリングできるっぽいです。