説明

情報処理プログラム、および、情報処理装置

【課題】加速度センサや角速度センサを備えた入力装置を用いたゲームにおいて、ゲームの難易度を適度なものとするゲーム装置を提供すること。
【解決手段】まず、ユーザが操作する入力装置の姿勢または動きを検出する所定の検出手段から取得する動き情報に基づいて、入力装置の移動方向を算出する。そして、仮想3次元空間内のオブジェクトの位置が、当該移動方向に基づいて当該オブジェクトを移動させたときの位置を、当該移動した方向に対して直交、あるいは、実質的に直交する方向にのみ補正した位置になるように当該オブジェクトを移動させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想3次元空間内のオブジェクトを移動させる情報処理プログラム、および、情報処理装置に関し、より特定的には、自身の動きを検出する動き検出センサを備えた入力装置から出力される動き検出信号に基づいて、仮想3次元空間内のオブジェクトを移動させる情報処理プログラム、および、情報処理装置に関する。
【背景技術】
【0002】
従来より、加速度センサやジャイロセンサを備えた入力装置を用いたゲーム装置が知られている(例えば、特許文献1)。このゲーム装置では、プレイヤは棒状の入力装置を刀と見立てて動かし、加速度センサやジャイロセンサを用いて刀を振る等の動作を検出し、ゲーム内で刀を所持したキャラクタの動作に反映させている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2000−308756号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上述したようなゲーム装置においては、以下に示す問題点があった。すなわち、上記のゲーム装置では、加速度センサやジャイロセンサにより検出された刀を振る動作が、実際にプレイヤが意図した方向に対する振る動作として認識されず、例えば、刀により所定のオブジェクトに対して切る動作を行ったつもりが、実際には所定のオブジェクトに対して切る動作が行えないことがあった。その結果、ゲームの難易度が上がってしまう事によりユーザのモチベーションを低下させることがあった。
【0005】
それ故に、本発明の目的は、加速度センサや角速度センサを備えた入力装置を用いたゲームにおいて、ゲームの難易度を適度なものとするゲーム装置を提供することである。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係の一例を示したものであって、本発明を何ら限定するものではない。
【0007】
第1の発明は、ユーザが操作する入力装置の姿勢または動きを検出する所定の検出手段から取得する動き情報に基づいて、仮想3次元空間内のオブジェクトを移動させる情報処理を行う情報処理装置のコンピュータに実行させる情報処理プログラムであって、コンピュータを、移動方向算出手段(S4)と、オブジェクト移動手段(S7)として機能させる。移動方向算出手段は、動き情報に基づき、入力装置が移動した方向を示す移動方向データを算出する。オブジェクト移動手段は、オブジェクトの位置が、移動方向データに基づいて当該オブジェクトを移動させたときの位置を、当該移動した方向に対して直交、あるいは、実質的に直交する方向にのみ補正した位置になるように当該オブジェクトを移動させる。
【0008】
第1の発明によれば、オブジェクトの移動に際して、補正を行っていることをプレイヤに気付かれにくくすることができる。
【0009】
第2の発明は、第1の発明において、所定の検出手段は入力装置に備えられている所定の動きセンサである。
【0010】
第2の発明によれば、入力装置の姿勢または動きについて、より正確に検出することが可能となる。
【0011】
第3の発明は、第1の発明において、オブジェクト移動手段は、オブジェクトを所定の目標位置に一致するように、あるいは、近づくように移動させる。
【0012】
第3の発明によれば、オブジェクトの移動について補正が行われていることをプレイヤに気付かれずに、ゲームの難易度を調整することができる。
【0013】
第4の発明は、第1の発明において、情報処理プログラムは、コンピュータを、動き情報に基づき入力装置の姿勢を示す入力姿勢を繰り返し算出する入力姿勢算出手段(S3)として更に機能させる。そして、オブジェクト移動手段は、入力姿勢算出手段によって繰り返し算出された入力姿勢に基づいた入力装置の移動方向に対して直交、あるいは、実質的に直交する方向にのみ補正した位置になるように当該オブジェクトを移動させる。
【0014】
第5の発明は、第4の発明において、オブジェクト移動手段は、入力姿勢算出手段によって繰り返し算出された入力姿勢に基づいた当該入力姿勢の変化に基づいて定まる面に対して直交、あるいは、実質的に直交する方向にのみ補正した位置になるように当該オブジェクトを移動させる。
【0015】
第4乃至第5の発明によれば、補正を行っていることをプレイヤに気付かれにくくすることができる。
【0016】
第6の発明は、第4の発明において、オブジェクト移動手段は、入力姿勢算出手段によって繰り返し算出された入力姿勢のうちの所定の2つの入力姿勢を示すベクトルの外積で定まる方向にのみ補正した位置になるように当該オブジェクトを移動させる。
【0017】
第6の発明によれば、情報処理装置の処理負荷を高めることなく補正方向を算出することができる。
【0018】
第7の発明は、第6の発明において、入力姿勢算出手段によって繰り返し算出された入力姿勢のうちの所定の2つの入力姿勢は、続けて算出された入力姿勢である。
【0019】
第7の発明によれば、プレイヤに補正を行っていることを気付かれにくくするためにより適切な補正方向を算出することができる。
【0020】
第8の発明は、第1の発明において、情報処理プログラムは、コンピュータを、入力装置の動きの大きさが所定の値より大きいか否かを判定する動き判定手段として更に機能させる。そして、オブジェクト移動手段は、動き判定手段で入力装置の動きの大きさが所定の値より大きいと判定された時に補正を行う。
【0021】
第8の発明によれば、プレイヤに、より気付かれにくい補正を行うことが可能となる。
【0022】
第9の発明は、第1または第8の発明において、オブジェクト移動手段は、入力装置の動きの大きさが大きいほど、補正方向データで示される方向への補正の大きさを大きくする。
【0023】
第9の発明によれば、プレイヤの操作内容と連動した補正が行われ、より違和感が少なく、プレイヤに気付かれにくい補正を行うことが可能となる。
【0024】
第10の発明は、第1の発明において、オブジェクト移動手段は、移動した方向に対して直交、あるいは、実質的に直交する方向を示す補正方向データを算出する補正方向算出手段(S6)を含む。そして、オブジェクトの位置が、移動方向データに基づいて当該オブジェクトを移動させたときの位置を、補正方向データで示される方向にのみ補正した位置になるように当該オブジェクトを移動させる。
【0025】
第10の発明によれば、第1の発明と同様の効果を得ることができる。
【0026】
第11の発明は、第1の発明において、動きセンサは角速度センサである。そして、動き情報は、角速度センサによって検出される角速度を含む情報である。
【0027】
第11の発明によれば、入力装置の姿勢の変化をより正確に且つ簡便に算出することができ、より適切な補正を行うことが可能となる。
【0028】
第12の発明は、ユーザが操作する入力装置の姿勢または動きを検出する所定の検出手段から取得する動き情報に基づいて、仮想3次元空間内のオブジェクトを移動させる情報処理を行う情報処理装置であって、移動方向算出手段(10)とオブジェクト移動手段(10)とを備える。移動方向算出手段は、動き情報に基づき、入力装置の移動した方向を示す移動方向を算出する。オブジェクト移動手段は、オブジェクトの位置が、移動方向に基づいて当該オブジェクトを移動させたときの位置を、当該移動した方向に対して直交、あるいは、実質的に直交する方向にのみ補正した位置になるように当該オブジェクトを移動させる。
【0029】
第12の発明によれば、第1の発明と同様の効果を得ることができる。
【発明の効果】
【0030】
本発明によれば、補正を行っていることをプレイヤに気付かれにくくしながらゲームの難易度を調整することができ、ゲームの興趣性を高めることができる。
【図面の簡単な説明】
【0031】
【図1】ゲームシステム1の外観図
【図2】ゲーム装置3の構成を示すブロック図
【図3】入力装置8の外観構成を示す斜視図
【図4】コントローラ5の外観構成を示す斜視図
【図5】コントローラ5の内部構造を示す図
【図6】コントローラ5の内部構造を示す図
【図7】入力装置8の構成を示すブロック図
【図8】本実施形態における剣オブジェクトの移動に関して説明するための図
【図9】本実施形態にかかる剣オブジェクトの移動および補正処理の概要を説明するための図
【図10】本実施形態にかかる剣オブジェクトの移動および補正処理の概要を説明するための図
【図11】本実施形態にかかる剣オブジェクトの移動および補正処理の概要を説明するための図
【図12】本実施形態にかかる剣オブジェクトの移動および補正処理の概要を説明するための図
【図13】本実施形態にかかる剣オブジェクトの移動および補正処理の概要を説明するための図
【図14】外部メインメモリ12のメモリマップを示す図
【図15】第1の実施形態にかかる処理を示すフローチャート
【図16】第1の実施形態にかかる剣オブジェクトの移動および補正の概念を示す図
【図17】第2の実施形態にかかる処理を示すフローチャート
【図18】第2の実施形態にかかる剣オブジェクトの移動および補正の概念を示す図
【発明を実施するための形態】
【0032】
以下、本発明の実施の形態について、図面を参照して説明する。尚、この実施例により本発明が限定されるものではない。
【0033】
まず、各実施形態の詳細を説明するに先立ち、各実施形態で共通して使用されるゲームシステムの構成について説明する。
【0034】
[ゲームシステムの全体構成]
図1を参照して、本発明の実施形態に係るゲーム装置を含むゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図1において、ゲームシステム1は、テレビジョン受像器(以下、単に「テレビ」と記載する)2、ゲーム装置3、光ディスク4、入力装置8、およびマーカ部6を含む。本システムは、入力装置8を用いたゲーム操作に基づいてゲーム装置3でゲーム処理を実行するものである。
【0035】
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるためのゲームプログラムが記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されているゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【0036】
ゲーム装置3には、表示装置の一例であるテレビ2が接続コードを介して接続される。テレビ2は、ゲーム装置3において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ2の画面の周辺(図1では画面の上側)には、マーカ部6が設置される。マーカ部6は、その両端に2つのマーカ6Rおよび6Lを備えている。マーカ6R(マーカ6Lも同様)は、具体的には1以上の赤外LEDであり、テレビ2の前方に向かって赤外光を出力する。マーカ部6はゲーム装置3に接続されており、ゲーム装置3はマーカ部6が備える各赤外LEDの点灯を制御することが可能である。
【0037】
入力装置8は、自機に対して行われた操作の内容を示す操作データをゲーム装置3に与えるものである。本実施形態では、入力装置8はコントローラ5とジャイロセンサユニット7とを含む。詳細は後述するが、入力装置8は、コントローラ5に対してジャイロセンサユニット7が着脱可能に接続されている構成である。コントローラ5とゲーム装置3とは無線通信によって接続される。本実施形態では、コントローラ5とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ5とゲーム装置3とは有線で接続されてもよい。
【0038】
[ゲーム装置3の内部構成]
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の構成を示すブロック図である。ゲーム装置3は、CPU10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15等を有する。
【0039】
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムLSI11の内部構成については後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11eまたは外部メインメモリ12に読み出したデータを書き込む。
【0040】
また、システムLSI11には、入出力プロセッサ(I/Oプロセッサ)11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM11d、および内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
【0041】
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。
【0042】
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。
【0043】
上述のように生成された画像データおよび音声データは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、画像がテレビ2に表示されるとともに音がスピーカ2aから出力される。
【0044】
入出力プロセッサ11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、およびメモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
【0045】
入出力プロセッサ11aは、無線通信モジュール18およびアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール18およびアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22および無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10はゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置3と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置3を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。
【0046】
また、入出力プロセッサ11aは、コントローラ5から送信される操作データをアンテナ23および無線コントローラモジュール19を介して受信し、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0047】
さらに、入出力プロセッサ11aには、拡張コネクタ20およびメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【0048】
ゲーム装置3には、電源ボタン24、リセットボタン25、およびイジェクトボタン26が設けられる。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、ゲーム装置3の各構成要素に対して、図示しないACアダプタを経て電源が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0049】
[入力装置8の構成]
次に、図3〜図6を参照して、入力装置8について説明する。図3は、入力装置8の外観構成を示す斜視図である。図4は、コントローラ5の外観構成を示す斜視図である。図3は、コントローラ5の上側後方から見た斜視図であり、図4は、コントローラ5を下側前方から見た斜視図である。
【0050】
図3および図4において、コントローラ5は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ5に設けられたボタンを押下すること、および、コントローラ5自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
【0051】
ハウジング31には、複数の操作ボタンが設けられる。図3に示すように、ハウジング31の上面には、十字ボタン32a、1番ボタン32b、2番ボタン32c、Aボタン32d、マイナスボタン32e、ホームボタン32f、プラスボタン32g、および電源ボタン32hが設けられる。本明細書では、これらのボタン32a〜32hが設けられるハウジング31の上面を「ボタン面」と呼ぶことがある。一方、図4に示すように、ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン32iが設けられる。これらの各操作ボタン32a〜32iには、ゲーム装置3が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン32hは遠隔からゲーム装置3本体の電源をオン/オフするためのものである。ホームボタン32fおよび電源ボタン32hは、その上面がハウジング31の上面に埋没している。これによって、プレイヤがホームボタン32fまたは電源ボタン32hを誤って押下することを防止することができる。
【0052】
ハウジング31の後面にはコネクタ33が設けられている。コネクタ33は、コントローラ5に他の機器(例えば、ジャイロセンサユニット7や他のコントローラ)を接続するために利用される。また、ハウジング31の後面におけるコネクタ33の両側には、上記他の機器が容易に離脱することを防止するために係止穴33aが設けられている。
【0053】
ハウジング31上面の後方には複数(図3では4つ)のLED34a〜34dが設けられる。ここで、コントローラ5には、他のメインコントローラと区別するためにコントローラ種別(番号)が付与される。各LED34a〜34dは、コントローラ5に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ5の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ5を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のLED34a〜34dのいずれか1つが点灯する。
【0054】
また、コントローラ5は撮像情報演算部35(図6)を有しており、図4に示すように、ハウジング31前面には撮像情報演算部35の光入射面35aが設けられる。光入射面35aは、マーカ6Rおよび6Lからの赤外光を少なくとも透過する材質で構成される。
【0055】
ハウジング31上面における1番ボタン32bとホームボタン32fとの間には、コントローラ5に内蔵されるスピーカ49(図5)からの音を外部に放出するための音抜き孔31aが形成されている。
【0056】
次に、図5および図6を参照して、コントローラ5の内部構造について説明する。図5および図6は、コントローラ5の内部構造を示す図である。なお、図5は、コントローラ5の上筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6は、コントローラ5の下筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6に示す斜視図は、図5に示す基板30を裏面から見た斜視図となっている。
【0057】
図5において、ハウジング31の内部には基板30が固設されており、当該基板30の上主面上に各操作ボタン32a〜32h、各LED34a〜34d、加速度センサ37、アンテナ45、およびスピーカ49等が設けられる。これらは、基板30等に形成された配線(図示せず)によってマイクロコンピュータ(Micro Computer:マイコン)42(図6参照)に接続される。本実施形態では、加速度センサ37は、X軸方向に関してコントローラ5の中心からずれた位置に配置されている。これによって、コントローラ5をZ軸回りに回転させたときのコントローラ5の動きが算出しやすくなる。また、加速度センサ37は、長手方向(Z軸方向)に関してコントローラ5の中心よりも前方に配置されている。また、無線モジュール44(図6)およびアンテナ45によって、コントローラ5がワイヤレスコントローラとして機能する。
【0058】
一方、図6において、基板30の下主面上の前端縁に撮像情報演算部35が設けられる。撮像情報演算部35は、コントローラ5の前方から順に赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を備えている。これらの部材38〜41はそれぞれ基板30の下主面に取り付けられる。
【0059】
さらに、基板30の下主面上には、上記マイコン42およびバイブレータ48が設けられている。バイブレータ48は、例えば振動モータやソレノイドであり、基板30等に形成された配線によってマイコン42と接続される。マイコン42の指示によりバイブレータ48が作動することによってコントローラ5に振動が発生する。これによって、コントローラ5を把持しているプレイヤの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ48は、ハウジング31のやや前方寄りに配置される。つまり、バイブレータ48がコントローラ5の中心よりも端側に配置することによって、バイブレータ48の振動によりコントローラ5全体を大きく振動させることができる。また、コネクタ33は、基板30の下主面上の後端縁に取り付けられる。なお、図5および図6に示す他、コントローラ5は、マイコン42の基本クロックを生成する水晶振動子、スピーカ49に音声信号を出力するアンプ等を備えている。
【0060】
また、ジャイロセンサユニット7は、3軸回りの角速度を検知するジャイロセンサ(図7に示すジャイロセンサ55および56)を有する。ジャイロセンサユニット7は、コントローラ5のコネクタ33に着脱可能に装着される。ジャイロセンサユニット7の前端(図3に示すZ軸正方向側の端部)には、コネクタ33に接続可能なプラグ(図7に示すプラグ53)が設けられる。さらに、プラグ53の両側にはフック(図示せず)が設けられる。ジャイロセンサユニット7がコントローラ5に対して装着される状態では、プラグ53がコネクタ33に接続されるとともに、上記フックがコントローラ5の係止穴33aに係止する。これによって、コントローラ5とジャイロセンサユニット7とがしっかりと固定される。また、ジャイロセンサユニット7は側面(図3に示すX軸方向の面)にボタン51を有している。ボタン51は、それを押下すれば上記フックの係止穴33aに対する係止状態を解除することができるように構成されている。したがって、ボタン51を押下しながらプラグ53をコネクタ33から抜くことによって、ジャイロセンサユニット7をコントローラ5から離脱することができる。
【0061】
また、ジャイロセンサユニット7の後端には、上記コネクタ33と同形状のコネクタが設けられる。したがって、コントローラ5(のコネクタ33)に対して装着可能な他の機器は、ジャイロセンサユニット7のコネクタに対しても装着可能である。なお、図3においては、当該コネクタに対してカバー52が着脱可能に装着されている。
【0062】
なお、図3〜図6に示したコントローラ5およびジャイロセンサユニット7の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができる。また、本実施形態では、撮像手段による撮像方向はZ軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ5における撮像情報演算部35の位置(撮像情報演算部35の光入射面35a)は、ハウジング31の前面でなくてもよく、ハウジング31の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【0063】
図7は、入力装置8(コントローラ5およびジャイロセンサユニット7)の構成を示すブロック図である。コントローラ5は、操作部32(各操作ボタン32a〜32i)、コネクタ33、撮像情報演算部35、通信部36、および加速度センサ37を備えている。コントローラ5は、自機に対して行われた操作内容を示すデータを操作データとしてゲーム装置3へ送信するものである。
【0064】
操作部32は、上述した各操作ボタン32a〜32iを含み、各操作ボタン32a〜32iに対する入力状態(各操作ボタン32a〜32iが押下されたか否か)を示す操作ボタンデータを通信部36のマイコン42へ出力する。
【0065】
撮像情報演算部35は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部35は、例えば最大200フレーム/秒程度のサンプリング周期を有するので、比較的高速なコントローラ5の動きでも追跡して解析することができる。
【0066】
撮像情報演算部35は、赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を含んでいる。赤外線フィルタ38は、コントローラ5の前方から入射する光から赤外線のみを通過させる。レンズ39は、赤外線フィルタ38を透過した赤外線を集光して撮像素子40へ入射させる。撮像素子40は、例えばCMOSセンサやあるいはCCDセンサのような固体撮像素子であり、レンズ39が集光した赤外線を受光して画像信号を出力する。ここで、テレビ2の表示画面近傍に配置されるマーカ部6のマーカ6Rおよび6Lは、テレビ2の前方に向かって赤外光を出力する赤外LEDで構成される。したがって、赤外線フィルタ38を設けることによって、撮像素子40は、赤外線フィルタ38を通過した赤外線だけを受光して画像データを生成するので、マーカ6Rおよび6Lの画像をより正確に撮像することができる。以下では、撮像素子40によって撮像された画像を撮像画像と呼ぶ。撮像素子40によって生成された画像データは、画像処理回路41で処理される。画像処理回路41は、撮像画像内における撮像対象(マーカ6Rおよび6L)の位置を算出する。画像処理回路41は、算出された位置を示す座標を通信部36のマイコン42へ出力する。この座標のデータは、マイコン42によって操作データとしてゲーム装置3に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ5自体の向き(傾斜角度)や位置に対応して変化するので、ゲーム装置3はこのマーカ座標を用いてコントローラ5の向きや位置を算出することができる。
【0067】
なお、他の実施形態においては、コントローラ5は画像処理回路41を備えていない構成であってもよく、撮像画像自体がコントローラ5からゲーム装置3へ送信されてもよい。このとき、ゲーム装置3は、画像処理回路41と同様の機能を有する回路あるいはプログラムを有しており、上記マーカ座標を算出するようにしてもよい。
【0068】
加速度センサ37は、コントローラ5の加速度(重力加速度を含む)を検出する、すなわち、コントローラ5に加わる力(重力を含む)を検出する。加速度センサ37は、当該加速度センサ37の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度(直線加速度)の値を検出する。例えば、2軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。例えば、3軸または2軸の加速度センサは、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能である種類のものでもよい。なお、加速度センサ37は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【0069】
本実施形態では、加速度センサ37は、コントローラ5を基準とした上下方向(図3に示すY軸方向)、左右方向(図3に示すX軸方向)および前後方向(図3に示すZ軸方向)の3軸方向に関してそれぞれ直線加速度を検出する。加速度センサ37は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ37からの出力は3軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、入力装置8(コントローラ5)を基準に設定されるXYZ座標系(コントローラ座標系)における3次元のベクトルとして表される。以下では、加速度センサ37によって検出される3軸に関する各加速度値を各成分とするベクトルを加速度ベクトルと呼ぶ。
【0070】
加速度センサ37が検出した加速度を示すデータ(加速度データ)は、通信部36へ出力される。なお、加速度センサ37が検出した加速度は、コントローラ5自体の向き(傾斜角度)や動きに対応して変化するので、ゲーム装置3は加速度データを用いてコントローラ5の向きや動きを算出することができる。本実施形態では、ゲーム装置3は、加速度データに基づいてコントローラ5の姿勢を判断する。
【0071】
加速度センサ37が検出した加速度(加速度ベクトル)を示すデータ(加速度データ)は、通信部36へ出力される。本実施形態において、加速度センサ37は、コントローラ5の傾斜角度を判断するためのデータを出力するセンサとして用いられる。
【0072】
なお、加速度センサ37から出力される加速度の信号に基づいて、ゲーム装置3のプロセッサ(例えばCPU10)またはコントローラ5のプロセッサ(例えばマイコン42)等のコンピュータが処理を行うことによって、コントローラ5に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ37を搭載するコントローラ5が静止状態であることを前提としてコンピュータ側の処理が実行される場合(すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合)、コントローラ5が現実に静止状態であれば、検出された加速度に基づいてコントローラ5の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサ37の検出軸が鉛直下方向を向いている状態を基準としたとき、1G(重力加速度)がかかっているか否かによって、コントローラ5が基準に対して傾いているか否かを知ることができるし、その大きさによって基準に対してどの程度傾いているかも知ることができる。また、多軸の加速度センサ37の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ5がどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ37からの出力に基づいてコントローラ5の傾斜角度を算出してもよいし、当該傾斜角度を算出せずに、コントローラ5の傾斜方向を算出するようにしてもよい。このように、加速度センサ37をプロセッサと組み合わせて用いることによって、コントローラ5の傾斜角度または姿勢を判定することができる。
【0073】
一方、コントローラ5が動的な状態(コントローラ5が動かされている状態)であることを前提とする場合には、加速度センサ37は重力加速度に加えてコントローラ5の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ5の動き方向を知ることができる。また、コントローラ5が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ5の傾きを知ることが可能である。なお、他の実施例では、加速度センサ37は、内蔵の加速度検出手段で検出された加速度信号をマイコン42に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置または他の種類の専用の処理装置を備えていてもよい。組込み式または専用の処理装置は、例えば、加速度センサ37が静的な加速度(例えば、重力加速度)を検出するために用いられる場合、加速度信号を傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
【0074】
通信部36は、マイコン42、メモリ43、無線モジュール44、およびアンテナ45を含んでいる。マイコン42は、処理を行う際にメモリ43を記憶領域として用いながら、マイコン42が取得したデータをゲーム装置3へ無線送信する無線モジュール44を制御する。また、マイコン42はコネクタ33に接続されている。ジャイロセンサユニット7から送信されてくるデータは、コネクタ33を介してマイコン42に入力される。以下、ジャイロセンサユニット7の構成について説明する。
【0075】
ジャイロセンサユニット7は、プラグ53、マイコン54、2軸ジャイロセンサ55、および1軸ジャイロセンサ56を備えている。上述のように、ジャイロセンサユニット7は、3軸(本実施形態では、XYZ軸)周りの角速度を検出し、検出した角速度を示すデータ(角速度データ)をコントローラ5へ送信する。
【0076】
2軸ジャイロセンサ55は、X軸周りの角速度およびY軸周りの(単位時間あたりの)角速度を検出する。また、1軸ジャイロセンサ56は、Z軸周りの(単位時間あたりの)角速度を検出する。なお、本明細書では、コントローラ5の撮像方向(Z軸正方向)を基準として、XYZ軸周りの回転方向を、それぞれ、ロール方向、ピッチ方向、ヨー方向と呼ぶ。すなわち、2軸ジャイロセンサ55は、ロール方向(X軸周りの回転方向)およびピッチ方向(Y軸周りの回転方向)の角速度を検出し、1軸ジャイロセンサ56は、ヨー方向(Z軸周りの回転方向)の角速度を検出する。
【0077】
なお、本実施形態では、3軸回りの角速度を検出するために、2軸ジャイロセンサ55と1軸ジャイロセンサ56とを用いる構成としたが、他の実施形態においては、3軸回りの角速度を検出することができればよく、用いるジャイロセンサの数および組み合わせはどのようなものであってもよい。
【0078】
また、本実施形態では、後述する姿勢算出処理における計算を容易にする目的で、各ジャイロセンサ55および56が角速度を検出する3つの軸は、加速度センサ37が加速度を検出する3つの軸(XYZ軸)と一致するように設定される。ただし、他の実施形態においては、各ジャイロセンサ56および57が角速度を検出する3つの軸と、加速度センサ37が加速度を検出する3つの軸とは一致しなくてもよい。
【0079】
各ジャイロセンサ55および56で検出された角速度を示すデータは、マイコン54に出力される。したがって、マイコン54には、XYZ軸の3軸回りの角度速度を示すデータが入力されることになる。マイコン54は、上記3軸回りの角速度を示すデータを角速度データとしてプラグ53を介してコントローラ5へ送信する。なお、マイコン54からコントローラ5への送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。
【0080】
コントローラ5の説明に戻り、操作部32、撮像情報演算部35、および加速度センサ37からマイコン42へ出力されたデータ、ならびに、ジャイロセンサユニット7からマイコン42へ送信されてきたデータは、一時的にメモリ43に格納される。これらのデータは、上記操作データとしてゲーム装置3へ送信される。すなわち、マイコン42は、ゲーム装置3の無線コントローラモジュール19への送信タイミングが到来すると、メモリ43に格納されている操作データを無線モジュール44へ出力する。無線モジュール44は、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ45から放射する。つまり、操作データは、無線モジュール44で微弱電波信号に変調されてコントローラ5から送信される。微弱電波信号はゲーム装置3側の無線コントローラモジュール19で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置3は操作データを取得することができる。そして、ゲーム装置3のCPU10は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。なお、通信部36から無線コントローラモジュール19への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ5の通信部36は、例えば1/200秒に1回の割合で各操作データをゲーム装置3の無線コントローラモジュール19へ出力する。
【0081】
上記コントローラ5を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ5を任意の傾斜角度に傾ける操作を行うことができる。その他、上記コントローラ5によれば、プレイヤは、コントローラ5によって画面上の任意の位置を指示する操作、および、コントローラ5自体を動かす操作を行うこともできる。
【0082】
(第1の実施形態)
次に、第1の実施形態で想定するゲームの概要について説明する。本実施形態で想定するゲームは、剣劇ゲーム等の剣を振って遊ぶゲームを想定している。プレイヤは、上記のようなジャイロセンサユニット7を備えた入力装置8を剣(の柄)に見立てて、剣を振るように入力装置8を振る操作を行う。この操作に連動して、仮想ゲーム空間内において剣オブジェクトを手にしているプレイヤオブジェクトが当該剣オブジェクトを振る動作を行う。そして、本ゲームでは、斬る対象となる「ターゲット」が画面上に表示され、このターゲットを狙って斬るような指示がプレイヤに提示される。プレイヤはこのターゲットを狙って入力装置8(仮想ゲーム空間内の剣オブジェクト)を振り、制限時間内にターゲットを斬ることができれば得点が加算されるというゲームを想定する。(なお、画面上に複数の上記ターゲット候補のオブジェクトを表示し、プレイヤが所定の操作を行うことで任意の1つのオブジェクトをターゲットとしてロックオンするようなゲームにも適用可能である。)
【0083】
ここで、剣オブジェクトの移動軌跡に関して説明する。本ゲームでは、仮想ゲーム空間内において、図8に示すように、プレイヤオブジェクト101が剣オブジェクト102を右手に持っている状態とする。そのため、剣オブジェクト102の移動軌跡については、剣の柄(剣を把持している手先の部分)は、図8の球103(図8は2次元的に示しているため、円として示している)の表面上を移動するような状態になる(プレイヤオブジェクト101の腕の長さを半径とするような球)。また、剣オブジェクト102の切っ先部分は、プレイヤオブジェクト101の肩を中心点(図8の点110)とする仮想的な球の表面上を移動するような状態になる(プレイヤオブジェクト101の腕の長さに剣オブジェクト102の長さを加えた長さを半径とするような球)。つまり、本実施形態における剣オブジェクト102の移動軌跡は、ある点を中心点とする球形状の移動軌跡となる。なお、この球は、プレイヤオブジェクト101の右腕の可動範囲に対応するものである。当該可動範囲はゲームの内容に応じて適宜設定されればよい。そのため、図8では、円で表現しているが、可動範囲は楕円形状の球となることもある。いずれにしても、本実施形態における剣オブジェクト102の移動軌跡は、ある点(図8では点110)を中心点とする球形状の移動軌跡となることに変わりはない。
【0084】
次に、本実施形態にかかる処理の概要について説明する。上記のように、本ゲームは、ジャイロセンサユニット7を備えた入力装置8を剣に見立てて振ることでプレイするゲームである。このような、ジャイロセンサユニット7を用いた振りの操作については、3次元のアナログ的な操作が要求される。また、本実施形態では、ジャイロセンサユニット7からの出力データ(角速度データ)に基づいて入力装置8の姿勢を算出するが、ジャイロセンサユニット7に基づいて算出される姿勢と、現実の入力装置8の姿勢との間にズレが生じること等が原因で、プレイヤが狙い通りの場所を斬る操作が難しく、ゲームの難度を必要以上に高くして、ゲームの興趣性を下げてしまう可能性がある。一方、本ゲームでは、上記のように斬る対象として「ターゲット」が示されている、つまり、プレイヤが狙う場所が予め判っている状況である。そのため、本ゲームでは、当該ターゲットの場所に剣オブジェクト102が向かうように剣オブジェクト102の軌道を補正することで、ゲームの難度を下げ、プレイヤの遊びやすさを向上させてゲームの興趣性を高めている。
【0085】
ここで、上記のような補正を行うとき、単純に剣オブジェクト102の位置をターゲットに近づけるような補正を行うと、違和感のある動きとなる可能性がある。例えば、ターゲット105と剣オブジェクト102の位置の関係が図9のような関係であるとする(なお、図9では、剣オブジェクト102の位置を点として示している)。そして、プレイヤが入力装置8を右に水平に動かしたとする(つまり、右に水平斬りするような操作を行ったとする)。この場合、補正を行わなければ、仮想空間内では剣オブジェクト102の軌跡は、図10に示すように、右に水平に移動する軌跡となり、その結果、剣オブジェクト102はターゲット105には当たらず、斬ることができない。
【0086】
そこで、剣オブジェクト102の移動軌跡が、例えば、図11に示すような、ターゲット105に命中するような軌跡となるように補正する場合を考える。このような補正を行うときの手法として、まず、図12に示すように、実際の入力装置8の動きに沿って剣オブジェクト102を移動させた位置(図12の点106の位置)を算出した後、この位置を更にターゲット105に向けて補正することが考えられる。この補正において、単純に剣オブジェクト102の位置をターゲット105に近づける補正を行うと、図12の矢印107のように、右上方向に位置を移動させることになる(その結果、図12の点108の位置となる)。しかし、このような補正を行うと、剣オブジェクト102がターゲット105に近づくときは、剣オブジェクトの移動速度が速くなるような印象(例えば、不自然に加速がかかっている、あるいは、ターゲット105に剣オブジェクト102が引き寄せられるような印象)をプレイヤに与える。また、ターゲット105から剣が遠ざかる場合は、剣の移動速度が遅くなる印象(ターゲット105に剣オブジェクト102が引っ張られて、移動速度が鈍くなるような印象)を与え、補正していることがプレイヤに悟られてしまう可能性がある。
【0087】
そこで、プレイヤに剣オブジェクト102の移動について、自然な動きに見せつつも補正していることが悟られないようにするために、本実施形態では、以下のような補正を行う。すなわち、一旦剣オブジェクト102を入力装置8の動きに沿って移動させ、当該移動後の位置から、当該入力装置8から得られた剣オブジェクト102の移動方向(図12では、右方向)についての補正は行わずに、それ以外の方向への補正のみを行う。具体的には、剣オブジェクト102の移動軌跡によってできる面の法線を算出し、この法線方向(つまり、剣オブジェクト102の移動方向に対して直交する方向)のみについての補正を行う。上図を例にすると、右に向けての水平斬りであるため、入力装置8の移動方向(および、これに基づいた剣オブジェクト102の移動方向)は右方向となり、その移動軌跡でできる面の法線方向は、真上方向となる。そのため、入力装置8の実際の動きに沿った剣オブジェクト102の位置を算出した後、上記図12のような右上方向にではなく、図13に示すように、真上方向(図13の矢印109)にのみ剣オブジェクト102の位置を移動させるような補正を行う(図13の点110の位置)。
【0088】
更に、本実施形態では、ジャイロセンサユニット7から得られた回転の速度(角速度)に応じて、上記の補正の強さ(図13で言うと、矢印109の長さに相当する)を変えている。これは、プレイヤが入力装置8をゆっくり動かしているときに補正を行うと、補正していることが悟られやすい(気付かれやすい)が、入力装置8を素早く動かしているときに補正を行っても、プレイヤに悟られにくい(気付かれにくい)という特徴を利用したものである。
【0089】
このような補正を行うことで、プレイヤに補正を行っていることを気付かれずに、自然な動きに見せかけた補正を行って、プレイヤに違和感を感じさせることなく、ゲームを遊びやすくすることが可能となる。
【0090】
次に、ゲーム装置3によって実行されるゲーム処理の詳細を説明する。まず、ゲーム処理の際に外部メインメモリ12に記憶されるデータについて説明する。図14は、ゲーム装置3の外部メインメモリ12のメモリマップを示す図である。図14において、外部メインメモリ12は、ゲームプログラム60、操作データ62、およびゲーム処理用データ67を含む。ゲームプログラム60は、光ディスク4に記憶され、ゲームプログラム実行時には外部メインメモリ12に転送されて記憶される。
【0091】
ゲームプログラム60は、CPU10によって実行されるゲームプログラムを記憶し、このゲームプログラム60は、剣移動処理プログラム61などによって構成される。
【0092】
操作データ62は、コントローラ5からゲーム装置3へ送信されてくる操作データである。上述したように、コントローラ5からゲーム装置3へ1/200秒に1回の割合で操作データが送信されるので、外部メインメモリ12に記憶される操作データ62はこの割合で更新される。本実施形態においては、外部メインメモリ12には、最新の(最後に取得された)操作データのみが記憶されればよい。
【0093】
操作データ62には、角速度データ63、加速度データ64、マーカ座標データ65、および操作ボタンデータ66が含まれる。角速度データ63は、ジャイロセンサユニット7のジャイロセンサ55および56によって検出された角速度を示すデータである。ここでは、角速度データ63は、図3に示すXYZの3軸回りのそれぞれの角速度を示す。また、加速度データ64は、加速度センサ37によって検出された加速度(加速度ベクトル)を示すデータである。ここでは、加速度データ64は、図3に示すXYZの3軸の方向に関する加速度を各成分とする3次元の加速度ベクトルを示す。また、本実施形態においては、コントローラ5が静止している状態で加速度センサ37が検出する加速度ベクトルの大きさを”1”とする。つまり、加速度センサ37によって検出される重力加速度の大きさは”1”である。
【0094】
マーカ座標データ65は、撮像情報演算部35の画像処理回路41によって算出される座標、すなわち上記マーカ座標を示すデータである。マーカ座標は、撮像画像に対応する平面上の位置を表すための2次元座標系で表現される。なお、撮像素子40によって2つのマーカ6Rおよび6Lが撮像される場合には、2つのマーカ座標が算出される。一方、撮像素子40の撮像可能な範囲内にマーカ6Rおよび6Lのいずれか一方が位置しない場合には、撮像素子40によって1つのマーカのみが撮像され、1つのマーカ座標のみが算出される。また、撮像素子40の撮像可能な範囲内にマーカ6Rおよび6Lの両方が位置しない場合には、撮像素子40によってマーカが撮像されず、マーカ座標は算出されない。したがって、マーカ座標データ65は、2つのマーカ座標を示す場合もあるし、1つのマーカ座標を示す場合もあるし、マーカ座標がないことを示す場合もある。
【0095】
操作ボタンデータ66は、各操作ボタン32a〜32iに対する入力状態を示すデータである。
【0096】
ゲーム処理用データ67は、ゲーム処理において用いられる各種データであり、入力装置姿勢データ68、現在剣姿勢データ69、前回剣姿勢データ70、補正割合データ71、法線ベクトルデータ72、剣位置データ73、および、ターゲット位置データ74が含まれる。
【0097】
入力装置姿勢データ68は、入力装置8の姿勢を示すデータである。以下では、入力装置8の姿勢を装置姿勢Gdirと呼ぶ。本実施形態では、装置姿勢Gdirを互いに直交する3つの軸の組みで示す。すなわち、上記コントローラ座標系におけるXYZ軸で示す。以下では、コントローラ座標系におけるX軸を”Gdir.X”、Y軸を”Gdir.Y”、Z軸を”Gdir.Z”と示す。また、各軸の要素は、例えば、X軸は、(Gdir.X.x,Gdir.X.y,Gdir.X.z)と示す。より具体的には、入力装置姿勢データ68は以下のような行列に相当するデータとなる。
【0098】
【数1】

