Hokuriku.NET vol 8(ブリしゃぶリターンズ?)

7月の Hokuriku.NET vol 7(福井)に続いて、11月19日(土)に開催される Hokuriku .NET vol 8 (富山)にもお邪魔することになりました。今回は Windows Phone の XNA & Silverlight ハイブリッド プログラミング(つまりMango Teapot)のお話をする予定です。他の講演者と内容は以下の通りです。 芝村さん:ASP.NET MVC4 & WebMatrix 2 早わかり 原水さん:Windows Azureを活用したWebサイト構築のポイント 新谷さん、杉下さん:Metro から考えるユーザーインターフェイスとデザイン(仮)

0

ExifLib

最近のデジカメやスマートフォン(もちろんWindows Phoneも)などで撮った写真には、それが縦撮影(Portrail)か横撮影(Landscape)かを示す向き情報(Orientation)がExif(EXchangeable Image file Format)に格納されています。 Windows Phoneで撮った写真や格納されている写真を表示しようとするとき、デフォルトが横撮影なので、この情報を反映させないと縦のものが横に寝た状態で表示されてしまいます。 WPFですとBitmapSource.Metadata プロパティから BitmapMetadata として取得できますが、Silverlight にはこのようなプロパティがないので、自前で解析しなければなりません。 ExifLib は ExifReader クラスを持ち、Exif データの抽出と解析を行ってくれるライブラリです。Tim Heuer が彼のブログで 、Windows Phone の PhotoChooserTask や CameraCaptureTask を使って取得した写真・画像を ExifLib を使って正しい方向に回転するサンプルを公開しています。 CameraCaptureTask が返す Stream に対応するよう、元々の ExifReader の ExifReader.cs に以下のコードを追加している点に注意してください。 public static JpegInfo ReadJpeg(Stream FileStream, string FileName) {   DateTime now = DateTime.Now;   ExifReader reader = new ExifReader(FileStream);…

0

TFセミナー(10/28):Windows Phone ではじめるゲーム開発入門

10/28(金)に マイクロソフト品川本社で Tech Fielder セミナー「Windows Phone ではじめるゲーム開発入門」を開催します。プログラムは以下の通りです、Windows Phone 開発セミナーはすぐ埋まってしまうので、お早めに申し込んでください。 スケジュール (都合により変更の可能性あり) 13:00-13:30 受付 13:30-15:00 『ゲーム開発はじめの一歩~基本から Marketplace 登録まで』 講師 : 日本マイクロソフト エバンジェリスト 田中 達彦 15:00-15:20 休憩 15:20-16:40 『センサー機能やバイブレーション機能、音楽でゲームをブラッシュアップ! 』 講師 : 日本マイクロソフト エバンジェリスト 太田 寛 16:40-17:00 休憩 17:00-17:30 『UX-TV Live 中継 : ソーシャル ネットワークとつなげる』 講師 : 日本マイクロソフト エバンジェリスト 安納 順一 17:30-18:00 『UX-TV Live 中継 : UX-TV…

0

スマートフォンアプリ選手権(主催@IT)

スマートフォンアプリ選手権という名前ですが、Windows Phoneアプリを競うものです。 賞金総額100万円で、App Hub申請費用の補助もあるので、Silverlight や XNA の腕に覚えのある方は挑戦してみてはいかがでしょうか? アプリのMarket Placeへの登録締め切りが 10/24 なので、急いでくださいね。 公式ハッシュタグは #wpapp

0

Mango Teapot ④ カメラ

Mango Teapot は Windows Phone 7.5 の AR アプリケーション サンプルです。ソースコードは mangoteapot.codeplex.com にあります。 Silverlight と XNA によるグラフィックス デバイスの共有 Teapot クラス 加速度センサーとモーション カメラ Windows Phone 7.5 (“Mango”) ではプログラムからカメラを使うための PhotoCamera クラスが提供されています。Mango Teapot で使いたいのはプレビュー用のビデオです。プレビュー ビデオを使う方法は、コンストラクトした PhotoCamera オブジェクトを VideoBrush のソースに指定するだけです。 cam = new Microsoft.Devices.PhotoCamera(); viewfinderBrush.SetSource(cam); VideoBrush から分かる通り、プレビュービデオの表示には Silverlight を使います。結局ティーポット以外の表示要素は全て Silverlight ですね。以下のような XAMLで VideoBrush を使って矩形を塗りつぶします。 <Rectangle Name=”videoRect” Width=”640″ Height=”480″     Canvas.ZIndex=”1″…

0

Mango Teapot ③ 加速度センサーとモーション

Mango Teapot は Windows Phone 7.5 の AR アプリケーション サンプルです。ソースコードは mangoteapot.codeplex.com にあります。 Silverlight と XNA によるグラフィックス デバイスの共有 Teapot クラス 加速度センサーとモーション カメラ Windows Phone 7.5 (“Mango”) では、Windows Phone に搭載されているセンサー、加速度計・コンパス(方位計)・ジャイロスコープからデータを取得する Accelerometer, Compass, Gyroscope クラスが用意されています。ジャイロスコープはオプションなので搭載されていないデバイスもあります(ジャイロスコープ搭載デバイスのほうが少ない?)。 個々のセンサーから生データを取得して自分で必要なデータに加工してもよいのですが、これらのセンサーをまとめて加工済みのデータを取得できる Motion クラスが用意されています。例えば、この Mango Teapot のようにデバイスの姿勢を取得して3Dオブジェクトの姿勢を制御したいとき、加速度計から重力方向をコンパスから方位をそれぞれ取得して行列を計算するより、Motion からヨー・ピッチ・ローの各角度、あるいは回転行列を取得したほうが簡単です。 MSDN のサンプルは Silverlight ベースなので定期的にコールバックでセンサーのデータを取得していますが、XNA なら OnUpdateで CurrentValue プロパティを使って現在の値を取得するほうが簡単です。CurrentValue については田中達彦さんに教えてもらいました、感謝。回転行列が一発で取得できる Motion.CurrentValue.Attitude.RotationMatrix って素敵ですよね。 private void OnUpdate(object sender, GameTimerEventArgs…

0

Mango Teapot ② Teapot クラス

Mango Teapot は Windows Phone 7.5 の AR アプリケーション サンプルです。ソースコードは MangoTeapot.codeplex.com にあります。 Silverlight と XNA によるグラフィックス デバイスの共有 Teapot クラス 加速度センサーと モーション カメラ 以前 Silverlight 5 (beta) で Teapot を描画したとき、頂点バッファとインデックスバッファを基に Blinn-Phong シェーダーで描画する Teapot クラスを作成しました。そのときの Teapot クラスに以下の変更を加えました。おもに XNA 4.0 への対応とシェーダーから固定機能(BasicEffect)への移行です。 IVertexType XNA 4.0 ではカスタム頂点フォーマットを定義する際に IVertexType を継承しなければならないので、それに対応しました。 private struct VertexPositionNormal : IVertexType {   private Vector3 _vertexPosition;  …

0

Mango Teapot ① Silverlight と XNA によるグラフィックス デバイスの共有

Windows Phone “Mango” では、Silverlight と XNA でグラフィックス デバイス(GPU サーフェイス)の共有が可能になっており、両方の API を使って同じ画面の描画ができるようになりました。また、カメラやコンパスや加速度計などさまざまなセンサーもアプリケーションから利用できるようになりました。 先日の「Windows Phone “Mango” 開発支援セミナー」用に、これらを活用したAR(Argument Reality)サンプル Mango Teapot を作成したので、その内容を数回に分けて解説します。 Mango Teapot は Windows Phone 7.5 の AR アプリケーション サンプルです。ソースコードは mangoteapot.codeplex.com で公開しています。ビルドするには Windows Phone SDK 7.1 Beta 2 が必要です。エミュレータでも動作しますが、実機での動作には Windows Phone “Mango” が必要ですので、もう少しお待ちください。 Silverlight と XNA によるグラフィックス デバイスの共有 Teapot クラス 加速度センサーと モーション カメラ      …

0

7/21 ライブ:Windows Phone “Mango” 開発支援セミナー~実践編

この Tech Fielders セミナーも数日で満席になってしまいましたが、7/21(木)13:30 からやはり Ustream でライブ配信するので、当日来られない方はライブ配信をご覧ください。 高橋さんが、担当セッション「Windows Phone アプリケーション開発実践~画面開発編~」の予告をしているので、私も対抗して(?)予告です。 WP アプリケーション開発実践 ~XNA 編~ Mango == XNA + Silverlight グラフィックス タッチとジェスチャ 加速度センサーとモーション カメラ これらを駆使した Mango Teapot をデモしますよ。

0

Silverlight 5 : 新しいスレッド アーキテクチャ

Jeff Prosise のブログによると、Silverlight 5 で GPU を使ったアクセラレーション(DrawingSurfaceを含む)がサポートされましたが、それに伴い新しい内部的なスレッド アーキテクチャ、合成スレッド(composition thread)が採用されたとのことです。これは Windows Phone の Silverlight ではすでに採用されているそうです。 簡単に言うと、UI スレッドの停止がアニメーションを停止させないよう、アニメーションを GPU にキャッシュしてしまうことです。これを有効にするには以下の2つが必要です そのページ(html)の enableGpuAcceleration を true にする アニメーションが動作する Canvas などの BitmapCache を true にする

0