VRゲーム開発日記@長崎Unityを使ったVRのゲーム開発をやってます。この広告は、90日以上更新していないブログに表示しています。kinect前回記事に引き続き、MS-SDKについて。手でのスワイプ動作などがある。手や足などが、指定時間内にどのように変化したかを確認する形となる。新しいジェスチャーを追加するには、その表現をコードで直書きしないといけない。既存のジェスチャの表現は、KinectGestures.csというファイルに記述されている。このファイルにCheckForGestureという関数があり、各ジェスチャごとにcase文が存在する。自分でジェスチャを追加するには、表現したいジェスチャに近いcase文をコピってカスタマイズという流れ。Gesturesにジェスチャ名を追加しておく必要がある。0,RaiseRightHand,RaiseLeftHand,Psi,Tpose,Stop,Wave,SwipeLeft,SwipeRight,SwipeUp,SwipeDown,ZoomOut,ZoomIn,Wheel,Jump,Squat,Push,Pull,LeanLeft,LeanRight,KickLeft,KickRight,}例としてJumpの表現を確認してみる。gestureData);}break;}break;まず、変化の状態としてgestureData.stateを見ており、2段階の変化を見ている様子。フェーズ1では、jointsTracked[hipCenterIndex]が有効か、また有効ならjointsPos[hipCenterIndex]のy座標が0.6f~1.2fに収まるかを見ている。この条件に当てはまれば、フェーズ1をクリアし、ジャンプの準備が整ったと見る様子。そのあとは、フェーズ2へ。フェーズ2ではtimestampが1.5f以下かというのを見ているので、1.5秒以内に次の動作へ移ったかという事だろう。この時間以上であれば、elseとなるので、ジェスチャーをキャンセルして、またフェーズ1の条件を満たすのを待つこととなる。1.5秒以内の動作でjointsPos[hipCenterIndex]とgestureData.jointPosのy座標の差が0.15以上かというのを見ている。gestureData.jointPosが前回位置だと思われるので、おしりの位置が前回より15cm以上上がってるかというのを見ているっぽい。横移動が大きい場合は、ジャンプとみなさない様子。以上がジャンプの表現の解析。2段階での表現となると、線形の動きしか取れなそう。3段階のフェーズが他にないので、拡張できるかは要調査。)プロフィールid:icoc_dev主にUnityを使って、iPhone、Androidアプリを制作しています。