Kinect for Windows SDK + XNA Studio on Windows 8

今日はQConTokyo 2013でKinectに関する講演を行うわけですが、Kinect for Windows SDKに関する小ネタを一つ。 SDKに含まれるサンプルでXNAを使う、マッチョマンアバターのデモがありますが、あれは、単にSDKをインストールしただけだと、動かすことができません。 このデモを動かしたい場合、XNA Studioのインストールが必要になります。Windows 8の場合は、以下の手順でXNA Studioをインストールしてみてください。 1.Games for Windows マーケットプレイスクライアントをインストールまず、http://www.xbox.com/ja-jp/LIVE/PC/DownloadClient からソフトをダウンロードしてインストールしてください。これを入れないと、XNA Studioのインストールが失敗します。 2.XNA Studio 4.0 RefleshのインストールRefleshの方をインストールしてください。ダウンロードは http://www.microsoft.com/en-us/download/details.aspx?id=27599 から。 残念ながら、このサンプルはデフォルトではVisual Studio 2010でしか動きません。勿論他のサンプルはVisual Studio 2012でも動きますので、そこのところ間違いなきよう。 以上。

0

Windows Phone XNAでアニメーション – パラパラ

この投稿ではWindows PhoneのXNA Frameworkで作成したアプリケーションにパラパラ漫画的アニメーションを加える方法を説明します。 ※このブログで使う画像、ロジックは、http://create.msdn.com/en-US/education/tutorial/2dgame/getting_started のものをほぼそのまま使用しています。このサンプルは少ない労力でかなり立派なアプリが出来上がるので、是非試してみてくださいね。 例えば敵に弾が当たったときなどに爆発のアニメーションを加えたいな…なんて思いますよね。そんな時には爆発シーンの各コマの画像を作成して、その画像をUpdateで更新し、Drawメソッドでカレントの画像を描画していけば、一定のフレームレート(デフォルトは30fps)で画像がパラパラと描画されます。ですから基本的には、以下のような画像を用意し、 Updateメソッド内で、順次右にずらしていくだけでアニメーションになりますね。 ここで、Drawメソッドの中で、どうやって画像の一部だけを描画するか、その方法が問題になるわけですが、 spriteBatch.Draw(spriteStrip, destinationRect, sourceRect, color); とします。ここで一番目の引数spriteStripeは、上の図のテクスチャ、二番目の引数は、表示スクリーン上の描画位置を示す四角形、三番目の引数sourceRectは、テクスチャ(爆発の絵)のどの位置を描画するかを示す四角形です。こんな風に書いて、Updateメソッドで、sourceRectの位置を順番に右にずらしていくと、アニメーションっぽく見えるわけです。 こちらも、ゲームで敵に弾が当たったときの敵機の爆発等を考えればわかるように複数同時に描画されるので、以下のようなクラスを用意しておくと便利です。     using Microsoft.Xna.Framework;    using Microsoft.Xna.Framework.Content;    using Microsoft.Xna.Framework.Graphics;     class FrameAnimation    {        Texture2D spriteStrip;        float scale;        int elapsedTime;        int frameTime;        int frameCount;        int currentFrame;        Color color;        Rectangle sourceRect = new Rectangle();        Rectangle destinationRect = new Rectangle();        public int FrameWidth;        public int FrameHeight;       …

0

Windows Phone XNAでアニメーション – ぐるぐる

この投稿では、Windows PhoneでGameなどの高機能なグラフィックスを必要とするアプリケーション開発に最適な、XNA Frameworkを使って、テクスチャイメージを一定の速さで変形させる方法を解説します。 ここでは図のテクスチャを一定速度で回転させるアニメーションをベースに説明を行います。 この画像は、PowerPoint 2010で、フリーハンドでぐるぐるを描いて、図としてPNGで保存したものです。背景が透明なので他の描画に重ねることができます。好きな画像を用意してください。 次に、Windows Phone SDKをインストールしたVisual Studioを起動して、XNA Game Studio 4.0のWindows Phone ゲーム(4.0)という名前のテンプレートで新しくプロジェクトを作成します。名前を仮にWPGuruGuruとしておきます。 作っておいた図を、新しく作成されたプロジェクトのフォルダーWPGuruGuruContentにコピーします。 そして、WPGuruGuruのソリューションエクスプローラーで、新しく作成されたソリューションの2つのプロジェクトのうち、お尻にContentがついたプロジェクト(ここではWPGuruGuruContent)をマウスで右クリックし、”追加”→”既存の項目”を選択して、この画像ファイルをこのプロジェクトに追加します。画像ファイル名は、GuruGuru.pngとしておきますね。 WPGuruGuruプロジェクトのGame1.csのGame1クラスのメンバー変数として、 private Texture2D guruguruTexture;    // 画像を保持する為のメンバー変数private float angle;                                // 画像を描画する時の角度private float deltaAngle;                        // 画像角度を更新する際の単位角度 を追加します。 そして、Game1クラスのLoadContentメソッドに、以下のコードを加えます。 guruguruTexture = Content.Load<Texture2D>(“GuruGuru”); XNAの場合、(デフォルトで)毎秒30回、描画内容の更新(Updateメソッド)、描画(Drawメソッド)がコールされます。Updateメソッドで、angleにdeltaAngleを足して、360度を超えたら、360度の剰余を代入して、angleを順次更新していきます。そして、Drawメソッドで、そのangleの角度でテクスチャ画像を描画すれば、ぐるぐる回っているアニメーションの出来上がりです。なので、Initializeメソッドでangleを0、deltaAngleを10で、初期化しておいて、 Updateメソッドで、 angle += deltaAngle;if (angle >= 360) angle %=360; と描いておき、Drawメソッドで、 Vector2 origin = new Vector(guruguruTexture.Width / 2, guruguruTexture.Height /…

