インタラクティブ・ゲーム制作 <プログラミングコース>

Slides:



Advertisements
Similar presentations
主専攻実験 第1回 ガイダンス資料 TA : 野坂 龍佑 (M2), 高林大輔 (M1)
Advertisements

1 Layout Utilities の紹介 Layout Utilities とは、お客様のプログラムに 流し込み印刷を簡単に組み込めるソフトウエア開発ツールです 無償 流し込み印刷の例.
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作 第4回 マルチスレッドとネットワーク. 今日の内容 マルチスレッド – ローディングの進捗表示とか – 処理高速化も見込めます ネットワーク通信 – 必然的にマルチスレッドを扱います.
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
初年次セミナー 第8回 データの入力.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
ゲームプログラミング講習 第1章 DXライブラリ入門
Win32APIとMFC H107102 古田雅基 H107048 佐藤一樹 H107126 山下洋平.
第6回 Flashによるゲームの作成 04A2029           古賀慎也.
情報理工学部 情報システム工学科 ラシキアゼミ3年 H 岡田 貴大
プログラミング演習Ⅱ 第12回 文字列とポインタ(1)
情報処理Ⅱ 2007年12月17日(月).
ソースコード品質概論 なぜソースの品質を追求するのか
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
情報科学1(G1) 2016年度.
MSBuild 色々出来るよ 2011/04/02 お だ.
プログラミング演習II 2004年12月 21日(第8回) 理学部数学科・木村巌.
プロジェクト演習Ⅱ インタラクティブゲーム制作
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
プロジェクト演習Ⅳ インタラクティブゲーム制作 プログラミング4
環境の世紀17  第13回 駒場の電気を考える.
TA 高田正法 B10 CPUを作る 2日目 SPIMのコンパイル TA 高田正法
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
基礎プログラミング演習 第1回.
オーサリングツール&ブラウザの 技術的トピック
C言語を用いたシューティング ゲームの作成
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
Leap Motionを用いた実世界指向 アプリランチャの設計と開発
Windows Azure (CTP) 触ってみた
Microsoft MVP for Development Tools – Visual C++
マルチスレッド処理 マルチプロセス処理について
Cプログラミング演習 第7回 メモリ内でのデータの配置.
プログラミング 4 記憶の割り付け.
Microsoft MVP for Development Tools – Visual C++
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
インタラクティブ・ゲーム制作 <プログラミングコース>
ゲームプログラミング講習  第3章 ゲーム作成 ブロック崩しを作ります ゲームプログラミング講習 第3章 ゲーム作成.
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
Windows Azure (CTP) 触ってみた
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
Microsoft MVP for Development Tools – Visual C++
プロジェクト演習Ⅱ インタラクティブゲーム制作
情報処理Ⅱ 第2回:2003年10月14日(火).
第2回課題 配布した通り.氏名・学生番号を忘れないこと.
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
プロジェクト演習Ⅳ インタラクティブゲーム制作 プログラミング4
第1章 いよいよプログラミング!! ~文章の表示 printf~
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
オブジェクト指向プログラミング クラス 継承
vc-3. ダンプリスト,配列 (Visual Studio C++ の実用知識を学ぶシリーズ)
vc-2. Visual Studio C++ のデバッガー (Visual Studio C++ の実用知識を学ぶシリーズ)
サブゼミ第7回 実装編① オブジェクト型とキャスト.
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
vc-3. ダンプリスト,配列 (Visual Studio C++ の実用知識を学ぶシリーズ)
精密工学科プログラミング基礎 第7回資料 (11/27実施)
☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆に関する研究 テンプレート:A0 ページ設定※ 幅 84.1cm 高さ 118.9cm
情報処理Ⅱ 2007年12月3日(月) その1.
情報実習I (第1回) 木曜4・5限 担当:北川 晃.
リフスロー コードレビュー リフスローチーム 和泉 真 西村 和晃.
コンパイラ 2012年10月11日
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
Molecular Devices Japan
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
プロジェクト演習Ⅱ インタラクティブゲーム制作
プロジェクト演習Ⅱ インタラクティブゲーム制作
C#プログラミング実習 第1回.
キネクトとは 第1回.
Kinectで画像処理 第2回.
Presentation transcript:

インタラクティブ・ゲーム制作 <プログラミングコース> 第11回 Kinect体験会

今週は特別編でお送りします Kinectの使い方を解説します Kinectは実際に何が出来るのか? SDKをどう使えばいいのか? 実装としてFKと組み合わせたソースを用意 Kinectは実際に何が出来るのか? 処理的にどういうデータを取れるのかを解説 SDKをどう使えばいいのか? Kinect SDKに限らず全般的なノウハウを解説

