プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース

Slides:



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

1 Layout Utilities の紹介 Layout Utilities とは、お客様のプログラムに 流し込み印刷を簡単に組み込めるソフトウエア開発ツールです 無償 流し込み印刷の例.
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作 第4回 マルチスレッドとネットワーク. 今日の内容 マルチスレッド – ローディングの進捗表示とか – 処理高速化も見込めます ネットワーク通信 – 必然的にマルチスレッドを扱います.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
知識情報演習Ⅲ(後半第1回) 辻 慶太(水)
第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
TA 高田正法 B10 CPUを作る 2日目 SPIMのコンパイル TA 高田正法
パスファインダーの作成 slis. tsukuba. ac. jp/~fuyuki/cje2/CJE161018
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
基礎プログラミング演習 第1回.
インタラクティブ・ゲーム制作 <プログラミングコース>
オーサリングツール&ブラウザの 技術的トピック
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション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 <インタラクティブ・ゲーム制作> プログラミングコース
インタラクティブ・ゲーム制作 <プログラミングコース>
岩村雅一 知能情報工学演習I 第13回(後半第7回) 岩村雅一
ゲームプログラミング講習  第3章 ゲーム作成 ブロック崩しを作ります ゲームプログラミング講習 第3章 ゲーム作成.
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
Windows Azure (CTP) 触ってみた
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
Microsoft MVP for Development Tools – Visual C++
音声認識・翻訳 Android アプリケーション制作
プロジェクト演習Ⅱ インタラクティブゲーム制作
情報処理Ⅱ 第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-1. Visual Studio C++ の基本操作 (Visual Studio C++ の実用知識を学ぶシリーズ)
vc-3. ダンプリスト,配列 (Visual Studio C++ の実用知識を学ぶシリーズ)
精密工学科プログラミング基礎 第7回資料 (11/27実施)
アルゴリズム入門 (Ver /10/07) ・フローチャートとプログラムの基本構造 ・リスト ・合計の計算
情報処理Ⅱ 2007年12月3日(月) その1.
情報実習I (第1回) 木曜4・5限 担当:北川 晃.
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
Molecular Devices Japan
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
プロジェクト演習Ⅱ インタラクティブゲーム制作
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
プロジェクト演習Ⅱ インタラクティブゲーム制作
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
C#プログラミング実習 第1回.
キネクトとは 第1回.
Kinectで画像処理 第2回.
Presentation transcript:

プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース 第10回:特別編 Kinectの使い方 &SDK全般の使い方(の読み解き方)

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

今日のプロジェクトを扱うには 必要なもの Kinect本体 Kinect SDK & Developer Toolkit お買い求めください(GSくれば貸してあげても…) 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パワーを喰いがち

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