0

Windows Phone Real AR Camera公開

Sensor Checkerに引き続き、XNA+Silverlightのサンプル(XNAによるMangopot+Camera機能+Motionセンサー+Compass+Location)を公開しました。公開先は、http://mangorealarcamera.codeplex.com/ です。 CompassセンサーからのTrue Heading計測値を同期的にとる場合、Start()メソッドをコールして直ぐデータを取ろうとすると妥当なデータが取れないので、IsDataValidがfalseの間は待つようなコードを追加しています。こちらもSensor Checkerのポストと同様、このサンプルに関わるTipsを今後投稿していきます。Teapotの描画部分は、http://blogs.msdn.com/b/hiroyuk/archive/2011/07/26/10189766.aspx に詳しいので参照してください。 投稿予定は、 センサーからの同期的データ取得方法と注意点 ロケーションの取得方法と注意点 画像やテキストの重ね合わせ あたりです。 ではでは。・・・残りはカメラ周り

0

Windows Phone Real AR Camera公開

Sensor Checkerに引き続き、XNA+Silverlightのサンプル(XNAによるMangopot+Camera機能+Motionセンサー+Compass+Location)を公開しました。公開先は、http://mangorealarcamera.codeplex.com/ です。 CompassセンサーからのTrue Heading計測値を同期的にとる場合、Start()メソッドをコールして直ぐデータを取ろうとすると妥当なデータが取れないので、IsDataValidがfalseの間は待つようなコードを追加しています。こちらもSensor Checkerのポストと同様、このサンプルに関わるTipsを今後投稿していきます。Teapotの描画部分は、http://blogs.msdn.com/b/hiroyuk/archive/2011/07/26/10189766.aspx に詳しいので参照してください。 投稿予定は、 センサーからの同期的データ取得方法と注意点 ロケーションの取得方法と注意点 画像やテキストの重ね合わせ あたりです。 ではでは。・・・残りはカメラ周り

0

Windows Phone Real AR Camera公開

Sensor Checkerに引き続き、XNA+Silverlightのサンプル(XNAによるMangopot+Camera機能+Motionセンサー+Compass+Location)を公開しました。公開先は、http://mangorealarcamera.codeplex.com/ です。 CompassセンサーからのTrue Heading計測値を同期的にとる場合、Start()メソッドをコールして直ぐデータを取ろうとすると妥当なデータが取れないので、IsDataValidがfalseの間は待つようなコードを追加しています。こちらもSensor Checkerのポストと同様、このサンプルに関わるTipsを今後投稿していきます。Teapotの描画部分は、http://blogs.msdn.com/b/hiroyuk/archive/2011/07/26/10189766.aspx に詳しいので参照してください。 投稿予定は、 センサーからの同期的データ取得方法と注意点 ロケーションの取得方法と注意点 画像やテキストの重ね合わせ あたりです。 ではでは。・・・残りはカメラ周り

0

WP7アプリで音楽を鳴らす

Windows Phone 7デバイスに入れた好きな音楽をアプリケーションで演奏する方法を紹介します。 XNAフレームワークを使って簡単に実現できます。アプリケーションプロジェクトの参照設定に、Microsoft.XNA.Frameworkアセンブリを追加します。アプリケーション内で、デバイスに登録されているメディアコンテンツのリストを取得します。 var mediaLibrary = new Microsoft.Xna.Framework.Media.MediaLibrary(); mediaLibraryのSongsというプロパティで、デバイスに入っている楽曲それぞれにアクセスが可能です。例えば、3曲目なら、Sogs[3]、こんな感じ。型はMicrosoft.XNA.Framework名前空間のSongクラス。NameやAlbum、Artistなどといったプロパティが用意されており、曲名やアーチスト、アルバム名を参照可能です。 そして、以下の様なコードを書けば、その曲を鳴らせます。 Microsoft.Xna.Framework.Media.MediaPlayer.Play(mediaLibrary.Songs[3]);  演奏をやめたい時は、Stop()メソッドをコールします。MediaPlayerクラスには、Stateというプロパティも用意されていて、そのプロパティを参照すれば現在MediaPlayerが演奏中かそうでないかを判別できます。 以上、WP7の小ネタでした。  ・・・と、Silverlightアプリでやってみると動かない!! ってことに気がつきました。MediaPlayerは、Xna Frameworkのクラスで、こういった連続的に動作するようなクラスは、ちゃんとディスパッチループを回さないと駄目なんですね。マイクロフォンの場合と同じに。てな訳で、MediaPlayerのPlayメソッドをコールする遥か以前のページを表示した後一回だけコールされる場所(OnNavigateToとかLoadedとか)で、以下のコードを書いて回しておきます。             timer = new DispatcherTimer();            timer.Interval = TimeSpan.FromMilliseconds(50);            timer.Tick += delegate { try { FrameworkDispatcher.Update(); } catch { } };            timer.Start(); timerは、System.Windows.Threading.DispatcherTimerクラスです。ページが閉じる時、このtimerのStopメソッドをコールしましょうね。それから、MediaPlayerの停止も忘れずに。

0