【0099】
現在剣姿勢データ69は、上記剣オブジェクト102の姿勢を示すデータである。以下では、当該現在剣姿勢データ69で示される剣オブジェクトの姿勢を現在剣姿勢Sdirと呼ぶ。また、本実施形態では、現在剣姿勢データ69は、上記入力装置姿勢データ68と一致させて扱うものとする。つまり、装置姿勢Gdirをそのまま現在剣姿勢Sdirとして適用するものとする。そのため、現在剣姿勢データSdirも、上述した入力装置姿勢データGdirと同様に、以下のような、3×3の行列の形式で示すことができる。
【0100】
【数2】

【0101】
前回剣姿勢データ70は、直近に算出された現在剣姿勢データを保存したものである。後述する処理は、1フレーム単位で繰り返し行われるものであるため、直前のフレームにおいて算出された現在剣姿勢データ69が前回剣姿勢データ70として示されるものである。以下では、当該前回剣姿勢データ70で示される剣オブジェクトの姿勢を前回剣姿勢PrevSdirと呼ぶ。前回剣姿勢データ70も、上述した入力装置姿勢データGdirと同様に、以下のような、3×3の行列の形式で示すことができる。
【0102】
【数3】

【0103】
補正割合データ71は、上述したような補正の強さを示すための係数である。法線ベクトルデータ72は、上述したような、剣の移動軌跡でできる面に対する法線方向を示すデータである。剣位置データ73は、仮想ゲーム空間内における剣オブジェクト102の位置を示すデータである。ターゲット位置データ74は、上記ターゲット105の仮想空間内における位置を示すデータである。以下では、補正割合データ71で示される補正割合をratio、法線ベクトルデータ72で示される法線ベクトルをnrm、剣位置データ73で示される剣オブジェクト102の仮想空間内における位置をSpos、ターゲット位置データ74で示されるターゲット105の仮想空間内における位置をTposと呼ぶ。
【0104】
次に、図15〜図16を参照して、ゲーム装置3によって実行されるゲーム処理のうち、本実施形態にかかる剣オブジェクト移動処理(以下、剣移動処理と呼ぶ)について説明する。図15は、第1の実施形態にかかる剣移動処理の詳細を示すフローチャートであり、図16は、剣オブジェクト102の位置を補正する処理の概要を示した図である。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、ROM/RTC13に記憶されている起動プログラムを実行し、これによって外部メインメモリ12等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムが外部メインメモリ12に読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図15に示すフローチャートは、以上の処理が完了した後に行われる剣移動処理を示すフローチャートである。また、図15に示すステップS1〜ステップS8の処理ループは、1フレーム毎に繰り返し実行される。なお、本実施形態においては、上記剣移動処理以外にかかるゲーム処理は本発明と直接関連しないので、説明は省略する。
【0105】
図15において、まず、ステップS1において、以下の処理で用いられる各種変数の初期化処理が実行される。具体的には、入力装置姿勢データ68(つまり、装置姿勢Gdir)に、以下に示す行列に相当するデータが設定される。また、前回剣姿勢データ70にも、同じデータが設定される。
【0106】
【数4】

