近未来マルチメディア
2013
最終報告書
HMD + Kinect でゲーム作成
工学システム学類
3 年
201111107 木村 優太
1. 目的
普段、私たちがプレイしているゲームはテレビ画面の前で、ゲームコントローラを操作す ることで遊ぶものである。この操作方法では手先のみを動かすことでプレイできる反面、 「手元での操作」と「アバターの動き」が一致しない。「手を振る」動作をさせるために「あ のボタンとこのボタンを押す」などという操作をしていては、まず操作自体を覚える必要が ある上に、何より「現実で手を振る」感覚をプレイヤーが全く得られない。つまり「手を振 った」ことを、画面を通して他人には感じさせることはできても自分自身は感じ取れないの である。 その上現在のゲームではゲーム画面が前方のテレビしかないため、「右が見たい」とプレ イヤーが思ってもプレイヤーは「実際に右を向く」のではなく「右を向く操作を入力」しな ければならない。 これでは、いかにゲームがリアル指向になっても「ゲームをしている」という感覚が抜け ず、完全に没入することは不可能である。そこで私は ・体の動きを入力として扱うことで直感的な操作感を得る ・画像を頭の向きと同期させることで深い没入感を得る という 2 つの目標を立て、これらをゲームに組み込むことでプレイヤーから「ゲームをし ている感覚」を取り除き、「体験」することのできるゲームを制作しようと考えた。 なお、今回の製作ではそれぞれの目標に対して ・XBox360 用モーションキャプチャデバイス Kinect ・3D ヘッドマウントディスプレイ HMZ-T1 を利用した。2. 関連技術紹介
ゲームを制作するにあたって関連した技術を紹介する。 ・Oculus rift Oculus VR 社が現在開発中の VR 用ヘッドマウントディスプレイであり、110 度の視野 角および高速ヘッドトラッキング機能が実装されている。 ・Razer Hydra Razer 社が販売している PC 用磁気式モーショントラッキングデバイスであり、手先の位置及び姿勢を非常に高精度に取得することができる。 これらを踏まえたうえで、今回は自分の技術チャレンジとしての面と、「専用のデバイス」 を用意しなくても構築できるシステムを目指して製作を行った。
3. 対象
今回は一般家庭、なおかつ全年齢対象にしたゲームを制作した。これはゲームシステムの 構成要素に市販品を利用することで「専用のデバイス」を用意しなくてもよいようにしたと いう理由と、また体の動きを利用した理解しやすい入力インタフェースにより「ゲームをプ レイすることのできる」人ならばプレイができるようにしたためである。4. 構成
今回制作したゲームの構成を説明する。まずモーションキャプチャデバイスであるkinect はPC と接続し、Microsoft 社製の Kinect SDK for Windows を用いて骨格情報を取得、 それを基にゲームエンジンUnity 上で 3DCG を用いたアバターの動きをプレイヤーと同期 させる。これによりヘッドマウントディスプレイを通して自分の体を見ると、その部分がア バターの体に見えるようになる。 また、プレイヤーの頭の上に Android スマートフォンを設置し、これを通じて頭の向き を調べ、また手元のWii リモコンと Bluetooth を用いて通信を行う。これらの情報は PC へ 有線のポートフォワーディングによって疑似TCP 通信で伝えられ、3DCG のアバターの頭 の向き、および一部のアクションを操作することを可能にする。ヘッドトラッキングを、 Android スマートフォンを利用して行うことで「ヘッドトラッキング機能」がないヘッドマ ウントディスプレイでも利用することが可能になり、また、ヘッドマウントディスプレイご とに異なるトラッキングデータの形式の差異による問題も解決することができた。 最後にこうして得られた3DCG のアバターから見える景色をヘッドマウントディスプレ イHMZ-T1 へと送り、プレイヤーに呈示するこうすることでプレイヤーは直感的に 3DCG のアバターを操作することができるようになる。なお本システムの構成図を図1 に示す。図1. システム概要図
5. 作成したゲーム
ここで今回作成したゲームについて説明する。このゲームでは図2 のアバターを操作し、 マップ上に存在する図3 のマーカーに触れていくことが目的である。マーカーは全部で 10 個存在し、これらすべてに制限時間内に触れるとゲームクリアとなる。なお、制限時間は3D 酔いの発生を防ぐ意味も含まれており、15 分となっている。 アバターは両腕と背中にジェット噴射口がついており、これにより飛行をすることがで きる。また足踏みをすることで「歩く」ことも可能である。マーカーについては上方に黄色 い線が伸びているため、遠くからでもどこにマーカーがあるのかを視認することができる ようになっている。 図2. アバター 図 3. マーカー次に操作方法について説明する。基本的にアバターを動かすために必要な動作は自身が 行う動作に設定してあるため、直感的な操作が行えるように調整してある。腕を動かす、足 を動かす等の動作はプレイヤーが体を実際に動かすことで行う。「しゃがむ」等の動作も実 際に行うことでアバターが同期して行うことができる。 「右を向く」などの視点の変更はプレイヤーが実際に右を向くことで行う。またアバター の進行方向を変更するためには体をひねる動作や、ジェットを片側だけ噴射することで行 うようになっている。進行方向へ前進するためには「足踏み」する必要がある。 これら基本操作とは別に、ゲームとして成立させるため、プレイヤーには Wii リモコン を両手に一つずつ持ってもらう。後ろ側にある B ボタンを押すと、押している間だけ、押 している側の腕先から「肘から手首の方向」にジェットが噴射され、推力が発生する。また 左右両方のジェットを同時に噴射し、なおかつプレイヤーが前傾姿勢になったときのみ背 中からもジェットが噴射され、前方上方に推力が発生し、アバターが飛翔する。 前面にあるA ボタンはゲーム状態を表示するボタンであり、左手のリモコンの A ボタン は押している間ゲームのステータスが表示される。今回は長時間のプレイによる3D 酔いを 防ぐために制限時間が設定してあるため、その残り時間が表示される。右手のリモコンのA ボタンは押している間マップの全体図と現在位置、現在の方向が表示される。 前面のホームボタンを左右のリモコンで同時に押すと、姿勢リセットが行われ「現在の正 面」が「アバターの正面」にセットされる。この操作は基本的に起動直後1 度しか行わない ことを想定している。 図4. 操作方法
6. まとめ
今回の製作の結果、当初の目的である「直感的に理解できる使いやすいインタフェース」 についてはおおむねクリアすることができたが、「体感」することのできるゲームまでは完 成させることができなかった。 この原因としては、技術一つ一つを学ぶために時間を使ってしまったため、ゲームを制作 する時間が短くなってしまい、その結果として完成度をあまり高くすることができなかっ た点や、センサ群の精度、および通信や処理による遅延等が考えられる。 また、「自分の思う直感的な操作」は人それぞれに違うために、結局人間が行うことので きる行為以外の動作をアバターに行わせるためにはプレイヤーにある程度の慣れを要求し てしまうことも複数人に今回作成したゲームをプレイしてもらうことで明らかになった。 しかしながら、Android センサのレスポンスはそれなりに良かったため、ヘッドトラッキ ングを若干の遅延程度で行うことができ、今後手軽なセンサとしてAndroid を利用するこ とができることが分かった。7. 今後の課題
今後の課題としては、現在はHMZ-T1 の仕様である「1920*1080、視野角 45 度、左右分 割画面方式」の画像しか出力できないが、これを他の画面比で出力できるようにすることで より汎用性を高めていくことができると考えている。 操作感については、現在のUI では若干の「慣れ」が必要であり、より調整を加えていく ことで「最初から簡単に操作できる」UI にしていきたいと考えている。 センサについては、今回モーショントラッキングに使用したKinect は指先をトラッキン グすることができず、そのためにアバターは手先の挙動を全く同期させることができなか ったが、これについては Wii リモコンに搭載された加速度センサや赤外線センサによる姿 勢取得や、今年中に発売されるであろうKinect 2 を利用することで改善していけたらと考 えている。 今回の製作では Android スマートフォンを用いてヘッドトラッキングを行ったが、 Oculus rift 等の最初からヘッドトラッキング機能が実装されているヘッドマウントディス プレイを利用する際にはその機能を利用できるように設定を行えるようにすればより完成 度の高いものを作ることができるのではないかと考えている。8. 感想
今回の製作を通してAndroid と PC の通信等の技術を学ぶことができ、また今後研究活 動を行っていくうえで非常に重要であるスケジュール管理を学ぶことができました。今後 はこの授業で学んだ内容を生かして研究活動を行っていきたいと考えています。的確なアドバイス等を頂いた先生方、発表の機会を整えてくださったTA の方、ありがとうございま した。また今回の製作で必要不可欠であったヘッドマウントディスプレイHMZ-T1 を貸し ていただいた亀田先生、ありがとうございました。
9. 使用したツール等
・Unity 3D URL: http://japan.unity3d.com/ 概要: 3D ゲームプログラミングを行うための統合開発環境であり、グラフィカルイン タフェースで操作することから開発効率が非常に高いことで有名である。今回は この環境を用いてアバターの操作、Kinect からのデータ取得、Android との通信 等を行った。 ・Eclipse URL: http://www.eclipse.org/ 概要: Android プログラミングを行う際、後述の Android SDK を使用してプログラム を作成するための統合開発環境である。今回の製作ではAndroid SDK をインス トールした際に同時にインストールされるバージョンを利用した。 ・Android SDK URL: http://developer.android.com/sdk/index.html 概要: Java 言語を用いて Android のプログラミングを行う際に必要な SDK である。 Android に搭載されたセンサからのデータ取得等を行う際に利用した。・Android Debug Bridge
URL: (Android SDK に同封)
概要: Android SDK の補助ツールであり、PC で Android 上でのデバッグを行う際等に 使用する。今回の製作では、このツールの機能の一つであるポートフォワーディ ングを利用し、Android から PC へ疑似 TCP 通信を行った。
・Kinect SDK for Windows
URL: http://www.microsoft.com/en-us/kinectforwindows/
概要: Kinect を Windows PC で利用するために必要な SDK である。今回の製作ではこ れをUnity 上で叩くことによりプレイヤーの骨格情報を取得した。