パラメータ - みる会図書館


検索対象: Leap Motionプログラミングガイド 改訂版
25件見つかりました。

1. Leap Motionプログラミングガイド 改訂版

第 3 章アプリケーションの開発 ・ drawLeapObject() 最後に「表示部分」の変更です。 「キータップ・ジェスチャー」と同じように、「 Leap::ScreenTapGesture 」では、 「 position 」でタップされた場所を取得できます。 「 mparams. draw() 」でパラメータを描画します。 ・「 draw() 」の変更 void drawLeapObject() / / ジェスチャーの位置を表示する for ( autO gesture : mGestureList ) { autO alpha = 1.0f ((mLastFrame. timestamp() timestamp()) / ( 1 * 1000 * 1000.0f ) ) ; gesture.frame() . setDiffusecoIor( ci::C010rA( 1. Of , 1. Of , 1. Of , alpha ) ) ; gl : :drawsphere( tovec3f( gesture. position() ) , 10 ) ; / / デフォルトに戻す setDiffuseC010r( ci : :CoIorA( 0 . 8f , 146 0 . 8f , 0.8f ,

2. Leap Motionプログラミングガイド 改訂版

第 3 章アプリケーションの開発 1 / / 2 / / 4 gesture . direction() くく gesture. position() くく gesture . progress() くく一 1 ジェスチャーを行なっている指の ID 2 キータップの方向べクトル 3 キータップした位置 4 キータップの状態 ( 常に 1 ) ・ drawLeapObject() 最後に「表示部分」の変更です。 「 Leap::KeyTapGesture 」では、「 position 」でタップされた場所を取得できます。 「 mParams. draw() 」でパラメータを描画します。 ・「 drawLeapObject() 」の変更 VOid drawLeapObject() / / 表示座標系の保持 gl : :pushMatrices() ; / / カメラ位置を設定する gl : :setMatrices( mMayaCam. getcamera() ) ; 〃ジェスチャーの位置を表示する fO 「 ( autO gesture : mGestureLiSt ) { autO alpha = 1.0f ((mLastFrame. timestamp() ー gesture. frame(). timestamp()) / ( 1 ☆ 1000 * 1000. Of ) ) ; 140

3. Leap Motionプログラミングガイド 改訂版

[ 3-6 ] コードのテンプレート / / フレームの更新 mCurrentFrame; mLastFrame mcurrentFrame = mLeap . frame() ; renderFrameParameter() ; / / フレーム情報の描画 VOid renderFrameparameter() stringstream ss; / / フレームレート 今のフレームを「前回のフレーム」とし、新しいフレームを取得します。 「 Leap Motion 」からのデータの更新処理を記述します。 ・ draw() mTextTexture gl : :Texture( tbox. render() ) ; . backgroundcolor( C010rA( 0 , 0 , 0 , 0. 5f ) ) ; . C010r ( CO ] or ( 1.0f , 1.0f , 1.0f ) ) . text ( ss . str() ) .font( mFont ) . alignment( TextBox: :LEFT ) autO tbox = TextBox() / / テキストボックスを作成する ss くく "FPS ・ '<< mCurrentFrame. currentFramesperSecond() くく 次に、「 renderFrameParameter() 」でフレームのパラメータを表示させます。 drawTexture() ; drawLeapObject() ; gl::clear( ( 010r ( 0 , void draw()

4. Leap Motionプログラミングガイド 改訂版

[ 3-9 ] ジェスチャーを検出する たとえば「サークル・ジェスチャー」には MinRadius ( 認識する最小の半径 ) と MinArc ( 認識する最小の角度 ) があります。 それぞれデフォルト値が「 5.0mm と」「 1.5 ' pi ラジアン」ですが、これを変更する と次のようになります。 これによって、より大きな円を描かないとサークル・ジェスチャーとして認識しない ようになります。 なお、パラメータは「 Leap::Config::setXXXX() 」で変更しますが、「 Leap::Conf ig::save() 」を呼び出さないと、変更が反映されないことに注意してください。 ・サークル・ジェスチャーのバラメータの取得 mLeap.config() .save() ; mLeap . config() .setFloat("Gesture . Ci rcle . MinArc" mLeap. config() . setFloat("Gesture . circle . MinRadius", 10 . 0 ) ; ・サークル・ジェスチャーのバラメータの変更 スワイプ・ジェスチャー minArc = mLeap. config() . getFloat( "Gesture.Circle.MinArc" ) ; minRadius = mLeap.config() . getFloat( "Gesture. Circ1e.MinRadius 125 図 3-25 スワイプ・ジェスチャー 「スワイプ・ジェスチャー」は、指の「上下」「左右」「前後」の動きを検出します。

5. Leap Motionプログラミングガイド 改訂版

[ 3-9 ] ジェスチャーを検出する float minRadius; float minArc; ・ setup() ーク丿レ・ジェス mLeap. enableGesture( Leap: :Gesture: :Type: :TYPE_CIRCLE ) ; / / ジェスチャーを有効にする void setup() ・「 setup() 」の変更 続いて「パラメータ入力 UI 」の作成と「初期値」の設定を行ないます。 クル・ジェスチャー」のみ有効化します。 「 TYPE_CIRCLE 」を「 Leap::Controller::enableGesture() 」に指定し「サー mParams params: :InterfaceG1 ("parameters", vec2i ( 200 , 40 の ) ; minArc = mLeap. config() . getF10at( "Gesture. circle. MinArc" ) ; minRadius = mLeap. config() . getF10at( "Gesture. circle. MinRadius" ) ; 〃設定を変える VOid renderFrameParameter() ・「 renderFrameParameter() 」の変更 チャー」特有の値を表示してみます。 リストを「 Leap: ℃ ircleGesture 」に変更したので、表示にも「サ データの更新処理を行ないます。 ・ renderFrameParameter() mparams . addparam( "Min Arc", &minArc ) ; mparams . addparam( "Min Radius", &minRadius ) ; 133

6. Leap Motionプログラミングガイド 改訂版

第 3 章アプリケーションの開発 1 setDiffuseC010r( ci::c010rA( ( 0 ] or , C010r , ( 010r ) ) ; gl : :vertex( tovec3f( gesture . position() ) ) ; gl : :vertex( toVec3f( gesture.startposition() gl : :begin( GL—LINES ) ; : 1 i newi dth ( 10 ) ; gl : : end ( ) ; / / デフォルトに戻す setDiffuseColor( ci : :ColorA( 0 . 8f , / / 表示座標系を戻す gl : :popMatrices() ; ・ draw() の変更 void draw() gl::clear( ( 010r ( 0 , drawLeapObject() ; drawTexture() ; 《実行結果》 mparams.draw() ; / / パラメーター設定 UI を描画する 0 . 8f , 0 . 8f , これを実行させスワイプの動作をすると、指の軌跡が表示されます。 指の本数を変えて上下させると分かりますが、ジェスチャーは「手」ではなく、 「指」の動きで検出しています。 そのため、指を開いた ( パー ) 状態で「スワイプ」させるとジェスチャーを 5 つ検出し ます。 130

7. Leap Motionプログラミングガイド 改訂版

1 2 3 4 5 6 7 8 [ 3-9 ] ジェスチャーを検出する 方向べクトル 方向べクトルから方向を文字列化 ジェスチャーを行なっている手 ( 常に 1 ) ジェスチャーを行なっている手の ID ジェスチャーを行なっているポインタの数 ( 常に 1 ) ジェスチャーを行なっているポインタの ID ジェスチャーの検出時間 スワイプ・ジェスチャーの速度 ・ drawLeapObject() 「表示部分」の変更です。 129 ((mLastFrame. timestamp() ー gesture. frame() . timestamp()) / ( 1 ☆ 1000 * 1000.0f ) ) ; = 1.0f ー autO ( 0 ] or for ( autO gesture : mGestureList ) { gl : :setMatrices( mMayacam. getcamera() ) ; / / カメラ位置を設定する gl : :pushMatrices() ; / / 表示座標系の保持 void drawLeapObject() ・ drawLeapObject() の変更 最後に、「 mParams. draw() 」でパラメータを描画します。 これによって、時間とともにフェードアウトさせています。 色は経過時間から逆算して「白→黒」に変化させます。 それぞれの座標を「 GL_LINES 」で「線」として結びます。 これを表示してみます。 を取得できます。 「 Leap::SwipeGesture では startposition() 」と「 position() 」でスワイプの位置

8. Leap Motionプログラミングガイド 改訂版

第 3 章アプリケーションの開発 ・メンバ変数の追加 / / カメラ CameraPersp mCam; MayaCamuI mMayaCam ; / / パラメータ表示用のテクスチャ gl : :Texture mTextTexture; Font mFont; / / Leap Motion Leap: :Controller mLeap; Leap: :Frame mCurrentFrame; Leap: :Frame mLastFrame; ・ setup() 「初期化処理」として、表示する「ウインドウ」「光源」「フォント」「カメラ」の設定を 行ないます。 ディスプレイの左上から「 x = 50 , Y = 50 」の位置に、「 1280X700 」のサイズをウインド ウを表示しています。 この設定は、ディスプレイサイズなどによって適宜変更してください。 / / 表示フォントと領域の設定 ていますが、ほかのものでも OK です。 「フォント」は、 OS 付属のフォントを指定します。ここでは「游ゴシック体」を指定し g1Enab1e( GL—L 工 GHTO ) ; gIEnab1e( GL—LIGHTING ) ; / / 光源を追加する 「光源」は、「 LIGHTO 」を有効にします。 setwindowsize( 1280 , 700 ) ; setwindowpos(50, 50 ) ; / / ウインドウの位置とサイズを設定 88 mFont Font( "YuGOthic" / / Mac osx(Mavericks) と windows 8 . 1 に標準搭載されているフォント

9. Leap Motionプログラミングガイド 改訂版

第 3 章アプリケーションの開発 ・「 setupLeapObject() 」の変更 VOid setupLeapObject() / / ジェスチャーを有効にする mLeap. enabl eGesture( Leap : :Gesture : :Type : :TYPE—SCREEN_TAP ) ; / / 設定を変える mMi nDownVeloci ty = mLeap. config(). getFloat( "Gesture. ScreenTap. MinForwardVe10city" ) ; mHistorySeconds = mLeap. config() . getF10at( "Gesture . screen Tap . HistorySeconds" ) ; mMinDistance = mLeap.config() . getFloat( "Gesture . ScreenT ap. MinDistance" ) ; = params: : InterfaceGI ("parameters" , vec2i ( 200 , 400 ) ) ; mParams mparams. addparam( "MinDownVelocity" , &mMi nDownVelocity ) ; mparams . addparam( "Hi storyseconds" , &mHi storyseconds ) ; mparams. addparam( "Mi nDi stance" , &mMinDi stance ) ; ・ update() パラメータの保存を行ないます。 ・「 update() 」の変更 void update() / / 設定を保存する mLeap. config() . setFloat("Gesture . screenTap. MinForwardveloc ity" , mMinDownVelocity) ; mLeap . config() . setFloat("Gesture . ScreenTap . HistorySecon mHistorySeconds) ; mLeap.config() . setFloat("Gesture . ScreenTap. MinDistance" mMinDistance ) ; mLeap.config() . save() ; ds" 144

10. Leap Motionプログラミングガイド 改訂版

[ 3-9 ] ジェスチャーを検出する ・ renderFrameParameter() mLeap. config() . save() ; mLeap. config() . setFloat("Gesture. KeyTap. Mi nDi stance" , mMi nDi stance ) ; mLeap. config() . setFloat("Gesture. KeyTap. Hi storyseconds" , mHi storyseconds) ; mLeap. config(). setFloat("Gesture. KeyTap. MinForwardVe10city' , mMinDownVe10city) ; / / 設定値を保存する VOid update() ・「 update() 」の変更 パラメータの保存を行ないます。 ・ update() リストを「 Leap::KeyTapGesture 」に変更したので、表示にも「キータップ・ スチャー」特有の値を表示させてみます。 ・「 renderFrameParameter() 」の変更 VOid renderFrameParameter() 〃検出したジェスチャーの履歴を表示する for ( autO gesture : mGestureList ) { SS くく GestureTypeToString( gesture. type() ) くく ' GestureStateToStri ng( gesture. state() ) くく・ くく くく gesture. gesture くく gesture. pointable() . id() くく " gesture. pointables() . count() . hands()C0] . id() くく " gesture. hands() . count() くく ' gesture. duration() くく ' くく くく くく くく くく くく ンエ 139