SlideShare a Scribd company logo
1 of 18
カラフルゴーストバスターズ
kinect
これから紹介するカラフルバスターズのコードでは
主に時間のカウントをする表示のコード、倒すと点数が増える
ゴーストを表示させるコード、踏んでしまうと点数が減ってしま
うバルーンの表示のコードになっている。
時間はofApp.h、ofApp.cppのほうで計算するようにして、各クラ
スにもっていってカウントしている時計のカウントに使っている。
バルーンとゴーストが踏んだら消えるように二つの足のポジショ
ンを取って他のクラスに持っていくのがkinectのコードの役目で
ある。kinectでとるポジションは初めに用意する配列にポジショ
ンを入れていく、なので始めに配列のほうをたくさん用意してお
くとセンサーの限界以内なら何人でもこのゲームに参加できるこ
とになる。
kinectとはRGBカメラや深度センサーによって全身を使った動き
によって入力できる、モーションセンサーデバイス。
kinectの制御をするためにコードを書いていく。
kinectでとったポジションを他のクラスに持っていくことが必要
となる。
ofAppのほうで取ったポジションをそれぞれのクラスでマウスの
ポジションで取っているところを足のポジションで置き換えると
いったイメージ。
センサーの処理はX,Y,Z軸の考え方の認識が必要。
本来はジャンプ操作をする必要がなかったのでx,z軸でのみ使用してポジ
ションをとるでも大丈夫だったが、
今回は精度を上げるためにY軸を面を含めた制御になっている。
初めはScreen上にのピクセル位置(x,y)から方向の情報を得て
そこからスカラー倍することで目的のポジションを得ることができる。
そのジションをワールド座標系に変換する。
なぜワールド座標系に変換するというと簡単な座標変換によって任意の位置
からどう見えるのか求められるようになるので使い勝手がよくなるからだ。
ワールド座標系はkinectの位置を原点としたときに、実空間のなかで縦方向
をX軸、横方向をY軸、前方向をZ軸とした座標系である。
つまりX,Y,Zで表現できるため簡単に表すことができる。
つまりkinectではX,Z軸しか使わずに表現
できるんですよね、なので初めは簡単な
地平線センサーを作りたいと思う。
水平線線上の障害物の投影座礁を640個用
意してあるXnProject[]という並列に入れ
て、処理を軽くするために一度処理をは
さむ。
XnPoint3Dとは三次元座標データだ。
ヘッダのほうでincludeしておく。
kinectを使用するときはofOpenNIをinclude
しておく必要がある。
kinectのsetup
backZと書いてあるところに足
のポジションを取るうえで背景
のポジションを取ってしまうと
足のポジションの邪魔になるの
で、背景のポジションを別にい
れるようにしている。
足のポジションをとる時には都合よく
欲しいポジションの値だけ取れたりは
しない。一つの足にたくさんのポジ
ションを取ってしまう。
とりたいのはゲームをしている人の足
のポジションなのでそれぞれの点の距
離を見て足のポジションとして見る点
を取る。
そのためにintervalの変数を用意して
近くにある点を飛ばしてポジションを
取っている。
床の画面のほうをはじめは動画で扉が開
いていく様子を表示させて、そこから床
の画像を表示させている。途中の半分の
秒数を過ぎたあたりで他の画像に切り替
えている、そのためにsetupでloadして
いる。最後の終了の時に流すための音と
各秒数減っていくと音を流している。
右下のコードはupdateで
真下のコードはdrawのコード。
drawのメソッドのところで
モードの変更ができるようになって
いる。
モード1のほうでは天井から足の位
置を把握した視点、
モード2のほうではkinect自体から
見た視点で見れるようになっている。
本来は画面のスクリーンの傾きと高
さの調整するためにおいている
先ほどのスライドで説明したとおり
固定した場合必要でない
ofApp::keyPressedのほうで
sのキーを押すと用意していた
backZの配列に入るほうにかいている。
映すプロジェクターの位置に
よって
初期位置からどれくらい移動す
るのか変更する。
あとでスタートを手動で出来る
ようにしたかったのでboolで
変えられるようにしている。
今回のカラフルゴーストバスターズではポ
ジションをとる精度がプロジェクターを使
用するうえで誤差があったためY軸、つまり
縦の座標を利用して計測している、プロ
ジェクタを利用すると若干上向きにずれが
生じるためXを軸にして回転を与える、そう
することでちょうど足元にプロジェクター
の映像がくるようになる。
kinectではX‐Y平面に計測された深度を計
測して、障害物の座標をXnProjectという配
列にいれておいてワールド座標の配列に変
換しています、処理効率を上げるために配
列で一度に変換している。
ワールド座標系とはkinectを原点として
縦をX軸、横をY軸、前をZ軸とした座標系
となっている。だから単純な足の上下運動
をしない運動する足のポジションを入れよ
うとするとXとZだけ使うことになる。
始めX,Z軸で制御していたものを
Y軸も含めて処理するためにこのメ
ソッドを作っている。
Y軸も含めることで足が短い子供に
も対応できたりポジションをとると
きに正確に取れたりできる。
参考資料
• こじ研
https://www.ei.tohoku.ac.jp/xkozima/lab/ofTutorial2.html

