(57)【要約】【課題】右手用と左手用の２つのコントローラを用いる場合に適したゲーム内オブジェクトの操作方法を提供する。【解決手段】制御システムは、ユーザの右手に把持される右手用コントローラと、前記ユーザの左手に把持される左手用コントローラと、前記右手用コントローラの向き及び前記左手用コントローラの向きをそれぞれ検出すると共に、前記右手用コントローラの位置及び前記左手用コントローラの位置をそれぞれ検出する検出手段と、前記向きの検出結果に基づいて前記右手用コントローラと前記左手用コントローラの相対的な向きを判定すると共に、前記位置の検出結果に基づいて前記右手用コントローラと前記左手用コントローラの相対的な位置を判定する判定手段と、前記右手用コントローラと前記左手用コントローラの相対的な向き、及び前記右手用コントローラと前記左手用コントローラの相対的な位置に基づいて操作対象オブジェクトの動きを制御する制御手段と、を備える。【選択図】図６
2017099608.tif 000002
【特許請求の範囲】
【請求項１】
ユーザの右手に把持される右手用コントローラと、
前記ユーザの左手に把持される左手用コントローラと、
前記右手用コントローラの向き及び前記左手用コントローラの向きをそれぞれ検出すると共に、前記右手用コントローラの位置及び前記左手用コントローラの位置をそれぞれ検出する検出手段と、
前記向きの検出結果に基づいて前記右手用コントローラと前記左手用コントローラの相対的な向きを判定すると共に、前記位置の検出結果に基づいて前記右手用コントローラと前記左手用コントローラの相対的な位置を判定する判定手段と、
前記右手用コントローラと前記左手用コントローラの相対的な向き、及び前記右手用コントローラと前記左手用コントローラの相対的な位置に基づいて操作対象オブジェクトの動きを制御する制御手段と、
を備える制御システム。
【請求項２】
前記制御手段は、前記右手用コントローラと前記左手用コントローラが前記ユーザに対して右方向に傾けられ、且つ前記右手用コントローラが前記左手用コントローラよりも下方に配置された場合に、前記操作対象オブジェクトを右方向へ動かすように制御を行い、前記右手用コントローラと前記左手用コントローラが前記ユーザに対して左方向に傾けられ、且つ前記右手用コントローラが前記左手用コントローラよりも上方に配置された場合に、前記操作対象オブジェクトを左方向へ動かすように制御を行う、請求項１に記載の制御システム。
【請求項３】
前記制御手段は、前記右手用コントローラと前記左手用コントローラが前記ユーザに対して右方向に傾けられ、且つ前記右手用コントローラと前記左手用コントローラが同一円周上を右回りに動かされた場合に、前記操作対象オブジェクトを右方向へ動かすように制御を行い、前記右手用コントローラと前記左手用コントローラが前記ユーザに対して左方向に傾けられ、且つ前記右手用コントローラと前記左手用コントローラが同一円周上を左回りに動かされた場合に、前記操作対象オブジェクトを左方向へ動かすように制御を行う、請求項２に記載の制御システム。
【請求項４】
前記制御手段は、前記右手用コントローラと前記左手用コントローラが前記ユーザに対して互いに異なる方向に傾けられた場合に、前記操作対象オブジェクトの前後方向の動きに変化を生じさせる、請求項１から３のいずれか１項に記載の制御システム。
【請求項５】
前記操作対象オブジェクトは、コンピュータゲーム内で前記ユーザが操縦可能なオブジェクトであり、
前記制御手段による前記操作対象オブジェクトの動きの制御は、前記操作対象オブジェクトが前記右手用コントローラと前記左手用コントローラの相対的な向き及び相対的な位置に応じてコンピュータゲーム内で動くようにコンピュータゲームの画像を生成する処理である、
請求項１から４のいずれか１項に記載の制御システム。
【請求項６】
前記ユーザによって装着されるヘッドマウントディスプレイと、
前記コンピュータゲームの画像を前記ヘッドマウントディスプレイへ出力する画像出力手段と、
を更に備える、請求項５に記載の制御システム。
【請求項７】
前記右手用コントローラと前記左手用コントローラの少なくとも一方は、前記操作対象オブジェクトに対する制御を無効化するための操作ボタンを備える、請求項１から６のいずれか１項に記載の制御システム。
【請求項８】
前記右手用コントローラと前記左手用コントローラの少なくとも一方は、前記右手用コントローラ又は前記左手用コントローラの向き若しくは位置のキャリブレーションをするための操作ボタンを備える、請求項１から７のいずれか１項に記載の制御システム。
【請求項９】
コンピュータに、
ユーザの右手に把持される右手用コントローラの向き及び前記ユーザの左手に把持される左手用コントローラの向きをそれぞれ検出するステップと、
前記右手用コントローラの位置及び前記左手用コントローラの位置をそれぞれ検出するステップと、
前記向きの検出結果に基づいて前記右手用コントローラと前記左手用コントローラの相対的な向きを判定するステップと、
前記位置の検出結果に基づいて前記右手用コントローラと前記左手用コントローラの相対的な位置を判定するステップと、
前記右手用コントローラと前記左手用コントローラの相対的な向き、及び前記右手用コントローラと前記左手用コントローラの相対的な位置に基づいて操作対象オブジェクトの動きを制御するステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御システム及びプログラムに関する。本発明は、特に、コンピュータゲーム内のオブジェクトの動きを、コントローラを用いて制御することに関する。
【背景技術】
【０００２】
コンピュータゲームのプレイヤが右手用と左手用の２つのコントローラを左右に傾けることによってゲーム内のオブジェクト（例えば車や人物キャラクタ）を操作することが可能なゲーム装置が知られている（例えば、特許文献１、特許文献２、及び非特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−０３０７０９号公報
【特許文献２】特開２０１３−０１３７３９号公報
【非特許文献】
【０００４】
【非特許文献１】「Ｏｃｕｌｕｓ  Ｔｏｕｃｈ」、［ｏｎｌｉｎｅ］、［平成２７年１０月１４日検索］、インターネット＜https://www.oculus.com/en-us/rift/#oculus-touch＞
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記のような従来技術に鑑み、本発明の目的の１つは、右手用と左手用の２つのコントローラを用いる場合に適したゲーム内オブジェクトの操作方法を提供することにある。
【課題を解決するための手段】
【０００６】
上述した課題を解決するために、本発明の一態様は、ユーザの右手に把持される右手用コントローラと、前記ユーザの左手に把持される左手用コントローラと、前記右手用コントローラの向き及び前記左手用コントローラの向きをそれぞれ検出すると共に、前記右手用コントローラの位置及び前記左手用コントローラの位置をそれぞれ検出する検出手段と、前記向きの検出結果に基づいて前記右手用コントローラと前記左手用コントローラの相対的な向きを判定すると共に、前記位置の検出結果に基づいて前記右手用コントローラと前記左手用コントローラの相対的な位置を判定する判定手段と、前記右手用コントローラと前記左手用コントローラの相対的な向き、及び前記右手用コントローラと前記左手用コントローラの相対的な位置に基づいて操作対象オブジェクトの動きを制御する制御手段と、を備える制御システムである。
【０００７】
また、本発明の他の一態様は、コンピュータに、ユーザの右手に把持される右手用コントローラの向き及び前記ユーザの左手に把持される左手用コントローラの向きをそれぞれ検出するステップと、前記右手用コントローラの位置及び前記左手用コントローラの位置をそれぞれ検出するステップと、前記向きの検出結果に基づいて前記右手用コントローラと前記左手用コントローラの相対的な向きを判定するステップと、前記位置の検出結果に基づいて前記右手用コントローラと前記左手用コントローラの相対的な位置を判定するステップと、前記右手用コントローラと前記左手用コントローラの相対的な向き、及び前記右手用コントローラと前記左手用コントローラの相対的な位置に基づいて操作対象オブジェクトの動きを制御するステップと、を実行させるためのプログラムである。
【発明の効果】
【０００８】
本発明によれば、右手用と左手用の２つのコントローラを用いてゲーム内のオブジェクトを操作することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態に係るゲームシステム１００のハードウェア構成図である。
【図２】コントローラ３００の外形の一例を表す図である。
【図３】本発明の一実施形態に係るゲーム機２００の機能的な構成を示すブロック図である。
【図４】操作対象オブジェクトの動きの制御の第１の例を示す図である。
【図５】操作対象オブジェクトの動きの制御の第２の例を示す図である。
【図６】操作対象オブジェクトの動きの制御の第３の例を示す図である。
【図７】本発明の一実施形態に係るゲーム機２００の処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１０】
［本発明の実施形態の説明］
最初に、本発明の実施形態の内容を列記して説明する。本発明の一実施形態は、以下のような構成を備える。
【００１１】
（項目１）ユーザの右手に把持される右手用コントローラと、前記ユーザの左手に把持される左手用コントローラと、前記右手用コントローラの向き及び前記左手用コントローラの向きをそれぞれ検出すると共に、前記右手用コントローラの位置及び前記左手用コントローラの位置をそれぞれ検出する検出手段と、前記向きの検出結果に基づいて前記右手用コントローラと前記左手用コントローラの相対的な向きを判定すると共に、前記位置の検出結果に基づいて前記右手用コントローラと前記左手用コントローラの相対的な位置を判定する判定手段と、前記右手用コントローラと前記左手用コントローラの相対的な向き、及び前記右手用コントローラと前記左手用コントローラの相対的な位置に基づいて操作対象オブジェクトの動きを制御する制御手段と、を備える制御システム。
【００１２】
（項目２）前記制御手段は、前記右手用コントローラと前記左手用コントローラが前記ユーザに対して右方向に傾けられ、且つ前記右手用コントローラが前記左手用コントローラよりも下方に配置された場合に、前記操作対象オブジェクトを右方向へ動かすように制御を行い、前記右手用コントローラと前記左手用コントローラが前記ユーザに対して左方向に傾けられ、且つ前記右手用コントローラが前記左手用コントローラよりも上方に配置された場合に、前記操作対象オブジェクトを左方向へ動かすように制御を行う、項目１に記載の制御システム。
【００１３】
（項目３）前記制御手段は、前記右手用コントローラと前記左手用コントローラが前記ユーザに対して右方向に傾けられ、且つ前記右手用コントローラと前記左手用コントローラが同一円周上を右回りに動かされた場合に、前記操作対象オブジェクトを右方向へ動かすように制御を行い、前記右手用コントローラと前記左手用コントローラが前記ユーザに対して左方向に傾けられ、且つ前記右手用コントローラと前記左手用コントローラが同一円周上を左回りに動かされた場合に、前記操作対象オブジェクトを左方向へ動かすように制御を行う、項目２に記載の制御システム。
【００１４】
（項目４）前記制御手段は、前記右手用コントローラと前記左手用コントローラが前記ユーザに対して互いに異なる方向に傾けられた場合に、前記操作対象オブジェクトの前後方向の動きに変化を生じさせる、項目１から３のいずれか１項に記載の制御システム。
【００１５】
（項目５）前記操作対象オブジェクトは、コンピュータゲーム内で前記ユーザが操縦可能なオブジェクトであり、前記制御手段による前記操作対象オブジェクトの動きの制御は、前記操作対象オブジェクトが前記右手用コントローラと前記左手用コントローラの相対的な向き及び相対的な位置に応じてコンピュータゲーム内で動くようにコンピュータゲームの画像を生成する処理である、項目１から６のいずれか１項に記載の制御システム。
【００１６】
（項目６）前記ユーザによって装着されるヘッドマウントディスプレイと、前記コンピュータゲームの画像を前記ヘッドマウントディスプレイへ出力する画像出力手段と、を更に備える、項目５に記載の制御システム。
【００１７】
（項目７）前記右手用コントローラと前記左手用コントローラの少なくとも一方は、前記操作対象オブジェクトに対する制御を無効化するための操作ボタンを備える、項目１から６のいずれか１項に記載の制御システム。
（項目８）前記右手用コントローラと前記左手用コントローラの少なくとも一方は、前記右手用コントローラ又は前記左手用コントローラの向き若しくは位置のキャリブレーションをするための操作ボタンを備える、項目１から７のいずれか１項に記載の制御システム。
【００１８】
（項目９）コンピュータに、ユーザの右手に把持される右手用コントローラの向き及び前記ユーザの左手に把持される左手用コントローラの向きをそれぞれ検出するステップと、前記右手用コントローラの位置及び前記左手用コントローラの位置をそれぞれ検出するステップと、前記向きの検出結果に基づいて前記右手用コントローラと前記左手用コントローラの相対的な向きを判定するステップと、前記位置の検出結果に基づいて前記右手用コントローラと前記左手用コントローラの相対的な位置を判定するステップと、前記右手用コントローラと前記左手用コントローラの相対的な向き、及び前記右手用コントローラと前記左手用コントローラの相対的な位置に基づいて操作対象オブジェクトの動きを制御するステップと、を実行させるためのプログラム。
【００１９】
［本発明の実施形態の詳細］
以下、図面を参照しながら本発明の実施形態について詳しく説明する。
【００２０】
図１は、本発明の一実施形態に係るゲームシステム（制御システム）１００のハードウェア構成図である。ゲームシステム１００は、コンピュータゲームを実行することによってユーザ１６０にゲーム体験を提供するように構成される。本実施形態は、ユーザ１６０の指示に応じてコンピュータゲーム内のオブジェクトの動きを制御することに関する。図示されるように、ゲームシステム１００は、ゲーム機２００と、表示装置１２０と、コントローラ３００と、トラッキングセンサ１３０とを備える。ゲーム機２００と表示装置１２０は、一例として有線ケーブル１５０によって電気的に接続され、相互に通信可能である。有線ケーブル１５０に代えて、無線接続が用いられてもよい。同様に、ゲーム機２００とコントローラ３００との間、及びゲーム機２００とトラッキングセンサ１３０との間も、有線又は無線で接続される。
【００２１】
ゲーム機２００は、コンピュータゲームプログラムに基づいてゲーム画像やゲーム音声を生成する装置である。ゲーム機２００は、プロセッサ２０２と、メモリ２０４と、周辺機器インターフェイス２０６とを少なくとも備える。ゲーム機２００は更に、その他のコンポーネントとして、ネットワーク（例えばインターネット）を介して他の装置と通信するためのネットワークインターフェイス（不図示）や、ユーザ１６０からゲーム機２００に対する操作入力を受け取るためのユーザ入力インターフェイス（例えばキーボード、マウス等）（不図示）を備えてもよい。ゲーム機２００は、コンピュータゲーム専用のゲームコンソールのほか、例えば、汎用のパーソナルコンピュータ、タブレット端末、スマートフォン等として実現することが可能である。
【００２２】
メモリ２０４には、少なくともオペレーティングシステムとコンピュータゲームプログラムとが格納されている。オペレーティングシステムは、ゲーム機２００の全体的な動作を制御するためのコンピュータプログラムである。コンピュータゲームプログラムは、ゲーム機２００が後述するゲーム処理の各機能を実現するためのプログラムである。メモリ２０４はまた、ゲーム機２００の動作によって生成されるデータを一時的又は永続的に記憶することとしてもよい。メモリ２０４の具体例は、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、ハードディスク、フラッシュメモリ、光ディスク等である。
【００２３】
プロセッサ２０２は、メモリ２０４に格納されているプログラムを読み出して、それに従った処理を実行するように構成される。プロセッサ２０２がメモリ２０４に格納されたコンピュータゲームプログラムを実行することによって、後述するゲーム処理の各機能が実現される。プロセッサ２０２は、ＣＰＵ（Central Processing Unit）及びＧＰＵ（Graphics Processing Unit）を含む。
【００２４】
周辺機器インターフェイス２０６は、ゲーム機２００に周辺機器と通信を行う能力を提供する。上述したようにゲーム機２００は、周辺機器として表示装置１２０、コントローラ３００、及びトラッキングセンサ１３０を有する。ゲーム機２００は、周辺機器インターフェイス２０６を介して、表示装置１２０、コントローラ３００、及びトラッキングセンサ１３０との間で所定のデータを伝送することができる。周辺機器インターフェイス２０６がサポートする接続方式は、有線接続及び無線接続を含む。
【００２５】
表示装置１２０は、ゲーム機２００において生成されたゲーム画像を視覚的な情報としてユーザ１６０に提供するための装置である。例えば、表示装置１２０は、図１に示されるようなヘッドマウントディスプレイ（Head Mounted Display：以下ＨＭＤと称する）として構成されてよい。あるいは、表示装置１２０は、ＨＭＤではない通常の据置型ディスプレイとして構成されてもよい。
【００２６】
表示装置１２０がＨＭＤである場合、図示されるように、ＨＭＤ１２０は、ユーザ１６０の視界を覆うようにしてユーザ１６０の頭に装着される。ＨＭＤ１２０は、ＨＭＤ１２０を装着したユーザ１６０の眼前に配置されたディスプレイ１２２を備える。ディスプレイ１２２には、ゲーム機２００から送られたゲーム画像が表示される。ディスプレイ１２２は、例えば、非透過型ディスプレイとして構成することとしてよい。この場合、ＨＭＤ１２０の外界の光景はユーザ１６０の視界から遮断され、ユーザ１６０の目にはディスプレイ１２２に映し出されたゲーム画像だけが届けられる。ＨＭＤ１２０のディスプレイ１２２に表示されるゲーム画像は、例えば、コンピュータゲームによる仮想現実空間を表す画像であってよい。ディスプレイ１２２として非透過型ディスプレイを適用したＨＭＤ１２０は、このような仮想現実空間画像によって、ユーザ１６０にコンピュータゲームの仮想現実空間へ入り込んだような感覚（没入感）を体験させることができる。
【００２７】
ＨＭＤ１２０はまた、ＨＭＤ１２０を装着したユーザ１６０の頭がどちらの方向を向いているかを検知するための不図示のセンサ（例えば、磁気センサ、角速度センサ、若しくは加速度センサのいずれか、又はこれらの組み合わせ）を備えてもよい。検知されたユーザ１６０の頭の向きは、ユーザ１６０が頭を動かした際にその動きに追従するようにディスプレイ１２２の表示画像を変化させるのに利用することとしてよい。これにより、ユーザ１６０が体感する仮想現実空間への没入感を更に高めることができる。ＨＭＤ１２０は、更に、ゲーム機２００において生成されたゲーム音声を出力するための不図示のスピーカ（ヘッドホン）を備えてもよい。
【００２８】
コントローラ３００は、ユーザ１６０がコンピュータゲーム内のオブジェクトの動きを制御するのに用いる装置である。図２は、コントローラ３００の外形の一例を表す図であり、以下の説明において図２を参照する。コントローラ３００は、ユーザ１６０が右手に持って使用する右手用コントローラ３２０と、ユーザ１６０が左手に持って使用する左手用コントローラ３３０からなる。右手用コントローラ３２０と左手用コントローラ３３０は、別体の装置として構成される。そのため、ユーザ１６０は、右手用コントローラ３２０を持った右手と左手用コントローラ３３０を持った左手を、相互に自由に動かすことができる。右手用コントローラ３２０と左手用コントローラ３３０は、それぞれ、操作ボタン３０２と、赤外線ＬＥＤ（Light Emitting Diode）３０４と、センサ３０６と、トランシーバ３０８とを備える。後述するように、赤外線ＬＥＤ３０４とセンサ３０６は、どちらか一方だけが択一的に設けられてもよい。
【００２９】
操作ボタン３０２は、ユーザ１６０からの操作入力を受け取るように構成された複数のボタン群である。例えば、操作ボタン３０２は、プッシュ式ボタン、トリガー式ボタン、及びアナログスティックを含む。プッシュ式ボタンは、指（例えば親指）で押下する動作によって操作するように構成されたボタンである。例えば、右手用コントローラ３２０の天面３２２上に２つのプッシュ式ボタン３０２ａ及び３０２ｂが設けられ、左手用コントローラ３３０の天面３３２上に２つのプッシュ式ボタン３０２ｃ及び３０２ｄが設けられる。トリガー式ボタンは、人差し指や中指で引き金を引くような動作によって操作するように構成されたボタンである。例えば、右手用コントローラ３２０には、グリップ３２４の前面部分にトリガー式ボタン３０２ｅ、グリップ３２４の側面部分にトリガー式ボタン３０２ｆがそれぞれ設けられ、左手用コントローラ３３０には、グリップ３３４の前面部分にトリガー式ボタン３０２ｇ、グリップ３３４の側面部分にトリガー式ボタン３０２ｈがそれぞれ設けられる。トリガー式ボタン３０２ｅ、３０２ｆ、３０２ｇ、３０２ｈは、それぞれ右手の人差し指、右手の中指、左手の人差し指、左手の中指で操作されることが想定されている。アナログスティックは、所定のニュートラル位置から３６０°任意の方向へ傾けて操作することが可能なスティック型のボタンである。例えば、右手用コントローラ３２０の天面３２２上にアナログスティック３０２ｉ、左手用コントローラ３３０の天面３３２上にアナログスティック３０２ｊがそれぞれ設けられる。アナログスティック３０２ｉ及び３０２ｊは、それぞれ右手と左手の親指を使って操作されることが想定されている。
【００３０】
右手用コントローラ３２０と左手用コントローラ３３０は、それぞれ、グリップ（３２４及び３３４）の両側面から天面（３２２及び３３２）とは反対側の方向へ延びて半円状のリングを形成するフレーム３２６、３３６を備える。各フレーム３２６及び３３６の外表面には、複数の赤外線ＬＥＤ３０４が埋め込まれている。例えば、複数（例えば１０個程度）の赤外線ＬＥＤ３０４が、フレーム３２６、３３６の円周方向に沿って一列に並んで設けられる。フレーム３２６、３３６の円周方向に沿って、赤外線ＬＥＤ３０４を複数列（例えば２列）配列することとしてもよい。ユーザ１６０がコントローラ３００を握る際には、ユーザ１６０の指はグリップ（３２４又は３３４）とフレーム（３２６又は３３６）との間にある。したがって、各フレーム３２６、３３６の外表面に配置された赤外線ＬＥＤ３０４は、ユーザ１６０の手や指によって覆い隠されてしまうことはない。フレーム３２６、３３６の外表面に加えて、更に、グリップ３２４及び３３４の表面のうちユーザ１６０の指で隠されない部分にも、赤外線ＬＥＤ３０４が埋め込まれてもよい。これらの赤外線ＬＥＤ３０４は、コンピュータゲームのプレイ中に赤外線を発光する。赤外線ＬＥＤ３０４から発せられた赤外光は、右手用コントローラ３２０と左手用コントローラ３３０のそれぞれの位置や姿勢（傾き、向き）を検出するのに利用可能である。
【００３１】
各コントローラ３２０、３３０の位置及び姿勢の検出を可能にするために、右手用コントローラ３２０と左手用コントローラ３３０は、赤外線ＬＥＤ３０４の代わりに、又は赤外線ＬＥＤ３０４に加えて更に、センサ３０６を内蔵する。センサ３０６は、例えば、磁気センサ、角速度センサ、若しくは加速度センサのいずれか、又はこれらの組み合わせであってよい。センサ３０６は、ユーザ１６０が各コントローラ３２０、３３０をそれぞれ右手と左手で持って動かした際に、各コントローラ３２０、３３０の向きや動きに応じた値（磁気、角速度、又は加速度の値）を出力する。センサ３０６からの出力値を適宜の方法で加工することで、右手用コントローラ３２０と左手用コントローラ３３０のそれぞれの位置及び姿勢を検出することができる。
【００３２】
トランシーバ３０８は、各コントローラ３２０、３３０とゲーム機２００との間でデータを送受信するように構成される。例えば、トランシーバ３０８は、ユーザ１６０が操作ボタン３０２を介してコントローラに与えた操作入力に基づくデータを、ゲーム機２００へ送信する。また、トランシーバ３０８は、赤外線ＬＥＤ３０４の発光をコントローラに指示する命令をゲーム機２００から受信する。更に、トランシーバ３０８は、センサ３０６によって検知した各種の値に対応するデータをゲーム機２００へ送信する。これらのデータの送受信に加えて、各コントローラがユーザ１６０の手に振動による触覚フィードバックを伝えるためのバイブレータを備える場合、トランシーバ３０８は、バイブレータに触覚フィードバックを行わせるための命令をゲーム機２００から受信することとしてもよい。ユーザ１６０が各コントローラ３２０、３３０を持った手を自由に動かせるよう、トランシーバ３０８は、無線通信によってデータを送受信するように構成されるのが好適である。
【００３３】
トラッキングセンサ１３０は、右手用コントローラ３２０と左手用コントローラ３３０のそれぞれの赤外線ＬＥＤ３０４から発せられた赤外光を検知し、各コントローラの動きを追跡する装置である。例えば、トラッキングセンサ１３０は、赤外波長領域で画像を撮像する赤外カメラとして構成され、撮像した画像のデータをゲーム機２００へ送信するのであってよい。赤外カメラによって撮像された画像は、各コントローラ３２０、３３０の表面に埋め込まれた多数の赤外線ＬＥＤ３０４の配置を反映した明暗画像である。この明暗画像に基づいて、右手用コントローラ３２０と左手用コントローラ３３０のそれぞれの位置及び姿勢（傾き、向き）が検出される。一例として、各コントローラのフレーム３２６、３３６上には、複数の赤外線ＬＥＤ３０４が一列に配列している。赤外カメラの撮像画像においてこの一列の赤外線ＬＥＤ３０４に対応する明点の並びを識別することで、各コントローラの位置と姿勢を検出することができる。
【００３４】
図３は、本発明の一実施形態に係るゲーム機２００の機能的な構成を示すブロック図である。ゲーム機２００は、記憶部２２０及び処理部２３０を有する。処理部２３０は更に、コントローラ検出部（検出手段）２３１と、コントローラ相対判定部（判定手段）２３２と、画像生成部（制御手段）２３３と、画像出力部２３４とを含む。記憶部２２０は、図１に示されたメモリ２０４に対応する。処理部２３０及び処理部２３０に含まれる各部２３１〜２３４は、図１に示されたプロセッサ２０２がメモリ２０４内のコンピュータゲームプログラムを読み出して実行することによって実現される、本発明に係るゲーム処理の機能を表す。
【００３５】
コントローラ検出部２３１は、右手用コントローラ３２０と左手用コントローラ３３０のそれぞれの姿勢（傾き、向き）を検出する。例えば、右手用コントローラ３２０と左手用コントローラ３３０は、コンピュータゲームの開始時などの初期状態において、それぞれの天面３２２、３３２を水平に向けたホームポジションに保持される。コンピュータゲームが開始されると、ユーザ１６０は、コンピュータゲーム内のオブジェクトの動きを制御するために、右手用コントローラ３２０と左手用コントローラ３３０を様々な方向に傾ける。一例として、コンピュータゲームは、レーシングカーでサーキットを走るレースゲームであってよい。この場合、操作対象のオブジェクトはレーシングカーである。ユーザ１６０は、例えば、レーシングカーの進行方向を右に向けるために、右手用コントローラ３２０と左手用コントローラ３３０を共に右へ傾けるのであってよい。また、ユーザ１６０は、レーシングカーの進行方向を左に向けるために、右手用コントローラ３２０と左手用コントローラ３３０を共に左へ傾けるのであってよい。
【００３６】
コントローラ検出部２３１は、このような各コントローラ３２０、３３０の傾きを、それぞれ別個に検出する。例えば、コントローラ検出部２３１は、トラッキングセンサ（赤外カメラ）１３０から受信される撮像画像データを利用することとしてよい。コントローラ検出部２３１は、撮像画像内で明点を識別する。上述したように、赤外カメラによって撮像された画像内の明点は、コントローラ上に設けられている赤外線ＬＥＤ３０４に対応する。コントローラ検出部２３１は、識別した複数の明点が撮像画像内においてどの方向に並んでいるかに基づいて、右手用コントローラ３２０の姿勢と、左手用コントローラ３３０の姿勢とをそれぞれ検出する。一例として、ある１つの撮像画像には、互いに左右に離れた２つの明点の集団が含まれ得る。２つの集団のうち左側の集団は、ユーザ１６０が右手で持っている右手用コントローラ３２０の赤外線ＬＥＤ３０４に対応し、右側の集団は、ユーザ１６０が左手で持っている左手用コントローラ３３０の赤外線ＬＥＤ３０４に対応するであろう。コントローラ検出部２３１は、左側の集団を構成している明点の並んでいる方向から、右手用コントローラ３２０の姿勢（傾き、向き）を判別する。例えば、明点が撮像画像内で横方向（即ち水平方向）に並んでいる場合、右手用コントローラ３２０は、フレーム３２６が水平に保持された姿勢にあると判別されることとしてよい。また例えば、撮像画像内で明点の並んでいる方向が横方向からある角度だけ斜めになっている場合、右手用コントローラ３２０は、フレーム３２６が水平から当該角度だけ傾いた姿勢にあると判別されてよい。同様にして、コントローラ検出部２３１は、右側の集団を構成している明点の並んでいる方向から、左手用コントローラ３３０の姿勢（傾き、向き）を判別する。
【００３７】
コントローラ検出部２３１はまた、トラッキングセンサ１３０からの撮像画像データに代えて、各コントローラ３２０、３３０から受信されるセンサ３０６の検知データを、各コントローラの姿勢の検出に利用することとしてもよい。例えば、右手用コントローラ３２０の三軸角速度センサ（センサ３０６）が、右手用コントローラ３２０の３つの直交する各軸回りの回転を検知する。コントローラ検出部２３１は、この検知データに基づいて、右手用コントローラ３２０がどちらの方向にどれだけ回転したかを判別し、更に、逐次判別した回転方向と回転量を累積することにより、右手用コントローラ３２０の姿勢を算出するのであってよい。同様にして、コントローラ検出部２３１は、左手用コントローラ３３０の三軸角速度センサからの検知データを用いて、左手用コントローラ３３０の姿勢を算出することとしてよい。コントローラ検出部２３１は、三軸角速度センサの検知データに加えて、例えば三軸磁気センサ及び／又は三軸加速度センサからの検知データを併用してもよい。
【００３８】
コントローラ検出部２３１は、更に、右手用コントローラ３２０と左手用コントローラ３３０のそれぞれの位置を検出する。例えば、コンピュータゲーム内のレーシングカーを操作するために、ユーザ１６０は、各コントローラを右や左に傾ける動作に加えて、各コントローラ３２０、３３０の位置を変化させてもよい。一例として、ユーザ１６０は、各コントローラ３２０及び３３０を握った右手と左手を、実際の自動車のハンドルを回すような動作で右回り又は左回りに回転させる。コントローラ検出部２３１は、例えば、上述したコントローラの姿勢の検出と同様に、トラッキングセンサ１３０から取得される撮像画像内の明点（赤外線ＬＥＤ３０４）を識別することによって、ユーザ１６０に握られた右手用コントローラ３２０と左手用コントローラ３３０がそれぞれどこに位置しているかを検出することとしてよい。一例として、コントローラ検出部２３１は、撮像画像から識別された２つの明点の集団のうち、左側の集団を構成している複数の明点の重心位置を右手用コントローラ３２０の位置と判別し、右側の集団を構成している複数の明点の重心位置を左手用コントローラ３３０の位置と判別するのであってよい。あるいはまた、コントローラ検出部２３１は、各コントローラ３２０、３３０のセンサ３０６（例えば加速度センサ）による検知データを用いて、各コントローラ３２０、３３０の位置を検出することとしてもよい。
【００３９】
コントローラ相対判定部２３２は、コントローラ検出部２３１によって検出された右手用コントローラ３２０と左手用コントローラ３３０のそれぞれの姿勢に基づいて、右手用コントローラ３２０と左手用コントローラ３３０の相対的な向きを判定する。例えば、コントローラ相対判定部２３２は、右手用コントローラ３２０と左手用コントローラ３３０がユーザ１６０から見て同じ方向に傾けられたか、あるいはユーザ１６０から見て異なる方向に傾けられたかを判定する。同じ方向に傾けられた場合とは、右手用コントローラ３２０と左手用コントローラ３３０が両方とも右方向へ傾けられた場合と、両方とも左方向へ傾けられた場合を含む。２つのコントローラ３２０、３３０の右又は左方向への傾け方の度合いは、同一角度であっても異なる角度であってもよい。異なる方向に傾けられた場合とは、一方のコントローラが右方向へ傾けられ、他方のコントローラが左方向へ傾けられた場合である。
【００４０】
コントローラ相対判定部２３２は、更に、コントローラ検出部２３１によって検出された右手用コントローラ３２０と左手用コントローラ３３０のそれぞれの位置に基づいて、右手用コントローラ３２０と左手用コントローラ３３０の相対的な位置を判定する。例えば、コントローラ相対判定部２３２は、右手用コントローラ３２０と左手用コントローラ３３０のどちらが他方より上方に位置しているかを判定する。また例えば、コントローラ相対判定部２３２は、右手用コントローラ３２０と左手用コントローラ３３０が互いの相対距離を一定に保ったまま円を描くように（ハンドルを回すような動作で）右回り又は左回りに動いたかを判定することとしてもよい。
【００４１】
画像生成部２３３は、コンピュータゲームのゲーム画像を生成する。例えば、画像生成部２３３は、記憶部２２０から所定のデータを取得し、取得したデータに基づいてコンピュータグラフィックス処理によってゲーム画像を生成する。ゲーム画像の一例は、レースゲームの画像である。レースゲーム画像は、レースゲームにおいてユーザ１６０が操作する対象である操作対象レーシングカー（操作対象オブジェクト）、操作対象レーシングカーとレースの順位を競いながらコースを走行している他のレーシングカー、コースの路面や周囲の風景などを含む。レースゲーム画像は更に、操作対象レーシングカーの走行スピードや、現在位置を表示するコースマップなど、ユーザ１６０のレース走行を補助するための各種の情報の表示を含んでもよい。レースゲーム以外の例として、ゲーム画像は、例えば、航空機を操縦するフライトシミュレーションゲームの画像であってもよい。この場合は航空機が操作対象オブジェクトである。更に別の例として、コンピュータゲーム内においてユーザ１６０が操作するゲームキャラクタ（アバター）を、操作対象オブジェクトとすることとしてもよい。
【００４２】
画像生成部２３３は、コントローラ相対判定部２３２によって判定された右手用コントローラ３２０と左手用コントローラ３３０の相対的な向きに基づいて、ゲーム画像内における操作対象オブジェクトの動きを制御する。言い換えると、画像生成部２３３は、操作対象オブジェクトが右手用コントローラ３２０と左手用コントローラ３３０の相対的な向きに応じてコンピュータゲーム内で動くように、ゲーム画像を生成する。生成されたゲーム画像は、画像出力部２３４を介して表示装置１２０へ出力され、表示装置１２０に表示される。
【００４３】
図４は、操作対象オブジェクトの動きの制御の第１の例を示す。図４（Ａ）において、右手用コントローラ３２０はユーザ１６０から見てある角度で右方向へ傾けられ、左手用コントローラ３３０も同じ角度で右方向へ傾けられている。右手用コントローラ３２０と左手用コントローラ３３０の位置は、初期位置である水平線４５０上にある。この例は、ユーザ１６０が各コントローラ３２０、３３０の位置を動かさずにその傾きだけを共に右方向へ変化させた場合を表す。右手用コントローラ３２０と左手用コントローラ３３０がこのような相対的向きにある場合、画像生成部２３３は、操作対象オブジェクト（例えばレーシングカー）がコンピュータゲーム（例えばレースゲーム）内で右方向へ進行していくゲーム画像を生成する。
【００４４】
また、図４（Ｂ）において、右手用コントローラ３２０はユーザ１６０から見てある角度で左方向へ傾けられ、左手用コントローラ３３０も同じ角度で左方向へ傾けられている。右手用コントローラ３２０と左手用コントローラ３３０は初期位置（水平線４５０上）にある。この例は、ユーザ１６０が各コントローラ３２０、３３０の位置を動かさずにその傾きだけを共に左方向へ変化させた場合を表す。右手用コントローラ３２０と左手用コントローラ３３０がこのような相対的向きにある場合、画像生成部２３３は、操作対象オブジェクトがコンピュータゲーム内で左方向へ進行していくゲーム画像を生成する。
【００４５】
また、図４（Ｃ）において、右手用コントローラ３２０はユーザ１６０から見てある角度で左方向へ傾けられ、左手用コントローラ３３０はまたある角度で反対（右）方向へ傾けられている。右手用コントローラ３２０と左手用コントローラ３３０は初期位置（水平線４５０上）にある。この例は、ユーザ１６０が各コントローラ３２０、３３０の位置を動かさずにその傾きだけをそれぞれ別方向へ変化させた場合を表す。右手用コントローラ３２０と左手用コントローラ３３０がこのような相対的向きにある場合、画像生成部２３３は、コンピュータゲーム内において操作対象オブジェクトの動きのスピードを変化させる（例えば、レーシングカーを加速又は減速（停止を含む）させる）ようなゲーム画像を生成する。
【００４６】
なお、図４（Ａ）及び（Ｂ）の例において、右手用コントローラ３２０を右方向又は左方向へ傾ける角度と、左手用コントローラ３３０を右方向又は左方向へ傾ける角度は、異なる大きさの角度であってもよい。即ち、右方向又は左方向へ傾けた２つのコントローラ３２０、３３０は、必ずしも互いに平行に保持されなくてもよい。また、図４（Ｃ）の例において、２つのコントローラ３２０、３３０を図示されるのとは逆の方向に（即ち右手用コントローラ３２０を右方向へ、左手用コントローラ３３０を左方向へ）傾けるのであってもよい。更に、図４（Ｃ）の例において、右手用コントローラ３２０が右方向へ、左手用コントローラ３３０が左方向へそれぞれ傾けられた場合に操作対象オブジェクトを加速し、これとは反対に、右手用コントローラ３２０が左方向へ、左手用コントローラ３３０が右方向へそれぞれ傾けられた場合に操作対象オブジェクトを減速することとしてもよい。
【００４７】
このように、ユーザ１６０は、右手用コントローラ３２０と左手用コントローラ３３０を同じ方向へ傾ける動作によって、コンピュータゲーム内の操作対象オブジェクトを右又は左へ動かすことができる。またユーザ１６０は、右手用コントローラ３２０と左手用コントローラ３３０を異なる方向へ傾ける動作によって、コンピュータゲーム内の操作対象オブジェクトの移動スピードを調整することができる。
【００４８】
図５は、操作対象オブジェクトの動きの制御の第２の例を示す。図５（Ａ）において、右手用コントローラ３２０はユーザ１６０から見てある角度で右方向へ傾けられ、左手用コントローラ３３０も同じ角度で右方向へ傾けられている。更に、右手用コントローラ３２０は初期位置である水平線５５０よりも下方の位置にあり、左手用コントローラ３３０は反対に水平線５５０よりも上方の位置にある。この例は、ユーザ１６０が各コントローラ３２０、３３０を共に右方向へ傾けながら位置をそれぞれ下方向、上方向に移動させた場合を表す。右手用コントローラ３２０と左手用コントローラ３３０がこのような相対的向き、及び相対的位置にある場合、画像生成部２３３は、操作対象オブジェクトがコンピュータゲーム内で右方向へ進行していくゲーム画像を生成する。
【００４９】
また、図５（Ｂ）において、右手用コントローラ３２０はユーザ１６０から見てある角度で左方向へ傾けられ、左手用コントローラ３３０も同じ角度で左方向へ傾けられている。更に、右手用コントローラ３２０は初期位置（水平線５５０）よりも上方の位置にあり、左手用コントローラ３３０は反対に初期位置よりも下方の位置にある。この例は、ユーザ１６０が各コントローラ３２０、３３０を共に左方向へ傾けながら位置をそれぞれ上方向、下方向に移動させた場合を表す。右手用コントローラ３２０と左手用コントローラ３３０がこのような相対的向き、及び相対的位置にある場合、画像生成部２３３は、操作対象オブジェクトがコンピュータゲーム内で左方向へ進行していくゲーム画像を生成する。
【００５０】
図６は、操作対象オブジェクトの動きの制御の第３の例を示す。図６（Ａ）において、右手用コントローラ３２０はユーザ１６０から見てある角度で右方向へ傾けられ、左手用コントローラ３３０も同じ角度で右方向へ傾けられている。更に、右手用コントローラ３２０は、円周６６０に沿って円周６６０上の初期位置６２０から右回りである距離だけ回転した位置にあり、左手用コントローラ３３０は、同一の円周６６０に沿って円周６６０上の初期位置６３０から同じ回転方向（右回り）に同じ距離だけ回転した位置にある。この例は、ユーザ１６０が実際の自動車のハンドルを右回りに回すような動作で、各コントローラ３２０、３３０の位置と向きを変化させていく場合を表す。右手用コントローラ３２０と左手用コントローラ３３０がこのような相対的向き、及び相対的位置に動かされた場合、画像生成部２３３は、操作対象オブジェクトがコンピュータゲーム内で右方向へ進行していくゲーム画像を生成する。
【００５１】
また、図６（Ｂ）において、右手用コントローラ３２０はユーザ１６０から見てある角度で左方向へ傾けられ、左手用コントローラ３３０も同じ角度で左方向へ傾けられている。更に、右手用コントローラ３２０は、円周６６０に沿って円周６６０上の初期位置６２０から左回りである距離だけ回転した位置にあり、左手用コントローラ３３０は、同一の円周６６０に沿って円周６６０上の初期位置６３０から同じ回転方向（左回り）に同じ距離だけ回転した位置にある。この例は、ユーザ１６０が実際の自動車のハンドルを左回りに回すような動作で、各コントローラ３２０、３３０の位置と向きを変化させていく場合を表す。右手用コントローラ３２０と左手用コントローラ３３０がこのような相対的向き、及び相対的位置に動かされた場合、画像生成部２３３は、操作対象オブジェクトがコンピュータゲーム内で左方向へ進行していくゲーム画像を生成する。
【００５２】
このように第３の例において、ユーザ１６０は、右手用コントローラ３２０を握った右手と左手用コントローラ３３０を握った左手をあたかも実際のハンドル操作のように動かす動作によって、コンピュータゲーム内の操作対象オブジェクトを右又は左へ動かすことができる。また第２の例において、右手用コントローラ３２０と左手用コントローラ３３０の動きは正確な円を描いていないが、ユーザ１６０はそのような動作であっても、操作対象オブジェクトを右又は左へ動かすことができる。
【００５３】
図７は、本発明の一実施形態に係るゲーム機２００の処理手順を示すフローチャートである。このフローチャートは、ゲーム機２００が１フレームのゲーム画像を生成する処理を表す。フローチャートの最初（ステップＳ１）から最後（ステップＳ５）までの処理が完了すると、ゲーム画像が１フレーム分生成され、その後、ゲーム画像の次の１フレームを生成するために、再びフローチャートの最初から同じ処理が繰り返される。
【００５４】
ステップＳ１において、トラッキングセンサ１３０によって撮像された撮像画像データ、又は右手用コントローラ３２０と左手用コントローラ３３０の各センサ３０６によって検知された検知データが、ゲーム機２００に受信される。
【００５５】
ステップＳ２において、コントローラ検出部２３１は、受信された撮像画像データ又は検知データに基づいて、右手用コントローラ３２０と左手用コントローラ３３０のそれぞれの姿勢を検出する。コントローラ検出部２３１は、更に、撮像画像データ又は検知データに基づいて、右手用コントローラ３２０と左手用コントローラ３３０のそれぞれの位置を検出してもよい。
【００５６】
ステップＳ３において、コントローラ相対判定部２３２は、右手用コントローラ３２０と左手用コントローラ３３０のそれぞれの姿勢に基づいて、右手用コントローラ３２０と左手用コントローラ３３０の相対的な向きを判定する。コントローラ相対判定部２３２は、更に、右手用コントローラ３２０と左手用コントローラ３３０の相対的な位置を判定してもよい。
【００５７】
ステップＳ４において、画像生成部２３３は、右手用コントローラ３２０と左手用コントローラ３３０の相対的な向きに基づいて、又は右手用コントローラ３２０と左手用コントローラ３３０の相対的な向き及び相対的な位置の両方に基づいて、ゲーム画像内の操作対象オブジェクトが動くゲーム画像を生成する。
【００５８】
ステップＳ５において、画像出力部２３４は、生成されたゲーム画像を表示装置（例えばＨＭＤ）１２０へ出力する。こうして、表示装置１２０には、右手用コントローラ３２０と左手用コントローラ３３０によってコンピュータゲーム内の操作対象オブジェクトの動きが制御されたゲーム画像が表示される。ユーザ１６０は、右手に持った右手用コントローラ３２０と左手に持った左手用コントローラ３３０をそれぞれ右や左に傾ける動作によって、操作対象オブジェクトをコンピュータゲーム内で動かすことができる。
【００５９】
以上、本発明の実施形態を説明したが、本発明はこれに限定されず、その要旨を逸脱しない範囲内において様々な変更が可能である。
【００６０】
例えば、操作ボタン３０２のうちのいずれかを「制御オフボタン」として割り当て、この制御オフボタンが押されている間は、右手用コントローラ３２０と左手用コントローラ３３０の動きに基づく操作対象オブジェクトの制御を行わないようにしてもよい。一例として、画像生成部２３３は、制御オフボタンの押下中は、（各コントローラ３２０、３３０の向きや位置によらず）操作対象オブジェクトが直進していくゲーム画像を生成することとしてよい。これにより、ユーザ１６０は、コンピュータゲームのプレイ中にも様々な操作（例えば、ゲームの設定を変更する、ゲームメニューを操作する等）を行うことができる。また例えば、押下されている制御オフボタンからユーザ１６０が指を離した時に、右手用コントローラ３２０と左手用コントローラ３３０の向き及び位置のキャリブレーションを行うようにしてもよい。一例として、コントローラ検出部２３１は、制御オフボタンが解放された時点における各コントローラ３２０、３３０の向きと位置をニュートラルポジション（ホームポジション）と認識して記憶し、その後の各コントローラ３２０、３３０の向きと位置を、ニュートラルポジションを基準として識別することとしてよい。ユーザ１６０が好みの姿勢（例えば、椅子に座った姿勢、ソファに寄りかかって少し上を向いた姿勢、ソファの上で寝転んで身体を真横にした姿勢等）をとってからキャリブレーションを行えば、その姿勢で手に持った各コントローラ３２０、３３０の向きと位置がニュートラルポジションとなる。これにより、ユーザ１６０は、様々な姿勢でコンピュータゲームをプレイすることができる。
【符号の説明】
【００６１】
１００  ゲームシステム（制御システム）
１２０  表示装置
１２２  ディスプレイ
１３０  トラッキングセンサ
２００  ゲーム機
２０２  プロセッサ
２０４  メモリ
２０６  周辺機器インターフェイス
２２０  記憶部
２３０  処理部
２３１  コントローラ検出部（検出手段）
２３２  コントローラ相対判定部（判定手段）
２３３  画像生成部（制御手段）
２３４  画像出力部
３００  コントローラ
３０２  操作ボタン
３０４  赤外線ＬＥＤ
３０６  センサ
３０８  トランシーバ
３２０  右手用コントローラ
３３０  左手用コントローラ
【図１】
2017099608.tif 000003
【図２】
2017099608.tif 000004
【図３】
2017099608.tif 000005
【図４】
2017099608.tif 000006
【図５】
2017099608.tif 000007
【図６】
2017099608.tif 000008
【図７】
2017099608.tif 000009