(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記背景技術に係るシステムにおいては、コントローラ自体が外部ネットワークに接続する機能を備えていないため、コントローラ自体がインターネットに接続する際には必ず本体装置に接続していた。
【0005】
また、従来のHMDと接続されるコントローラはボタン、キー、動きを検出可能なセンサからの入力による操作が可能であるが、センサディスプレイを備えていないため、直感的なより細かい操作を行うことができなかった。特にボタン、キーによる操作の場合、HMDを装着して完全に仮想空間にユーザが没入していると、ユーザが操作しようとしている現在の状態(ユーザの指がどのキー、ボタンに置かれているか)を、ユーザは認識することができないため、ユーザの指が所望のキーやボタンから外れていると、ユーザが所望しない操作が行われていた。
【0006】
また、1つの操作画面を同じ空間に位置する複数のユーザで共有して操作する場合に、従来のシステムでは複数のコントローラが1つの本体装置に接続されるため、本体装置への負荷が高かった。また従来のシステムでは、1つの操作画面を、別個の空間に位置する複数のユーザで共有して操作する場合に、複数のコントローラはそれぞれ空間毎に別々の本体装置に接続し、ネットワークを介して各本体装置をサーバに接続して通信していた。この場合、複数のコントローラに対し別個の本体装置が必要となる。
【0007】
さらに、HMDの操作に専用のコントローラが必要となる場合、ユーザは、HMD操作の都度専用のコントローラを持ち運ぶ必要があった。
【0008】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、HMDと外部との通信機能を備えたコントローラとを連動させるシステムを提供することにある。さらに、本発明は、そのコントローラは外部との通信機能を備えていることから、本体装置に接続する際に、外部サーバから接続に必要なソフトウェアをダウンロードすることができるため、本体装置に専用である必要はなく、一般に流通している端末、例えば携帯端末、スマートフォンを用いることができる。
【課題を解決するための手段】
【0009】
(1)本発明は、
生成画像をヘッドマウントディスプレイへ出力するシステムであって、該システムは、
実行中のアプリケーションの内容に応じて求められるユーザ操作を判定する操作判定部と、
コントローラからの出力データから、前記求められるユーザ操作に対応する出力データを検出する入力検出部と、
検出された前記出力データに基づき表示オブジェクトの動作を判定する動作判定部と、
判定された表示オブジェクトの前記動作、及び前記検出された出力データに基づいて、表示オブジェクトの表示パラメータを演算して、仮想空間上に表示される表示オブジェクトの画像を生成する表示演算部と、
仮想空間上の画像に生成された表示オブジェクトの画像を配置した画像を生成して前記システムに接続されたヘッドマウントディスプレイへ出力する画像生成出力部と、
を備えており、
前記コントローラの通信部がインターネットを介してサーバから受信したコントローラ側インタフェースプログラムと、前記システムのシステム側インタフェースプログラムにより、前記コントローラと前記システムが接続されていることを特徴とする、システムに関係する。
【0010】
本発明によれば、外部ネットワークとの通信機能を備えたコントローラを利用することで、コントローラは本体装置に接続していなくとも、コントローラ自体が外部サーバから入手可能な様々な情報、動画、画像、音声、その他情報(例えば地図情報、気象情報、株価情報、アプリケーション)を入手し、HMDに提示される仮想空間に反映することができる。さらに、本発明は、そのコントローラは外部との通信機能を備えていることから、本体装置に接続する際に、外部サーバから本体装置との接続に必要なソフトウェアをダウンロードすることができるため、本体装置に専用である必要はない。従って、本発明によれば、近年、一般的に普及しているスマートフォンなどの携帯端末をHMDのコントローラとして利用することができ、ユーザは専用のコントローラを必要とせずにHMDを操作することができる。
【0011】
(2)また、本発明は、コントローラからの出力データは、前記コントローラのセンサディスプレイからのユーザによる操作入力に基づいて生成された出力データであることができる。さらに、本発明は、操作入力は、スワイプ操作、タップ操作、又はピンチイン・ピンチアウト操作であることができる。
【0012】
本発明によれば、センサディスプレイを備えたコントローラを利用することで、ユーザはHMDに対し直感的で詳細なさまざまな操作(スワイプ操作、タップ操作、ピンチ操作)を行うことができる。ユーザは、HMDを装着して完全に仮想空間に没入していると、ユーザが操作しようとしている現在の状態(ユーザの指がどのキー、ボタンに置かれているか)を、ユーザは認識することができない。本発明によるコントローラはセンサディスプレイを備えており、ユーザは直感的な様々な操作を行うことができる。
【0013】
(3)また、本発明は、コントローラからの出力データは、前記コントローラのマイクからのユーザによる音声入力に基づいて生成された出力データであることができる。さらに、本発明は、仮想空間上に表示される表示オブジェクトの画像は、ユーザによる音声入力に基づいて変化することができる。
【0014】
本発明によれば、マイクを備えたコントローラを利用することで、ユーザはHMDに対して直感的な操作(音声入力)を行うことにより、HMDに表示させる画像を変化させることができる。
【0015】
(4)また、本発明は、コントローラからの出力データは、前記コントローラの加速度センサ又はジャイロセンサからのユーザによる動作入力に基づいて生成された出力データであることができる。
【0016】
本発明によれば、加速度センサ又はジャイロセンサを備えたコントローラを利用することで、コントローラの振り幅や振る周期、速度、強さを検出することによりユーザによる直感的な様々な操作が可能となる。
【0017】
(5)また、本発明は、コントローラからの出力データは、コントローラのメモリに格納されている画像と、前記コントローラのセンサディスプレイからのユーザによる操作入力に基づいて生成された出力データを含み、動作判定部は画像により表示オブジェクトを決定して、検出された前記出力データに基づき表示オブジェクトの動作を判定することを特徴とすることができる。さらに、本発明においてコントローラはスマートフォンであることができる。
【0018】
本発明によれば、コントローラがスマートフォンなどのユーザが常に携帯している携帯端末の場合、ユーザが過去に撮った画像、動画、音声が格納されており、ユーザがスマートフォンに格納されたユーザ自身が過去に撮った画像、動画、音声を利用してHMDに反映させることができる。さらに、コントローラがスマートフォンなどのユーザが常に携帯している携帯端末である場合に、ユーザは、HMD操作の都度専用のコントローラを持ち運ぶことなく、ユーザが常に携帯しているスマートフォンをHMD操作のコントローラとして利用することができる。
【0019】
(6)また、本発明は、コントローラからの出力データは、コントローラのGPSからのコントローラの位置情報と、コントローラのセンサディスプレイからのユーザによる操作入力に基づいて生成された出力データを含み、表示演算部は、位置情報、及び判定された表示オブジェクトの動作に基づいて、表示オブジェクトの表示パラメータを演算して、仮想空間上に表示される表示オブジェクトの画像を生成することを特徴とすることができる。
【0020】
本発明によれば、コントローラの現在置かれている位置情報に対応してHMDに提示する仮想空間上に表示される表示オブジェクトの画像を変更することが可能となる。
【0021】
(7)また、本発明は、前記操作判定部は、実行中のアプリケーションの内容に応じて求められる複数のユーザ操作を判定し、
入力検出部は、コントローラからの出力データから、前記求められる複数のユーザ操作に対応する出力データをそれぞれ検出し、
動作判定部は、検出された出力データのうち第1の出力データに基づき表示オブジェクトの動作を判定し、検出された出力データのうち第2の出力データに基づき表示オブジェクトの動作を変換することを特徴とする。
【0022】
本発明によれば、加速度センサ、ジャイロセンサを備えることで、コントローラに対する1つの操作入力(例えばタップ操作)に対応する表示オブジェクトの動作(表示オブジェクトがジャンプ)を端末のシェイクといった簡単な切り換え操作で瞬時に別の表示オブジェクトの動作(表示オブジェクトがスライディング)へ変換することができる。ユーザはHMDを装着し仮想空間に没入している場合に、操作中のコントローラを直接視認することができない。加速度センサ、ジャイロセンサにより、ユーザは端末のシェイクといった簡単で直感的な操作で確実に瞬時に表示オブジェクトの動作を変換することができる。
【0023】
(8) また、本発明は、生成画像をヘッドマウントディスプレイへ出力させる方法を、プロセッサに実行させるためのプログラムであって、該方法は、
実行中のアプリケーションの内容に応じて求められるユーザ操作を判定する操作判定ステップと、
コントローラからの出力データから、前記求められるユーザ操作に対応する出力データを検出する入力検出ステップと、
検出された前記出力データに基づき表示オブジェクトの動作を判定する動作判定ステップと、
判定された表示オブジェクトの前記動作、及び前記検出された出力データに基づいて、表示オブジェクトの表示パラメータを演算して、仮想空間上に表示される表示オブジェクトの画像を生成する表示演算ステップと、
仮想空間上の画像に生成された表示オブジェクトの画像を配置した画像を生成して前記システムに接続されたヘッドマウントディスプレイへ出力する画像生成出力ステップと、を備えており、
前記コントローラの通信部によりインターネットを介してサーバから受信したコントローラ側インタフェースプログラムと、前記システムのシステム側インタフェースプログラムとにより、前記コントローラと前記システムが接続されていることを特徴とする、プログラムに関係する。
【0024】
(9)また、本発明は、生成画像をヘッドマウントディスプレイへ出力するシステムの制御方法であって、
実行中のアプリケーションの内容に応じて求められるユーザ操作を判定する操作判定ステップと、
コントローラからの出力データから、前記求められるユーザ操作に対応する出力データを検出する入力検出ステップと、
検出された前記出力データに基づき表示オブジェクトの動作を判定する動作判定ステップと、
判定された表示オブジェクトの前記動作、及び前記検出された出力データに基づいて、表示オブジェクトの表示パラメータを演算して、仮想空間上に表示される表示オブジェクトの画像を生成する表示演算ステップと、
仮想空間上の画像に生成された表示オブジェクトの画像を配置した画像を生成して前記システムに接続されたヘッドマウントディスプレイへ出力する画像生成出力ステップと、を備えており、
前記コントローラの通信部によりインターネットを介してサーバから受信したコントローラ側インタフェースプログラムと、前記システムのシステム側インタフェースプログラムとにより、前記コントローラと前記システムが接続されていることを特徴とする、方法に関係する。
【0025】
この発明の上記の、及び他の特徴及び利点は、この発明の実施例の以下のより特定的な説明、添付の図面、及び請求の範囲から明らかになるであろう。
【発明を実施するための形態】
【0027】
以下、本実施形態について説明する。
図1は、本発明の一実施例に従った、システムのシステム構成図を示す。
このシステムでは、コントローラ100と本体装置120がWi−Fi、又はBluetooth(登録商標)などの無線ネットワークを介して接続され、本体装置120とヘッドマウントディスプレイ140はWi−Fi、又はBluetooth(登録商標)などの無線又は有線のネットワークを介して接続される。コントローラ100は、さらに、アンテナ110を備えており、本体装置を介さずにインターネット等のネットワークに接続してサーバ160と通信することができる。サーバ160は、プロセッサ、各種記憶装置及びデータ通信装置を中心として構成された公知のサーバコンピュータによって実現されるものであり、コントローラ100との間でデータの送受信を行う。また、サーバ160は、コントローラが複数ある場合は、コントローラ間で行う通信を管理するものである。
【0028】
コントローラの構成
コントローラ100は、少なくとも1つのプロセッサ102、少なくとも1つのインタフェース104、少なくとも1つのメモリ106、少なくとも1つのセンサディスプレイ108、及びアンテナ110を含むことができる。コントローラ100は、例えば、公知のスマートフォン、携帯端末によって実現することができる。コントローラ100は、ユーザ自らが保持、装着しており、ユーザの操作に応じた各種操作入力、及びユーザの動きに応じてユーザの動作入力、音声入力を検出することができる。
【0029】
コントローラ側プロセッサ102は、コントローラ側インタフェースプログラム106Aの実行、各機能部への命令の指示などの各種処理を行うように構成される。コントローラ側インタフェースプログラム106Aは、後述するユーザコントローラの送信部、受信部(
図2)を機能させるためのものである。
【0030】
コントローラ側インタフェースプログラム106Aは、後述する送信部204を機能させることにより、ネットワーク180を介してコントローラ100から本体装置120への出力データの送信を行う。また、後述する受信部206を機能させることにより、本体装置120からコントローラ100へユーザが仮想空間で経験する画像等の経験情報を含む各種データの受信を行うことができる。
【0031】
コントローラ側インタフェース104は、ネットワーク180を介して本体装置120への出力データの送信、及び本体装置120からのデータの受信を行うインタフェースであり、コントローラ側インタフェースプログラム106Aを実装することにより実現される。より詳細には、コントローラ側インタフェース104は、コントローラに内蔵された各種センサから得られたデータ、コントローラのメモリに格納された画像等の出力データを本体装置へ送信し、及び/又はユーザがヘッドマウント装置を装着して、仮想空間に没入している際に、ユーザが仮想空間で経験した画像、動画等の経験情報を本体装置から受信するインタフェースである。
【0032】
コントローラ側メモリ106は、コントローラ側インタフェースプログラム106Aを格納する。また、コントローラ側メモリ106は、ユーザにより過去に撮像された画像、動画、及び過去に格納されたメモ情報等の各種データ、及びユーザの操作、動作に応じて生じる各種センサから得られたデータを格納することができる。
【0033】
センサディスプレイ108は、タッチセンサであり、ユーザからのスワイプ操作、ピンチイン・ピンチアウト操作、タップ操作を検出する。センサディスプレイを備えることにより、加速度センサ、ジャイロセンサ、キー、ボタンのみを備えたコントローラではできなかったユーザからのスワイプ操作、ピンチイン・ピンチアウト操作を検出することが可能になる。ユーザはスワイプ、ピンチイン・ピンチアウト操作により、直感的な細かい操作を行うことができる。さらに、ユーザは仮想空間に没入している場合に、操作中のコントローラのキー、ボタンから指が外れることがあり、このような場合一度ヘッドマウント装置を外して外界位置を確認しなければならなかった。センサディスプレイによるスワイプ操作、タップ操作、又はピンチ操作は、キー、ボタンの位置を確認しなくとも、直感的に操作することができる。
【0034】
コントローラ100はアンテナ110を備え、コントローラ100自体がインターネットなどの外部ネットワークとの通信機能を有している。コントローラ100は、外部ネットワークを介して入手可能な様々な情報、気象情報、地図情報、アプリケーション等をアプリケーション実行中に本体装置に負荷をかけることなくリアルタイムに取得して、本体装置で実行しているアプリケーション、HMDへの表示画面に反映することが可能となる。また、コントローラは、アンテナ110により、インターネット等のネットワークを介して、予めサーバ160からユーザコントローラへコントローラ側インタフェースプログラム106Aをダウンロードし、ユーザコントローラへインストールすることができる。ユーザはコントローラ100へコントローラ側インタフェースプログラム106Aをインストールすることにより、ヘッドマウント装置に専用のコントローラを用いることなく任意のコントローラ、例えばスマートフォンを用いて、コントローラと、本体装置との接続が可能となり、コントローラからの出力データをヘッドマウント装置のディスプレイ表示へ反映させることができる。
【0035】
コントローラ100は、さらにユーザからの音声入力を検出するマイク、ユーザによる動作入力を検出する加速度センサ、ジャイロセンサ、及びボタン、キー、カメラ、GPS、バイブレーション装置(図示せず)を備えることができる。
【0036】
マイクはコントローラを保持・装着しているユーザによるユーザの発声等を検出する。マイクを備えることによって、ユーザの発声した言葉をHMDへ表示される表示オブジェクトに反映させることができる。また、メモリに格納されている音声認識アプリケーションを用いて、ユーザの発声した言葉を音声認識して、例えば、本体装置において実行されているゲームアプリケーション上で、呪文を唱えると扉が開くなどの動作を表示オブジェクトに行わせることができる。
【0037】
加速度センサ、ジャイロセンサは、コントローラを保持・装着しているユーザの動き、例えばユーザがコントローラを振り回す動作、物を投げる動作を検出することができる。さらに、加速度センサによりユーザの歩数を検出することができる。また、加速度センサ、ジャイロセンサ、及びセンサディスプレイを備えることで、コントローラに対する1つの操作入力(例えばタップ操作)に対応する表示オブジェクトの動作(表示オブジェクトがジャンプ)を端末のシェイクといった簡単な切り換え操作で瞬時に別の表示オブジェクトの動作(表示オブジェクトがスライディング)へ変換することができる。特にタップ操作は、HMDを装着しているユーザにとって簡単な操作であるので、アプリケーション上で様々な表示オブジェクトの動作、例えば撃つ、斬る、ジャンプする動作をタップ操作に対して割り当てる。ユーザはHMDを装着し仮想空間に没入している場合に、操作中のコントローラを直接視認することができない。加速度センサ、ジャイロセンサにより、ユーザは端末のシェイクといった簡単で直感的な操作で確実に瞬時に表示オブジェクトの動作を変換することができる。
【0038】
ボタン、キーはユーザコントローラを保持・装着しているユーザによる操作入力を受け付ける。
カメラにより、ユーザが写真や動画を撮ることができ、撮られた写真や動画はユーザコントローラのメモリに格納される。ユーザにより過去に撮像された画像や動画をヘッドマウントディスプレイに表示された仮想空間に反映することができる。
【0039】
GPSは、コントローラを保持・装着しているユーザの位置を検出する。従って、例えば検出されたユーザの位置に応じて、ヘッドマウントディスプレイの画面表示を生成することができる。例えば、ユーザが北海道に位置する場合に、ユーザがHMDに表示される仮想空間内で操作する表示オブジェクトのキャラクタを北海道のキャラクタとすることができる。
【0040】
バイブレーション装置は、例えば、ヘッドマウント装置を装着して、ゲームをプレイしているユーザが、ヘッドマウントディスプレイに表示されている仮想空間内で攻撃などを受けた際に、ゲームに連動させてコントローラをバイブレーションすることができる。仮想空間内でアプリケーション実行中にユーザが経験した情報は、本体装置側インタフェースプログラム126Aによりネットワーク180を介してインタフェースプログラム106Aへ送信される。そして、コントローラ側インタフェースプログラム106Aが受信したユーザが経験した情報に基づいて、バイブレーション装置がコントローラをバイブレーションさせる。コントローラがバイブレーションすることで、ユーザは一層仮想空間に没入することができる。
【0041】
本体装置の構成
本体装置120は、ユーザコントローラ100、ヘッドマウントディスプレイ140との間でデータの送受信を行うものであり、少なくとも1つのプロセッサ122、少なくとも1つのインタフェース124、少なくとも1つのメモリ126を含むことができる。
【0042】
本体装置側プロセッサ122は、各機能部への命令の指示、ゲームなど各種アプリケーションの実行、本体装置側インタフェースプログラム126Aの実行、画像生成出力処理を行うための画像生成プログラム126Bの実行、音生成処理などの各種処理を行うように構成される。
【0043】
本体装置側インタフェース124は、コントローラ100からネットワークを介して送信された出力データの受信、本体装置120からネットワークを介して所定のデータを送信、及びHMD140へ表示オブジェクトを配置した生成画像を出力する入出力インタフェースである。
【0044】
本体装置側メモリ126は本体装置側インタフェースプログラム126A、画像生成プログラム126B、及び本体装置のプロセッサにより実行される各種機能を実現するためのプログラム、データを格納する。
【0045】
本体装置側インタフェースプログラム126Aは後述する入力検出部304(
図3)を機能させるためのものである。本体装置側インタフェースプログラム126Aを実行することにより、本体装置120はコントローラ100から送信された出力データを検出して受信、及び本体装置120からコントローラ100へ各種データを送信する。本体装置側インタフェースプログラム126Aは、予め本体装置にインストールされている。例えば、本体装置側インタフェースプログラム126Aは、本体装置に接続されたインターネット、イントラネット等のネットワーク(図示せず)を介して、予め本体装置へダウンロードし、又は記録媒体を用いてインストールすることができる。本体装置側インタフェースプログラム126Aをインストールし、コントローラに後述するコントローラ側インタフェースプログラム106Aをインストールすることで、ユーザはヘッドマウント装置に専用のコントローラを用いることなく任意のコントローラ、例えば携帯端末、スマートフォンを用いて、ユーザコントローラ100からのユーザ入力等をHMDへ反映させたり、HMD上の表示、及び操作中のアプリケーション情報をユーザコントローラへ送信したりすることができる。さらに、本体装置側インタフェースプログラム126Aが複数のコントローラからの出力データをそれぞれ取得し、識別できる構成にすることにより複数のコントローラを1の本体装置120と接続することもできる。
【0046】
画像生成プログラム126Bは、後述する操作判定部302、動作判定部306、表示演算部308、画像生成出力部310を機能させるためのものである。
HMD140は、本体装置120に接続されており、本体装置120から出力された生成画像を表示する。HMD140は、ユーザの保持するコントローラのセンサディスプレイ(
図6の602)、ボタン、キー等を仮想的に表示するようにしても良い。
【0047】
コントローラの機能的構成
図2は、コントローラ100の機能的構成を示す図である。同図に示すように、コントローラ100は、操作部202、送信部204、受信部206、通信部208、撮像部210、又はこれらの機能の一部を備えることができる。これらの機能は、ユーザコントローラ100のメモリ106に格納された所定のプログラムがプロセッサ102によって実行されることにより実現される。ユーザコントローラの送信部、受信部はコントローラ側プロセッサによりコントローラ側インタフェースプログラム106Aを実行することにより実現できる。該インタフェースプログラム106Aはコントローラのアンテナ130を用いてインターネットを介してサーバ160より予めダウンロードされ、コントローラ100にインストールされている。
【0048】
操作部202は、コントローラに設けられている各種のセンサから、ユーザによりコントローラに対して行われた所定の動作・操作に関する入力を取得する。各種のセンサとは、ディスプレイセンサ、加速度センサ、ジャイロセンサ、マイクセンサ、GPSセンサである。また各種のセンサには、ボタン、キー等の他の操作部からの入力を組み合わせる(例えばコントローラのボタンを押しながらコントローラを振る動作を行う操作入力等)ことができる。ユーザがコントローラを動かすと、操作部は、加速度センサ、ジャイロセンサから該動作に対する加速度、角速度を取得する。ユーザがコントローラのセンサディスプレイに対してスワイプ操作、ピンチイン・ピンチアウト操作、タップ操作を行うと、操作部はセンサディスプレイから、それら操作の種類及び/又はそれら操作に関する各種データ、例えばディスプレイへの接触(タップ)、接触時間(長押し/タップ)、所定時間内の接触回数(連打、1回押し)、ディスプレイへの連続した接触の変位量(スワイプ距離、ピンチ距離)、接触変位方向(スワイプ方向、ピンチ方向)、接触変位速度(スワイプ速度、ピンチ速度)を取得する。ユーザがコントローラのマイクに対して発声すると、操作部202はマイクからユーザ音声入力を取得する。次に、操作部202はこれらの情報(加速度・角速度、操作入力情報、音声入力情報、位置情報)を逐次メモリへ格納する。
【0049】
ここで、本実施例においては加速度センサ、ジャイロセンサから得られた加速度、角速度を動作入力情報と称し、ユーザがセンサディスプレイ上でスワイプ操作、タップ操作、ピンチ操作を行った際にセンサディスプレイから得られるセンサディスプレイへの接触、ディスプレイへの連続した接触の変位量、接触変位方向、接触変位速度を操作入力情報と称する。
【0050】
送信部204は、メモリに格納されたこれらの情報を、本体装置からのリクエストに応じてネットワーク180を介して入力検出部304へ出力データとして送信する。出力データは、操作部202からのコントローラ100に対して行われた所定の動作・操作に関する動作入力情報、操作入力情報、音声入力情報、位置情報、コントローラ100のメモリ106に格納されている画像や動画、又はこれらの組み合わせに対応する。
【0051】
コントローラ100は本体装置120から送信される情報を受信する受信部206を備えることができる。受信部206は、ユーザがHMDを装着して仮想空間に没入している際に、ユーザが仮想空間内で経験した情報を受信する。例えば、ゲームをプレイしているユーザが、HMD140に表示されている仮想空間内で攻撃などを受けた際に、その攻撃された情報を受信する。そしてコントローラ側プロセッサは、受信した攻撃された情報に基づいてバイブレーション機能を実行し、コントローラをバイブレーションすることができる。また、受信部206はゲームのプレイ中の映像を本体装置より受信することができる。コントローラ側プロセッサ102は、受信した映像をコントローラのメモリへ格納したり、コントローラ側ディスプレイ108へ表示したりすることができる。
【0052】
通信部208は、様々なデータ、例えば、プログラムをサーバ160からダウンロードしたり、ユーザの操作中映像をサーバ160にアップロードしたり、コントローラが複数ある場合に他のコントローラと直接通信するためのものであり、通常、インターネットを通じて通信を行う。通信部208を備えることにより、コントローラ100は本体装置と接続されていなくとも、外部サーバ160に接続することが可能である。従って、コントローラは本体装置120に接続されていなくとも、インターネットに接続可能な環境があれば、任意の場所でコントローラ側インタフェースプログラム106Aをインストール、アップデートすることができる。また、コントローラ100は、インターネットから取得可能な様々な情報(気象情報、株価情報、地図情報)を取得して、ユーザの操作中画面や、ユーザ操作中のゲーム内容に反映することができる。また、コントローラは、コントローラが複数ある場合に、本体装置を介さずに通信部を介して他のコントローラと通信することができる。
【0053】
撮像部210は、実空間における画像や動画を撮ることができる。撮像部を備えることにより、ユーザにより予め撮像された画像や動画を、ユーザの操作中画面や、プレイ中のゲーム画面に反映することができる。
【0054】
ユーザコントローラ100は更にGPS(図示せず)を備えることができる。GPSを備えることにより、GPSにより取得されたコントローラの位置情報をユーザ操作中の画面に反映することができる。例えば、コントローラが北海道に位置する場合に、HMDに表示される仮想空間内でユーザが操作する表示オブジェクトのキャラクタを北海道のキャラクタとしたり、HMDに表示される仮想空間のユーザ操作画面を北海道の背景としたりすることができる。
【0055】
本体装置の機能的構成
図3は、本体装置120の機能的構成を示す図である。同図に示すように、本体装置120は、操作判定部302、入力検出部304、動作判定部306、表示演算部308、画像生成出力部310を備える。これらの機能は、本体装置におけるメモリに格納された所定のプログラムがプロセッサによって実行されることにより実現される。
【0056】
操作判定部302は、まず、本体装置で実行中のアプリケーションの内容に基づいて、アプリケーションにより入力が求められるユーザ操作が何かを決定する。求められるユーザ操作とは、実行中のアプリケーションの内容、実行中のアプリケーションにおいてユーザが現在操作している状況等に基づいて定められ、実行中のアプリケーションが入力を許可する、コントローラに対するユーザ操作のことである。例えば、ユーザが仮想空間内で戦闘ゲームを行い、敵と戦闘中の操作状態では、その操作状態に対応する求められるユーザ操作は例えば、「殴る」、「撃つ」、「攻撃をかわす」である。
【0057】
次に、入力検出部304は、ネットワーク180を介してコントローラ100のメモリに格納された出力データのうち、求められるユーザ操作に対応する出力データを取得する。例えば、求められるユーザ操作が「殴る」である場合に、該求められるユーザ操作に対応する出力データは、操作入力情報(タップ操作によるディスプレイへの接触)である。出力データは所定時間内における接触回数を含むこともできる。そして、入力検出部304は検出した出力データを動作判定部306へ出力する。このように、入力検出部304は、実行中のアプリケーションにおいて求められるユーザ操作が「殴る」である場合に、出力データの操作入力情報のうち、タップ操作に対応する、ディスプレイへの接触のみを検出して取得する。動作判定部306は、求められるユーザ操作に対応しない出力データ、例えば、求められるユーザ操作が「殴る」である場合に、音声入力を無視することができる。
【0058】
このように、入力検出部304は、ネットワーク180を介してコントローラの送信部204から送信された様々な情報、ユーザによる動作入力情報(加速度センサ、ジャイロセンサから得られた加速度、角速度)、操作入力情報(スワイプ操作、ピンチイン・ピンチアウト操作の種類、及び/又はセンサディスプレイへの接触、ディスプレイへの連続した接触の変位量、接触変位方向、接触変位速度)、音声入力情報(マイクセンサから得られる音声、音量)、画像、動画、位置情報又はこれらの組み合わせである情報のうち、操作判定部302により決定された求められるユーザ操作に対応するデータをコントローラからの出力データとして検出する。
【0059】
また、入力検出部304は、所定のタイミングで所定時間の間、出力データを検出するようにしてもよい。さらに入力検出部304は、出力データを受信するタイミング間隔を変更することができる。例えば、表示オブジェクトに仮想空間内で扉のノブを回すといった粗い操作を行わせる場合は、検出するタイミング間隔を長くして1秒間に15回の入力検出を行い、仮想空間内で表示オブジェクトに自動車を運転させるなどのハンドルの細かい動きを逐次画面に反映させることの必要な動作を行わせる場合は、検出するタイミング間隔を短くして1秒間に60回の入力検出を行うことができる。
【0060】
実行中のアプリケーションの内容、実行中のアプリケーションの内容に対応する求められるユーザ操作と、求められるユーザ操作に対応する出力データとの関係は表1に例示的に示される。表1に示されるアプリケーションの内容、求められるユーザ操作、出力データは単なる例示に過ぎず、当業者であれば他のユーザ操作状態、他のユーザ操作が存在することは容易に理解できるであろう。
【0062】
次に動作判定部306は、求められるユーザ操作に応じて、入力検出部304により検出された出力データに基づき、ヘッドマウントディスプレイに表示される表示オブジェクトに行わせる動作を判定する。例えば、求められるユーザ操作が「殴る」である場合に、出力データに含まれるディスプレイへの接触感知、接触回数に応じて、仮想空間内で表示オブジェクトに行わせる動作(殴る、殴る頻度)を判定する。表示オブジェクトとは、ユーザによる仮想空間上で操作対象となるオブジェクトであり、例えばユーザがゲームを行っている場合はゲームキャラクタやゲームアイテムであり、ユーザが撮像した画像、動画を表示している場合は、それらの画像、動画である。
【0063】
例えば、動作判定部306は、求められるユーザ操作が「画像のスライド」である場合に、出力データの操作入力情報のうち、スワイプ操作の方向、変位量、変位速度を取得する。そして、動作判定部は、ディスプレイへのスワイプ操作の方向、変位量、変位速度に応じて、表示オブジェクトに行わせる動作(画像のスライド)を判定する。
【0064】
例えば、動作判定部306は、求められるユーザ操作が「2つの表示オブジェクトをくっつける」である場合に、出力データの操作入力情報のうち、ディスプレイへのピンチイン操作(又はスワイプ操作)の方向、変位量、変位速度を取得する。そして、動作判定部は、ディスプレイへのピンチイン操作の方向、変位量、変位速度に応じて、表示オブジェクトに行わせる動作(2つの表示オブジェクトを1つに結合させる)を判定する。動作判定部はユーザによるディスプレイへのピンチイン操作の方向、変位量、変位速度に応じて、表示オブジェクトを移動させる方向、移動させる速度を決定することができる。
【0065】
例えば、動作判定部306は、求められるユーザ操作が「ハンドル操作」である場合に、出力データの動作入力情報のうち、加速度、角速度を取得する。なお、「ハンドル操作」は細かい操作が必要となることから、動作判定部は一定時間に加速度、角速度を取得する回数を多くすることができる。そして、動作判定部は、加速度、加速度に応じて、表示オブジェクトに行わせる動作(表示オブジェクトの方向を変える)を判定する。
【0066】
例えば、動作判定部306は、求められるユーザ操作が「振り回す」である場合に、出力データの動作入力情報のうち、加速度、角速度を取得する。なお、「振り回す」操作は粗い検知で十分な場合、動作判定部は一定時間に加速度、角速度を取得する回数を少なくすることができる。そして、動作判定部は、加速度、加速度に応じて、表示オブジェクトに行わせる動作(表示オブジェクトを動かす・振り回す)を判定する。動作判定部は加速度、角速度に応じて、表示オブジェクトを振り回す強さ、方向を決定することができる。
【0067】
例えば、動作判定部306は、求められるユーザ操作が「投げる」である場合に、出力データの動作入力情報のうち、加速度、角速度を取得する。そして、動作判定部は、加速度、角速度に応じて、表示オブジェクトに行わせる動作(表示オブジェクトを投げる)を判定する。さらに、動作半値部は加速度、角速度に応じて、表示オブジェクトを投げる強さ、方向を決定したりすることができる。
【0068】
例えば、動作判定部306は、求められるユーザ操作が「大声を出す」である場合に、出力データのうち、音声入力情報を取得する。そして、動作判定部は、音量に応じて、表示オブジェクトに行わせる動作(表示オブジェクトを拡大)を判定する。さらに、動作判定部は音量に応じて、表示オブジェクトを拡大する大きさを決定したりすることができる。
【0069】
次に、表示演算部308は、動作判定部306が判定した動作、及び該動作に対応付けられた表示オブジェクトに対する操作データに基づいて、表示オブジェクトの表示演算を行い、これにより表示オブジェクトの画像を生成する。操作データとは、表示オブジェクトを動かす際の、加速度、角速度、変位量、変位速度、方向等を含む。いわゆる3次元の画像を生成する場合には、表示オブジェクトの各頂点のデータ(頂点のワールド座標系での位置座標、色データ)を含む表示パラメータを演算し、演算された表示パラメータに基づいて、表示オブジェクトの画像をフレーム毎に順次生成する。
【0070】
画像生成出力部310は、起動しているヘッドマウント装置のディスプレイに表示されている画面に、演算された表示オブジェクトを配置した画像をフレーム毎に生成し、その画面へ出力する。HMDは画像生成出力部より出力された画像を表示する。
【0071】
図4は、ユーザのスワイプ操作に基づいて生成された本実施例に従ったHMDに表示される画面400の一例である。入力検出部より取得した出力データがスワイプ操作である場合に、スワイプした方向へ、操作対象である表示オブジェクト(
図5Aでは6つの画像)をスライドする。
図4に示すように、ユーザの操作するセンサディスプレイに対応する表示(402、404)を仮想的にHMD上へ表示することで、HMDを装着しているユーザが完全に仮想空間に没入している場合でも、ユーザは、ユーザが行っている、又は行おうとしている操作を確実に把握することができる。
【0072】
図5A、Bは、ユーザのタップ操作に基づいて生成された本実施例に従ったHMDに表示される画面(500A、500B)の一例である。入力検出部より受け取った出力データがタップ操作に対応する場合に、操作対象である表示オブジェクト(
図5Aでは手502、
図5Bでは銃504)は撃つ・殴る動作を行う。例えば、ユーザがコントローラ100のセンサディスプレイをタップするたびに、表示オブジェクトは撃つ・殴る動作を行う。さらに出力データに一定時間内にタップされた回数が含まれる場合に、そのタップ回数に応じてオブジェクトが撃つ・殴る動作の速さを変更することができる。
【0073】
図6は、ユーザのタップ操作に基づいて生成された本実施例に従ったHMDに表示される画面600の一例である。
図6の表示画面600は仮想空間上に仮想的に表示されたセンサディスプレイ602を含む。仮想的に表示されたセンサディスプレイ602は、仮想的にユーザの指604(操作指)を表示することができる。仮想空間に没入しているユーザは、HMDを装着しており外界情報を遮断されるため、実空間にあるコントローラを詳細に認識することができない。実空間にあるコントローラのセンサディスプレイを仮想的に仮想空間上に表示することで、ユーザはヘッドマウントディスプレイを外すことなく、コントローラへの各種操作を把握することができる。
【0074】
図7A、B、Cは、ユーザのピンチイン・ピンチアウト操作に基づいて生成された本実施例に従ったHMDに表示される画面の一例である。入力検出部より受け取った出力データがピンチアウト操作に対応する場合に、操作対象である表示オブジェクト(
図7Aでは黒い円内の画像)に対して、該操作入力に対応付けられた表示オブジェクトのズームイン動作を行う。さらに入力検出部より受け取った出力データに操作の変位量が含まれる場合には、その変位量に基づき、ズームイン動作の画面操作量を決定することができる。さらに、入力検出部より受け取った出力データの種類がピンチアウト操作である場合に、ユーザにより選択された操作対象である表示オブジェクト(
図7Bでは4と描かれた中心の○)に対してピンチアウト操作が行われると、該表示オブジェクトは2つのオブジェクト(
図7Bでは水滴)に分離される(オブジェクトが2つにちぎられる)。オブジェクトの分離は、スワイプ操作により実現することもできる。入力検出部より受け取った出力データがピンチイン操作である場合に、操作対象である表示オブジェクト(
図7Cでは2と描かれた2つの丸)を結合して、大きな4と描かれた1つの丸にすることができる(2つのオブジェクトがくっつけられる)。
【0075】
図8A、B、Cは、本実施例に従ったHMDに表示される画面の一例である。入力検出部より受け取った出力データが加速度センサ・ジャイロセンサからのユーザの動作入力情報に対応する場合に、操作対象である表示オブジェクト(
図8Aでは剣、
図8Bでは釣り竿、
図8Cではダーツ)に対して、該表示オブジェクトに、
図8Aでは剣を振り回す動作、又は
図8B及びCでは釣り竿、ダーツを投げる動作を行わせる。さらに入力検出部より受け取った出力データに含まれる加速度に基づき、表示オブジェクトを所定の速度、加速度で移動させ、又は表示オブジェクトを所定の強さで振る・投げることができる。動作判定部はさらに入力検出部より受け取った出力データが角速度を含む場合には、表示オブジェクトを所定の方向へ移動させることができる。
【0076】
図9A、B、Cは、本実施例に従った加速度センサ・ジャイロセンサからの入力に基づいてHMDに表示される画面の一例である。入力検出部より受け取った出力データが加速度センサ・ジャイロセンサからのユーザの動作入力情報に対応する場合に、操作対象である表示オブジェクト(
図9Aではレース画面背景全体、
図9Bでは人、又は画面全体、
図9Cではドアノブ)に対して、該動作入力情報に対応付けられた表示オブジェクトを回転させる動作を行わせる。さらに入力検出部より受け取った出力データに含まれる角速度に基づき、表示オブジェクトを所定の角速度で回転させることができる。
【0077】
図10A、Bは、本実施例に従ったマイクセンサからの入力に基づいてHMDに表示される画面の一例である。入力検出部より受け取った出力データの種類がマイクからのユーザの音声入力である場合に、音声入力に対応付けられた表示オブジェクト(
図10Aでは猫、
図10Bでは「ワー」という文字)に対して、所定の動作(
図10Aでは猫が驚く動作、
図10Bでは「ワー」という文字が拡大される動作)を行わせる。さらに、マイクセンサからの音量、方向に基づいて、拡大表示される表示オブジェクトの大きさや速度を変化させることができる。
【0078】
図11はコントローラ100の処理の流れを示すフローチャート図である。
まず、インターネットを介してコントローラ100に備えられたアンテナによりインタフェースプログラム106Aをコントローラ100へダウンロードし、インストールする(ステップ1100)。コントローラは、インタフェースプログラム106Aをインストールすることにより、本体装置に専用のコントローラでなくとも、例えば公知の携帯端末(スマートフォン)によりHMD140の画面操作を行うことができる。
【0079】
次に、操作部202は、ユーザによりコントローラに対して行われた所定の動作・操作に関する入力情報を取得しメモリへ格納する(ステップ1102)。
次に、送信部204は、所定の動作に関する各種入力、所定の操作に関する各種入力情報、及び/又はコントローラのメモリに格納されている画像、動画、位置情報、又はこれらの組み合わせを出力データとして、本体装置120へ送信する(ステップ1104)。送信部204は、本体装置の入力検出部304からの要求に従って、出力データのうち実行中のアプリケーションの内容に応じて、求められるユーザ操作に対応する出力データを送信することができる。
【0080】
図12は本体装置120の処理の流れを示すフローチャート図である。
本体装置には本体装置側インタフェースプログラム126Aがインストールされている。本体装置は、外部ネットワークに接続してインタフェースプログラム126Aを取得してもよいし、記憶媒体を用いてインタフェースプログラム126Aを取得してもよい(ステップ1200)。
【0081】
操作判定部302は、本体装置において実行中のアプリケーションの内容等に応じてアプリケーションが操作中のユーザに対して入力を許可する、求められるユーザ操作を判定する(ステップ1202)。
【0082】
次に、入力検出部304は、コントローラ100の送信部204から送信された出力データのうち、実行中のアプリケーションにより求められるユーザ操作に対応する出力データを、コントローラ100の送信部204よりネットワーク180を介して受信して検出する。(ステップ1204)。
【0083】
次に、動作判定部306は、求められるユーザ操作に対応する出力データに応じて、実行中のアプリケーションの仮想空間内で表示オブジェクトに行わせる動作を判定する(ステップ1206)。
【0084】
次に、表示演算部308は、動作判定部306が判定した動作、及び該動作に対応付けられた表示オブジェクトに対する操作データに基づいて、表示オブジェクトの表示演算を行い、これにより表示オブジェクトの画像を生成する(ステップ1208)。
【0085】
次に、画像生成出力部310は、起動しているヘッドマウント装置のディスプレイに表示されている画面に、生成された表示オブジェクトを配置した画像をフレーム毎に生成し、HMDへ出力する(ステップ1210)。
【0086】
図13は、コントローラ100と本体装置120をアプリケーション上で接続する処理の流れを示すフローチャート図である。コントローラ100と本体装置120とはネットワーク180を介して互いに通信可能に接続されている。
【0087】
まず、本体装置120において、HMDと接続してHMDを操作するためのアプリケーションを起動する(ステップ1300)。
次に、コントローラ100側でインタフェースプログラム106Aを実行して、コントローラ100は本体装置内にインタフェースプログラム126Aを含むアプリケーションが格納されているかを検索する(ステップ1302)。
【0088】
次に、コントローラ100は、本体装置120内にインタフェースプログラム126Aを含むアプリケーションが検索された場合に、その検索に対する認識情報を本体装置100のインタフェースプログラム126Aに送信する(ステップ1304)。
【0089】
次に、コントローラ100は、認識したインタフェースプログラム126Aを含むアプリケーションを、ディスプレイ108へ表示する。そして、コントローラ100は、表示された認識したアプリケーションがユーザによりタップされると、ペアリングリクエストを本体装置側インタフェースプログラム126Aへ送信する(ステップ1306)。
【0090】
次に、本体装置側インタフェースプログラム126Aはコントローラから送信されたペアリングリクエストに応答してペアリングレスポンスをコントローラ100のインタフェースプログラム106Aへ送信する(ステップ1308)。
【0091】
次に、コントローラ100のインタフェースプログラム106Aは、コントローラ100と本体装置120とがペアリングしたことを示す情報を、本体装置側インタフェースプログラム126Aへ送信する(ステップ1310)。これにより、コントローラ100と本体装置120とのアプリケーション上の接続が完了する。
【0092】
図14は、本発明の第2の実施例に従った、複数のコントローラにより構成されるシステムのシステム構成図を示す。複数のコントローラ100同士はそれぞれ本体装置120ではなく、インターネットを介して接続されている。以下、第1のコントローラ100A、第2のコントローラ100Bはそれぞれ
図1に記載のようにプロセッサ、メモリ、インタフェース、センサディスプレイを備えることができる。また、第1のコントローラ、第2のコントローラはそれぞれ
図2に記載の機能的構成、又は
図2に記載の機能的構成の一部を備えることができる。また、コントローラ100A、100Bは3台以上で構成することもできる。
【0093】
従来のシステムにおいては、1つの操作画面を同じ空間に位置する複数のユーザで共有して操作する場合に、複数のコントローラはそれぞれ1つの本体装置に接続されていたため、本体装置への負荷が高かった。また従来のシステムにおいては、1つの操作画面を、別個の空間に位置する複数のユーザで共有して操作する場合には、複数のコントローラは別個の空間にそれぞれ存在する本体装置に接続する。そして本体装置は、それぞれネットワークを介してサーバに接続する。この場合、複数のコントローラに対し外部ネットワークと接続可能な本体装置がそれぞれ必要となる。
【0094】
本実施例においては、1つのコントローラのみが1つの本体装置へ接続されており、コントローラ同士はインターネットを介してサーバに接続されている。これにより、一つの本体装置の負荷を高めることなく、複数のユーザ間で、一つの操作画面に対し様々な操作を行うことができる。また、複数のユーザは同じ空間に位置する必要は無く、別の空間に位置することができる。
【0095】
図15は、複数のユーザ間で一つの操作画面に対し操作を行っている例示的なユーザ表示画面である。
図15に係る実施例おいては、ユーザAはヘッドマウント装置を装着しており、ユーザBはヘッドマウント装置を装着していない。ヘッドマウント装置を装着していないユーザBも、第2のコントローラのディスプレイを介してユーザAの操作画面を見ることや、ユーザAの操作中画面に対して、第2のコントローラのセンサディスプレイによるスワイプ、タップ、又はピンチ操作入力、第2のコントローラの加速度センサ、角速度センサによる動作入力を行うことができる。例えば、図に示されるように、ユーザAがレーシングゲームをしている最中に、他のユーザBがユーザBのコントローラのセンサディスプレイを用いて、ユーザAの操作中画面に障害物(図ではバナナ)を配置することができる。
【0096】
以上、本発明の一実施形態に付き説明したが、本発明は上記実施形態に限定されるものではない。前述の請求項に記載されるこの発明の精神及び範囲から逸脱することなく、様々な実施態様の変更がなされうることを当業者は理解するであろう。