【0107】
次に、ステップS2において、外部メインメモリ12から角速度データ63が取得される。
【0108】
次に、ステップS3において、上記取得された角速度データ63に基づいて入力装置8の姿勢が更新される。具体的には、まず、当該角速度データ63で示される3軸の角速度成分を合成して3次元ベクトルomegaを算出する。次に、当該3次元ベクトルomegaを軸として、当該omegaで示される角度の絶対値だけ回転させる回転行列が生成される。次に、当該回転行列を用いて装置姿勢Gdirを変換する(つまり、装置姿勢Gdirを回転させる)ことで、現在の入力装置8の姿勢が算出される。そして、当該算出された姿勢で装置姿勢Gdirを更新する。
【0109】
次に、ステップS4において、上記算出された装置姿勢Gdirに基づいて剣オブジェクト102の位置と姿勢が算出される。剣オブジェクト102の姿勢Sdirについては、上述したように、装置姿勢Gdirをそのまま適用させる。そのため、現在剣姿勢データ69に入力装置姿勢データ68の値が設定される(つまり、入力装置8の移動方向がそのまま剣オブジェクト102の移動方向となる)。一方、剣オブジェクト102の位置Sposについては、例えば、次のように算出される。まず、プレイヤオブジェクトの肩から剣オブジェクト102の位置(より正確には、剣オブジェクト102の剣先位置。ゲーム内容によっては、剣オブジェクト102の重心位置でもよい)までの距離Sを算出する。そして、以下の式を用いて剣位置Sposが算出される(つまり、入力装置8の姿勢の変化のみに基づいた剣オブジェクト102の移動後の位置が算出されることになる)。
Spos=(プレイヤオブジェクトの肩の位置)+(Gdir.Z)×S
【0110】
次に、ステップS5において、補正割合ratioの算出が実行される。本実施形態では、補正割合ratioは、角速度の大きさに比例させる。具体的には、以下の式を用いて補正割合ratioを算出する。
ratio=(omegaの絶対値)・K
ここで、Kは予め定められた定数である。更に、上記式で算出された補正割合ratioが“1”より大きいときは、当該補正割合ratioの値を”1”とする。つまり、補正割合ratioの最大値が”1”となるように調整が行われる。このようにして求められた補正割合ratioが補正割合データ71として外部メインメモリ12に記憶される。
【0111】
次に、ステップS6において、剣オブジェクト102の移動軌跡によってできる平面に対する法線ベクトルnrmが算出される。具体的には、外部メインメモリ12から前回剣姿勢データ70が読み出され、前回剣姿勢PrevSdirのZ軸方向を示すベクトルPrevSdir.Zと、上記ステップS4で算出された現在剣姿勢SdirのZ軸方向を示すベクトルSdir.Zとの外積が算出される。そして、算出された値を正規化することで法線ベクトルnrmが算出され、法線ベクトルデータ72として外部メインメモリ12に記憶される。
【0112】
次に、ステップS7において、剣位置Sposをターゲット位置Tposに近づけるような補正が行われる。図16を用いて、この処理の詳細を説明する。まず、外部メインメモリ12から剣位置データ73およびターゲット位置データ74が読み出される。そして、剣オブジェクト102の位置からターゲット105の位置へ向かうベクトルVが、以下の式で算出される。
V=Tpos−Spos
次に、ベクトルVの成分のうち、上記法線ベクトルnrm成分の長さを示す長さdが以下の式で算出される。
d=(nrm.x)・(V.x)+(nrm.y)・(V.y)+(nrm.z)・(V.z)
ここで、上記(nrm.x)は、上記法線ベクトルnrmのX軸成分を示し、(V.x)は、上記ベクトルVのX軸成分を示す。Y軸成分、Z軸成分についても同様の示し方をしている。そして、以下の式を用いて、最終的な剣の位置Sposが算出され、剣位置データ73として外部メインメモリ12に記憶される。すなわち、剣の位置Sposを法線ベクトルnrmの方向に、補正割合ratioに応じて移動させることになる。
Spos=Spos+nrm・d・ratio
【0113】
次に、ステップS8において、現在剣姿勢データ69を前回剣姿勢データ70として外部メインメモリ12に記憶する。その後、上記ステップS2に戻り、所定のゲーム処理終了条件(図示せず)が満たされるまで、処理が繰り返される。以上で、第1の実施形態にかかる剣オブジェクト移動処理の説明を終了する。
【0114】
このように、本実施形態では、剣オブジェクト102の位置をターゲットに近づける補正を行う際に、単純にターゲット105に近づくような補正を行うのではなく、剣オブジェクト102の移動軌跡でできる面の法線方向についてのみの補正を行っている。これにより、補正を行っていることをプレイヤに気付かれにくくしながら、ターゲット105に剣オブジェクト102を当たりやすくすることができる。その結果、ゲームの難易度を下げ、ユーザのモチベーションの低下を防ぐことができる。
【0115】
(第2の実施形態)
次に、図17から図18を参照して、本発明の第2の実施形態について説明する。上述の第1の実施形態では、補正を行う際、上記法線ベクトルnrmの方向にのみ補正を行うようにしていた。これに対して、第2の実施形態では、ゲームの興趣性をより高めるために、不自然さをプレイヤに感じさせない程度に、上記法線ベクトルnrm方向から少しだけターゲット方向に向けた補正を行う。
【0116】
例えば、プレイヤがゲームの難易度を設定可能なように、予め数段階の難易度設定を設けておく。例えば、1(最も易しい)〜10(最も難しい)の10段階で難易度設定が可能なようにしておく(例えばゲームの設定画面を表示し、プレイヤに難易度の選択が可能なようにする)。そして、上記第1の実施形態で示したような、上記法線ベクトルnrmの方向にのみ補正を行うものを難易度10に割り当てる。そして、難易度が下がっていくに連れて、プレイヤに違和感を感じさせない程度に、nrm方向から少しだけターゲット105側に向けて剣オブジェクト102の位置を補正する。
【0117】
次に、第2の実施形態にかかる処理について、図17および図18を用いて説明する。図17は、第2の実施形態にかかる剣移動処理の詳細を示すフローチャートであり、図18は、本処理の概要を示した図である。なお、図17において、ステップS1からステップS6までの処理、および、ステップS8の処理は、上述の第1の実施形態で図15を用いて説明したステップS1からステップS6の処理およびステップS8の処理と同様であるため、ここでは詳細な説明を省略する。
【0118】
図17において、ステップS6における法線ベクトルnrmの算出が終われば、次に、ステップS21において、剣オブジェクト102の位置からターゲット105の位置へ向かうベクトルVが、以下の式で算出される。
V=Tpos−Spos
【0119】
次に、ステップS22において、上記ベクトルVの成分のうち、図18に示すような、上記法線ベクトルnrmの方向成分Wが以下の式で算出される。
d=(nrm.x)・(V.x)+(nrm.y)・(V.y)+(nrm.z)・(V.z)
W=nrm・d
なお、dは、第1の実施形態で上述した上記法線ベクトルnrm成分の長さである。
【0120】
次に、ステップS23において、上記ベクトルVと方向成分Wとを線形補間したベクトルLIが以下の式で算出される。
LI=W・k+V・(1−k)
ここで、係数kは、0.0〜1.0の範囲の値をとる調整用の係数である。そして、上述したような難易度の設定内容が、当該係数kとして設定される。例えば、上記のような10段階の難易度を例にすると、難易度1(最も易しい)が設定されたときは、係数kには0が設定される。その結果、LI=Vとなり、ターゲット105に向かうようなベクトルが算出される。一方、難易度10(最も難しい)が設定されたときは、係数kには1が設定される。その結果、LI=Wとなり、上記第1の実施形態と同様の、法線ベクトルnrm方向のみのベクトルLIが算出されることになる。そして、難易度1〜10の間は、例えば係数kの値が0.1ずつ変化するように割り当てる。
【0121】
次に、ステップS24において、剣の位置Sposが上記ベクトルLIで示される方向に補正される。このとき、第1の実施形態と同様に、補正割合ratioによって、補正の度合いが決定される。具体的には、以下の式を用いてSposが算出される。
Spos=Spos+LI・ratio
【0122】
その後、第1の実施形態で上述したステップS8以降の処理が実行される。以上で、第2の実施形態にかかる剣移動処理の説明を終了する。
【0123】
このように、第2の実施形態では、ゲーム難易度の設定に応じて、上記補正する向きを若干変化させることが可能となる。上記の例では、難易度を10に設定すれば、剣オブジェクト102の位置については上記法線ベクトルnrm方向のみへの補正が行われるが、難易度を1に設定すれば、当該nrm方向から少しターゲット105の方向に近づくような補正が行われ、ゲームの難易度をより下げることができる。これにより、ゲームの興趣性をより高めることが可能となる。
【0124】
なお、上述の各実施形態では、ジャイロセンサユニット7を用いたものを例としたが、この他、例えば補正割合ratioの算出については、加速度センサ37で検出した加速度に基づいて算出するようにしても良い。この場合は、検出された加速度の大きさに補正割合ratioを比例させればよい。
【0125】
また、上述の実施形態では、入力装置8の動きの大きさの大小に関わらず、常に補正を行うような処理を行っていた。これに限らず、入力装置8の動きの大きさが所定値より大きいときにのみ、上述したような補正を行うような処理としてもよい。例えば、上記ステップS2で取得した角速度の大きさが所定値より大きいか否かを判定し、大きい場合にのみ、上記ステップS3以降の処理を実行するように構成しても良い。また、入力装置8の動きの大きさの判定については、角速度の大きさだけでなく、上記ステップS3で算出された入力装置の姿勢に基づいて判定するようにしても良い。すなわち、直前のフレームで算出された入力装置8の姿勢との差異を算出し、その差異が所定値より大きいか否かを判定することで、入力装置の動きの大きさが所定値より大きいか否かを判定するようにしても良い。これにより、入力装置8の動きが小さいときは補正を行わないようにすることができるため、よりプレイヤに補正を行っていることを気付かれにくくすることができる。
【0126】
また、入力装置8の姿勢の検出に関して、上述の実施形態では、上記ジャイロセンサユニット7を用いたものを例に挙げた。これに限らず、入力装置8の姿勢の算出については、所定のカメラで入力装置8を撮像し、当該撮像データに基づいて入力装置8の姿勢を算出するようにしてもよい。例えば、所定のカメラで入力装置8を撮像し、当該撮像画像のデータをゲーム装置3に取得させる。そして、CPU10は、撮像画像に写っている入力装置8を識別し、当該入力装置8の姿勢やその移動方向を算出する処理を実行してもよい。そして、当該算出された移動方向に基づき、上述したような移動方向に直交する方向を算出してもよい。
【産業上の利用可能性】
【0127】
本発明にかかる情報処理プログラムおよび情報処理装置は、仮想空間内のオブジェクトを移動させるときに、プレイヤに気付かれにくい補正を行って移動させることができ、ゲーム装置やパーソナルコンピュータ、携帯型の各種情報処理端末等に有用である。
【符号の説明】
【0128】
1…ゲームシステム
2…モニタ
2a…スピーカ
3…ゲーム装置
4…光ディスク
5…コントローラ
7…ジャイロセンサユニット
8…入力装置
10…CPU
11…システムLSI
11a…入出力プロセッサ
11b…GPU
11c…DSP
11d…VRAM
11e…内部メインメモリ
12…外部メインメモリ
13…ROM/RTC
14…ディスクドライブ
15…AV−IC
16…AVコネクタ
17…フラッシュメモリ
18…無線通信モジュール
19…無線コントローラモジュール
20…拡張コネクタ
21…外部メモリカード用コネクタ
22…アンテナ
23…アンテナ
24…電源ボタン
25…リセットボタン
26…イジェクトボタン
30…基板
31…ハウジング
32…操作部
33…コネクタ
34…LED
35…撮像情報演算部
36…通信部
37…加速度センサ
38…赤外線フィルタ
39…レンズ
40…撮像素子
41…画像処理回路
42…マイコン
43…メモリ
44…無線モジュール
45…アンテナ
48…バイブレータ
49…スピーカ
53…プラグ
54…マイコン
55…2軸ジャイロセンサ
56…1軸ジャイロセンサ

