拡張現実子供乗せロボットゲーム製作(第四回)


拡張現実編
オーギュメンテッド・リアリティ?

拡張現実を使ったゲーム部分を作成します
拡張現実といっても顔を認識して
その位置対して攻撃判定を行うというだけです

顔認識の部分は下記のサンプル等を参考にしてください
http://chihara.naist.jp/opencv/?SharperCV

まずは顔の位置を取得します

CvRect[] faces = hc.DetectObjects(theFrame, 1.2, 2, PruningFlags.CannyPruning);

取得した位置にロックオンマーカを描画します

Rectangle h = new Rectangle((int)(preferredWindowWidth / 2) - 64,
(int)(preferredWindowHeight / 2) - 64, 128, 128);
d = new Rectangle((int)(faceX * reWidth) - 64,
(int)(faceY * reHeight) - 64, 128, 128);
s = new Rectangle(192, 0, 64, 64);
spBatch.Draw(lockontexture, d, s, Color.White);

トリガーを引いたときに
発射エフェクトとロックオンマーカとの相対位置
を調べ、近ければヒットとします
ヒットの場合は顔を赤く表示します

if (rightCount < 300 && rightCount > 0 && d.Intersects(h) && CommonCount % 5 < 3)
{
c = Color.Red;
s = new Rectangle(64, 128 + 32, 128, 32);
d = new Rectangle((int)(preferredWindowWidth - 192),
128 + 32, 128, 32);
spBatch.Draw(lockontexture, d, s, Color.White);
}

正直なところ処理が重すぎて
遊ぶのは難しいかもしれません
しかも顔認識が甘いので的は写真か何かを使わないとつらいかも
まあ5年後のPCでは遊べるようになると思いますw

簡単ですので
冬休みの工作で作って学校で遊んだら
楽しいかと思いますがどうでしょう

一応これで完了です
筆まめではないので随分な文章になってしまいました
スポンサーサイト

テーマ : ハードウェア - ジャンル : コンピュータ

拡張現実子供乗せロボットゲーム製作(第三回)


ソフトウエア編

今回使用するものは
・XBOX360USBパッド
・XNA(XBOX360、Windows用)
・OPENCV(SharperCV)(画像認識ライブラリ)
・USB-IO制御DLL

まずはXNA上でUSB-IOの制御を行います
下記でUSB-IO制御DLLをC#から
コールできるようなコードを提供してくれているので
そちらをプロジェクトに組み込みます

やねうらおさんの日記
http://d.hatena.ne.jp/yaneurao/20041109

起動時にUSB-IOの検索を行うコードを追加します

protected override void LoadGraphicsContent(bool loadAllContent)
{
if (loadAllContent)
{
USBIO.USBIO.uio_find();
}
}

終了時にUSB-IOの解放を行うコードを追加します

protected override void UnloadGraphicsContent(bool unloadAllContent)
{
if (unloadAllContent == true)
{
USBIO.USBIO.uio_free();
}
}


XBOX360USBパッドとキーボードから
操作された際にUSB-IOにビットを送信してあげます


KeyboardState keys = Keyboard.GetState();
GamePadState currentState = GamePad.GetState(PlayerIndex.One);
if ((keys.IsKeyDown(Keys.A) && keys.IsKeyDown(Keys.W))
|| (currentState.ThumbSticks.Left.X < -0.5f && currentState.ThumbSticks.Left.Y > 0.5f))
{
USBIO.USBIO.uio_out(1, 1 + 4, 0);
}
else if ((keys.IsKeyDown(Keys.D) && keys.IsKeyDown(Keys.W))
|| (currentState.ThumbSticks.Left.X > 0.5f && currentState.ThumbSticks.Left.Y > 0.5f))
{
USBIO.USBIO.uio_out(1, 2 + 8, 0);
}
if (keys.IsKeyDown(Keys.A) || currentState.ThumbSticks.Left.X < -0.5f)
{
USBIO.USBIO.uio_out(1, 1 + 4 + 8, 0);
}
else if (keys.IsKeyDown(Keys.D) || currentState.ThumbSticks.Left.X > 0.5f)
{
USBIO.USBIO.uio_out(1, 2 + 4 + 8, 0);
}
else if (keys.IsKeyDown(Keys.W)
|| currentState.ThumbSticks.Left.Y > 0.1f)
{
USBIO.USBIO.uio_out(1, 12, 0);
}
//後
else if (keys.IsKeyDown(Keys.S) || currentState.ThumbSticks.Left.Y < -0.1f)
{
USBIO.USBIO.uio_out(1, 0, 0);
}
//STOP
else
{
USBIO.USBIO.uio_out(1, 15, 0);
}


続きを読む »

テーマ : ハードウェア - ジャンル : コンピュータ

拡張現実子供乗せロボットゲーム製作(第一回)

いつもPCでのゲーム製作ばかりではつまらないので
今回は下記のような仕様のロボット?を作ってみます

・子供を乗せて移動できる
・ロボットのコントロールはPCから行う
・USBカメラをロボットに搭載する
・USBカメラの画像をフルスクリーンで見ながら操作
・操作はXBOX360パッドで行う
・顔認識で顔を的にし攻撃できる

これが出来れば超リアルなロボットゲームが出来る!
(現実の画像を使うんだから当たり前だけど)
あなたも冬休みの工作にでも挑戦してみてはどうでしょうか

ハードウエア編

まずはロボットの作成
ロボットといってもモータ2つを使い
移動できるようにするだけです
今回は子供も乗れる様に作りましたが
タミヤあたりのキャタピラ工作でも問題ないです

こんなロボットです↓
ロボット


本体で使用する材料は
・モータ、ギアボックス(モータ2つが左右についているやつ)
・タイヤ(これは何でもOK)
・USBカメラ(1800円くらい)
・植木鉢の移動台(100均で売ってる)

材料が集まったらこれをくっつけるだけ
移動台にギアボックスを紐でなりくっつけます
後はUSBカメラをクリップで乗せるだけ

もう、ここは好みで作るしかないです
自分は昔ロボコンで使っていた
モータとギアボックスに
タミヤのタイヤをムリクリつけて作りました
植木鉢の移動台はダイソーで210円でしたが
中々動きが軽くて20Kまで耐えられます

次にパソコンからロボットの操作が出来るようにします
ここで使用する材料は
・USB-IO(1500円送料こみ)
下記のサイトで買えます
http://km2net.com/usb-io/index.shtml
・リレー×4(5V、2C(2接点)260円*4)
・PNP型トランジスタ×4(A1015 100円)
・電池ボックス(単三×3)
・電池ボックス(モータ駆動用)

こんな回路になります↓
電気回路


USB-IOでモータ2つを正転反転を制御してあげます
USB-IOの出力は5V15mAなのでそのままでは
モータはおろか、リレーの駆動も出来ないので
増幅回路を組んでやります
増幅回路といっても自分でもよく分からないので
トランジスタ一個かますだけです
回路図の方はまた次回


この時点でUSBカメラの画像を見ながら
ロボットをPCから動かす事ができます
結構これだけでも面白いです

子供を乗せて動かしてます↓
椅子の変わりにバケツを使ってます
子供乗せ~

テーマ : ハードウェア - ジャンル : コンピュータ

プロフィール

TEA(てぃあ)

Author:TEA(てぃあ)
親サイト:
フリーのゲームがダウンロードできます
主にシューティング系

最新記事
最新コメント
カテゴリ
PSP Vita
カウンター
ジャスティスレギオン 無料ダウンロード
インディーズPSPVitaゲーム
リンクや作った物
検索フォーム
RSSリンクの表示