2013年7月25日木曜日

LeapMotion+Unity ジェスチャー閾値の設定

一部で話題にLeapMotionが発売開始されました。
手や指、道具(鉛筆など細長い物)を認識して位置や方向を高精度で取得できるデバイスです。
kinectの手指限定版みたいなものです。
大いに期待して開発者登録を済ませDevKitの頃から触っていくなかで、PVのようにスラスラと思うがままに操作ができる夢のデバイスかという、その幻想はぶち殺されたわけでした。

製品版が日本にも届きはじめてアレコレと各所で記事が上がって賑わっているのを見て、私も参加させろと記事を書くことにしました。

導入記事などはあちこちで書かれていますので、今回はドキュメントから見つけたジェスチャーの閾値設定の変更方法をご紹介します。
C#版のAPIReferenceでUnity上で動作を確認しています。
ドキュメントの場所は
docs/Languages/CSharpandUnity/API/class_leap_1_1_config.html

スワイプジェスチャーを試していて、かなり早く動かさないと認識してくれない。NUIとしてつかれてしまって話にならない。閾値の設定変更があります。
Leap.ControllerクラスのConfigプロパティから毎フレーム基準値を変更します。
基準値変更関数
Config.SetFloat(string key, float value);
変更した基準値をセーブする。
Config.Save();

実際のコードにするとこのようになります。

private Leap.Controller controller;
//初期化時
public void Start(){
    controller = new Leap.Controller()
}

//毎フレーム更新処理
public void Update(){
    controller.Config.SetFloat("Gesture.Swipe.MinLength", 0.0f);
    controller.Config.SetFloat("Gesture.Swipe.MinVelocity", 10.0f);
    controller.Config.Save();
}

どうやら毎フレーム設定する必要があるようです。そこに気をつけてください。

スワイプジェスチャーの場合の設定だけですが、ドキュメントには全部の設定可能なパラメータが載っています。納得いく認識になってない方は、色々調整してみてはいかがでしょうか。


プロモーションビデオに出てるようなスラスラと思うがままに動かすには、パラメータの調整やアルゴリズムの最適化などソフトウェア側で工夫する必要がありそうですね。



0 件のコメント:

コメントを投稿

このガジェットでエラーが発生しました