More Related Content

More from Atelier Frameworks

unity sprite animation・prefab (ハルフル)
unity sprite animation・prefab (ハルフル)unity sprite animation・prefab (ハルフル)
unity sprite animation・prefab (ハルフル)Atelier Frameworks
 
unity sprite animation (ハルフル)
unity sprite animation (ハルフル)unity sprite animation (ハルフル)
unity sprite animation (ハルフル)Atelier Frameworks
 
unity 画像の移動 (ハルフル)
unity  画像の移動 (ハルフル)unity  画像の移動 (ハルフル)
unity 画像の移動 (ハルフル)Atelier Frameworks
 
カラフルゴーストバスターズ「得点の計算」
カラフルゴーストバスターズ「得点の計算」カラフルゴーストバスターズ「得点の計算」
カラフルゴーストバスターズ「得点の計算」Atelier Frameworks
 
カラフルゴーストバスターズの演出「ゴースト」
カラフルゴーストバスターズの演出「ゴースト」カラフルゴーストバスターズの演出「ゴースト」
カラフルゴーストバスターズの演出「ゴースト」Atelier Frameworks
 
カラフルゴーストバスターズの演出「バルーン」
カラフルゴーストバスターズの演出「バルーン」カラフルゴーストバスターズの演出「バルーン」
カラフルゴーストバスターズの演出「バルーン」Atelier Frameworks
 
海さんぽ演出「サメ」
海さんぽ演出「サメ」海さんぽ演出「サメ」
海さんぽ演出「サメ」Atelier Frameworks
 
海さんぽ演出「サカナが寄ってくる」
海さんぽ演出「サカナが寄ってくる」海さんぽ演出「サカナが寄ってくる」
海さんぽ演出「サカナが寄ってくる」Atelier Frameworks
 
海さんぽ演出「光道と動画再生」
海さんぽ演出「光道と動画再生」海さんぽ演出「光道と動画再生」
海さんぽ演出「光道と動画再生」Atelier Frameworks
 
海さんぽ演出「メッセージボトル」
海さんぽ演出「メッセージボトル」海さんぽ演出「メッセージボトル」
海さんぽ演出「メッセージボトル」Atelier Frameworks
 
海さんぽ演出「長靴」
海さんぽ演出「長靴」海さんぽ演出「長靴」
海さんぽ演出「長靴」Atelier Frameworks
 
海さんぽ演出「サーフィンとカメ」
海さんぽ演出「サーフィンとカメ」海さんぽ演出「サーフィンとカメ」
海さんぽ演出「サーフィンとカメ」Atelier Frameworks
 
個人制作「球をよけるゲーム」
個人制作「球をよけるゲーム」個人制作「球をよけるゲーム」
個人制作「球をよけるゲーム」Atelier Frameworks
 
