Webカメラと赤外線LEDを使ってUnityで使える座標を取得する.その1

はじめに

Unityを使ってガンシューティングゲームを作るときに自作ガンコントローラを作る必要が出たときの備忘録です.主にソフト面になります.

アウトライン

具体的にどういうものが作りたかったかというと,以下の残念なイラストのような感じです.説明すると,プロジェクタを使ってスクリーンにゲーム画面を投影し,それを自作のガンコントローラを使って操作していくというものです.

ここで,一番の問題となるのがタイトルの通り座標取得(照準)になります.いろいろと調べて,ジャイロセンサと加速度センサの組み合わせにしようか,いっそコントローラを左右に回転だけするようにして固定しロータリエンコーダ使ったりする案が出ましたが,最終的に,確実そうだったWiiリモコンやアーケード用ガンシューティングゲーム(少し違うらしい)で使われるカメラと赤外線LEDによる方式でいくことにしました.

この方式は,赤外線LEDをCMOSセンサ(カメラ)で撮影することにより座標を計算するもので,Wiiリモコンではワイヤレスで座標を送信するためにあの小さなリモコン内部で画像処理が行われているそうです(あたりまえか).

当方は,そのあたりかなり素人なものなので,WebカメラとそこそこハイスペックPCによりOpenCVで画像処理すればなんとかしようということにしました.

 準備物

PC・・・CPU:Core i5 6500 /RAM:32GB /GPU:GTX1070  (肝心のCPUがいまいちスペック)

Webカメラ・・・1500円以下の中華製

赤外線LED 3つ・・・秋月電子で購入

紙・・・スクリーン代わりに

電源装置・・・電圧電流制御のできる電源装置が楽で良いですが,電流制限抵抗をつければ電池ボックスでも十分可

ハード面

赤外線LED3つを頂角120°の二等辺三角形のように配置します (お好みで).電源装置につないで,電流がわずかに流れるくらいに電圧を調整しておきます.

デジカメ(携帯電話含む)で撮影すると,赤外線LEDが発光しているかわかります.iPhone等は赤外線フィルタが入っていて無理らしい...

続いてWebカメラにも少し細工をします.Webカメラにはネガフィルムの端の黒い部分を切って貼ります(最近は見ませんがフィルムを現像した時のあれです).押入れの奥から引っ張り出せば,あるっていう人が多いと思います.たぶん....

こうすることによって,可視光は遮断して赤外線は通すということができます.ネガがなくても同等の効果を持つものであれば代用可.

[blogcard url=”http://denkikei.e3.valueserver.jp/denkikei.com/2018/03/coord2/”]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です