新型Kinect for Windows v2 Developer Previewプログラミング入門(5)
Windowsストアアプリ対応に、Unityサポートも ― 最新April SDK Update(Kinect for Windows v2 Developer Preview)の新機能
4月30日に提供が開始された「April SDK Update」の内容を解説。Windowsストアアプリ対応/Unityサポート/サービス・スピンダウン機能/Audio APIなどの新機能を紹介する。
前回は「Kinect for Windows SDK v2 Developer Preview」(以下、KinectSDK2プレビュー版)のMarch SDK Updateの変更点を報告した。今回は、シアトル現地時間で2014年4月30日に提供が開始された「April SDK Update」(前年ながら、時差の関係で日本時間は2014年5月1日午前3時過ぎとなり、厳密には4月ではなかった……)について報告したい。
注意事項
本稿で検証に使用したKinect for Windows v2 Developer Previewのソフトウェアやハードウェア、APIは暫定的なものであり、正式版では変更される可能性がある。
また、本稿は早期提供プログラムの参加規約で公表が許可されている事項について実際に確認した結果に基づき記載していることもあらかじめご了承いただきたい。
April SDK Updateでの変更点
April SDK Updateでの新機能は以下の通り。
- Windowsストアアプリ対応
- Kinect Serviceのローカルサービス化
- アプリ非稼働時にセンシングを停止(サービス・スピンダウン機能)
- Audio API(Windowsストアアプリとネイティブ版のみ、マネージ(Managed)版は次回アップデート以降提供予定)
- Windowsストアアプリ版サンプル(Body、Depth、Color、IR、Coordinate Mapping)
- SDKブラウザー(従来のKinect for Windows Developer Toolkit)
- Unityサポート(Unity Proが必要)
システム要件(OSやハードウェア、ソフトウェア)については特に変更はない*1。
- *1 ソフトウェア要件としては「Visual Studio 2012」とあるが、本稿の確認はVisual Studio 2013およびVisual Studio 2013 RC2で実施している。
Windowsストアアプリ対応
従来はVB.NET(Visual Basic .NET)やC#で利用できる「.NET Frameworkクラスライブラリ」とC++で利用できる「DLL」の2種類のみの提供だったが、April SDK Updateからは従来の2形式加えてWindows Runtimeから使える「.winmdファイル形式のクラスライブラリ」も提供されるようになった。
Windowsストアアプリ作成時の注意点
KinectSDK2プレビュー版が対応しているWindows Runtimeはx86とx64のみでありARM版は対応していない。Visual Studioで実行時やビルド時にはプラットフォームを「Any CPU」ではなく、明示的に「x86」または「x64」を指定しなければならない。
プラットフォーム指定は、IDEのメニューバーから[ビルド]-[構成マネージャー]メニューで[構成マネージャー]ダイアログ(図2.1)を呼び出して設定を行う。
Visual Studioでのデバッグのしやすさを考えると、OSが64bitであっても開発時は「x86」(=32bit)を指定しておくのがよいだろう。
試しに「ARM」を指定してビルドしてみると、次の画面のように「SDKでサポートされていない」旨のエラーとなりビルドが成功しない。
なお、このようにプラットフォーム指定が必要なものをWindowsストアに登録する場合は、アプリパッケージの作成時に明示的にアーキテクチャに対応するソリューション構成を指定する(図2.3)。
Windowsストアアプリのテスト時の注意点
Windowsストアアプリのテストでは、実機テスト前にシミュレーター(図2.4)を使ってテストする場合がある。シミュレーターを使うことで、疑似的なGPS情報やデバイス解像度でテストできる。残念ながらKinectSDK2プレビュー版では、シミュレーターでKinect2プレビュー版からのセンシングデータを受け取ることができない。
Visual Studioからのデバッグ実行時などでは、必ずローカルコンピューターを指定するか(図2.5)、Kinect2プレビュー版を接続して環境を整えたリモートコンピューターを指定して実行してほしい。
Kinect Serviceのローカルサービス化
March SDK Updateまでは、Kinect Serviceはコマンドプロンプトから実行する通常のプログラムであった。April SDK Updateでは、その名前の通り、インストールすると「ローカルサービス」として登録されて自動起動できるようになった(図3.2)。これでKinect Serviceの実行を忘れてデモが動かないということも少なくなるだろう。なお、名称が「Kinect Service」から、なぜか「Kinect Monitor」に変更になっている(図3.1)。
Kinect Monitorという名称変更になってWindowsローカルサービス化したことはうれしいが、従来のようにKinectと接続できているかが分かる仕組みはなくなっているので、アプリが動いているのにセンシングされないようなときの問題点の切り分けが難しくなっている点に注意が必要だ。
「モニター」という名前なのだから、タスクバーの通知エリアに接続状態を表すアイコンなどが表示されるようにならないだろうか。
サービス・スピンダウン機能
Kinect MonitorがWindowsサービス化されて常時起動するようになったことに伴い、アプリからの接続の有無に基づいて、Kinect2プレビュー版でのセンシングのオン/オフを自動制御するようになった。
図4.1 スピンダウン機能
センシングの有無については、従来のようにコマンドプロンプト上に接続状態が出ないので、Kinect2プレビュー版の赤外線ランプのオン/オフで確認するしかない。これでは使いづらいので製品化までには何か対策が講じられるように開発元にフィードバックした。
Audio API
C++版のネイティブアプリとWindowsストアアプリ用のAudio APIが追加になった。残念なことに、Windowsストアアプリ版Audio APIサンプルが用意されていない(※Audio APIの内容については、後日、紹介したいと考えているので、しばしお待ちいただきたい)。
添付サンプル
April SDK Updateでは新機能に合わせて、以下のように添付サンプルが増えている。
サンプル | Native | Managed | WinRT | 備考 |
---|---|---|---|---|
Audio | ◎ April SDK Update | - | ◎ April SDK Update | マイクアレイによる音声方向表示サンプル |
Body | ◯ | ◯ | ◎ April SDK Update | 骨格データ表示サンプル |
Color | ◯ | ◯ | ◎ April SDK Update | カラーデータ表示サンプル |
CoordinateMapping | ◯ | ◯ | ◎ April SDK Update | 背景差し替えサンプル |
Depth | ◯ | ◯ | ◎ April SDK Update | 深度データ表示サンプル |
Infrared | ◯ | ◯ | ◎ April SDK Update | 赤外線データ表示サンプル |
SDKブラウザー(従来のKinect for Windows Developer Toolkit)
SDKブラウザー(図7.1)は、Kinect Studioの起動や各種サンプルのインストールのための実行メニューだ。Kinect v1では「Kinect for Windows Developer Toolkit」と呼ばれていたもので、April SDK Updateでも起動後のタイトルバーにはまだこの名前が残っている。
Unityサポート(Unity Proが必要)
UnityとKinect2SDKプレビュー版を接続するために、Unity用カスタムパッケージが用意されているので、Unityでプロジェクト作成後にパッケージを取り込めばよい。これにより、Unity側でKinect2プレビュー用のコードが記述可能になる(図8.1~8.2)。
これでKinectから各種データを入力として使う2D/3Dアプリの作成が容易になる。
まとめ ― Xbox Oneアプリへの布石に関する考察
Visual Studio 2013 Update 2 RCでWindowsユニバーサルアプリが作成可能になり、Windowsストアアプリの開発手法でXbox Oneアプリも将来的にはWindows上で作成できるようになるという。このことと、今回のApril SDK Updateで、Kinect ServiceがいよいよWindowsローカルサービス化され、その副産物としてWindowsストアアプリからもKinect2プレビュー版が使えるようになり、Unity対応も完了したことを踏まえると、Unity+Kinect2を使ったXbox Oneゲームや、Windowsユニバーサルアプリ+Kinect2によるWindowsストアとXbox Oneのアプリの同時提供なども現実味を帯びてきた。
Kinect 2 for Windowsの発売が夏ごろを予定しており、Xbox Oneの日本での発売が9月と発表になったことを考え合わせると、数カ月のKinect2SDKプレビュー版の動向から目が離せない。なお、次のUpdateは、5月中に予定されており、May SDK Updateについてもタイムラグなく報告できるようにしていくのでお楽しみに。
※以下では、本稿の前後を合わせて5回分(第3回~第7回)のみ表示しています。
連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。
3. 新型Kinectの骨格データに関する新機能とは?
KinectSDK2プレビュー版の距離データと骨格データに関する主要な変更点を解説。手の開閉が判定できるようになり、グー、チョキ、パーも判別可能に。
4. 世界最速・最新情報、March SDK Update(Kinect for Windows v2 Developer Preview)の内容に迫る!
本日、SDKの3月更新版が提供された。その更新点として「Kinectファームウェアの更新」「Kinect Serviceの変更は特になし」「Kinect Studioの提供」について紹介。
5. 【現在、表示中】≫ Windowsストアアプリ対応に、Unityサポートも ― 最新April SDK Update(Kinect for Windows v2 Developer Preview)の新機能
4月30日に提供が開始された「April SDK Update」の内容を解説。Windowsストアアプリ対応/Unityサポート/サービス・スピンダウン機能/Audio APIなどの新機能を紹介する。
6. Kinect.Xaml.ControlsでストアアプリからKinectを操作する
6月24日に提供開始されたJune SDK Updateの新機能(April SDK Updateからの変更点)を紹介。Windowsストアアプリ用インタラクションコントロールなどが追加された。
7. 日本最速レビュー。開発者目線で調査する「Kinect for Windows v2」パブリックプレビュー版
ついに日本でも購入可能になったKinect for Windows v2センサー(オープンベータ版)と、そのSDK(公開プレビュー版)をレビュー。ハードウェアスペックや、センサーの特徴について紹介する。