WPF の マルチスレッド UI アーキテクチャ HostVisual

先日 Silverlight 5 の新しいスレッド アーキテクチャ Composition Thread を紹介しました。 WPF には全く同じスレッド アーキテクチャはありませんが、アニメーションなどがインタラクションを邪魔しないためのマルチスレッド UI アーキテクチャ HostVisual を以前から持っています。2007年に Dwayne Need のブログで紹介されています。 しかし、HostVisual の使い方は CompositionThread ほど容易ではありません。それは以下の2つの理由のためです。 HostVisual は、UIElement ではなく Visual から派生されているので、そのままでは既存のパネルに配置できない レイアウト イベントやロード イベントが発生しない Dwayne Need は、前者のために VisualWrapper クラス(FrameworkElement を継承)を作成し、後者のために VisualTargetPresentationSournce クラス(PresentationSource を継承)を作成しています。サンプルコードもDwayne Need のブログにあるので、参照してください。 当然ですが、バックグラウンド スレッドで動作する HostVisual ではユーザーとの対話操作はできません。ストーリーボードやメディアの再生のような用途に向いています。


Kinect 電源 / USB ケーブルの入手方法

Xbox 360 Kinect パックを持っている人が、その Kinect を PC に接続しようとするとき、Kinect 電源 / USB ケーブルが必要です。この Kinect 電源 / USB ケーブルは、Kinect センサー単品には同梱されていますが、Xbox 360 Kinect パックには同梱されていません。 この「Kinect 電源 / USB ケーブル」は、米国ではマイクロソフトストアやAmazonで購入できますが、日本では Xbox カスタマーサポート経由で購入します。Kinect アクセサリーと交換部品 をご覧ください。以下のように記述されています。 注 が分かりにくいですが、「日本に住んでいて、「Kinect 電源 / USB ケーブル」を注文したい人は、Xboxカスタマーサポートにお問い合わせください」と読んでください。


CodePlex:KinectEarthMove サンプル アプリ

先日の Channel 9 Kinect for Windows SDK Beta ラウンチ イベントで紹介された、地球を両手で操作する Kinect の WPF サンプル アプリケーション KinectEarthMove を CodePlex に公開しました。 やっていることは、 Kinect のスケルトンデータから両手の位置を取得し、その間に地球を配置 両手間の向き(片方の手からもう一方の手へのベクトル)から軸と角度を取得し、地球を回転 両手間の幅を肩幅と比較し、広げたら地球のスケールを拡大 Kinect の画像(ビデオ)データを背景にして、AR 的な効果 いろいろ試してみたのですが、ユーザーの操作(メンタルモデル)と地球の動きを一致させるのが難しくて、結局 AR 的に合成して初めてうまくいきました。ユーザーのふるまいを理解することの重要性を理解しました。Bill Buxton曰く「NUI は決してナチュラルではない。」 このサンプル アプリを動作させるには Kinect と Kinect for Windows SDK Beta が必要です。 【2011/07/08 追記】窓の杜でも紹介されました。


イベント:Kinect for Windows SDK をつかおう!

7月11日(月)に Tech Fielders セミナー 東京「Kinect for Windows SDK をつかおう!」をマイクロソフト品川本社で開催します。私もKinect for Windows SDK 概要を話します。 スケジュールは以下の通りです。 スケジュール (都合により変更の可能性あり) 13:00-13:30 受付 13:30-14:30 Kinect for Windows SDK 概要 講師:川西 裕幸 14:45-15:45 Kinect for Windows SDK 開発概要 講師:太田 寛 16:00-16:30 外部事例 1 16:30-17:00 外部事例 2 17:15-17:45 外部事例 3 17:45-18:00   【7/28 追記】スライドが公開されました http://www.microsoft.com/japan/powerpro/TF/seminar.mspx#s125 


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

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


C++ AMP (Accelerated Massive Parallelism)

先週開催された AMD の Fusion カンファレンスで、Daniel Moth が C++ AMP (Accelerated Massive Parallelism) のデモを行いました。C++ AMP とは、簡単に言うと、C++ で GPU の並列プログラミングを実装するものです。 ビデオ スライド Daniel Moth のブログから引用すると、C++ AMP とは… 開発者の生産性やソリューションの移植性を犠牲にすることなく、ヘテロ(つまり CPU と GPU)なハードウェア プログラミングの壁を低くし、その性能をメインストリームに提供する。 今日の大規模並列ハードウェア(つまりGPU と CPU)の使用を援助するだけではなく、コードへの投資を、将来に備えたデザインとして堅固なものにもする。 Visual Studio の一部であり、別のコンパイラーや別の構文を学ぶ必要はない。 現在の C++ であり、C やその他の派生言語ではない。 Visual Studio vNext と完全に統合・サポート。編集・ビルド・デバッグ・プロファイルなど Visual Studio  の他のすべての機能が C++ AMP とともに動作する。 既存の同時実行名前空間の一部としてSTL に似たライブラリを提供し、amp.h ヘッダーファイルを提供する。 並列化が顕著な形として、ヘテロなハードウェア上で巨大な多次元データで非常に容易に動作する。 唯一のコア…

2

フォーラム:Kinect for Windows SDK Beta

Kinect for Windows SDK Beta のフォーラム(英語)が開設されました。 General Discussion と NUI API and Programming と Audio API and Programming があり、それぞれ FAQ が最初にポストされています。


Kinect for Windows SDK (Beta) がリリースされました

Kinect for Windows SDK (Beta) がやっと公開されました。Channel 9 では 5 時間に及ぶライブ イベントが催されました。 SDKの内容は以下の通りです、ダウンロードしてお楽しみください。 ノイズ・エコー キャンセル用の4要素マイクロフォン配列を含むオーディオ処理 音源の位置を決定できる音源位置検出、Microsoft スピーチ認識 API と統合 (英語のみ) Kinect カメラから物体までの距離を提供する深度データ、生オーディオデータ、画像データ Kinect の視野内の一人あるいは二人の身体位置を決定する、高性能で強固なスケルトン トラッキング API の説明と SDK アーキテクチャの解説 API の機能の使い方を示すサンプルコード AudioCaptureRaw MFAudioFilter MicArrayEchoCancellation RecordAudio Speech ShapeGame SkeletalViewer Skeketal Viewer サンプル


イベント:Windows Phone Developer Day 6/8

Windows Phone Developer Day を明日 2011年6月8日(水)13:00から開催します。招待制ですが、Ustream で配信されますのでご覧いただくことができます。プログラムは以下の通りです。 13:30 – 14:00  キーノートセッション 14:10 – 15:20  テクニカルセッション Windows Phone "Mango" アプリケーション開発 15:40  – 16:50  テクニカルセッション 開発ツール最新情報:Windows Phone Developer Tools(WPDT)for "Mango" 17:00  – 17:50  コミュニティセッション