今日のプロジェクトを扱うには 必要なもの Kinect本体 Kinect SDK & Developer Toolkit お買い求めください(高性能版が出てます) Kinect SDK & Developer Toolkit ダウンロードできます http://www.microsoft.com/en-us/kinectforwindows/develop/developer-downloads.aspx まずSDK→次にToolkitの順にインストール Windows 7 & Visual Studio 2010専用 Vista以前やVisual Studio 2008以前は不可

ヘッダとライブラリの ディレクトリを確認 SDKと言っても、 実体は普通のライブラリと同じ ヘッダファイルのあるパス ライブラリファイルのあるパス これらを自力で確認して、必要があれば修正できるようになってください

まずはデモ 私の華麗なポーズをしかと見よ!

今回利用したKinectの機能 ビデオカメラ(カラー映像) 深度値カメラ(デプス映像) スケルトントラッキング いわゆる普通のカメラ 赤外線照射による奥行き情報を取得 「どの領域が1人の人間か」も認識 スケルトントラッキング 関節を認識して位置情報を取得

その他にも… 音声認識 フェイストラッキング 発声位置と単語の認識も可能 顔面の向き、表情を認識する でも英語の発音に自身が無くなるかもしれない… フェイストラッキング 顔面の向き、表情を認識する

スペックを把握しよう 近すぎると深度情報が正確に取れない 重なり合った関節は不安定になる すごいはすごいけど、 あまり過剰な期待をすると大変かも! 結局は「数値」を扱うわけだしね

Kinect APIの使い方の流れ(1) ループ突入前の仕込みの部分 まずは「Kinectを制御する変数」を作る 「INuiSensor*」型の変数 各機能の初期化処理は全てここから派生する 各機能を利用する「ハンドル」を作る ポインタみたいなものだが、今回のように 「情報取得したよ!変わったよ!」といった 状態を検知する際によく使う考え方 ガチでWindowsプログラミングするとお馴染みになる

Kinect APIの使い方の流れ(2) ここからは毎フレーム呼ぶ処理 最後にShutdownしてお片付け ハンドルを通じて 「お前情報更新されたか?」を問い合わせる 更新されてたら、情報を取り出して自分で 扱いやすいように格納する 画像はフォーマットに気をつけて格納する スケルトンは(出来れば)位置情報を そのまま使わず、関節同士の角度を計算して使う 最後にShutdownしてお片付け

角度計算、できるよね? 各関節に対応した 20個の座標列がある 座標が分かれば、ベクトルの内積で角度が、外積で回転軸が出る! インデックスと部位の 対応は右図の通り enumで定義済み 座標が分かれば、ベクトルの内積で角度が、外積で回転軸が出る! SDKに計算関数があるので、そちらを試してみてもよいかもね NuiSkeletonCalculateBoneOrientations()

(主にMSの)SDKの特徴 大抵「その機能やデバイスを統括する オブジェクト」が存在する そこから細かい機能ごとに オブジェクトを作り出したりする 起動時:Create()とかInitialize()とか ループ中:Getなんちゃら()とか 終了時:Release()とかShutdown()とか

基本はサンプルから盗む APIリファレンスも重要な資料ですが、 あれは辞書です とはいえ、MS謹製のサンプルはもの凄く読みづらい…… 英語の勉強するのに辞書と延々にらめっこするのは果たして効率いいだろうか? とはいえ、MS謹製のサンプルはもの凄く読みづらい…… イベントドリブン型で書いてあるため FKなどで奨励しているのはポーリング型

プログラミングの2大スタイル イベントドリブン ポーリング 「これが起きたらそれをやれ」を徹底して書いていくスタイル switch文が膨れあがる、あるいはコールバックの嵐になるので、知識が ないと流れが追えない リアルタイムなアプリは若干書きづらい その分CPUパワーは 抑えがちになったり ならなかったり ポーリング あくまでプログラムは 書いてある通りの順番で 動く 条件分岐、繰り返し、 関数呼び出しの知識で 流れが追える 反面、規模が膨れあがると書き方次第では破綻する CPUパワーを喰いがち

どっちがいい、という話では無い 各自が書きやすいスタイル、今作ろうとしているものに合わせて選択できるのが理想 そこまでいかずとも、それぞれで書かれたコードを理解できれば、手元のソースでサンプルが役立てられるようになる はず