iPhoneで Air 太鼓の達人を作る 5

↑これの続きです。

前回までに作成したプログラムをつなげて動かしてみました。

動かした様子はこちら↓

エア太鼓の達人できた!!!!

実機プレイの感覚とは違うもののエア叩きを認識できていて 新感覚で楽しいです。それなりに疲れるので良い運動にもなりそうです。

エア叩き判定の作り方

手の骨格の座標は ToF AR から得られるのですが、叩いたかどうかの判定はその座標情報を使って自分でつくる必要性があります。

今回は手の速度が一定値を超えたら「叩いた」と判定することにしました。

この「一定値」を決めるために、エア連打した時の手の骨格座標を保存、エクセルで処理をして算出・調整しました。その結果
33 cm / sec(1秒間に 33 cm 進む速度)
という値に決定しました。

たまに誤認識(叩いてないのに叩いたことになる)はあるものの、概ねエア叩きは認識できています。


ただ、今回作ってみていくつか課題も見えました。

課題1 手認識は 15 FPS が限界

動画でもわかる通り、早く叩きすぎると認識されません。

時間あたりの手認識結果の数をカウントすると、15 FPS で得えられていることがわかりました。調べてみたところ、iPhone の True Depth Camera が 15 FPS であることが原因のようです。

15 FPS で手の前後を認識しないといけないので、カメラシャッターのタイミングと一致したとしても 1 秒間に 7.5 回が理論限界、タイミングずれを考慮するとその半分である秒間 3 回くらいが限界でしょうか。難易度が高くなると譜面のスピードはこれを超えてくるので、全難易度のクリアは不可能だと思われます。(もっとも、ニンテンドースイッチのコントローラ操作でも限界はあり、全難易度のクリアは無理なのですが・・・)

色々曲をプレイしたところ、クリア可能なのは「ふつう★6」くらいが限界でした。今後 True Depth Camera の FPS が上がることを期待するしかないですね。

課題2 長時間プレイで FPS が下がる

長時間プレイしていたところ、手認識の FPS が下がる現象が発生しました。調べてみたところ、これも True Depth Camera の挙動が原因のようです。発熱が高くなるとFPSを低下させる仕様になっているようです。Apple 開発者向けフォーラムでも同様の質問がありました。

まぁ、最近のスマホゲーは熱くなりやすいので、ファンやペルチェなどで冷やしておくのが無難なようです。こういうやつですね↓

ToF AR は iPhone 以外にも Xperia や Galaxy も動作するようです。これらの端末での動作も今後確認してみたいと思います。

(Git リポジトリは公開準備中)

↓ 番外編へつづく


この記事が気に入ったらサポートをしてみませんか?