特集
» 2011年08月11日 12時16分 UPDATE

特集・NUIアプリケーション開発を始めよう!:Kinect for Windows SDKによるアプリ開発のポイント (3/3)

[八木沢篤,@IT MONOist]
前のページへ 1|2|3       

Kinectはハードウェアとソフトウェアの融合だ!!

 「Kinectは、ハードウェアで全ての処理を行っているわけではない」(千葉氏)。実際、カラーと深度の情報の生成および転送、音声取得やノイズ除去、センサーの角度調整(モータ駆動)はハードウェアで処理しているが、その他の処理はホストPC側のソフトウェアで行う必要がある。

 それらの処理というのは、具体的に、カラー/深度イメージの処理、骨格追跡、音声認識などだ。つまり、「これだけのソフトウェア処理をホストPC側で行う必要があるので、それなりのCPUパワーが必要になる」(千葉氏)という。

構成図 画像11 構成図
アーキテクチャ 画像12 アーキテクチャ(出典:Tech Fielders セミナー 東京「Kinect for Windows SDK をつかおう!」のセッション資料)

 求められるホストPC環境について、千葉氏は「2.66GHz以上のデュアルコアCPU、2Gバイト以上のメモリ(できれば4Gバイト以上)」を搭載したWindows 7(32/64ビット版) PCを推奨する。「もちろん、2.66GHz以上ないと動かないというわけではない。ただ、仮に2つのスレッドが走っているとすると、そのうちの半分くらいのパフォーマンスが処理に取られてしまうという認識でいた方がよい。ゲームのようなより高度なソフトウェア処理をさせる場合には、それなりのパワーを持った環境を用意する必要がるだろう」(千葉氏)。

 また、開発に必要なソフトウェアとしては、Kinect for Windows SDK(32/64ビット版)の他、Visual Studio 2010 Express以上のエディションが必要で、対象の開発言語はC++、C#、Visual Basicとなる。サンプルプログラムのビルドには、Windows SDK for Windows 7+.NET Framework 3.5以上、DirectX SDK(June 2010)以上+DirectX 9.0c Runtime、Speech Platform Runtime 10.2(32ビット版)、Speech Platform SDK 10.2(32ビット版)、Kinect for Windows Runtime Language Pack 0.9(ランタイム言語の音響モデル)が必要となる。なお、「現状、ドライバは64ビットのものが用意されているが、ライブラリは32ビット版しか用意されていないので、開発するアプリケーションは32ビットのものしか作れない」(千葉氏)という点に注意が必要だ。

CPU 2.66GHz以上のデュアルコアCPU
メモリ 2Gバイト以上(4Gバイト以上を推奨)
表3 ホストPC環境(推奨ハードウェアスペック)

OS Windows 7(32/64ビット版)
必須ソフトウェア Kinect for Windows SDK(32/64ビット版)
アプリケーション開発環境 Visual Studio 2010 Express以上のエディション
サンプルプログラムのビルドに必要なもの ・Windows SDK for Windows 7+.NET Framework 3.5以上 
・DirectX SDK(June 2010)以上+DirectX 9.0c Runtime 
・Speech Platform Runtime 10.2(32ビット版) 
・Speech Platform SDK 10.2(32ビット版) 
・Kinect for Windows Runtime Language Pack 0.9 
(ランタイム言語の音響モデル)
表4 ホストPC環境(使用ソフトウェア環境)

実装(C++)の概要 画像13 実装(C++)の概要
実装(C#)の概要 画像14 実装(C#)の概要

Kinect対応アプリ開発のカギは“独創的なアイデア”

 「Kinect対応アプリケーション作成のカギは、“独創的なアイデア”だ。ゲームだけでなく、さまざまな分野での活用が見込めるだろう。いろいろなアイデアを、より簡単に素早く開発できるさまざまなAPIが、Kinect for Windows SDKには含まれている」(千葉氏)。

 講演では千葉氏が考えたアイデアアプリケーションのデモが披露された(以下、動画参照)。

Kinectセンサーの長所・短所、開発のポイントなど

 Kinectセンサーは、さまざまな環境で物体(人)を認識できるように設計されている。高い(低い)位置にあっても傾斜モータにより簡単に角度を調整することができる。また、人物の体の一部が完全に映っていなくても、欠落部分をある程度予測して捉えることも可能だ。ただし、反射性・屈折性の高い衣服やアクセサリー、着ぐるみのようなフワフワとした吸光性の高い素材を身に付けている場合は、深度情報の精度が低下することがあるため注意が必要だ。

 骨格追跡の場合、状況や環境に応じてノイズが発生する可能性がある。例えば、「関節がセンサーの視野外にある場合、自分自身の体の一部で肩などが隠れてしまっている場合、真横を向いている(反対側の関節が映っていない)場合、プレイエリア内にあるその他の物体や手に持っているもの、あるいは、スカートや髪の毛で全体的なシルエットや関節の一部を覆ってしまっているような場合などだ」(千葉氏)。他にも、隣接する関節の位置や深度の差がわずかな場合や、西日などの強い光がKinectセンサーやプレイエリア内に当たっている場合などにノイズが発生しやすい。

 さらに、以下のスライドにあるように、Kinect対応アプリケーション開発時のポイントとして、「取得できる座標情報はKinectセンサー基準(0、0、0)であるため、必要に応じて、例えばプレーヤー基準の座標系に変換する。過去の骨格追跡データを有効活用する。イメージフレームを活用する。できるだけ多くの人(年齢、体形・体格、性別、髪形、服装などあらゆるパターン)にテストしてもらう」(千葉氏)などのポイントが披露された。

ポイント(1)ポイント(2) 画像15 開発のポイント(1)/画像16 開発のポイント(2)

ポイント(3)ポイント(4) 画像17 開発のポイント(3)/画像18 開発のポイント(4)

開発のポイント(5) 画像19 開発のポイント(5)


 本稿の前置き部分でも述べたが、UIには、従来の製品概念を打ち破り、製品価値を高める力が秘められている。そういう意味で、新しいUIとして注目されているNUIを搭載したアプリケーションをいち早く開発・創出する環境として、Kinectセンサー+Kinect for Windows SDKを活用しない手はないだろう。あなた自身のアイデアで、これまでにない斬新なUIを搭載したアプリケーションを世に送り出すことができるのだから。

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.