AceSpeeder2のUIデザインだが、ほぼ最終系に近づいてきた。 結論から言うと、技巧に走るのを抑えて、煩雑さを棄てて、プレイヤーの年齢を含めたロバストネスを優先することにした。 スクリーン正面に立って、頭の振りで入力する。 理論的には車椅子に座っていてもプレイできるはずだ。 命名「横ノリ方式」。 ライブとかで縦ノリというのがあるが、その逆だから。 (参考にならない雑談) http://www.violin-fiddle.com/archives/000021.html ちなみにAS2の挿入曲はテクノ・ハウス系が多いので、ノリのよいフランス娘が踊りながら遊んでくれるといいな(希望的観測)。

RoboGamerで開発した連続フレーム差分による動物体認識を使うという手もあったのだが「野生の勘」で使わないことにした。 というよりGPUVisionをフルGPUで動画像認識させる改造をすると、バージョンが一気に0.98から3.0に上がってしまいそうなぐらい変わってしまい、また公開(しないかもしれないけど)が遅れてしまうだろうから。 技巧に走らない、といいながらそんなことをやっていては時間がいくらあっても足りないので、これは今度の機会にする。というか、力技で動画像認識しなくても、いろんな方法があるわけで。 そんなこんなで、バージョンは2.xとして、木村君が片っ端からクラス化したあたりを咀嚼しながら、新しいクラスとして「頭上カメラ人体認識」を作ることにした。 もとから「ファンタスティックファントムスリッパ」「ラビリンスウォーカー」「タンジブルプレイルーム」と続いている床面インタラクションシリーズで、この手のカメラ位置はやってみたいと思っていたのでいい機会だ。 カラースペース変換とかエッジ抽出フィルタとか、基準画像差分フィルタを昔自分が書いたソースを基に使ってみるが、いまいち決め手に欠ける。 そこそこ動くのだけど、ロバストネスがイマイチ。 室内の光の状態が少しでも変わると、アルゴリズムの前提が崩れる。 もちろんカメラのオートは切っているし、シャッタースピードなどもかなり吟味しているが、展示会場の光源環境は、人が沢山来たりするとすぐに変化する。LVだけなら、半暗状態に保って、背景に板ぐらい置けるかもしれないけど、他でも展示するかもしれないからなあ。

こういうときは、制約条件から逆に導いたほうが早かったりする。 ・カメラは動かない、動かさない ・背景は人が多く通るので、カメラは頭上におくほうがよい ・立ち位置はテープなどで指示可能 ・足の動きは使わない ・人間の上半身左右の動きは1m程度 ・頭より足が上になる人はいない ・基準画像を用意してもよい ・周囲が明るかったり暗かったりしても動く という感じで基準画像差分を使って、足と頭を別々に認識できるシェーダーを書いてみた。

詳細は変わるかもしれないから、いまは解説しませんが。 とりあえずかなりイメージに近い反応をするようになってきた。 ただ幾つか弱点があって、直接光源と影に弱い。 顔から頭にかけてを検出するために、ある程度の明るさが必要なのだけど、プロジェクタの灯だとちょっと色的にも明るさ的にも不安定なので、スポットを炊いてみたんだけど、これが大失敗。 顔のコントラストは出るようになったんだけど、くっきりと自分の影が背景に乗ってしまった。 まあ、影は自分の動きに追従しているから実はそれほど困った問題ではないのだけど、どうやって消そうかな、マスクか、しきい値か、エッジフィルタの類か、あとは…。 久々に家に帰る途中、この一連の開発が論文のネタにならないか思案していた。既存のPCゲームを大きく改造しないで、全身型UIを実装するあたりとか、LVの会場を使って、大量のデータを取って適応型の認識アルゴリズムをつくって検証するというあたりでいけそうな感じがする。 ところで明日はB.D.フェスティバルがあるらしい。 http://www.bdlaval.org/ Laval Virtualと会場が一緒なので、下見がてら行ってくる予定。