ここでは、WiiRemoteを使ったプログラミングを学ぶ前に、まずWiiRemoteの基礎知識をまとめておきます。
「Wii」(ウイイ)は2006年末に発売された、任天堂の家庭用ゲーム機です。英語の「We(わたしたち)」と特徴的なコントローラー「Wiiリモコン」を表す「ii」をかけて「Wii」と名付けられたそうです。
このWiiが発売される以前の開発コードは「Revolution(レヴォリューション:革命)」と呼ばれていました。2005年の米国「E3」(Electronic Entertainment Expo;エレクトロニック・エンターテインメント・エキスポ、日本での東京ゲームショーにあたるゲーム産業における世界的な見本市)でこのコードネームとロゴが発表されました。
「革命」という名にふさわしく、Revolutionはいままでの家庭用ゲーム機とは大きく異なるコンセプトで設計されました。詳しくは「社長が訊く Wiiプロジェクト(任天堂公式HP)」に、開発チームと社長の対談という形式で詳しく公開されていますが、簡単にストーリーをまとめると、任天堂・岩田社長は2002年頃「このままゲームが複雑になっていったら、ゲーム業界は縮小する」と考え、その結論として新しいハードウェア設計のほとんど全てにおいて見直しを行った点が大きな「革命」になりました。対象とするユーザ層を従来の青少年層から比べて幅広く設定し、ゲームの遊び方、それを取り囲む環境、性能の設定や消費電力など、事細かに今までの家庭用ゲーム機の進化の流れを見直す方向に設計されています。
Wii本体には省電力・無線常時接続ネットワーク機能や縦置きデザイン、性能などさまざまな特徴がありますが、特にその中でも最も大きな役割を持っている「“革命”の主人公」とも言うべき存在が「Wiiリモコン」(本書では以後"WiiRemote"と標記)でしょう。無線化された片手で持つ、モーションセンサを主軸においたコントローラー。このように「指先ではなく、全身の動作」に注目したヒューマンインターフェース(機械と人間をつなぐ装置)を使った遊び体験は、ダンスゲームを除けばヴァーチャルリアリティ技術やアミューズメントテーマパークなど、ごく一部の大型エンタテイメントシステムに利用されているだけで、まだまだ高価で家庭用ゲーム機になじむとは思われてはいませんでした。レーシングゲームや釣りゲームのような一部のゲームジャンルにおいて、別売のコントローラーを必要とする例もありましたが、やはり「プラットフォームが提供する標準搭載コントローラー」という存在はインパクトがありました。かつてこの種のゲーム用特殊デバイスは多くの研究者・開発者が取り組んできましたが、汎用的な利用方法とその価格に問題があり、なかなか実現しませんでした。しかし発売日に1000万台以上が見込める新ハードに採用されるとなると、一台のコントローラー価格は5000円以下で販売されます(=一般的にハードの製造コストは売価の半分程度、かつコントローラーはゲームソフトよりも同価格かそれ以下に設定されるべき)。「夢のインタラクションプラットフォームが一気に家庭にやってくる!」、「でもどうやって?」世界中のヒューマンインタフェースやエンタテイメント技術の研究者・開発者はこのニュースに色めき立ちました。
その後、Wiiが発売されてから2年以上が経過していますが、WiiRemoteの存在感は全く失われていません。当初はストラップやジャケットを着用せずにプレイで興奮する人が多く、酷い例ではテレビを破壊したり、テニスのやり過ぎでヒジを痛める「急性Wii痛」などネガティブな話題でも賑わせましたが、バーチャルコンソールなどのクラシックコントローラーを利用する場合を除いて、WiiRemoteに対する否定的なユーザーの意見はほとんどありません。またWiiRemote単体の販売価格も徐々に下がり、入手しやすくなっています。ゲームの歴史における革命児はいまや市民権を得ている状態といえるでしょう。
さて、この節ではWiiRemoteのハードウェア的な仕組みを解説します。ブラックボックス化しがちな製品技術を理解するコツとして、まず皆さんが「発売前を想定して、自分でデバイスを開発するつもり」になってみるとよいでしょう。
前述の通り、WiiRemoteは革命的な操作体験を提供しつつも「5000円を切る販売価格で」という要求仕様があったようです。しかしWiiRemoteはゲームのためのコントローラーですから、従来のボタンアクションやその操作の反応速度も維持しつつ、無線化を実現する必要があります。またバイブレーターもあったほうがいいですし、電池もできれば長持ちして欲しいでしょう。これらは非常に難しい要求です。
コードネーム「Revolution」時代、「コントローラーにはモーションセンサが載るらしい」という噂はありました。ゲームボーイ「コロコロカービィ」以来、任天堂のゲームタイトルに採用されていた、テキサスインスツルメンツ(TI)社製の加速度センサのようなものが利用されることは想像されていましたし、すでにNECトーキン社からも、加速度センサ、角速度センサ、地磁気センサを組み合わせたエンタテイメント用途向けセンサー部品が発売されていましたが、10万円近くする高価な物で「技術的には不可能ではないだろう」と予想はされていましたが「どのような仕様で」、「どうやったら想定される価格内に収まる製品になるのか?」は全くの謎でした。またこれらのセンサーだけでは位置決めに使うには精度が十分ではありませんし、どんなゲーム・インタラクションになるのかも想像がつきませんでした。任天堂内部の開発者もいろいろな苦労と検討を重ねたようです。最終的にWiiRemoteには、赤外線光源をTVの上に置く「センサーバー」が付け加えられ、赤外線CMOSセンサーという構成になりました。また当初の設計では公表されていなかったスピーカーなども加えられ、最終的に、WiiRemoteは以下のようなスペックになりました。
サイズ | 縦148mm、横 36.2mm、厚さ30.8mm(突起部分除く) |
通信機能 | Bluetoothによる無線接続、最大接続台数:4台 |
プレイ可能距離 | テレビから5m |
ポインター | 画面を指し示すポインティング機能 |
モーションセンサー | 傾きや動きの変化を検出(3軸) |
ボタン | デジタル11入力(1,2,A,B,-,+,Home,十字) |
振動機能 | バイブレーター1個 |
スピーカー | モノラルスピーカー1個 |
プレイヤーインジケータ | 青色LED 4個 |
拡張ユニット接続可能 | ヌンチャク、クラシックコントローラーなど |
以下は独自に調査した、より詳細なスペックと解説です(将来の仕様変更により変更される可能性があるかもしれません)。
どうでしょう?高速な無線通信が行えるBluetoothコントローラだけでも魅力的なのに、これだけの能力を持ったモジュールを含む製品が5000円以下で、しかも耐久性の高い量産品として販売されていること自体が驚きです。
こんなすばらしいデバイスを開発・販売している任天堂に敬意を払い、応援するためにも(=この本で解説しているPCでの利用を流行させるためにも)、WiiRemote単体での購入をぜひぜひお勧めいたします。もちろんWii本体も。余談ですが筆者のフランス時代の研究室では、Wii発売当初は本体が手に入らず、研究開発のためにWiiRemoteだけ1ダースほど購入した時期もありました。
現在、世界中の有志により、WiiRemoteをPCで利用できるようにする取り組みがされています。そして、それらのツールやオープンソースのAPIを利用して、世界中の学生を中心にさまざまなWiiRemoteを使った革新的なプロジェクトが開発されています。
ここではまずWiiRemoteを使ったプログラミングで、どんな楽しいことが実現できるか、最新の学生プロジェクトを中心に紹介していきたいと思います。
まずは北海道から、巨大なロボットをWiiRemoteで操作するプロジェクト「未来大IKABO Project」を紹介します。
制作者のひとり、はこだて未来大の味岡真広さんによると『設計図や仕様書のようなものは、学生がゴリゴリ作ったものなのでありません』と、きっぱり。もともとは「ロボットフェス・インはこだて」市民の会という組織が中心となって作った「観光用の巨大イカロボット」で、はこだて未来大学の3年生が中心となって、ソフトウェアの部分を開発したそうです。ロボットの詳細はIKABO公式サイト(http://ikarobo.com/)に記載されていますが、身長220cm、重量約200kg、エアシリンダーによるアクチュエーターで、足1本につき3つの関節、さらに1つの関節に3つのエアシリンダーを搭載しており、足1本につき512通りの動作の実現しています。足は2対ありますので、合わせて約25万通りの動作、さらに目や頭も動きますので、WiiRemoteを使うことで、イカロボット独特の多様なポーズの設定ができるようになっています。
このような複雑なロボットの操作であっても「どんな人でも簡単に操作できるように」と、過去にタッチパネルを用いた操作ツールも開発したようです。その後、WiiRemoteをつかった独特の操作として、両手にWiiRemoteを持ち、操作者が腕を動かす動きに対応して、IKABOの足が動作させる方法に辿り着きました。これにより操作者の動きに合わせた自由な動作、複雑な動きやユニークな動きを実現することができるようになったそうです。
開発プラットフォームはVisual C++ MFCアプリケーションで、APIは「WiiYourself! - native C++ Wiimote library v0.96b」を使用しています。WiiRemoteから3軸加速度+ボタンの情報を取得し、3軸加速度から3軸の傾き情報にプログラム上で変換し、イカロボットの腕の動作を決めています。その情報を有線シリアル通信(USB)もしくはネットワーク(DirectPlay)でイカロボット実機へ動作指示を通信し、イカロボット内にあるマイコンボートに送信しています。
実際の操作は、イカロボットが目の前にいるなら目で、遠いところにいるなら、操作ソフトに組み込んだリアルタイム動画配信によってイカロボットが動いているのを見て行うそうです。WiiRemoteで実物のロボットを動かすことで、ユーザの動きをイカロボットが真似てくれる、という点が楽しいそうです。
実際に地元のお祭りでも盛り上がっているようで、YouTube上で大観衆の中、クネクネ動くIKABOのアツい動画を見ることができます(http://jp.youtube.com/watch?v=4P_alu527SY)。
続いて、奈良先端科学技術大学院大学(NAIST)情報科学研究科の学生チーム『サムい人たち』(千原研・横矢研・加藤研)が、第16回国際学生対抗VRコンテスト(IVRC2008、http://ivrc.net/)で製作した「Glaçon」(グラソン)を紹介します。「Glaçon」はフランス語で「氷・ツララ」を意味しますが、WiiRemoteを使って『自由に天井から生える氷柱をのばすことができる』という作品です。
チーム代表の吉竹大輔さんによると「温暖化により失われゆく地球の神秘さや魅力を、メディアアート的なアプローチにより表現することを目指しました。ブースの天井をWiiRemoteを使ったライト型デバイスで照らすことで、天井からツララが伸び、水滴が床へ滴るなどのインタラクションが生まれます。複数人が協調してツララと関わり合う過程において、自然現象や環境問題を、そして自分たちが自然と関わり合う中で何ができるのかを考えるきっかけとなることを願い、この作品は制作しました」とのことです。
開発プラットフォームは、ViualStudio 2005(C++)、Bluesoleil 1.6.1で、オープンソースなどのAPIは使用せず、Windows Driver Kit(WDK)をつかって研究室のスタッフとともに開発したそうです。
インタラクション技術としては、ユーザーが天井を指すことにより、指した天井の位置を計算する点でなかなか難しいことを実現しています。仕組みとしては、床と垂直な平面(壁)のセンサ面に赤外線LEDを4点、正方形の角となるように配置し、その4点の座標をWiiRemoteで取得、それらの位置関係(正方形の変形の度合い)からセンサ面に対するWiiRemoteの入射角を画像処理ライブラリ「OpenCV」を使って求めているそうです。この角度と4点の座標から天井のどの位置をWiiリモコンが指しているかを推定し、天井のつららを制御するモータを回転させたり、床の光の波紋を発生させたりしています。
残念ながらコンテストでは東京予選で敗退してしまいましたが、作品開発の様子はYouTubeで見ることができます(http://jp.youtube.com/watch?v=waVNvmwKWaM)。
こちらもIVRC2008で発表された作品、ニオイの吹き矢で遊ぶゲーム「La flèche de l'odeur(ラ・フレッシュ・デ・ロドー)」。タイトルを日本語訳すると『ニオイの矢』。フランス語で『ニオイ・ダーツ』とも訳せます。金沢工業高等専門学校・小坂研究室による『飲食物を飲食しながら口臭を変化させ、口臭を用いてモンスターを倒す』ゲーム作品で、高専学生が匂いセンサーとWiiRemoteを組み合わせて開発したものです。
チームリーダーの金沢工業高等専門学校、国際コミュニケーション情報工学科岩本拓也さんにインタビューしたところ「人に不快感や嫌悪感をえる口臭に着目し、口臭を入力としたデバイス“吹き矢型デバイス”及びそれを応用したコンテンツ『La flèche de l'odeur』を提案しました。吹き矢型デバイスはプレイヤーが吹き込む息を計測することによって息の速さ、そして臭いセンサを用いて口臭の要素を計測し、WiiRemoteが吹き矢型デバイスの向きを検出しています。ゲームの中では、スクリーンに現れるモンスターを、吹き矢型デバイスを吹いて撃退していきます。モンスターには弱点となるニオイがあって、プレイヤーはプレイ中に実際にポテトチップやチーズなどの食べ物を飲食しながら口臭を変化させて遊びます。二人同時にプレイして、モンスターの弱点となる種類の口臭の吹き矢を上手に選べば、モンスターを上手に撃退することができます」といったコメントをいただきました。
ゲームとしての完成度は非常に高く、美麗なグラフィックスの最後に現れるラスボスは「(水を口でゆすいで)"清い息"で倒す」とインタラクションデザインも秀逸です。グラフィックスはDirectXで開発し、観客をリアルタイムで動画合成したり、扇風機を制御したりと、WiiRemoteの活用だけでなく演出面の技術的も高度なことを実現しています。
開発環境は、Windows Vistaに、Microsoft .Net Framework 2.0、Visual C#、Microsoft XNA、Microsoft DirectX August 2007という組み合わせで、WiiRemoteとの接続APIは「WiimoteLib」を使用しています。
コンテストでは見事最終選考に残り、総合3位にあたる「各務原市長賞」を受賞しました。なおこのWiiRemoteと臭いセンサーを使った吹き矢型のデバイスは特許申請中で、メディアアート作品の登竜門であるNHK-BS「デジタルスタジアム」で紹介されるなど高く評価されています。学生VRコンテストのスポンサーである岐阜県各務原市の名産「各務原キムチ」のニオイに注目して脚光を浴びせるなど、新たな展開も期待できそうです。作品の開発や体験の様子も動画で公開されています(http://jp.youtube.com/user/KosakaChannel)。なお、この作品の制作を監修した金沢工業高等専門学校の小坂崇之先生には、プログラミング入門編で協力を頂いております。
こちらも学生VRコンテストIVRC2008より、東京大学大学院の学生によるWiiFit「バランスWiiボード」を使った“文学作品”『人間椅子』を紹介します。この作品は情報理工学系研究科の家室証さんらによる、江戸川乱歩の小説『人間椅子』に着想を得たシステムです。『人間椅子』という短編小説のプロット『ある椅子職人が自分の作製した椅子の中に隠れ、上に座ってきた様々な人の感触を全身で楽しんだ』という物語、つまり、椅子の中に人間が隠れ、上に座ってきた人の感触を楽しむという体験を提供する恐ろしくも甘美な発想による作品です。システムは潜伏椅子と安座椅子の2つの椅子で構成されており、潜伏椅子に座った体験者は、まるで安座椅子に座っているもう1人の体験者が自分の太ももの上に座っているかのような感覚を得ることができるという設計です。
この怪しさ満点の作品のどこにバランスWiiボードが使われているかというと、安座椅子における座面への荷重の取得のために、2台のバランスWiiボードが用いられています。これによって得られる荷重情報を基にして、潜伏椅子に実装されたモータとベルトを用いた機構に、重さが提示されます。また同時に、太もも上におかれたパッド内のヒータの熱で太ももを温めることで、まるで本当に人が乗っているような温かさと重さが再現されます。
作品の最大の特徴は、小説『人間椅子』の体験を再現しようとしたことにあると言えるでしょう。このような「人に上に座られる」という体験から要素を抽出し、さらにバランスWiiボードという、安定して座っている人間の状態を取得できるデバイスを使い、2台の椅子によってシステムを構築することによって、この作品は他では味わえない「空間的・時間的に離れた人に座られる」という特異な体験を提供しています。
バランスWiiボードを用いた事により、荷重の取得を高速かつ安定に行うことが可能になっており、潜伏椅子に座った体験者は、安座椅子に座った体験者の動きをリアルタイムに感じることができる。バランスWiiボード自体は4本の脚に加わる荷重を独立に取得可能なため、体験者の両足の尻側、膝側という計4つの荷重を取得するには最低限1台のボードがあればよいのですが、様々な体験者の体型や座り方に対して安定に値を取得するため、このシステムでは2台のボードを用いて、1台につき片足の尻側と足側の2つの荷重値の取得を行っています。
このようにして得られた計4つの荷重値を基に、潜伏椅子に配置された4つのモータへの出力電流が決定され、モータを用いてベルトを巻き取り、太もも上に置かれたパッドを太ももに押しつけるというシンプルな構造によって、体験者の太ももに対して重さの提示が行われています。
バランスWiiボードを用いた荷重取得には、同じ東京大学の先輩、南澤さんが公開している「WiiBoard to PC ver.2.0」が使用されています。このサンプルプログラムによって、BluetoothでPCと接続されたバランスボードから、荷重値を取得することができます(http://minamizawa.jp/wii/)。
さて作品『人間椅子』はコンテストでは最終選考まで勝ち残ることができました。作品の様子はIVRCの公式サイトで見ることができます(http://ivrc.net/2008/)。
日本の学生の活動だけではありません。世界中の学生がWiiRemoteを使って新しいインタラクティブ技術を生み出しています。フランス西部のラヴァル(Laval)にあるENSAM(国立工芸大)Presence&Innovation研究所の学生さん、アレクシィ・ゼルーグ(Alexis Zerroug)は、『SoundQuest』というWiiRemoteの赤外線センサーを安価なモーションキャプチャとして使うことで『映像を全く使わないゲーム』を開発しました。『視覚を使わない』というコンセプトのテーマパークのアトラクション開発のためのプロトタイプで、フランスで毎年開催されているヨーロッパ最大のヴァーチャルリアリティのイベント「Laval Virtual ReVolution 2008」で発表されました。Wiiリモコンを天井に吊り、ユーザーは別のWiiRemoteが内蔵された無線ヘッドフォンを装着します。ヘッドフォンの上には赤外線マーカーが付いており、天井のWiiRemoteでユーザーの頭を検出できるモーションキャプチャとして利用しています。3次元音響空間の中にいるヴァーチャルキャラクターを探し出したり、手元のヌンチャクコントローラーを使ってインタラクションするというもの。
モーションキャプチャシステムは人間の動きを高速にとらえることができますが、高額な装置で、準備や装着に時間がかかるので、一般的には映像制作会社などプロ用途でしか使われていません。このプロジェクトが秀逸なのは、数百万円するモーションキャプチャを安価なWiiRemote複数台で作っている点です。天井から吊したWiiRemoteによって、頭につけた三角に配置した赤外線LEDのマーカーによって、ユーザーの頭の向きを検出しています。つまり、頭にヘッドホンを装着するだけで位置や方向が検出できるので、いろいろな応用ができそうです。
開発はVirtoolsという産業用ヴァーチャルリアリティプロトタイプ開発ツールで行っています。VirtoolsはちょうどFlashのようなコンテンツオーサリング環境なのですが、付属のSDKとC++をつかって独自のプラグインを開発し、機能を拡張できます。WiiRemoteと通信するプラグインを開発して、赤外線LED3点から向きを算出するプラグインを開発しています。
ちなみにこのシステムを開発したアレクシィ・ゼルーグ氏は筆者のフランス時代の教え子でもありますが、現在、東大に留学中です。開発の様子はYouTubeで公開されています(http://jp.youtube.com/watch?v=TMK7ULUG7S4)。
さて、ここまで世界中で取り組まれているWiiRemoteをつかった学生プロジェクトを紹介してきました。どのプロジェクトも、非常にエキサイティングです。また紹介しきれなかった面白い物もたくさんあります。初心者の読者にとっては、専門用語など難しい点もあったかもしれませんが、上で紹介した方々には後に続くパートで解説やサンプル作成に協力していただいておりますので、本書を読み進めていくことで、いずれ自分自身のアイディアを実現することもできるかもしれません。
さあ次は、皆さんの番です!