文章化に時間かかってしまった・・・
先日、twitterで
「ビーダマンのターゲットにAR技術を使えないか」
という話で盛り上がった。
AR(拡張現実)技術といえば、PCを使ってカメラで撮影した映像にリアルタイムで情報を描画する最近流行の技術。
動画サイトでも、マーカーを用意して、その上にキャラクターの3Dモデルを表示するのは定番。
そんな会話の中で、ふと
『 一般的なマーカーは一部が隠れると良くも悪くも見失ってしまう。
ということは、上手く工夫して「マーカーを見失う=何か通った」という風にできれば検知器として使えそう。
↓
単に「ARマーカーを貼ったターゲットを吹っ飛ばす」というのも面白そうだけど、せっかくだからマーカーを使ってビー玉を検知をしたい。』という発想が生まれた。
「ARマーカーを用いたビーダマ入力器の開発」と書くと研究っぽい。
今回の試作ではARマーカーに「reacTIVision」を使用した。
ARターゲット第0弾
理想を言えばこんなふうにマーカーが並んだシートを用意して
ビーダマが通って見失ったマーカーを取得してあげれば速度と角度は検知できそう。
%27%20fill-opacity%3D%27.5%27%3E%3Cellipse%20fill%3D%22%23acacac%22%20fill-opacity%3D%22.5%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22rotate(106.6%2053.4%20132.2)%20scale(64.33274%20130.29652)%22%2F%3E%3Cellipse%20fill%3D%22%23fff%22%20fill-opacity%3D%22.5%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(-.91821%2037.28583%20-233.26424%20-5.74442%20407%204.9)%22%2F%3E%3Cellipse%20fill%3D%22%23b2b2b2%22%20fill-opacity%3D%22.5%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(-22.23895%20-47.04686%2041.34803%20-19.54513%20123.9%2038)%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20fill-opacity%3D%22.5%22%20d%3D%22M458.4-29l-240%2037.4%20290.7%2033.8z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E)
ところが、実際にやってみると
カメラのfpsに対してビー玉の弾速が早すぎるのでマーカーを見失わないので検知ができない。
マーカー上にビー玉が滞在する時間が短すぎる。
というわけで、滞在時間をなんとかして稼ごうとしたのがこれ。
ARターゲット第1弾~坂式~
%27%20fill-opacity%3D%27.5%27%3E%3Cellipse%20fill%3D%22%233f3f3f%22%20fill-opacity%3D%22.5%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(8.66611%20-102.65714%2040.82752%203.44658%2099.3%20100.6)%22%2F%3E%3Cellipse%20fill%3D%22%23b9b9b9%22%20fill-opacity%3D%22.5%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22rotate(-71.8%20245.7%20-39.7)%20scale(93.82494%2070.90786)%22%2F%3E%3Cellipse%20fill%3D%22%23bababa%22%20fill-opacity%3D%22.5%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22matrix(27.16588%2093.50558%20-43.23155%2012.55993%2022.5%20225.3)%22%2F%3E%3Cellipse%20fill%3D%22%23b9b9b9%22%20fill-opacity%3D%22.5%22%20rx%3D%221%22%20ry%3D%221%22%20transform%3D%22rotate(-150%20109.9%20-24.7)%20scale(39.82295%2018.87907)%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E)
壁に当たって跳ねることでマーカーに覆い被さる時間を伸ばす方式。
この方式の最大のメリットは撃ったビー玉がそのまま戻ってくること。
理想のイメージ図を描くとこんな感じ。
赤い部分がマーカー
これでも最低限の検知はしたけど、ビー玉が跳ねる角度によっては検知しない。
なので、とりあえず壁を作って対応。
検知率は上がったけど、今度は壁によって出来る陰がマーカーに重なってしまってそもそもマーカーを読まない問題が。
ライトとかカメラとかの位置・角度を微調整すれば使えるけどシビアすぎて現実的ではない。
なによりスピーダーフェニックスのような超パワータイプで撃つと勢い余って上空のカメラにビー玉が当たる危険性がある。(試作品では透明プラバンで壁を作った)
うまくいかないことをリアルの友人やtwitterで愚痴っていたら、「風車方式」を提案された。
僕自身も風車方式は考えたけど、『ぴったりな角度で止まらず中途半端な位置で止ってしまってマーカーを見失うので有効ではない』と思い込んで勝手に没にしていた。
だけど、せっかく2人の方からアイディアを頂いたのでやってみた。
ARターゲット第2弾~風車式~
この方法はビー玉で覆い隠すというよりも見えるマーカーを切り替えてしまおうという方針。
1つのマーカーのみ認識するようにカメラの位置・角度を調整する必要はあるけど、条件を満たす範囲が広いので楽。
・・・かなり良いぞ!
偶然にもマーカーに合わせて作った羽のサイズがちょうど良くて、だいたい90度回る!
たまに見失ってしまうけど、ブレイクボンバーでボムの下にビー玉が詰まってしまった感じと思えば許せなくはない。
意外と良かったのでテーブルに直接固定していたのをポータブル化。
テンション上がったので
processingをつかって
ブレイクボンバーっぽいプログラムを書いて
ターゲットを撃ったら画面内のボムを撃てるようにしてみた!!
youtube
ニコニコ
まだ超連射や超パワーショットをした場合は不安定だけど調整すれば何とかなりそう。
友人&Leo7Nmtさん、風車型を作るきっかけを作っていただきありがとうございました!!
今回、あえてUSBコントローラー改造ではなくマーカーに拘ってみた理由は世界中のどこでも、誰でも作れる物にするため。
マーカーならプリンターさえあれば印刷できるし、本体の機構も極力シンプル&簡単に組み立てられるにする予定。
これを応用すれば
世界中のビーダーと対面競技で対戦することも
夢ではない!!
日本以外はプラダマが標準なのはこの文章を書くまで忘れてた・・・
コメント
知識がない僕には正直なところ理解が追いつかない箇所のある記事でしたが、世界中のビーダーと対戦ができるかもしれないというのはたまらない魅力ですね。
いやー、いろいろ出来るなビーダマン!
>オオノジョウさん
距離の関係上ネット上でしか繋がりが無いビーダーさんと戦えるかもしれないというところにも夢を感じてます。
まだ、ネット経由だとラグがどうなってしまうか?とか本当に誰でも作れるのか?など課題は多いですけどね。
良くも悪くもビー玉を発射することだけに特化した玩具なので、工夫次第でいくらでも遊べるのがビーダマンの最大のメリットだと思ってます。