(57)【要約】【課題】両手持ちで操作するポインティングデバイスでポインティング操作等を行う場合の操作性を高めることが可能な情報処理プログラム等を提供すること。【解決手段】まず、操作装置、または仮想空間内に配置された当該操作装置に対応する仮想操作装置の姿勢を角速度センサからの出力に基づいて算出する。次に、この姿勢に基づいて算出される操作装置または仮想操作装置が存在する空間の座標系における第１軸方向への回転量を、当該第１軸に直交する軸である第２軸周りの回転量に基づいて変化させる。そして、この変化された第１軸方向への回転量に基づいて所定の処理を実行する。【選択図】図１３
2015139586.tif 000002
【特許請求の範囲】
【請求項１】
角速度センサを有する操作装置からの出力に基づいて所定の処理を実行する情報処理装置のコンピュータに実行させる情報処理プログラムであって、
前記コンピュータを、
前記操作装置、または仮想空間内に配置された当該操作装置に対応する仮想操作装置の姿勢を前記角速度センサからの出力に基づいて算出する姿勢算出手段と、
前記姿勢に基づいて算出される前記操作装置または前記仮想操作装置が存在する空間の座標系における第１軸方向への回転量を、当該第１軸に直交する軸である第２軸周りの回転量に基づいて変化させる回転量変化手段と、
前記回転量変化手段によって変化された前記第１軸方向への回転量に基づいて前記所定の処理を実行する処理実行手段、として機能させる、情報処理プログラム。
【請求項２】
前記処理実行手段は、前記回転量変化手段によって変化された前記第１軸方向への回転量、および、当該第１軸周りの回転量に基づいて前記所定の処理を実行する、請求項１に記載の情報処理プログラム。
【請求項３】
前記回転量変化手段は、前記第２軸周りの回転量が大きいほど、第１軸方向への回転量を大きく変化させる、請求項１または２に記載の情報処理プログラム。
【請求項４】
前記回転量変化手段は、前記第２軸周りの回転方向に応じて、前記第１軸方向のうち、回転量を大きくする方向への変化か、回転量を小さくする方向への変化かを決定する変化内容決定手段を含む、請求項１乃至３の何れか一つに記載の情報処理プログラム。
【請求項５】
前記操作装置は、ユーザの左右の手でそれぞれ把持されて操作が行われるようなハウジングを有する、請求項１乃至４の何れか１つに記載の情報処理プログラム。
【請求項６】
前記第１軸は、前記ユーザの左右の手で把持されている前記ハウジングの右手側がユーザから見て前方に移動すると、左手側がユーザから見て手前方向に移動し、当該ハウジングの右手側がユーザから見て手前側に移動すると、左手側が前方に移動するように回転をさせたときの操作装置の回転方向に沿った軸であり、
前記第２軸は、前記ユーザの左右の手で把持されている前記ハウジングの右手側がユーザから見て上方に上がると左手側が下方に下がり、当該ハウジングの右手側が下方に下がると左手側が上方に上がるように操作装置の姿勢を回転させたときの回転中心となる軸である、請求項５に記載の情報処理プログラム。
【請求項７】
前記第１軸は、重力方向に直交する軸であって、ユーザから見て左右方向に沿った軸であり、
前記第２軸は、前記第１軸および重力方向の双方に直交する軸である、請求項１乃至６の何れか１つに記載の情報処理プログラム。
【請求項８】
前記所定の処理は、所定の画面上の位置を指示するポインティング処理である、請求項１乃至７の何れか１つに記載の情報処理プログラム。
【請求項９】
前記回転量変化手段が前記仮想操作装置を用いて前記回転量を変化させる場合において、前記所定の処理は、当該仮想操作装置と同じ仮想空間に配置された仮想スクリーンに対するポインティング処理である、請求項８に記載の情報処理プログラム。
【請求項１０】
角速度センサを有する操作装置からの出力に基づいて所定の処理を実行する情報処理装置であって、
前記操作装置、または仮想空間内に配置された当該操作装置に対応する仮想操作装置の姿勢を前記角速度センサからの出力に基づいて算出する姿勢算出手段と、
前記姿勢に基づいて算出される前記操作装置または前記仮想操作装置が存在する空間の座標系における第１軸方向への回転量を、当該第１軸に直交する軸である第２軸周りの回転量に基づいて変化する回転量変化手段と、
前記回転量変化手段によって変化された前記第１軸方向への回転量に基づいて前記所定の処理を実行する処理実行手段と、を備える情報処理装置。
【請求項１１】
角速度センサを有する操作装置からの出力に基づいて所定の処理を実行する情報処理システムであって、
前記操作装置、または仮想空間内に配置された当該操作装置に対応する仮想操作装置の姿勢を前記角速度センサからの出力に基づいて算出する姿勢算出手段と、
前記姿勢に基づいて算出される前記操作装置または前記仮想操作装置が存在する空間の座標系における第１軸方向への回転量を、当該第１軸に直交する軸である第２軸周りの回転量に基づいて変化する回転量変化手段と、
前記回転量変化手段によって変化された前記第１軸方向への回転量に基づいて前記所定の処理を実行する処理実行手段と、を備える情報処理システム。
【請求項１２】
角速度センサを有する操作装置からの出力に基づいて所定の処理を実行する情報処理装置またはシステムを制御するための情報処理方法であって、
前記操作装置、または仮想空間内に配置された当該操作装置に対応する仮想操作装置の姿勢を前記角速度センサからの出力に基づいて算出する姿勢算出ステップと、
前記姿勢に基づいて算出される前記操作装置または前記仮想操作装置が存在する空間の座標系における第１軸方向への回転量を、当該第１軸に直交する軸である第２軸周りの回転量に基づいて変化する回転量変化ステップと、
前記回転量変化ステップで変化された前記第１軸方向への回転量に基づいて前記所定の処理を実行する処理実行ステップとを備える、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、角速度センサを有する操作装置からの出力に基づいて所定の処理を実行する情報処理に関し、より特定的には、操作装置の姿勢に基づいて所定の処理を行う情報処理に関する。
【背景技術】
【０００２】
従来から、ジャイロセンサを備えた入力装置が知られている。このような入力装置の中には、その前後方向を長手方向とした略直方体形状を有し、片手で把持可能な大きさの入力装置がある。そして、このような入力装置をポインティングデバイスとして用いる技術も知られている（例えば特許文献１）。このような技術では、入力装置の先端部を画面に向けてポインティング操作を行っている。そして、重力方向に沿った軸を中心として入力装置自体を回転させることで、ポインティング位置を左右方向に変化可能であった。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２０７３２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記のような技術は、入力装置として略直方体形状で片手持ちが可能なものを想定していた。ここで、上記のように入力装置自身を動かしてポインティングする操作において、この入力装置を、そのハウジングの左右端を把持して操作するような場合（両手持ちの場合）を想定する。一例として、横長の略長方形の板状のハウジングである入力装置を想定する。そして、これを両手で把持してポインティング操作する場合を考える。このポインティング操作として、入力装置の上辺側（先端側）を画面に向けてポインティング操作するような場合を想定する。このような両手持ちの場合、例えば、左右方向にポインティング位置を変化させようとすると、図１６に示すように、入力装置の先端側を左右に向けるように操作するユーザがいる一方で、図１７に示すように、先端側の向きは変えずに、入力装置をひねるようにして操作するユーザも存在する。つまり、両手持ちであるが故に、ポインティング位置を左右方向に移動させたい場合に行い得る操作が２通り考えられる。上記の技術では、前者の操作の場合であれば指示位置の左右の変化は可能ではあるが、後者の操作が行われた場合に、そのユーザに対して、十分な操作性の良さが提供できなかった。
【０００５】
それ故に、本発明の目的は、両手持ちで操作するポインティングデバイスでポインティング操作等を行う場合の操作性を高めることが可能な情報処理プログラム、情報処理装置、情報処理システム、情報処理方法を提供することである。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、例えば以下のような構成例が挙げられる。
【０００７】
構成例の一例は、角速度センサを有する操作装置からの出力に基づいて所定の処理を実行する情報処理装置のコンピュータに実行させる情報処理プログラムであり、コンピュータを、姿勢算出手段と、回転量変化手段と、処理実行手段として機能させる。姿勢算出手段は、操作装置、または仮想空間内に配置された当該操作装置に対応する仮想操作装置の姿勢を角速度センサからの出力に基づいて算出する。回転量変化手段は、姿勢に基づいて算出される操作装置または仮想操作装置が存在する空間の座標系における第１軸方向への回転量を、当該第１軸に直交する軸である第２軸周りの回転量に基づいて変化させる。処理実行手段は、回転量変化手段によって変化された第１軸方向への回転量に基づいて所定の処理を実行する。
【０００８】
上記構成例によれば、例えば入力装置自体を動かしてポインティングを行うようなポインティングデバイスにおける左右方向へのポインティング操作やカーソル移動操作等の操作性を高めることができる。
【０００９】
他の構成例として、処理実行手段は、回転量変化手段によって変化された第１軸方向への回転量、および、第１軸周りの回転量に基づいて所定の処理を実行するようにしてもよい。
【００１０】
上記構成例によれば、例えば左右方向に加えて上下方向への入力も可能となり、より操作性を高めることができる。
【００１１】
他の構成例として、回転量変化手段は、第２軸周りの回転量が大きいほど、第１軸方向への回転量を大きく変化させるようにしてもよい。更には、回転量変化手段は、第２軸周りの回転方向に応じて、第１軸方向のうち、回転量を大きくする方向への変化か、回転量を小さくする方向への変化かを決定する変化内容決定手段を含むように構成してもよい。
【００１２】
上記構成例によれば、より直感的な操作感覚を提供できる。また、第２軸周りの回転方向に応じて、回転量を大きくする方向への変化か、小さくする方向への変化かを決めることができ、より細やかな操作が可能となる。
【００１３】
他の構成例として、操作装置は、ユーザの左右の手でそれぞれ把持されて操作が行われるようなハウジングを有するものであってもよい。また、第１軸は、ユーザの左右の手で把持されているハウジングの右手側がユーザから見て前方に移動すると、左手側がユーザから見て手前方向に移動し、当該ハウジングの右手側がユーザから見て手前側に移動すると、左手側が前方に移動するように回転をさせたときの操作装置の回転方向に沿った軸であり、第２軸は、ユーザの左右の手で把持されているハウジングの右手側がユーザから見て上方に上がると左手側が下方に下がり、当該ハウジングの右手側が下方に下がると左手側が上方に上がるように操作装置の姿勢を回転させたときの回転中心となる軸であってもよい。更には、第１軸は、重力方向に直交する軸であって、ユーザから見て左右方向に沿った軸であり、第２軸は、第１軸および重力方向の双方に直交する軸であってもよい。
【００１４】
上記構成例によれば、両手持ちで、かつ、入力装置自体を動かすことで、画面上の指示位置を変化させることが可能な入力装置における操作性をより高めることができる。
【００１５】
他の構成例として、所定の処理は、所定の画面上の位置を指示するポインティング処理であってもよい。更に、回転量変化手段が仮想操作装置を用いて回転量を変化させる場合において、所定の処理は、仮想操作装置と同じ仮想空間に配置された仮想スクリーンに対するポインティング処理であってもよい。
【００１６】
上記構成例によれば、ポインティング操作における操作性をより高めることが可能となる。
【発明の効果】
【００１７】
本実施形態によれば、両手持ちのポインティングデバイスによるポインティング等の操作性をより高めることができる。
【図面の簡単な説明】
【００１８】
【図１】本実施形態の一例である情報処理システムの全体像を示す模式図
【図２】ゲーム装置３の構成の一例を示すブロック図
【図３】端末装置７の外観構成を示す図
【図４】端末装置７の構成を示すブロック図
【図５Ａ】本実施形態において実行される処理の概要を説明するための図
【図５Ｂ】本実施形態において実行される処理の概要を説明するための図
【図５Ｃ】本実施形態において実行される処理の概要を説明するための図
【図６】本実施形態において実行される処理の概要を説明するための図
【図７Ａ】本実施形態において実行される処理の概要を説明するための図
【図７Ｂ】本実施形態において実行される処理の概要を説明するための図
【図７Ｃ】本実施形態において実行される処理の概要を説明するための図
【図８Ａ】本実施形態において実行される処理の概要を説明するための図
【図８Ｂ】本実施形態において実行される処理の概要を説明するための図
【図９】本実施形態において実行される処理の概要を説明するための図
【図１０】本実施形態において実行される処理の概要を説明するための図
【図１１】本実施形態において実行される処理の概要を説明するための図
【図１２】本実施形態の処理において用いられる各種データを示す図
【図１３】アシスト処理の詳細を示すフローチャート
【図１４】ひねり方向の算出手法を説明するための図
【図１５】ひねり方向の算出手法を説明するための図
【図１６】入力装置の操作の一例を示す図
【図１７】入力装置の操作の一例を示す図
【発明を実施するための形態】
【００１９】
以下、本発明の一実施形態について説明する。
【００２０】
以下、図面を参照して、本発明の一実施形態に係るゲームシステム１について説明する。図１は、ゲームシステム１の外観図である。図１において、ゲームシステム１は、テレビジョン受像器等に代表される据置型のディスプレイ装置（以下、「テレビ」と記載する）２、据置型のゲーム装置３、端末装置７を含む。ゲームシステム１は、入力装置（コントローラ）としても機能する端末装置７を用いた操作に基づいてゲーム装置３においてゲーム処理等の情報処理を実行し、当該処理によって得られる画像をテレビ２および／または端末装置７に表示するものである。
【００２１】
ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク（図示せず）が脱着可能に挿入される。
【００２２】
ゲーム装置３には、テレビ２が接続コードを介して接続される。テレビ２は、ゲーム装置３において実行されるゲーム処理によって得られるゲーム画像を表示する。なお、他の実施形態においては、ゲーム装置３と据置型のディスプレイ装置とは一体となっていてもよい。また、ゲーム装置３とテレビ２との通信は無線通信であってもよい。
【００２３】
端末装置７は、ユーザが両手で把持可能な程度の大きさであり、ユーザは端末装置７を持って動かしたりして使用することが可能である。詳細な構成は後述するが、端末装置７は、表示手段であるＬＣＤ（Ｌｉｑｕｉｄ Ｃｒｙｓｔａｌ Ｄｉｓｐｌａｙ：液晶表示装置）７１、および、入力手段（各種ボタンや後述するモーションセンサ８２等）を備える。端末装置７とゲーム装置３とは無線（有線であってもよい）によって通信可能である。端末装置７は、自機に対して行われた操作の内容を表す操作データをゲーム装置３に送信する。また、端末装置７は、ゲーム装置３で生成された画像（例えばゲーム画像）のデータをゲーム装置３から受信し、画像をＬＣＤ７１に表示することが可能である。
【００２４】
図２は、情報処理装置の一例であるゲーム装置３のブロック図である。図２において、ゲーム装置３は、ＣＰＵ（制御部）１１およびメモリ１２、システムＬＳＩ１３、コーデックＬＳＩ１５，端末装置通信部１６、およびＡＶ−ＩＣ（Ａｕｄｉｏ  Ｖｉｄｅｏ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）２０等を有する。
【００２５】
ＣＰＵ１１は、メモリ１２やシステムＬＳＩ１３等を用いて所定の情報処理プログラム（本実施形態ではゲームプログラム）を実行する。これにより、ゲーム装置３における各種機能（例えば、ゲーム処理）が実現される。ＣＰＵ１１は、システムＬＳＩ１３に接続されている。なお、単一のＣＰＵ１１を有する構成に限らず、他の実施形態では、例えば複数のプロセッサを有する構成とし、当該複数のプロセッサで後述するような処理を分散処理するようにしてもよい。
【００２６】
システムＬＳＩ１３には、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１７、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１８、入出力プロセッサ１９、等が含まれる。ＧＰＵ１７は、ＣＰＵ１１からのグラフィクスコマンド（作画命令）に従って画像を生成する。ゲーム装置３は、テレビ２に表示するゲーム画像と、端末装置７に表示するゲーム画像との両方を生成可能である。なお、本実施形態では、ゲーム画像は、テレビ２にのみ表示される場合を例として説明する
【００２７】
ＤＳＰ１８は、オーディオプロセッサとして機能し、メモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。
【００２８】
入出力プロセッサ１９は、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ１９は、コーデックＬＳＩ１５、ＡＶ−ＩＣ２０に接続される。コーデックＬＳＩ１５は端末装置通信部１６に接続され、端末装置通信部１６には図示しないアンテナが接続される。コーデックＬＳＩ１５は、端末装置７との間で画像や音声データ等を送受信する際の圧縮・伸長処理のために用いられる。入出力プロセッサ１９は、端末装置通信部１６を介して、端末装置７との間でデータの送受信を実行したりする。例えば、入出力プロセッサ１９は、端末装置７から送信される操作データを受信し、メモリ１２のバッファ領域に記憶（一時記憶）する。
【００２９】
また、ゲーム装置３において生成される画像および音声のうちで、テレビ２において出力される画像および音声のデータは、ＡＶ−ＩＣ２０によって読み出される。ＡＶ−ＩＣ２０は、図示しないＡＶコネクタを介して、読み出した画像データをテレビ２に出力するとともに、読み出した音声データをテレビ２に内蔵されるスピーカ２Ｌおよび２Ｒに出力する。これによって、テレビ２に画像が表示されるとともにスピーカ２Ｌおよび２Ｒから音声が出力される。
【００３０】
また、ゲーム装置３は、端末装置７から各種データを受信可能である。例えば、端末装置７は、操作データを送信する。入出力プロセッサ１９は、端末装置７から受信したデータを、メモリ１２のバッファ領域に記憶（一時記憶）する。
【００３１】
次に、図３を参照して、端末装置７の構成について説明する。図３は、端末装置７の外観構成を示す図である。図３における（ａ）図は端末装置７の正面図であり、（ｂ）図は上面図であり、（ｃ）図は右側面図であり、（ｄ）図は下面図である。
【００３２】
図３に示されるように、端末装置７は、大略的には横長の長方形の板状形状であるハウジング７０を備える。ハウジング７０は、ユーザが左右の手で把持することができる程度の大きさである。したがって、ユーザは、端末装置７を持って、端末装置自体を動かすことができる。
【００３３】
端末装置７は、ハウジング７０の表面にＬＣＤ７１を有する。ＬＣＤ７１は、ハウジング７０の表面の中央付近に設けられる。また、端末装置７は、操作手段の一つとして、ＬＣＤ７１の画面上にタッチパネル７２を有する。更に、端末装置７は、操作手段の一つとして、２つのアナログスティック７５Ｌおよび７５Ｒと、十字ボタン７６や複数のボタン７７（図６に示す操作部８１に相当）を備えている。各アナログスティック７５Ｌおよび７５Ｒは、方向を指示するデバイスである。
【００３４】
また、端末装置７は、音声出力手段であるスピーカを備えている。図５（ｄ）図に示すように、ハウジング７０の下側側面にはスピーカ孔７９が設けられる。スピーカの出力音はこのスピーカ孔７９から出力される。本実施形態では、端末装置７は２つのスピーカを備えており、左スピーカおよび右スピーカのそれぞれの位置にスピーカ孔７９が設けられる。
【００３５】
次に、図４を参照して、端末装置７の内部構成について説明する。図４は、端末装置７の内部構成を示すブロック図である。図４に示すように、端末装置７は、図３に示した構成の他、制御部８３、無線通信部８４、モーションセンサ８２等を備える。これらの電子部品は、電子回路基板上に実装されてハウジング７０内に収納される。
【００３６】
モーションセンサ８２は、端末装置７の姿勢を検出するためのセンサである。本実施形態では、当該モーションセンサ８２として、加速度センサ、角速度センサ、磁気センサが備えられている。なお、本実施形態では、主に角速度センサから出力される角速度データを用いて、端末装置７の姿勢を検出する処理を行う。
【００３７】
制御部８３は、ＵＩコントローラ８５やコーデック部８６等を含む。ＵＩコントローラ８５は、各種の入出力部に対するデータの入出力を制御する。コーデック部８６は、ゲーム装置３へ送信するデータに対する圧縮処理、および、ゲーム装置３から送信されたデータに対する伸張処理を行う。制御部８３は、タッチパネル７２、操作部８１（アナログスティック７５Ｌおよび７５Ｒ、十字ボタン７６、複数のボタン７７）、モーションセンサ８２から得られた操作データを、端末操作データとして無線通信部８４を介してゲーム装置３へ送信する。また、ゲーム装置３から端末装置７へは、圧縮された画像データおよび音声データが送信可能である。このようなデータが送信された場合、これらのデータは無線通信部８４を介して制御部８３に送られる。制御部８３（のコーデック部８６）は、受信した画像データおよび音声データを伸張する。伸張された画像データはＬＣＤ７１へ出力され、画像がＬＣＤ７１に表示される。また、伸張された音声データは図示しないサウンドＩＣへ出力され、サウンドＩＣは図示しないスピーカから音を出力させる。
【００３８】
次に、本実施形態にかかる情報処理システムで実行される情報処理の動作概要を説明する。本実施形態にかかる処理は、画面上の位置を指示すること（ポインティング）に関する処理である。より具体的には、上記端末装置７をポインティングデバイス（以下、ＰＤと略す）として用いる場合の処理に関する。
【００３９】
まず、以下の説明の前提として、本実施形態における端末装置７の基本的な持ち方や画面に対する端末装置７の初期姿勢について簡単に説明する。端末装置の持ち方として、本実施形態では、端末装置７を両手持ちする場合を想定する。すなわち、十字ボタン７６の有る側を左手で把持し、複数のボタン７７が有る側を右手で把持して操作する場合を想定する。また、以下の説明で出てくる実空間や仮想空間の空間座標系として、重力方向に沿った軸をｙ軸とし、横方向をｘ軸、奥行き方向をｚ軸として説明する。
【００４０】
また、本実施形態では、端末装置７の上面側（図３（ａ）のｚ軸正方向）を画面に向けることで（つまり、端末装置７の姿勢を変化させることで）、ポインティング操作を行うものとする。そして、以下に説明する処理に際しての端末装置７の初期姿勢として、端末装置７の正面側（ＬＣＤ７１のある面、図３（ａ）のｙ軸正方向）を真上に向け、端末装置７の上面側（図３（ａ）のｚ軸正方向）を画面に向けた姿勢を初期姿勢として説明する。また、テレビ２の画面と端末装置７との位置関係に関しては、当該初期姿勢における上面側の略中央が画面の中心と対面しているような場合を想定する。図５Ａ〜Ｃは、当該初期姿勢を示すための図である。図５Ａは、実空間の座標系の上面から見た様子を示す。図５Ｂは、画面の正面側、端末装置の下面側から見た図を示す。図５Ｃは、テレビ２、および端末装置７の右側面側から見た図を示す。そして、このような姿勢の場合、ポインティング位置は、図６に示すように、画面の中央であるものとする。
【００４１】
なお、この初期姿勢は、以下の説明の便宜上用いている姿勢であり、他の実施形態では、必ずしもこのような姿勢に限るものではない。例えば、端末装置７の背面側を画面に向けてポインティング操作を行うような場合でも、後述する処理の適用は可能である（この場合、例えば、ｚ軸正方向をｙ軸負方向に置き換える等の軸方向の対応付けの調整を行えばよい）。
【００４２】
次に、上記のような持ち方や姿勢を前提として、端末装置７のｚ軸正方向（以下、先端方向と呼ぶ）を画面に向けることで、ポインティング操作を行う場合を考える。特に、本実施形態では、画面の左右方向（水平方向）への変化を伴うポインティング操作を行う場合を考える。この場合、例えば初期のポインティング位置が画面の中央であるとして、端末装置７の位置は変化させずに、右方向にポインティング位置を移動したい場合、その操作として、次のような操作が考えられる。まず、端末装置７を、そのｙ軸周りに右に回転させるような操作が考えられる。図７Ａ〜Ｃは、このような操作を示すための模式図である。図７Ａは、実空間の上面からみた図を示す。この図で示されるように、端末装置７の先端方向が初期位置よりも少し右を向くように、端末装置７の姿勢が変化している。図７Ｂは、端末装置７の下面側から見た図を示す。この図では、端末装置の姿勢は、ｙ軸を中心とした回転が行われたのみで、その他の軸周りの回転は行われていないことを示す。そして、図７Ｃは、この場合のポインティング位置を示す。画面中央から少し右の位置がポインティング位置となっている。つまり、端末装置７の先端方向を右方向に向けるという操作である。
【００４３】
ここで、本実施形態では、上記のように、端末装置７を両手持ちしている。このような持ち方であるが故に、人によっては、ポインティング位置を左右方向に移動させたい場合、次のような操作を行うことも考えられる。すなわち、端末装置７を、そのｚ軸を中心に回転させる（端末装置７をひねる）ことで、ポインティング位置の左右方向への変化を行おうとする操作である。図８Ａ〜Ｂは、このような操作の例を示す模式図である。図８Ａは、実空間の上面から見た様子を示し、図８Ｂは、端末装置７の下面側からみた様子を示す。このような操作の場合、端末装置７のｚ軸周りの回転（ひねり）のみ行われ、端末装置７の先端方向の向きは変わっていないことになる。そのため、端末装置７自体の先端方向の向きに基づいて考えると、ポインティング位置は変化していないことになる。
【００４４】
そこで、本実施形態では、次のような制御を行うことで、図８Ａ、Ｂで示したような操作（以下、ひねり操作と呼ぶ）が行われた場合もポインティング位置を左右方向に変化させ、操作性の向上を図っている。換言すれば、ひねり操作の場合、ポインティング操作のアシストを行っている。
【００４５】
以下、本実施形態における制御の原理・概要を説明する。本実施形態では、上記のようなひねり操作でもポインティング位置を変化させるために、仮想ポインティングデバイス（以下、仮想ＰＤ）、および仮想スクリーンという概念を利用する。すなわち、仮想空間内に、実空間における端末装置７に対応する仮想ＰＤを配置する、また、実空間のテレビ２の画面に対応する仮想スクリーンも配置する。これらの位置関係は、実空間における端末装置７とテレビ２の位置関係と同じものとする。また、仮想スクリーンのサイズ（解像度）はテレビ２の画面のサイズ（解像度）と同じであるものとする。また、仮想ＰＤの初期姿勢は、上述した初期姿勢と同じ姿勢であるとする。また、仮想スクリーンの姿勢に関して、そのスクリーン平面が仮想空間における重力方向に平行になるような姿勢で配置されるとする。また、仮想スクリーンの座標系は仮想空間の空間座標系と一致するものとする。
【００４６】
まず、端末装置７に上記のひねり操作が行われると、モーションセンサ８２からの出力に基づき、そのひねり方向（傾きの度合い）が算出される。次に、このひねり方向に基づいて、仮想ＰＤの先端方向（ｚ軸方向）を仮想スクリーンの座標系（仮想空間の空間座標系）を基準として、その左右方向（ｘ軸方向）に沿って適宜変化させる。換言すれば、仮想ＰＤの姿勢をｘｙｚの３軸ベクトルで示した場合のｚ軸成分を変化させる。図９および図１０は、このような場合の実空間における端末装置７と仮想空間の仮想ＰＤの様子を示した図である。図９は、実空間および仮想空間の上方からみた様子を示す。図１０は、テレビ２および仮想スクリーンそれぞれの正面側から見た様子を示す。これらの図で示されるように、実空間では、端末装置７のｚ軸を中心とした（時計回りの）回転のみが加えられた姿勢であるのに対し、仮想ＰＤは、ひねり方向（この場合、右側）に基づいた、仮想ＰＤのｙ軸中心の回転が更に加えられた姿勢となる。その後、仮想ＰＤのｘ軸方向、ｙ軸方向の姿勢を当該変化後のｚ軸成分に合わせるように調整する。そして、この仮想ＰＤの姿勢（主に先端方向の向き）に基づいて仮想スクリーン上のポインティング位置を算出し（図１１参照）、これをテレビ２の画面上のポインティング位置として反映させるという制御を行う。
【００４７】
このような処理を行うことで、上記図７Ａ〜Ｂで示したような操作の場合でも、図８Ａ〜Ｂで示したようなひねり操作の場合でも、いずれの場合でもポインティング位置を左右方向に変化させることができ、操作性を向上させることが可能となる。
【００４８】
次に、図１２〜図１５を参照して、本実施形態におけるゲーム装置３で実行される処理をより詳細に説明する。
【００４９】
図１２は、ゲーム装置３のメモリ１２に格納されるプログラムおよび情報の一例を示している。メモリ１２には、ゲーム処理プログラム２０１、操作データ２０２、処理用データ２０４等が格納される。
【００５０】
ゲーム処理プログラム２０１は、上記ポインティング処理等を含むゲーム処理を実行するためのプログラムである。具体的には、後述する図１３のフローチャート処理を実行するためのプログラムである。
【００５１】
操作データ２０２は、端末装置７を用いてゲーム装置３に対して行われた各種操作を示すデータである。操作データ２０２には、モーションセンサデータ２０３等が含まれる。モーションセンサデータ２０３は、上記モーションセンサ８２から出力される加速度データや角速度データを含む。
【００５２】
処理用データ２０４には、仮想ＰＤ姿勢データ２０５、仮想スクリーン姿勢データ２０６、ひねり方向データ２０７等が含まれる。
【００５３】
仮想ＰＤ姿勢データ２０５は、仮想ＰＤの姿勢を示すためのデータである。本実施形態では、ｘｙｚの３軸成分から構成される３軸のベクトル（以下、姿勢ベクトルと呼ぶこともある）で示されるデータであるとする。具体的には、仮想ＰＤの姿勢に関しては、図３のｚ軸方向（先端方向）については、（Ｚｘ，Ｚｙ，Ｚｚ）で示され、上記図３のｘ軸方向（右方向）については、（Ｘｘ，Ｘｙ，Ｘｚ）で示され、ｙ軸方向（上方向）については、（Ｙｘ，Ｙｙ，Ｙｚ）で示される。
【００５４】
仮想スクリーン姿勢データ２０６は、仮想スクリーンの姿勢を示すためのデータである。このデータも、ｘｙｚの３軸成分から構成される３軸のベクトルで示されるデータであるとする。具体的には、奥行き方向については（Ｖｘ、Ｖｙ，Ｖｚ）で示され、横軸方向（右方向）は（Ｗｘ，Ｗｙ，Ｗｚ）と示され、縦軸方向（上方向）は（Ｕｘ，Ｕｙ，Ｕｚ）と示される。本実施形態では、上記のようにスクリーン平面が仮想空間における重力方向に平行になるような姿勢が仮想スクリーン姿勢データ０２６として予め設定されているものとする。
【００５５】
ひねり方向データ２０７は、端末装置７を、自身のｚ軸周りに回転させる操作、すなわちひねり操作が行われたときの、そのひねり方向を示すためのデータである。詳細は後述するが、本実施例では、仮想スクリーンに対して仮想ＰＤの上方向がどの方向を向いているかを（Ｎｘ、Ｎｙ）という変数で捉える。ひねっていない状態であれば、（Ｎｘ、Ｎｙ）は（０，１）であるとする。
【００５６】
その他、仮想スクリーンのサイズ（解像度等）を示すデータや、仮想空間内における仮想ＰＤと仮想スクリーンの配置座標を示すデータ等、ゲーム処理に必要な各種データも処理用データ２０４の一部として適宜作成され、メモリ１２に記憶される。
【００５７】
次に、図１３のフローチャートを参照して、ゲーム装置３のＣＰＵ１１によって実行される処理の流れを説明する。なお、ここでは、上述したポインティング制御に関する処理についてのみ説明し、その他のゲーム処理の説明は省略する。また、本実施形態では、この処理は、１フレーム毎に繰り返し実行される処理である。
【００５８】
まず、ステップＳ１で、モーションセンサ８２からの出力に基づいて、仮想ＰＤの姿勢が算出される。より具体的には、操作データ２０２に含まれる角速度データに基づいて、仮想ＰＤの姿勢が３軸ベクトルの姿勢ベクトルとして算出される。また、この姿勢算出に際しては、角速度データだけでなく、加速度データを併用して姿勢を算出してもよい。そして、当該姿勢を示す３軸ベクトルのデータが上記仮想ＰＤ姿勢データ２０５として記憶される。なお、この時点では、仮想ＰＤの姿勢は、端末装置７の姿勢と一致することになる。
【００５９】
次に、ステップＳ２で、仮想スクリーンに対しての仮想ＰＤのひねり方向が算出される。本実施形態では、次のような手法でこの算出が行われる。まず、図１４に示すように、仮想ＰＤの上方向（姿勢のｙ軸成分）を示す矢印を仮想スクリーンに投影する。そして、図１５で示すように、この投影された矢印の傾き具合を、（Ｎｘ、Ｎｙ）として算出し、ひねり方向データ２０７としてメモリ１２に格納する。なお、この矢印の傾き具合（ひねり方向）は、仮想ＰＤのｚ軸周りの回転量を示すものともいえる。具体的には、次のような式によって算出する。
Nx＝Yx×Wx＋Yy×Wy＋Yz×Wz  ・・・式１
Ny＝Yx×Ux＋Yy×Uy＋Yz×Uz  ・・・式２
上記の式は、Ｎｘ、Ｎｙの内積を求める式といえる。更に、内積を求めただけでは長さが不定であるため、これを正規化して長さを１とする。
【００６０】
図１３に戻り、次に、ステップＳ３で、仮想ＰＤの先端方向（仮想ＰＤの姿勢ベクトルのｚ軸成分）を、上記Ｎｘに基づいて仮想スクリーンの左右方向（仮想スクリーン座標系のｘ軸方向）に変化させる処理が実行される。つまり、仮想ＰＤのローカル座標系ではなく、仮想スクリーンの座標系を基準として、仮想ＰＤの先端方向の向きを変化させることになる。具体的には、次の式によって、仮想ＰＤの姿勢ベクトルのｚ軸成分が更新される。
（Zx,Zy,Zz）＝（Zx,Zy,Zz）＋Nx×M×（Wx,Wy,Wz）・・・式３
ここで、定数Ｍは変化させるときの強度を示す定数であり、予め設定されている。この値が０であれば変化無しの状態（つまり、ｚ軸成分は変化しない）となり、この値が高いほど、より多くの変化がｚ軸成分に与えられることになる。また、当該ｚ軸成分の長さについても１に正規化される。
【００６１】
次に、ステップＳ４で、上記変化後のｚ軸成分に合わせるように、仮想ＰＤのｘ軸成分を調整するための処理が実行される。具体的には、仮想ＰＤの姿勢のｚ軸成分（Ｚｘ，Ｚｙ，Ｚｚ）と、ｙ軸成分（Ｙｘ，Ｙｙ，Ｙｚ）との外積が算出され、その結果が新たなｘ軸成分（Ｘｘ，Ｘｙ，Ｘｚ）とされる。更に、当該ｘ軸成分の長さが１に正規化される。
【００６２】
次に、ステップＳ５で、上記変化後のｚ軸成分に合わせるように、仮想ＰＤのｙ軸成分を調整するための処理が実行される。具体的には、仮想ＰＤの姿勢のｘ軸成分（Ｘｘ，Ｘｙ，Ｘｚ）と、ｚ軸成分（Ｚｘ，Ｚｙ，Ｚｚ）との外積が算出され、その結果が新たなｙ軸成分（Ｙｘ，Ｙｙ，Ｙｚ）とされる。なお、上記ステップＳ３，Ｓ４においてｚ軸成分とｘ軸成分の長さが１に正規化されているため、ここでのｙ軸成分の正規化は不要である。
【００６３】
次に、ステップＳ６で、上記のような調整が行われた仮想ＰＤの姿勢、特に先端方向の向きに基づいて、仮想スクリーン上の指示位置が算出される。そして、この指示位置を、テレビ２の画面上の指示位置として反映する処理が実行される。以上で、本実施形態にかかる処理は終了する。
【００６４】
このように、本実施形態では、端末装置７のひねり方向に基づき、仮想ＰＤの先端方向を仮想スクリーン座標系の左右方向に変化させている。そして、この変化後の仮想ＰＤの先端方向に基づいて指示位置を算出するようにしている。これにより、端末装置７をｙ軸周りに回転させる操作（先端方向を傾ける場合）でも、ｚ軸周りに回転させる操作（ひねり操作）の場合でも、いずれの場合でも画面上の指示位置の左右方向の変化を行うことができる。
【００６５】
なお、双方の操作が一緒に行われた場合は、それぞれの左右方向の変化が加算される結果となる。例えば、端末装置７を、自身のｙ軸周りに右に回転させる操作が行われ、この操作では指示位置が、仮に“１”の距離だけ右方向に移動できるとする。また、この操作と同時に、あるいはこの操作の後で、自身のｚ軸周りに回転させる操作を行い、この操作では“２”の距離だけ右方向に移動できるとする。このような場合、結果としては、右方向に“３”の距離の移動という結果となる。
【００６６】
また、例えば、一旦端末装置７をｙ軸周りに右に回転させる操作が行われ、“１”の距離だけ右に指示位置が移動した状態で、その後、端末装置７をｚ軸周りに左方向に回転させたとする。そして、この左方向のひねり操作では指示位置が左に“１”の距離だけ移動できるとする。このような場合は、指示位置の変化としては、ｙ軸周りに右に回転させる操作によって一旦右に移動した後、ひねり操作によって元の指示位置に戻るような動きとなる。このように、端末装置のｙ軸周りの回転による操作とｚ軸周りの回転による操作とを組み合わせることで、より細やかな指示位置の変化を行うことも可能となる。
【００６７】
なお、上記実施形態では、仮想ＰＤの姿勢をひねり方向（変数Ｎｘ）に基づいて変更し、その後、指示位置を算出していた。他の実施形態では、先に仮想スクリーン上での指示位置を算出し、この座標を上記変数Ｎｘに基づいて変化させ、テレビ２の指示位置として反映させるようにしてもよい。
【００６８】
また、上記実施形態では、モーションセンサ８２からの出力に基づいて仮想空間に配置された仮想ＰＤの姿勢ベクトルを算出していた。そして、仮想スクリーンの座標系を基準として、仮想ＰＤの先端方向を変化させていた。これに限らず、他の実施形態では、ポインティングする横方向をｘ軸とし、ポインティングする縦方向をｙ軸となるように実空間の座標系を定義することを前提として、実空間における端末装置７の姿勢ベクトルを算出し、これに基づいて変数Ｎｘを算出してもよい。そして、実空間の座標系を基準として、端末装置７の姿勢ベクトルのｚ軸成分を変更するようにしてもよい。
【００６９】
なお、上記図１３のフローチャートの処理の、特にステップＳ３〜５は、ひねり操作の有無にかかわらず毎フレーム実行される。つまり、ひねり方向（変数Ｎｘ）が０の場合でも、上記ステップＳ３〜Ｓ５の処理は実行される。この点に関し、他の実施形態では、例えば上記ステップＳ２の処理の結果、Ｎｘが０であるか否かの判定を行い、０であれば、ステップＳ３〜Ｓ５の処理を行わないようにしてもよい。但し、例えばゲーム処理のように、１フレーム単位で同じ処理が繰り返されるような情報処理においては、上記図１３のフローのようにあえて同じ処理を繰り返させることが好ましい。変数Ｎｘが０か否かでその後の処理の実行有無が変化すると、処理負荷に変動が生じてしまうが、上記ゲーム処理のような場合は、このような処理負荷が発生するよりは、処理負荷が一定で均一的であるほうが好ましい場合が多いためである。従って、ゲーム処理以外の情報処理におけるポインティング操作であれば、上記のようなステップＳ３〜Ｓ５の処理をスキップするような処理方法を用いてもよい。
【００７０】
また、上記の例では、ポインティング操作の場合に適用する例を挙げた。他の実施形態では、ポインティング操作だけに限らず、例えば車のハンドル操作や、飛行機の操縦桿操作のような操作について上記の処理を適用することも可能である。つまり、両手持ちの入力装置自体を動かして左右方向についての入力を変化させる操作について、上記のような処理を適用することで、操作性をより高めることが可能である。また、その他、例えば、ゲーム画面に戦闘機が後方視点で表示されるようなドッグファイトゲームを想定する。更に、そのコントローラとして、入力装置自体が戦闘機の形状を有しているものを想定する。そして、この戦闘機型の入力装置自体の姿勢を変化させることで、画面内の戦闘機の姿勢を変化できるようなゲームにおいて、上述したような処理を適用することで、戦闘機の操作性をより高めることが可能となる。
【００７１】
また、上記実施形態においては、端末装置７にひねり操作が行われたときのポインティング位置を変化させるための処理が単一の装置において実行される場合を説明したが、他の実施形態においては、上記一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの一部の処理がサーバ側装置によって実行されてもよい。さらには、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該端末側装置では一部の処理が実行されてもよい。また、上記情報処理システムにおいて、サーバ側のシステムは、複数の情報処理装置によって構成され、サーバ側で実行するべき処理を複数の情報処理装置が分担して実行してもよい。
【符号の説明】
【００７２】
１  ゲームシステム
２  テレビ
３  ゲーム装置
７  端末装置
１１  ＣＰＵ
１２  メモリ
８２  モーションセンサ
【図１】
2015139586.tif 000003
【図２】
2015139586.tif 000004
【図３】
2015139586.tif 000005
【図４】
2015139586.tif 000006
【図５Ａ】
2015139586.tif 000007
【図５Ｂ】
2015139586.tif 000008
【図５Ｃ】
2015139586.tif 000009
【図６】
2015139586.tif 000010
【図７Ａ】
2015139586.tif 000011
【図７Ｂ】
2015139586.tif 000012
【図７Ｃ】
2015139586.tif 000013
【図８Ａ】
2015139586.tif 000014
【図８Ｂ】
2015139586.tif 000015
【図９】
2015139586.tif 000016
【図１０】
2015139586.tif 000017
【図１１】
2015139586.tif 000018
【図１２】
2015139586.tif 000019
【図１３】
2015139586.tif 000020
【図１４】
2015139586.tif 000021
【図１５】
2015139586.tif 000022
【図１６】
2015139586.tif 000023
【図１７】
2015139586.tif 000024