【特許請求の範囲】
【請求項1】
ユーザが操作する入力装置の姿勢または動きを検出する所定の検出手段から取得する動き情報に基づいて、仮想3次元空間内のオブジェクトを移動させる情報処理を行う情報処理装置のコンピュータに実行させる情報処理プログラムであって、
前記コンピュータを、
前記動き情報に基づき、前記入力装置が移動した方向を示す移動方向データを算出する移動方向算出手段と、
前記オブジェクトの位置が、前記移動方向データに基づいて当該オブジェクトを移動させたときの位置を、当該移動した方向に対して直交、あるいは、実質的に直交する方向にのみ補正した位置になるように当該オブジェクトを移動させるオブジェクト移動手段として機能させる、情報処理プログラム。
【請求項2】
前記所定の検出手段は前記入力装置に備えられている所定の動きセンサである、請求項1に記載のゲームプログラム。
【請求項3】
前記オブジェクト移動手段は、前記オブジェクトを所定の目標位置に一致するように、あるいは、近づくように移動させる、請求項1に記載の情報処理プログラム。
【請求項4】
前記情報処理プログラムは、前記コンピュータを、前記動き情報に基づき前記入力装置の姿勢を示す入力姿勢を繰り返し算出する入力姿勢算出手段として更に機能させ、
前記オブジェクト移動手段は、前記入力姿勢算出手段によって繰り返し算出された入力姿勢に基づいた前記入力装置の移動方向に対して直交、あるいは、実質的に直交する方向にのみ補正した位置になるように当該オブジェクトを移動させる、請求項1に記載の情報処理プログラム。
【請求項5】
前記オブジェクト移動手段は、前記入力姿勢算出手段によって繰り返し算出された入力姿勢に基づいた当該入力姿勢の変化に基づいて定まる面に対して直交、あるいは、実質的に直交する方向にのみ補正した位置になるように当該オブジェクトを移動させる、請求項4に記載の情報処理プログラム。
【請求項6】
前記オブジェクト移動手段は、前記入力姿勢算出手段によって繰り返し算出された入力姿勢のうちの所定の2つの入力姿勢を示すベクトルの外積で定まる方向にのみ補正した位置になるように当該オブジェクトを移動させる、請求項4に記載の情報処理プログラム。
【請求項7】
前記入力姿勢算出手段によって繰り返し算出された入力姿勢のうちの所定の2つの入力姿勢は、続けて算出された入力姿勢である、請求項6に記載の情報処理プログラム。
【請求項8】
前記情報処理プログラムは、前記コンピュータを、前記入力装置の動きの大きさが所定の値より大きいか否かを判定する動き判定手段として更に機能させ、
前記オブジェクト移動手段は、前記動き判定手段で前記入力装置の動きの大きさが所定の値より大きいと判定された時に補正を行う、請求項1に記載の情報処理プログラム。
【請求項9】
前記オブジェクト移動手段は、前記入力装置の動きの大きさが大きいほど、前記補正方向データで示される方向への補正の大きさを大きくする、請求項1または請求項8に記載の情報処理プログラム。
【請求項10】
前記オブジェクト移動手段は、
前記移動した方向に対して直交、あるいは、実質的に直交する方向を示す補正方向データを算出する補正方向算出手段を含み、
前記オブジェクトの位置が、前記移動方向データに基づいて当該オブジェクトを移動させたときの位置を、前記補正方向データで示される方向にのみ補正した位置になるように当該オブジェクトを移動させる、請求項1に記載の情報処理プログラム。
【請求項11】
前記動きセンサは角速度センサであり、
前記動き情報は、前記角速度センサによって検出される角速度を含む情報である、請求項1に記載の情報処理プログラム。
【請求項12】
ユーザが操作する入力装置の姿勢または動きを検出する所定の検出手段から取得する動き情報に基づいて、仮想3次元空間内のオブジェクトを移動させる情報処理を行う情報処理装置であって、
前記動き情報に基づき、前記入力装置が移動した方向を示す移動方向を算出する移動方向算出手段と、
前記オブジェクトの位置が、前記移動方向に基づいて当該オブジェクトを移動させたときの位置を、当該移動した方向に対して直交、あるいは、実質的に直交する方向にのみ補正した位置になるように当該オブジェクトを移動させるオブジェクト移動手段とを備える、情報処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate