特集:Kinect for Windowsの可能性【商用製品&正式版SDKリリース記念】Kinectが切り開く“夢の近未来” 中村 薫2012/02/02 |
2012年2月1日(米国時間)に、待望のKinect for Windows(=商用利用可能なPC向けのKinectセンサー。以下、「Kinect」と略す)およびKinect for Windows SDK正式版がリリースされた。Kinect for Windowsはこちら、Kinect for Windows SDK(英語版)はこちらから入手できる。なお、Kinect for Windowsは数量限定とのことで、購入を保証するものではないことを承知願いたい。
しかし、KinectがWindowsで正式に利用できるようになったとしても、実際にどのように使われていくのかがイメージできない方も少なくないだろう。そこで本稿では、「Kinect for Windowsの可能性」と題して、WindowsとKinectの組み合わせで、「どのようなことが実現できるのか?」、また「今後どのようなアプリケーションが登場してくるのか?」という予測を、実例を交えて紹介する。
■Kinectアプリケーションの種類
筆者が見てきたKinectを使ったアプリケーションの特徴を考えてみると、いくつかの種類に分かれてくる。
(1)Kinectで取得したRGBや距離、ユーザー、スケルトンといった画像情報を利用して、コンピュータ上に何かを表現するアプリケーション
(2)Kinectで取得した画像情報をコンピュータで処理し、プロジェクタなどを通じて、現実世界に何かを表現するアプリケーション
(3)Kinectに搭載されているマイクやマイク・アレイを利用して、音声情報や音源方向推定を処理するアプリケーション
Kinectアプリケーションは、これらを1つ、または組み合わせて実装することで、さまざまな用途に利用できる可能性がある。
また、Kinectというと、画像処理やスケルトン・トラッキングにフォーカスが当たりがちだが、音声情報や音源方向推定といった、今までのデバイスにはあまり搭載されていない機能を利用することで、新しいユーザー・インターフェイス(本稿では、単にGUIの画面表示だけを指すのではなく、ユーザーがコンピュータとやりとりをする方法全般を指す。以下、UI)の形を提供できる可能性がある。
■現在のKinectアプリケーション
●ユーザー・インターフェイス
○コンピュータなどのジェスチャ操作
最初に考えるのは、Xbox 360で利用されているようなUIだろう。Kinectを使ったUIにもさまざまあり、その中のいくつかを以下で紹介する。
1つ目は「ジェスチャ操作」だ。Kinectのスケルトン・トラッキングや、ライブラリのジェスチャ認識機能を利用して、手の位置や動きを検出し、それをマウス入力としてコンピュータへ伝えることで、ユーザー入力やコンピュータの操作を実現する。次の写真は、手を動かして、次期Windows 8(コード名)を操作している例だ。
ジェスチャ操作の例 |
動画がこちらから見られる。 |
このUIのメリットは、何といってもコンピュータから離れて、また触らずに操作できることだろう。例えば医療現場ではPCに直接触れられないことが多いので、まさにこのメリットを生かしたUIが役立つ。
もちろんデメリットもある。例えば腕を上げている状態で操作するため、長時間のコンピュータ操作には向かないことや、細かい操作や素早い操作には向いていないことだ。
○両手を使ったジェスチャ操作
また、両手を使ったUIも考えられる。次の画面では、地図アプリケーションを両手で操作して、拡大・縮小や回転などを行っている例だ。
両手のジェスチャ操作の例 |
動画がこちらから見られる。 |
iPhoneなどでマルチタッチ・インターフェイスがより一般的になってきているが、そのマルチタッチ操作を指から両手に変えて実現するというアイデアだ。さらにこの延長として、3Dディスプレイのような3D出力できるデバイスがあれば、Kinectの3D入力をさらに生かせるだろう。
○コンピュータなどの音声操作
2つ目は、「声を用いた操作」だ。このUIもXbox 360に搭載されており、またKinect SDKのサンプルにも加えられているため、実装は比較的、容易だ。
このUIのメリットは、体を動かさずに声だけでコンピュータ操作できることや、声の届く範囲であればジェスチャ操作以上にコンピュータとの距離を置けることだ。デメリットは、声を全て拾うために、コマンド化する(=例えば「Xbox」という音声コマンドと、その次に「Open」という音声コマンドを連続で受け取る)必要があり、実装時の対応が必要なことが挙げられる。また、デメリットではないが、部屋で1人、PCに向かって話しかける姿が少し寂しげである……。
○コンピュータ操作ではないユーザー・インターフェイス
3つ目は、「コンピュータを意識しないUI」を紹介しよう。今までのキーボードやマウスはコンピュータを操作するための入力装置だった。しかし、Kinectとプロジェクタなどをうまく使って、PC利用を意識しないようにすれば、「OSを操作する」という感覚ではなく、「目的を実現するための直感的な手や体の動き」(例えば、体や手で絵を描く)という感覚になる。例えば次の写真は、プロジェクタを壁に照射し、照射されているところを手でなぞると絵が描ける。というものである。
コンピュータ操作ではないUIの例 |
動画がこちらから見られる。 |
これは、マイクロソフト社のタッチ・スクリーン技術からヒントを得たものだ。マイクロソフト社のタッチ・スクリーンは、肩にKinectライクのデバイスとプロジェクタを装着し、手に照射した画像をタッチすることでコンピュータへの入力を行う。わたしたちの例では、Kinectの距離センサーを使って壁との距離を測り、間にあるものをペンに見立てて絵を描いている。
○ロボットのリモート操作
ジェスチャ操作のUIを応用すると、制御する先をコンピュータからロボットに変えることで、ロボットをリモート操作することも可能だ。次の写真は、ラジコン・カーをジェスチャでリモート操作する例である。
ロボットをリモート操作するUIの例 |
動画がこちらから見られる。 |
コンピュータからロボットが制御可能なものであれば、ポーズやジェスチャによってロボットを制御することも可能である。また、ロボット自体にKinectなどのデバイスを装備し、ロボット上のコンピュータ(Android OSなど)で制御すれば、まさに「ロボットの目」としての活用も可能である。
以上、UIという観点でKinectの可能性をまとめた。以下では、これまでの活用例という観点で、技術ジャンルや利用場面ごとにKinectの可能性をまとめていこう。
●拡張現実(AR)
続いて紹介するアプリケーションは、拡張現実(AR:augmented reality)の一種である「仮想試着」である。これはKinectがWindowsなどで利用できるようになってから、多く公開されているタイプのアプリケーションである。次の写真はその例で、右側の男性は白と黒のTシャツを着ているが、左側のモニタに表示されている同一男性は黄色の服を着ている。
仮想試着(拡張現実の一種)の例 |
Kinectで骨格を認識できるので、その座標を使って、服を体の上に描画している。体を傾けても骨格の座標が追従するため、服も同じように傾けて表示される。上記のジェスチャ操作と組み合わせて、右に手を動かすなどのジェスチャで服を簡単に着替えられるようにすることで、短時間で多くの服を試着できるようになるので、(お店やネット・ショップでお客さんが使えるようにすれば)服の販売機会を増やすきっかけになる可能性もある。
●表現
○プロジェクション・マッピング
Kinectはコンピュータ上での表現以外にも、現実世界の表現をより魅せるための道具としても利用されている。現実空間への表現としてまず考えられるのは、プロジェクション・マッピングだろう。次の写真は、Kinectで距離情報から投影対象(この例ではゴミ箱)を認識して、その対象に足して模様を投影している例である。
プロジェクション・マッピングの例 |
動画がこちらから見られる。 |
このようにKinectを利用して、空間や距離を認識し、プロジェクタを通して現実空間に、何らかのイメージを表現できる。
○舞台効果
次の写真の例では、Kinect(この事例は実際には、Kinectと同等の機能を持つデバイスであるXtion)が舞台演出の一環として使用されており、ユーザー検出機能を利用して、役者にピンポイントで照明を当てている。
舞台効果の例 |
この舞台に関する情報はこちら。 |
また、この舞台演出の事例は、Xtionが「商用」利用された例でもある。
●福祉
○自然な運動
Kinectは、今までコンピュータを利用しなかった層にも広がろうとしている。次の写真は老人ホームの写真で、お年寄り(80代)がKinectを使用したゲームで遊んでいるところだ。
福祉でのKinectの活用例(お年寄りが自然な運動をできるゲーム) |
動画がこちらから見られる。 |
「今までの老人ホームでの運動に比べて、より能動的に楽しく運動できる」との感想が得られた。
●子供
子供とコンピュータの関わりにも変化が起きそうだ。次の写真はKinetctを用いたゲームを子供が遊んでいるところ。
子供のKinect活用例 |
現在のコンピュータは(ゲームも含めて)、早くても3〜4歳くらいから理解できるようになると思っているが、Kinectであれば2歳くらいの身長(80cmくらい)であればスケルトン・トラッキングが可能である。彼らが自然とコンピュータとかかわる下地はできているといえよう。
●教育
○大学などでの教育
Kinectは教育の現場にも広がっている。Kinectを使うプログラミングの講義を行っているところもあり、「従来のプログラミング講義と比べて、結果が見やすいので分かりやすく、楽しい」との感想を持っている方が多かった。次の写真は、Kinectプログラミングの講義をしている風景だ。
大学でのKinectプログラミングの教育例 |
これはKinectに限らず、デバイス系全般にいえることであるが、自分がやったことが目に見える形でフィードバックされることは、学ぶうえでのモチベーションに寄与するだろう。
以上が、現時点ですでに登場しているKinectの活用例である。次に、これからどういうKinectの活用例が登場するかについて言及しよう。
■未来のKinectアプリケーション
●さまざまなデバイスへの搭載
○組み込み機器への搭載
Kinect SDKはWindows Embedded(OS)への対応、またOpenNIはAndroid(OS)への対応がなされている。これらのOSを利用した、組み込み分野へのKinectの搭載に、今後は注目だ。
日常生活の中では、デジタル・サイネージ(=電子看板)がまず挙げられるだろう。いまやデジタル・サイネージは至る所で活用されている。駅や空港の構内から、電車の車内、自動販売機にまで搭載されている。従来であれば、目的を持って看板を見る人を主なターゲットとしているが、Kinectを搭載することによって、デジタル・サイネージが(例えば人の自然な挙動に合わせて最適な商品を表示するなど)能動的にアプローチする可能性も生まれる。
○モバイル・デバイスへの搭載
わたしは、Kinectのようなセンサーがモバイル・デバイスに搭載され、一般の人が利用し始めたときに、またコンピュータの世界が変化すると考えている。
例えば、先に紹介した「コンピュータ操作ではないUIの例」のようなデバイス(=距離センサー+プロジェクタ+コンピュータ)が持ち運べるようになれば、あらゆる場面で、体の一部としてのコンピュータを使ったり、またはコンピュータの一部としての体を使ったりする可能性が生まれる。そうなれば、コンピュータが、より身近で、より自然なものになると考えている。
●リアルとバーチャルの融合 〜仮想世界を現実世界へ引き出す〜
プロジェクタなどでディスプレイが不要になるとともに、映像を3Dで出力できる、3Dテレビなどの装置が脚光を浴びるとわたしは考えている。Kinectを入力装置として使うと、入力・操作方法が3Dとなるので、それに対する出力も3Dになることが、より自然なコンピューティングになるだろう。例えば次の写真は、3Dメガネで手元に物体(この例では人間の脳)を3D表示して、それをKinectにより手で操作しているところだ。
3D表示と、Kinectによる操作の例 |
動画がこちらから見られる。 |
「ディスプレイが不要になること」と「3Dディスプレイが必要になること」は、一見、矛盾しているように思えるが、「仮想世界を現実へ引き出すこと」としては同じ意味ではないだろうか。今まで仮想世界と現実世界の間に引かれていた境界線が、Kinectによって1つになる。そんな未来もあるのではないだろうか。
●コンピュータを「学んで使う」から「感じて使う」 〜より自然なインタラクション〜
Kinectの使い道としての1つの目標は、「より簡単にコンピュータを使うこと」だと感じている。今のコンピュータはある程度の学習が必要であるが、それすら必要なしに利用できることで、より多くの人がコンピュータの恩恵を受けられるようになるだろう。
その昔、初めてマウスを使った人が、(見たままの直感に従って)マウスをディスプレイ上に置いて笑われた時代があったが、これからはむしろそういった直感的なUI/操作方法が中心になっていくのだろう。
次の写真は、子供がタブレット上のアルファベットにタッチしているところだ。
子供が見たままの直感に従ってマルチタッチのタブレット端末を操作している例 |
■まとめ
このように、Kinectはさまざまな分野で利用されてきている。あまり難しく考えずに、「既存のコンテンツにKinectを入れると、何がうれしいか?」を考えてみると、意外と使いどころは多く見つかると思う。筆者もさまざまな事例から、実装しきれないほどたくさんのアイデアをもらっている。
また、ここ最近のソフトウェア・コンテストの結果を見ていると、必ずといっていいほどKinectを使ったアプリケーションが食い込んでいる。それだけ今までとは違ったアプリケーションを実現できる、魅力的なデバイスであるといえよう。
皆さんも、ぜひKinectを使ったアプリケーションで、次世代のコンピュータ体験をしていただきたい。
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|