個人制作「もぐらたたき」
個人制作「もぐらたたき」個人制作「もぐらたたき」
個人制作「もぐらたたき」Atelier Frameworks
 
ヒカリノアトリエ演出「アバターと手から粒子」
ヒカリノアトリエ演出「アバターと手から粒子」ヒカリノアトリエ演出「アバターと手から粒子」
ヒカリノアトリエ演出「アバターと手から粒子」Atelier Frameworks
 

More from Atelier Frameworks (20)

unity sprite animation・prefab (ハルフル)
unity sprite animation・prefab (ハルフル)unity sprite animation・prefab (ハルフル)
unity sprite animation・prefab (ハルフル)
 
unityでNuitrackを使う 
unityでNuitrackを使う unityでNuitrackを使う 
unityでNuitrackを使う 
 
unity sprite animation (ハルフル)
unity sprite animation (ハルフル)unity sprite animation (ハルフル)
unity sprite animation (ハルフル)
 
unity 画像の移動 (ハルフル)
unity  画像の移動 (ハルフル)unity  画像の移動 (ハルフル)
unity 画像の移動 (ハルフル)
 
カラフルゴーストバスターズ「得点の計算」
カラフルゴーストバスターズ「得点の計算」カラフルゴーストバスターズ「得点の計算」
カラフルゴーストバスターズ「得点の計算」
 
カラフルゴーストバスターズの演出「ゴースト」
カラフルゴーストバスターズの演出「ゴースト」カラフルゴーストバスターズの演出「ゴースト」
カラフルゴーストバスターズの演出「ゴースト」
 
カラフルゴーストバスターズの演出「バルーン」
カラフルゴーストバスターズの演出「バルーン」カラフルゴーストバスターズの演出「バルーン」
カラフルゴーストバスターズの演出「バルーン」
 
海さんぽ演出「波」
海さんぽ演出「波」海さんぽ演出「波」
海さんぽ演出「波」
 
海さんぽ演出「サメ」
海さんぽ演出「サメ」海さんぽ演出「サメ」
海さんぽ演出「サメ」
 
海さんぽ演出「サカナが寄ってくる」
海さんぽ演出「サカナが寄ってくる」海さんぽ演出「サカナが寄ってくる」
海さんぽ演出「サカナが寄ってくる」
 
海さんぽ演出「光道と動画再生」
海さんぽ演出「光道と動画再生」海さんぽ演出「光道と動画再生」
海さんぽ演出「光道と動画再生」
 
海さんぽ演出「メッセージボトル」
海さんぽ演出「メッセージボトル」海さんぽ演出「メッセージボトル」
海さんぽ演出「メッセージボトル」
 
海さんぽ演出「長靴」
海さんぽ演出「長靴」海さんぽ演出「長靴」
海さんぽ演出「長靴」
 
海さんぽ演出「氷」
海さんぽ演出「氷」海さんぽ演出「氷」
海さんぽ演出「氷」
 
海さんぽ演出「サーフィンとカメ」
海さんぽ演出「サーフィンとカメ」海さんぽ演出「サーフィンとカメ」
海さんぽ演出「サーフィンとカメ」
 
個人制作「球をよけるゲーム」
個人制作「球をよけるゲーム」個人制作「球をよけるゲーム」
個人制作「球をよけるゲーム」
 
Find the ball
Find the ballFind the ball
Find the ball
 
えさやり
えさやりえさやり
えさやり
 
個人制作「もぐらたたき」
個人制作「もぐらたたき」個人制作「もぐらたたき」
個人制作「もぐらたたき」
 
ヒカリノアトリエ演出「アバターと手から粒子」
ヒカリノアトリエ演出「アバターと手から粒子」ヒカリノアトリエ演出「アバターと手から粒子」
ヒカリノアトリエ演出「アバターと手から粒子」
 

カラフルゴーストバスターズ「kinectでのモーション検出」