ソフトウェアエンジニア T.Y.
2026.6.10
3Dカメラの Femto Bolt を使ったデモアプリを開発しています。
今回挑戦しているのは、野球のバッティングです!
Femto Bolt とは、Microsoft Azure Kinect を継承した3Dカメラで、これを使用すると人体のポーズや動きを検出することができます。
以前にデモアプリを作ったときには、サンプルを改良してお手本のポーズと同じポーズを一定秒数キープできればOK、という内容でした。
今回のターゲットは野球!
バッティングを検出するためにいろいろと試行錯誤をしました。
まず、スイングを検出できるのかの検証から始まりました。
サンプルプログラム集にスワイプを検出するというものがあったので、それをベースにすることにしました。手で左右のスワイプ動作を行うと画面上にあるキューブがその向きに回転するというものです。
バットを持たずにスイングの動作をすると確かにキューブは回転するのですが、早いスイングだと検知ができなかったり過剰に回転してしまったりと思うようには行きませんでした。
この段階でスワイプでのスイング検出は難しいと判断し、Claude Codeに独自のスイング検出プログラムを書いてもらいました。
そのコードでスイングの検出精度は大幅に良くなりましたが、検出が出来ただけで画面上はまだ何もありません。
そろそろ見た目を整えたくなってきたので、長方形を使ってバッターに見立てたオブジェクトを作成、さらにバットを表すオブジェクトも配置しました。
しかしまだスイングは反映できません。
スイングをバットのスイングとして描画させるためのプログラムも Claude Codeに書いてもらいました。ちょっとまだ不自然ですが、自分がやったバットの素振りが画面上のキャラクターのスイングと同期されるのは結構楽しいものです。
スイングを検出して描画ができるようになったのですが、いざゲームにしようとするとピッチャーが投げてくるタイミングをどうするかという問題があります。
ここで以前行ったポーズ検出が使えるかもしれない!と思いつきました。
左右どちらかのバッターボックスに立ち、両肘を胸の高さまで上げるバッティングのポーズを一定時間キープできたらピッチングを行うようにできないかと考えました。
Claude Codeに聞いたところ、右バッターは左肩が右肩よりのピッチャー寄り、左バッターはその逆になるのでこれを応用できそうとのこと。
さらにバットを構えるポーズも肘の高さで判断できました。
このポーズを1秒キープするというのも実装ができ、ピッチングのタイミング問題は解決です。
ここまでの内容の動画はこちらです。
やったことはまだまだありますが、長くなったので続きはまた今度。
関連する記事
この人が書いた記事