説明

情報処理プログラム、情報処理装置、情報処理方法および情報処理システム

【課題】物理的な制約を伴う入力装置であっても、良好な操作性を達成し得る情報処理プログラム等を提供すること。
【解決手段】入力装置から出力されたデータの補正を行う情報処理装置のコンピュータにおいて実行される情報処理プログラムであって、このコンピュータを、入力装置から出力された入力データを、処理対象データとして取得する入力データ取得手段と、入力データが、入力装置の入力操作可能範囲により規定される上限値に到達したとき、または上限値を超えたときに、処理対象データを、上限値より大きい所定の値となるまで、逐次的に更新する第1入力データ更新手段として機能させる、情報処理プログラム。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理プログラム、情報処理装置、情報処理方法および情報処理システムに関する。より具体的には、本発明は、入力装置から取得されたデータを補正する、情報処理プログラム、情報処理装置、情報処理方法および情報処理システムに関する。
【背景技術】
【0002】
従来、2次元入力が可能なアナログ式のジョイスティックなどは、それに対する入力操作に応じて出力される2次元方向それぞれの入力値に対して、所定の異なる変換定数を乗じて変換を行うことにより、2次元方向それぞれに対して異なった入力を行っていた(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平10−105328号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
アナログ式ジョイスティック、アナログスティックなどの入力装置は、それらを構成する部材の一部がユーザによる操作に応じて移動(並進、回転を含む)すること、およびその移動量を観測することによって、その移動量に応じた出力値を情報処理装置に対するアナログ入力を達成する。ここで、移動する部材(以下、可動部材)は、ハードウェアとしての物理的制約を受けることに起因して、2次元方向それぞれの入力達成するために当該部材が物理的に移動できる範囲(以下、可動範囲)に限界を有する。
【0005】
したがって、上述の可動範囲が小さい入力装置は、その入力装置が入力操作に応じて提供すべき出力値(当該入力装置を利用する情報処理装置にとっては、入力値となる値)との関係で、種々の課題を抱えていた。
【0006】
例えば、入力装置が最終的に提供しようとする出力値の範囲が大きければ、それに対応するだけの大きな可動範囲を物理的に提供できる入力装置が、その入力装置の良好な操作性を容易に実現できる点では望ましい。ところが、ハードウェアの小型化が望まれるような状況では、そのハードウェアにおける物理的制約に起因して、当該可動範囲の大きさを維持すること、または大きくすることは困難を伴う。このような状況では、入力装置が出力しようとする値の範囲を、限られた可動範囲で対応しなければならない。これは、入力装置の操作性を著しく損なう。特に、可動範囲の上限に対して比較的小さな移動量で入力する場合には、操作者の意図通りの入力操作が困難であるという状況があった。
【0007】
そこで、上述のような物理的な制約を伴う入力装置であっても、より良好な操作性を達成し得る情報処理プログラム等を提供することが所望される。
【課題を解決するための手段】
【0008】
上記目的を達成するために、本発明は、その一例として、以下のような態様で提供され得る。以下で示した具体的な記載のいずれもが、本発明の外延を理解するために示した例示的な記載であって、本発明がこの例に限定されることを意図するものではない。すなわち、当業者は、その具体的な記載から、本発明に関する記載および技術常識に基づいて均等な範囲を実施することができることが理解される。
【0009】
本発明に係る1つの態様において、本発明は、入力装置から出力されたデータの補正を行う情報処理装置のコンピュータにおいて実行される情報処理プログラムを提供する。この情報処理プログラムは、そのコンピュータを、入力データ取得手段と、第1入力データ更新手段として機能させる。
【0010】
ここで、上述の入力データ取得手段は、上記入力装置から出力された入力データを、処理対象データとして取得する。また、上述の第1入力データ更新手段は、上記入力データが、上記入力装置の入力操作可能範囲により規定される上限値に到達したとき、または上記上限値を超えたときに、上記処理対象データを、上記上限値より大きい所定の値となる まで、逐次的に更新する。
【0011】
本願明細書に使用される場合、入力装置に係る「入力操作可能範囲」との用語は、当該入力装置の特性を記述する変数またはその組合わせにおいて、入力装置に対する入力操作が許容される際の当該変数またはその組合わせの集合をいう。
【0012】
また、入力データに係る「入力操作可能範囲により規定される上限値」とは、「入力装置の入力操作可能範囲」に基づき規定される変数(例えば、移動量、距離、座標)が、入力装置自体の特性(例えば、アナログスティックの場合、その部材の可動範囲など)に制限をうけたときに規定される当該変数の上限値である。なお、ここでいう上限値としては、その用いる変数に応じて、符号付の数値を比較した場合だけでなく、絶対値を比較した場合における上限値も含み得る。また、入力データが、2以上の成分(数値)の組合せ(例えば、2次元の座標)である場合、ここでいう、入力データに係る上限値は、その成分同士の所定の関係性を表す誘導された変数(例えば、当該2次元座標を有する点と原点との距離)において上限値を与える入力データ(成分の組合せ)であってもよい。
【0013】
但し、この上限値は、入力装置に対する物理的な入力操作に対応した出力値の上限値そのものと一致する場合もあるが、当該入力装置が機能するシステム全体の設計上の制約などに起因して、この上限値は、入力装置に対する物理的な入力操作に対応した出力値の上限値そのものと一致しない場合もある。
【0014】
後者の場合の例としては、当該入力装置が用いられるシステムの設計上の要請から、入力装置自体の入力操作に対応した出力の上限値の近傍に達した状態を、入力装置自体の入力操作に対応した出力の上限値に達した状態としてみなす場合が挙げられる。すなわち、「入力操作可能範囲により規定される上限値」は、当該入力装置が使用されるシステムにおいて、入力操作において実質的に拘束をうける状況を反映した値である。
【0015】
1つの実施形態において、上記第1入力データ更新手段は、上記処理対象データを、上記上限値より大きい所定の値に近づけるように更新してもよい。
【0016】
他の実施形態において、上記第1入力データ更新手段は、上記処理対象データを、所定量ずつ上記上限値より大きい所定の値に近づけるように更新してもよい。
【0017】
別の実施形態において、上記入力データが、上記入力装置の入力操作可能範囲により規定される上限値に到達したとき、またはその上限値を超えたときの、その入力データに基づく量の単位時間当たりの変化量に応じて、第1入力データ更新手段が、その処理対象データを更新してもよい。
【0018】
さらに別の実施形態において、上記入力データは、上記入力装置における所定位置と対応づけられる基準位置を設定したときの、当該基準位置から変位した点の位置を示すデータとして規定してもよい。
【0019】
さらに別の実施形態において、上記第1入力データ更新手段は、上記入力データで規定される位置と、上記基準位置である原点との間の距離の単位時間当たりの変化に応じて、上記処理対象データを更新してもよい。
【0020】
別の実施形態において、上記第1入力データ更新手段は、上記入力データにより規定される位置を示す位置ベクトルと、時間軸上で当該入力データの直前または直後の入力データにより規定される位置ベクトルとの差分ベクトルをとり、当該差分ベクトルの大きさを計算することで、上記入力データに基づく量の単位時間当たりの変化量に応じた、上記処理対象データの更新をおこなってもよい。
【0021】
さらに別の実施形態において、上記入力データが、上記入力装置の入力操作可能範囲により規定される上限値に到達したか、または上記上限値を超えた後であって、時間軸上で当該入力データの直後の入力データが、上記入力装置の入力操作可能範囲により規定される上限値に到達していないときに、上記処理対象データを、上記上限値より大きい所定の値から当該上限値まで逐次的に更新する、第2入力データ更新手段としてさらに機能させてもよい。
【0022】
さらに別の実施形態において、上記第2入力データ更新手段は、上記処理対象データを、上記上限値に近づけるように更新してもよい。
【0023】
さらに別の実施形態において、上記第2入力データ更新手段は、上記処理対象データを、所定量ずつ上記上限値に近づけるように更新してもよい。
【0024】
1つの実施形態において、上記入力データが、上記入力装置の入力操作可能範囲により規定される上限値に到達したか、または上記上限値を超えた後であって、時間軸上で当該入力データの直後の入力データが、前記入力装置の入力操作可能範囲により規定される上限値に到達していないときの、上記入力データに基づく量の単位時間当たりの変化量に応じて、上記第2入力データ更新手段は、上記処理対象データを更新してもよい。
【0025】
1つの実施形態において、上記入力データが、上記入力装置の入力操作可能範囲により規定される上限値に到達したとき、または上記上限値を超えたときに、上記第1入力データ更新手段は、上記入力データに所定値を乗ずることで正規化した後に、当該正規化された入力データに基づく量の単位時間当たりの変化量に応じて、上記処理対象データを更新してもよい。
【0026】
1つの実施形態において、上記コンピュータを、上記入力データ取得手段が上記入力データを処理対象データとして取得する前に、上記入力データに対してクランプ処理を行う予備補正手段としてさらに機能させてもよい。
【0027】
1つの実施形態において、上記コンピュータを、上記第1入力データ更新手段によって逐次的に更新された上記処理対象データを入力値として所定の処理を行う処理手段としてさらに機能させてもよい。
【0028】
1つの実施形態において、上記コンピュータを、上記第2入力データ更新手段によって逐次的に更新された上記処理対象データを入力値として所定の処理を行う処理手段としてさらに機能させてもよい。
【0029】
1つの実施形態において、上記入力データは、多次元データであってもよい。
【0030】
本発明の別の態様において、上述の情報処理プログラムは、それを実行する情報処理装置として使用されたとしても、情報処理システムとして使用されてもよい。また、本発明は、上述のような情報プログラム、情報処理装置、情報処理システムなどとして実装され得る、情報処理を行うための方法も含む。
【0031】
なお、本明細書で使用される場合、「コンピュータ読み取り可能な記憶媒体」との用語は、プログラム、コードおよび/またはデータをコンピュータシステムによって使用するために記憶することが可能な、任意の装置または媒体をいう。コンピュータ読み取り可能な記憶媒体は、コンピュータシステムによって読み取りが可能である限りにおいて、揮発性であっても、不揮発性であってもよい。コンピュータ読み取り可能な記憶媒体としては、例えば、磁気テープ、ハードディスクドライブ(HDD)、コンパクトディスク(CD)、デジタルバーサタイルディスク(DVD)、ブルーレイディスク(BD)、半導体メモリなどが挙げられるが、これらに限られない。
【0032】
また、本明細書において使用される場合、「システム」(例えば、情報処理システム、ゲームシステム)との用語は、1つの装置で構成されてもよく、また、複数の装置であって、その各々の装置が他の装置のいずれかと通信可能であるものとして構成されてもよい。
【発明の効果】
【0033】
本発明によって、物理的な制約を伴う入力装置であっても、良好な操作性を達成し得る情報処理プログラム等が提供される。
【図面の簡単な説明】
【0034】
【図1】開状態におけるゲーム装置10の正面図
【図2】開状態におけるゲーム装置10の側面図
【図3】閉状態におけるゲーム装置10の左側面図、正面図、右側面図および背面図
【図4】ゲーム装置10の内部構成を示すブロック図
【図5A】アナログスティック15の操作例を示す模式図
【図5B】アナログスティック15に対して入力操作が行われたときに移動するアナログスティック15の部材(キートップ)の可動範囲と、アナログスティック15がその入力操作に対して出力する値の範囲との関係を説明するための模式図
【図5C】本発明の一実施形態における入力値補正処理プログラム71を用いた際に、キートップの可動範囲の擬似的に拡大された範囲と、アナログスティック15がその入力操作に対して出力する値の範囲との関係の一例を示した図
【図6】アナログスティック15が実現する2次元入力による入力値を、本発明の一実施形態に係る入力値補正処理プログラムが処理することで得られる補正値を説明するための一群のグラフを示す図
【図7】ゲーム装置10のメインメモリ32のメモリマップを示す図
【図8A】本発明の例示的な実施形態に係る入力値補正処理のメインフローの一例を示す図
【図8B】予備補正処理の流れの一例を示したフローチャート
【図8C】入力値補正処理の流れの一例を示したフローチャート
【発明を実施するための形態】
【0035】
(ゲーム装置の構成例)
以下、本発明の一例示的な実施形態に係るゲーム装置について説明する。図1から図3までは、ゲーム装置10の外観を示す平面図である。ゲーム装置10は携帯型のゲーム装置であり、図1から図3までに示すように折り畳み可能に構成されている。図1および図2は、開いた状態(開状態)におけるゲーム装置10を示し、図3は、閉じた状態(閉状態)におけるゲーム装置10を示している。図1は、開状態におけるゲーム装置10の正面図であり、図2は、開状態におけるゲーム装置10の右側面図である。ゲーム装置10は、撮像部によって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりすることが可能である。また、ゲーム装置10は、交換可能なメモリカード内に記憶され、または、サーバーや他のゲーム装置から受信したゲームプログラムを実行可能であり、仮想空間に設定された仮想カメラで撮像した画像などのコンピュータグラフィックス処理により生成された画像を画面に表示したりすることができる。
【0036】
まず、図1から図3までを参照して、ゲーム装置10の外観構成について説明する。図1〜図3に示されるように、ゲーム装置10は、下側ハウジング11および上側ハウジング21を有する。下側ハウジング11と上側ハウジング21とは、開閉可能(折り畳み可能)に接続されている。本実施形態では、各ハウジング11および21は共に横長の長方形の板状形状であり、互いの長辺部分で回転可能に接続されている。
【0037】
図1および図2に示されるように、下側ハウジング11の上側長辺部分には、下側ハウジング11の内側面(主面)11Bに対して垂直な方向に突起する突起部11Aが設けられる。また、上側ハウジング21の下側長辺部分には、上側ハウジング21の下側面から当該下側面に垂直な方向に突起する突起部21Aが設けられる。下側ハウジング11の突起部11Aと上側ハウジング21の突起部21Aとが連結されることにより、下側ハウジング11と上側ハウジング21とが、折り畳み可能に接続される。
【0038】
(下側ハウジングの説明)
まず、下側ハウジング11の構成について説明する。図1から図3までに示すように、下側ハウジング11には、下側LCD(Liquid Crystal Display:液晶表示装置)12、タッチパネル13、各操作ボタン14A〜14L(図1、図3)、アナログスティック15、LED16A〜16B、挿入口17、および、マイクロフォン用孔18が設けられる。以下、これらの詳細について説明する。
【0039】
図1に示すように、下側LCD12は下側ハウジング11に収納される。下側LCD12は横長形状であり、長辺方向が下側ハウジング11の長辺方向に一致するように配置される。下側LCD12は下側ハウジング11の中央に配置される。下側LCD12は、下側ハウジング11の内側面(主面)に設けられ、下側ハウジング11に設けられた開口部から当該下側LCD12の画面が露出される。ゲーム装置10を使用しない場合には閉状態としておくことによって、下側LCD12の画面が汚れたり傷ついたりすることを防止することができる。下側LCD12の画素数は、例えば、256dot×192dot(横×縦)であってもよい。下側LCD12は、後述する上側LCD22とは異なり、画像を(立体視可能ではなく)平面的に表示する表示装置である。なお、本実施形態では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の任意の表示装置を利用してもよい。また、下側LCD12として、任意の解像度の表示装置を利用することができる。
【0040】
図1に示されるように、ゲーム装置10は、入力装置として、タッチパネル13を備えている。タッチパネル13は、下側LCD12の画面上に装着されている。なお、本実施形態では、タッチパネル13は抵抗膜方式のタッチパネルである。
【0041】
各操作ボタン14A〜14Lは、所定の入力を行うための入力装置である。図1に示されるように、下側ハウジング11の内側面(主面)には、各操作ボタン14A〜14Lのうち、十字ボタン14A(方向入力ボタン14A)、ボタン14B、ボタン14C、ボタン14D、ボタン14E、電源ボタン14F、セレクトボタン14J、HOMEボタン14K、およびスタートボタン14Lが、設けられる。十字ボタン14Aは、十字の形状を有しており、上下左右の方向を指示するボタンを有している。ボタン14B、ボタン14C、ボタン14D、ボタン14Eは、十字状に配置される。ボタン14A〜14E、セレクトボタン14J、HOMEボタン14K、およびスタートボタン14Lには、ゲーム装置10が実行するプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン14Aは選択操作等に用いられ、各操作ボタン14B〜14Eは例えば決定操作やキャンセル操作等に用いられる。また、電源ボタン14Fは、ゲーム装置10の電源をオン/オフするために用いられる。
【0042】
アナログスティック15は、方向入力が可能な入力装置の一種である。本例においては、アナログスティック15は、下側ハウジング11の内側面の下側LCD12より左側領域の上部領域に設けられる。より具体的には、図1に示すように、十字ボタン14Aが下側LCD12より左側領域の下部領域に設けられるので、アナログスティック15は、十字ボタン14Aの上方に設けられる。また、アナログスティック15、および、十字ボタン14Aは、下側ハウジングを把持した左手の親指で操作可能な位置に設計される。また、アナログスティック15を上部領域に設けたことにより、下側ハウジング11を把持する左手の親指が自然と位置するところにアナログスティック15が配され、十字ボタン14Aは、左手の親指を少し下にずらした位置に配される。
【0043】
アナログスティック15の構造としては、そのキートップが、下側ハウジング11の内側面に平行にスライドするように構成されている。アナログスティック15は、ゲーム装置10が実行するプログラムに応じて機能する。例えば、3次元仮想空間に所定のオブジェクトが登場するゲームがゲーム装置10によって実行される場合、アナログスティック15は、当該所定のオブジェクトを3次元仮想空間内で移動させるための入力装置として機能する。この場合において、例えば、所定のオブジェクトはアナログスティック15のキートップがスライドした方向に移動される。
【0044】
アナログスティック15は、上下左右および斜め方向の任意の方向(360°全方向)にそのキートップを(所定の範囲にある)任意量だけ基準位置から移動することでアナログ入力を可能としたものとして構成され得る。アナログスティック15は、ユーザがそのキートップに対して行った任意方向の任意量からなる入力操作に応じた、2次元の出力値を与える。より具体的には、キートップのデフォルト位置と、キートップに対して行われた操作により与えられたキートップの位置との相対的な位置関係が、(例えば、ポテンシオメータのような移動量を電圧に変換する素子を利用することで)電気的に認識され、その結果がアナログスティック15の2次元出力値として与えられる(すなわち、アナログスティック15は、2次元入力が可能な入力装置である)。
【0045】
十字状に配置される、ボタン14B、ボタン14C、ボタン14D、ボタン14Eの4つのボタンは、下側ハウジング11を把持する右手の親指が自然と位置するところに配置される。また、これらの4つのボタンと、アナログスティック15とは、下側LCD12を挟んで、左右対称に配置される。これにより、ゲームプログラムによっては、例えば、左利きの人が、これらの4つのボタンを使用して方向指示入力をすることも可能である。
【0046】
また、下側ハウジング11の内側面には、マイクロフォン用孔18が設けられる。マイクロフォン用孔18の下部には後述する音声入力装置としてのマイク(図4参照)が設けられ、当該マイクがゲーム装置10の外部の音を検出する。
【0047】
図3(a)は閉状態におけるゲーム装置10の左側面図であり、図3(b)は閉状態におけるゲーム装置10の正面図であり、図3(c)は閉状態におけるゲーム装置10の右側面図であり、図3(d)は閉状態におけるゲーム装置10の背面図である。図3(b)および(d)に示されるように、下側ハウジング11の上側面には、Lボタン14GおよびRボタン14Hが設けられている。Lボタン14Gは、下側ハウジング11の上面の左端部に設けられ、Rボタン14Hは、下側ハウジング11の上面の右端部に設けられる。Lボタン14GおよびRボタン14Hは、例えば、撮像部のシャッターボタン(撮影指示ボタン)として機能することができる。また、図3(a)に示されるように、下側ハウジング11の左側面には、音量ボタン14Iが設けられる。音量ボタン14Iは、ゲーム装置10が備えるスピーカの音量を調整するために用いられる。
【0048】
図3(a)に示されるように、下側ハウジング11の左側面には開閉可能なカバー部11Cが設けられる。このカバー部11Cの内側には、ゲーム装置10とデータ保存用外部メモリ45とを電気的に接続するためのコネクタ(図示せず)が設けられる。データ保存用外部メモリ45は、コネクタに着脱自在に装着される。データ保存用外部メモリ45は、例えば、ゲーム装置10によって撮像された画像のデータを記憶(保存)するために用いられる。なお、上記コネクタおよびそのカバー部11Cは、下側ハウジング11の右側面に設けられてもよい。
【0049】
また、図3(d)に示されるように、下側ハウジング11の上側面には、ゲーム装置10とゲームプログラムを記録した外部メモリ44を挿入するための挿入口11Dが設けられ、その挿入口11Dの内部には、外部メモリ44と電気的に着脱自在に接続するためのコネクタ(図示せず)が設けられる。当該外部メモリ44がゲーム装置10に接続されることにより、所定のゲームプログラムが実行される。なお、上記コネクタおよびその挿入口11Dは、下側ハウジング11の他の側面(例えば、右側面等)に設けられてもよい。
【0050】
また、図1および図3(c)に示されるように、下側ハウジング11の下側面にはゲーム装置10の電源のON/OFF状況をユーザに通知する第1LED16A、下側ハウジング11の右側面にはゲーム装置10の無線通信の確立状況をユーザに通知する第2LED16Bが設けられる。ゲーム装置10は他の機器との間で無線通信を行うことが可能であり、第1LED16Bは、無線通信が確立している場合に点灯する。ゲーム装置10は、例えば、IEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。下側ハウジング11の右側面には、この無線通信の機能を有効/無効にする無線スイッチ19が設けられる(図3(c)参照)。
【0051】
なお、図示は省略するが、下側ハウジング11には、ゲーム装置10の電源となる充電式電池が収納され、下側ハウジング11の側面(例えば、上側面)に設けられた端子を介して当該電池を充電することができる。
【0052】
(上側ハウジングの説明)
次に、上側ハウジング21の構成について説明する。図1〜図3に示すように、上側ハウジング21には、上側LCD(Liquid Crystal Display:液晶表示装置)22、外側撮像部23(外側撮像部(左)23aおよび外側撮像部(右)23b)、内側撮像部24、3D調整スイッチ25、および、3Dインジケータ26が設けられる。以下、これらの詳細について説明する。
【0053】
図1に示すように、上側LCD22は上側ハウジング21に収納される。上側LCD22は、横長形状であり、長辺方向が上側ハウジング21の長辺方向に一致するように配置される。上側LCD22は上側ハウジング21の中央に配置される。上側LCD22の画面の面積は、下側LCD12の画面の面積よりも大きく設定される。また、上側LCD22の画面は、下側LCD12の画面よりも横長に設定される。すなわち、上側LCD22の画面のアスペクト比における横幅の割合は、下側LCD12の画面のアスペクト比における横幅の割合よりも大きく設定される。
【0054】
上側LCD22の画面は、上側ハウジング21の内側面(主面)21Bに設けられ、上側ハウジング21に設けられた開口部から当該上側LCD22の画面が露出される。また、図2に示すように、上側ハウジング21の内側面は、透明なスクリーンカバー27によって覆われている。当該スクリーンカバー27は、上側LCD22の画面を保護するとともに、上側LCD22と上側ハウジング21の内側面と一体的にさせ、これにより統一感を持たせている。上側LCD22の画素数は、例えば、640dot×200dot(横×縦)であってもよい。なお、本実施形態では上側LCD22は液晶表示装置であるとしたが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置などが利用されてもよい。また、上側LCD22として、任意の解像度の表示装置を利用することができる。
【0055】
上側LCD22は、立体視可能な画像を表示することが可能な表示装置である。また、本実施例では、実質的に同一の表示領域を用いて左目用画像と右目用画像が表示される。
【0056】
外側撮像部23は、上側ハウジング21の外側面(上側LCD22が設けられた主面と反対側の背面)21Dに設けられた2つの撮像部(23aおよび23b)の総称である。
【0057】
図1の破線および図3(b)の実線で示されるように、外側撮像部23を構成する外側撮像部(左)23aおよび外側撮像部(右)23bは、上側LCD22の画面の横方向と平行に並べられて配置される。すなわち、2つの撮像部を結んだ直線が上側LCD22の画面の横方向と平行になるように、外側撮像部(左)23aおよび外側撮像部(右)23bが配置される。
【0058】
なお、本実施例においては、外側撮像部(左)23aおよび外側撮像部(右)23はハウジングに固定されており、撮像方向を変更することはできない。
【0059】
また、外側撮像部(左)23aおよび外側撮像部(右)23bは、上側LCD22(上側ハウジング21)の左右方向に関して中央から対称となる位置にそれぞれ配置される。
【0060】
このように、外側撮像部23の2つの撮像部(23aおよび23b)が、上側LCD22の左右方向に関して中央から対称の位置に配置されることにより、ユーザが上側LCD22を正視した場合に、外側撮像部23の撮像方向をユーザの視線方向と一致させることができる。また、外側撮像部23は、上側LCD22の画面の上端より上方の裏側の位置に配置されるため、外側撮像部23と上側LCD22とが上側ハウジング21の内部で干渉することがない。したがって、外側撮像部23を上側LCD22の画面の裏側に配置する場合と比べて、上側ハウジング21を薄く構成することが可能となる。
【0061】
内側撮像部24は、上側ハウジング21の内側面(主面)21Bに設けられ、当該内側面の内向きの法線方向を撮像方向とする撮像部である。内側撮像部24は、所定の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
【0062】
図1に示すように、内側撮像部24は、上側ハウジング21を開いた状態において、上側ハウジング21の上部であって、上側LCD22の画面の上端よりも上方に配置され、上側ハウジング21の左右方向に関して中央の位置(上側ハウジング21(上側LCD22の画面)を左右に2等分する線の線上)に配置される。具体的には、図1および図3(b)に示されるように、内側撮像部24は、上側ハウジング21の内側面であって、外側撮像部23の左右の撮像部(外側撮像部(左)23aおよび外側撮像部(右)23b)の中間の裏側の位置に配置される。すなわち、上側ハウジング21の外側面に設けられた外側撮像部23の左右の撮像部を上側ハウジング21の内側面に投影した場合、当該投影した左右の撮像部の中間に、内側撮像部24が設けられる。図3(b)で示される破線24は、上側ハウジング21の内側面に存在する内側撮像部24を表している。
【0063】
このように、内側撮像部24は、外側撮像部23とは反対方向を撮像する。内側撮像部24は、上側ハウジング21の内側面であって、外側撮像部(左)23aと外側撮像部(右)23bの中間位置の裏側に設けられる。これにより、ユーザが上側LCD22を正視した際、内側撮像部24でユーザの顔を正面から撮像することができる。また、外側撮像部23の左右の撮像部と内側撮像部24とが上側ハウジング21の内部で干渉することがないため、上側ハウジング21を薄く構成することが可能となる。
【0064】
3D調整スイッチ25は、スライドスイッチであり、上述のように上側LCD22の表示モードを切り替えるために用いられるスイッチである。また、3D調整スイッチ25は、上側LCD22に表示された立体視可能な画像(立体画像)の立体感を調整するために用いられる。
【0065】
3Dインジケータ26は、上側LCD22が立体表示モードか否かを示す。3Dインジケータ26は、LEDであり、上側LCD22の立体表示モードが有効の場合に点灯する。
【0066】
また、上側ハウジング21の内側面には、スピーカ孔21Eが設けられる。
【0067】
(ゲーム装置10の内部構成)
次に、図4を参照して、ゲーム装置10の内部の電気的構成について説明する。図4は、ゲーム装置10の内部構成を示すブロック図である。図4に示すように、ゲーム装置10は、上述した各部に加えて、情報処理部31、メインメモリ32、外部メモリインターフェイス(外部メモリI/F)33、データ保存用外部メモリI/F34、データ保存用内部メモリ35、無線通信モジュール36、ローカル通信モジュール37、リアルタイムクロック(RTC)38、加速度センサ39、電源回路40、およびインターフェイス回路(I/F回路)41等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて下側ハウジング11(または上側ハウジング21でもよい)内に収納される。
【0068】
情報処理部31は、所定のプログラムを実行するためのCPU(Central Processing Unit)311、画像処理を行うGPU(Graphics Processing Unit)312等を含む情報処理手段である。情報処理部31のCPU311は、ゲーム装置10内のメモリ(例えば外部メモリI/F33に接続された外部メモリ44やデータ保存用内部メモリ35)に記憶されているプログラムを実行することによって、当該プログラムに応じた処理(例えば、撮影処理や、後述するゲーム処理)を実行する。なお、情報処理部31のCPU311によって実行されるプログラムは、他の機器との通信によって他の機器から取得されてもよい。また、情報処理部31は、VRAM(Video RAM)313を含む。情報処理部31のGPU312は、CPU311からの命令に応じて画像を生成し、VRAM313に描画する。そして、GPU312は、VRAM313に描画された画像を上側LCD22および/または下側LCD12に出力し、上側LCD22および/または下側LCD12に当該画像が表示される。
【0069】
情報処理部31には、メインメモリ32、外部メモリI/F33、データ保存用外部メモリI/F34、および、データ保存用内部メモリ35が接続される。外部メモリI/F33は、外部メモリ44を着脱自在に接続するためのインターフェイスである。また、データ保存用外部メモリI/F34は、データ保存用外部メモリ45を着脱自在に接続するためのインターフェイスである。
【0070】
メインメモリ32は、情報処理部31(のCPU311)のワーク領域やバッファ領域として用いられる揮発性の記憶手段である。すなわち、メインメモリ32は、上記プログラムに基づく処理に用いられる各種データを一時的に記憶したり、外部(外部メモリ44や他の機器等)から取得されるプログラムを一時的に記憶したりする。本実施形態では、メインメモリ32として例えばPSRAM(Pseudo−SRAM)を用いる。
【0071】
外部メモリ44は、情報処理部31によって実行されるプログラムを記憶するための不揮発性の記憶手段である。外部メモリ44は、例えば読み取り専用の半導体メモリで構成される。外部メモリ44が外部メモリI/F33に接続されると、情報処理部31は外部メモリ44に記憶されたプログラムを読み込むことができる。情報処理部31が読み込んだプログラムを実行することにより、所定の処理が行われる。データ保存用外部メモリ45は、不揮発性の読み書き可能なメモリ(例えば、NAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用外部メモリ45には、外側撮像部23で撮像された画像や他の機器で撮像された画像が記憶される。データ保存用外部メモリ45がデータ保存用外部メモリI/F34に接続されると、情報処理部31はデータ保存用外部メモリ45に記憶された画像を読み込み、上側LCD22および/または下側LCD12に当該画像を表示することができる。
【0072】
データ保存用内部メモリ35は、読み書き可能な不揮発性メモリ(例えば、NAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用内部メモリ35には、無線通信モジュール36を介した無線通信によってダウンロードされたデータやプログラムが格納される。
【0073】
無線通信モジュール36は、例えばIEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュール37は、所定の通信方式(例えば赤外線通信)により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール36およびローカル通信モジュール37は情報処理部31に接続される。情報処理部31は、無線通信モジュール36を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール37を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
【0074】
また、情報処理部31には、加速度センサ39が接続される。加速度センサ39は、3軸(xyz軸)方向に沿った直線方向の加速度(直線加速度)の大きさを検出する。加速度センサ39は、下側ハウジング11の内部に設けられる。加速度センサ39は、図1に示すように、下側ハウジング11の長辺方向をx軸、下側ハウジング11の短辺方向をy軸、下側ハウジング11の内側面(主面)に対して垂直な方向をz軸として、各軸の直線加速度の大きさを検出する。
【0075】
また、情報処理部31には、RTC38および電源回路40が接続される。RTC38は、時間をカウントして情報処理部31に出力する。情報処理部31は、RTC38によって計時された時間に基づき現在時刻(日付)を計算する。電源回路40は、ゲーム装置10が有する電源(下側ハウジング11に収納される上記充電式電池)からの電力を制御し、ゲーム装置10の各部品に電力を供給する。
【0076】
また、情報処理部31には、I/F回路41が接続される。I/F回路41には、マイク42およびスピーカ43が接続される。具体的には、I/F回路41には、図示しないアンプを介してスピーカ43が接続される。マイク42は、ユーザの音声を検知して音声信号をI/F回路41に出力する。アンプは、I/F回路41からの音声信号を増幅し、音声をスピーカ43から出力させる。また、タッチパネル13はI/F回路41に接続される。I/F回路41は、マイク42およびスピーカ43(アンプ)の制御を行う音声制御回路と、タッチパネルの制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル13からの信号に基づいて所定の形式のタッチ位置データを生成して情報処理部31に出力する。タッチ位置データは、タッチパネル13の入力面において入力が行われた位置の座標を示す。なお、タッチパネル制御回路は、タッチパネル13からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行う。情報処理部31は、タッチ位置データを取得することにより、タッチパネル13に対して入力が行われた位置を知ることができる。
【0077】
下側LCD12および上側LCD22は情報処理部31に接続される。下側LCD12および上側LCD22は、情報処理部31(のGPU312)の指示に従って画像を表示する。本実施形態では、情報処理部31は、上側LCD22に立体画像(立体視可能な画像)を表示させる。
【0078】
外側撮像部23および内側撮像部24は、情報処理部31に接続される。外側撮像部23および内側撮像部24は、情報処理部31の指示に従って画像を撮像し、撮像した画像データを情報処理部31に出力する。
【0079】
3D調整スイッチ25は、情報処理部31に接続される。3D調整スイッチ25は、スライダ25aの位置に応じた電気信号を情報処理部31に送信する。
【0080】
また、3Dインジケータ26は、情報処理部31に接続される。情報処理部31は、3Dインジケータ26の点灯を制御する。例えば、情報処理部31は、上側LCD22が立体表示モードである場合、3Dインジケータ26を点灯させる。以上がゲーム装置10の内部構成の説明である。
【0081】
(入力値補正処理プログラムの動作の概要)
以下、本実施形態における入力値補正処理プログラム71(図7のメモリマップ参照)の動作の概要について説明する。本実施形態では、アナログスティック15は、ゲームプログラム70行うゲーム処理における入力の一部を提供する入力装置である。そして、このアナログスティック15から提供される当該ゲーム処理の入力が、入力値補正処理プログラム71の機能により補正され、補正入力値となる。ゲームプログラム70は、当該補正入力値を利用してゲーム処理を行う。
【0082】
図5Aから図5Cまでの図を参照しつつ、入力値補正処理プログラム71の動作等の概要について説明する。
【0083】
(キートップの可動範囲と、入力操作に応じた出力)
入力値補正処理プログラム71の動作等について説明する前に、アナログスティック15のキートップの可動範囲と、入力操作に応じた出力との関係について簡単に説明する。
【0084】
図5Aは、アナログスティック15の操作例を示している。アナログスティック15は、それを構成する部材の一部であるキートップに対してユーザが行った任意方向の任意量の移動操作に応じた、2次元データとして出力値を提供する。より具体的には、アナログスティック15は、当該キートップの基準位置からの変位が観測され、その変位した量(移動量)を得て、その移動量に対応するように2次元データとして出力値を提供する。
【0085】
図5Bは、アナログスティック15に対して入力操作を行われた際に移動するアナログスティック15の部材(キートップ)の可動範囲と、アナログスティック15がその入力操作に対して出力する値の範囲との関係を説明するための模式図である。アナログスティック15は、キートップの基準位置と、キートップに対して行われた操作により与えられたキートップの位置との相対的な位置関係およびその移動量を観測し、その移動量に対応した2次元出力値を与える。この図5Bは、本発明の一実施形態として提供される入力値補正処理プログラムにより処理を行っていない場合について説明する。
【0086】
このように、アナログスティック15は、2次元入力が可能なデバイスである。この入力において得られる2次元データを、(ix,iy)で表現する。ここで、この2次元データの一方の成分について説明を行えば、他方の成分についての説明は類似のものとして扱えることから、ここでは、主に、成分ixについて説明する。ただし、成分ixと、成分iyとの間には、一定の関係性が成立している場合もあり、これについては後述する。
【0087】
図5Bで示される模式図の横軸は、成分ixと対応づけられる、アナログスティック15に対する入力操作に応じたキートップの移動量(この場合、キートップの基準位置からの移動距離X1)を示している(また、これと同様に、移動距離Y1は、成分iyと対応づけられる変数として規定される)。アナログスティック15のキートップは、入力操作によってその基準位置から距離STK−Sだけ移動可能である。他方、図5Bで示される模式図の縦軸は、アナログスティック15がキートップの操作に応じて出力し得る変数(ix)である。この変数ixがとり得る範囲は、下限値を0とし、その上限値Inx_MAXとして示される。なお、キートップの基準位置からの移動量を、移動距離として表現したが、その移動量を、距離でなく、角度など他の量で記述されてもよい。
【0088】
直線L1は、アナログスティック15において、そのキートップの基準位置からの移動距離(X1)と、それに対応して出力される値(ix)との関係性を模式的に表している。なお、例示目的のために、移動距離(X1)と、それに対応して出力される値(ix)との関係との間に線形性が存在するものとして例示されているが、この二者の関係において、場合によっては必ずしも線形性を要さない。図5Bから理解されるように、キートップの入力操作時における基準位置からの移動距離X1(0≦X1≦STK−S)に応じて、成分ixは所定の値の範囲(0≦ix≦Inx_MAX)で与えられる。
【0089】
図5Bはまた、対比のため、上述の場合と同じ値の範囲(0≦ix≦Inx_MAX)を出力値として実現しようとする場合であって、入力操作時にキートップが移動することが可能な距離が、距離STK−Sより大きい場合(本例では、当該距離の上限値としてSTK−Lが与えられる)についても例示している。具体的には、入力操作時にキートップが移動することが可能な距離が、距離STK−Sの約3倍である場合を比較目的で示している。直線L2は、その場合における、移動距離X1と、それに対応して出力される値(ix)との関係を表している。
【0090】
直線L1および直線L2で表現された2例を比較すると、成分ixにおいて同じ値の範囲(0≦ix≦Inx_MAX)を出力値として実現しようとする場合であって、キートップの可動範囲が狭くなったときの弊害を容易に理解することができる。
【0091】
ユーザが、0からst1までの範囲(st1≦STK−S)の移動距離X1で移動させたとき、直線L2に従う例では、成分ixがその値として0からout1までの範囲の値を与える。他方、直線L1に従う例では、X1がst1となると、ix成分として値out1の3倍の値が与えられる。この例から理解されるように、デバイスの小型化などの要請によって、アナログスティック15においてキートップの可動範囲が狭くなると、その狭くなった分だけ、アナログスティック15の出力はその操作に対して鋭敏に反応する。これは、キートップ可動範囲が限定されると、細やかな操作が困難なものとなることを示している。
【0092】
(入力値補正処理プログラムによる処理を行う場合)
次に、図5Cを参照しつつ、本発明の例示的実施形態に係る入力値補正処理プログラム71が実行された場合における、その動作の概要およびアナログスティック15の操作性の向上の効果について説明する。
【0093】
図5Cは、本発明の一実施形態における入力値補正処理プログラム71を用いた際に、キートップの可動範囲(X1)の擬似的に拡大された範囲と、アナログスティック15がその入力操作に対して出力する値(ix)の範囲との関係の一例を示した図である。
【0094】
この例示的な実施形態において、アナログスティック15におけるキートップの可動範囲は、0からSTK−Sまでの範囲となっている。このアナログスティック15が操作された際に、成分ixが所定の値の範囲(0≦ix≦Inx_MAX)の値を示す場合であって、入力値補正処理プログラム71の実行によって、キートップの可動範囲が擬似的な拡大を達成する場合について説明する。
【0095】
この例では、入力値補正処理プログラム71は、アナログスティック15の操作によって0からSTK−Sまでの範囲でX1が与えられるとき、直線M1に示されるような対応関係で成分ixを与える。この直線M1は、図5Bにおける直線L2とほぼ対応する。すなわち、アナログスティック15のキートップの可動範囲が、0からSTK−Sまでの範囲に制限された場合であっても、その可動範囲が0からSTK−Lまでの範囲である場合と同等の対応関係で、移動距離X1に対して成分ixが提供される。すなわち、図5Bの直線L1に示されたとは対照的に、出力される成分ixは、移動距離X1に対して鋭敏な反応を示さない。このことは、移動距離X1が、STK−Sとして与えられるとき、アナログスティック15は成分ixとして3×out1を与えることからも理解される。
【0096】
他方、入力値補正処理プログラム71は、3×out1からInx_MAXまでの範囲の成分ixについては、次のようにして与える。すなわち、入力値補正処理プログラム71は、アナログスティック15のキートップが操作され、移動距離X1がSTK−Sに到達した際に与えられた、当該キートップの移動量(移動距離)の単位時間あたりの変化量(変化速度)を利用する。
【0097】
より具体的には、入力値補正処理プログラム71は、その変化速度が大きければ、その分だけ、大きなix成分を与える。図5Cにおいて、3×out1からInx_MAXまでの範囲の成分ixは、移動距離X1がSTK−Sに到達した際の変化速度に応じて提供される。
【0098】
すなわち、図5Cにおける直線(点線)M2からM5までに示されるように、成分ixがInx_MAXに到達するまでの経路は、移動距離X1が上限値STK−Sに到達した際の変化速度に応じて変化する。これは、ユーザがアナログスティック15を速く動かせば、その分だけInx_MAXに速く到達するような挙動(すなわち、図5Cの例でいえば、M2でしめされるような挙動)を、入力値補正処理プログラム71は、アナログスティック15の操作性において実現することを示している。
【0099】
これらのことから理解されるように、入力値補正処理プログラム71は、アナログスティック15のキートップの可動範囲が狭い状況であっても、キートップの可動範囲の上限値近傍に至るまでの細やかな操作性を提供しつつ(可動範囲の上限に対して比較的小さな移動量で入力するときでも操作者の意図通りの入力操作ができる)、入力操作に対応したアナログスティック15からの出力の良好な追従性も提供することを達成し得る。
【0100】
ここまで、移動距離X1と成分ixとの関係性について主に説明してきた。既述のように、アナログスティック15は、2次元入力を可能にする入力装置であり、この入力において得られる2次元データは、(ix,iy)として提供される。以下、図6を参照しつつ、入力値補正処理プログラム71が、(X1,Y1)で規定されるアナログスティック15の可動範囲に応じて提供される2次元データ(ix,iy)を、補正する過程をより詳細に説明する。
【0101】
図6は、アナログスティック15が実現する2次元入力による入力値を、本発明の一実施形態に係る入力値補正処理プログラム71が処理することで得られる補正値を説明するための一群のグラフである。
【0102】
図6では、xy平面が、アナログスティック15への入力操作に応じて出力される2次元データ(ix,iy)をプロットする平面として用いられている。図6(a)から(f)までのいずれにおいても、そのxy平面上に原点を中心とする2つの円が描かれている。外側の円は、アナログスティック15に対する入力操作に応じて出力され得る値の組合せ(ix,iy)が存在する領域の境界を示す。ただし、アナログスティック15から得られる2次元データ(ix,iy)を、それぞれの最大値が1となるように規格化して、当該データをxy平面にプロットしている。したがって、その外円の半径が1となるように表示されている。なお、得られたデータを必ずしもこのように規格化する必要はない。
【0103】
他方、内側の円は、アナログスティック15に対する入力操作に応じて出力され得る値の組合せ(ix,iy)において、その実際に得られた値の組合せを(0,0)とみなす範囲を規定する目的のために利用される。その目的のために使用する領域として、この内円の境界で規定される領域のみが使用されてもよいが、この例示的な実施形態においては、当該内円で規定される領域と、所定領域とが重なった部分が、入力操作に応じて出力され得る値の組合せ(ix,iy)において、その実際に得られた値の組合せを(0,0)とみなす領域として使用される。
【0104】
より具体的には、図6(a)に示されるように、入力値補正処理プログラム71は、x軸に対して対称な2直線で夾まれる領域と、y軸に対して対称な2直線で夾まれる領域の重なりとして構成される正方形Aの領域を、上述の所定領域として用いる。すなわち、図6(b)における斜線領域として示されるように、半径a(a<1)の内円と、正方形Aとが重なった領域(以下、領域S(図6(c)を参照)とする)が、入力操作に応じて出力され得る値の組合せ(ix,iy)において、その実際に得られた値の組合せを(0,0)とみなす領域として使用される。
【0105】
図6に示された内容と、図5Cで示された内容との関係をここで整理する。
【0106】
図5Cで示された例では、入力値補正処理プログラム71は、0からSTK−Sまでの範囲で移動距離X1がアナログスティック15の操作によって与えられるとき、直線M1に例示されるような対応関係で規定される成分ixを与える。これと同様に、アナログスティック15は、移動距離X1と対で与える移動距離Y1も所定の範囲の値を取ることが可能であり、この移動距離Y1は、成分iyと対応づけられる。
【0107】
図6(d)は、2次元データ(ix,iy)が位置づけられるxy平面上の領域の一例(斜線部)を示した。アナログスティック15が、2次元データ(ix,iy)として、図6(d)の斜線領域に位置づけられる点P(xp,yp)に対応する2次元データを与えた場合、入力値補正処理プログラム71は、所定の処理を行って、点P(xp,yp)を点Q(xq,yq)に対応する値に変換する。以下で、この点Q(xq,yq)についての詳細を説明する。具体的には、点P(xp,yp)と点Q(xq,yq)との関係性は、例えば、図6(e)に示されるような関係性となる。
【0108】
この関係性についてさらに説明する。入力値補正処理プログラム71が実行されていない場合、成分ixは、例えば、図5Bに示された直線L1に基づいた対応関係で、アナログスティック15のキートップの移動距離(X1)に応じて与えられる(これと類似の対応関係で、Y1に応じて成分iyが与えられる)。これに対し、入力値補正処理プログラム71が実行された場合、成分ixは、図5Cに示された直線M1に基づいた対応関係で、アナログスティック15のキートップの移動距離(X1)に応じて与えられる。上述の例でいえば、点P(xp,yp)から点Q(xq,yq)への変換は、移動距離X1と成分ixとの対応関係を、直線L1に基づいた対応関係から直線M1に基づいた対応関係に変更し、移動距離Y1と成分iyとの対応関係についても同様の変更を加えることに相当する。
【0109】
そして、図6(f)に示されるように、アナログスティック15により得られた2次元データ(ix,iy)が外円の境界に到達した点として位置づけられる点P(xp,yp)に対応するデータとなった場合、入力値補正処理プログラム71は、その到達した際の移動距離の単位時間当たりの変化量(変化速度)に応じた所定のパラメータを取得する。そして、入力値補正処理プログラム71は、P(xp,yp)を上述と同様に変換して得られたQ(xq,yq)に対して、当該所定のパラメータを用いた所定の処理を行うことで、xy平面上に擬似的に位置づけられ得るQ’(xq’,yq’)に対応した2次元データを得る。なお、例示的な実施形態において、入力値補正処理プログラム71は、このQ’(xq’,yq’)を、任意の調整用パラメータを用いることによって所定の範囲となるように調整を行い得る。具体的には、入力値補正処理プログラム71は、図6(f)で示されたような位置に対応するQ’を、図6(g)に示されるように、半径1の外円に収まるようなQ’に調整用パラメータを用いて再度変換し得る。これによって、入力値補正処理プログラム71は、操作性、追従性を改善する。なお、この再変換は、P(xp,yp)からQ’(xq’,yq’)への変換と同時に処理するように行ってもよい。ここで例示した一連の処理のより具体的な実装例については、後述する。
【0110】
(メモリマップ)
まず、ゲームプログラムの実行中にメインメモリ32に記憶される主なデータについて説明する。図7は、ゲーム装置10のメインメモリ32のメモリマップを示す図である。図7に示されるように、メインメモリ32には、ゲームプログラム70、入力値補正処理プログラム71、各種変数72等が記憶される。なお、本例では、入力値補正処理プログラム71は、ゲームプログラム70と協働し、また、ゲームプログラム70からの要求を受けて処理を行うが、入力値補正処理プログラム71が実行される場合は、この例に限られない。例えば、入力値補正処理プログラム71は、ゲーム以外のアプリケーションプログラムと協働し、また、ゲームプログラム70からの要求を受けて処理を行ってもよい。
【0111】
ゲームプログラム70は、情報処理部31にゲーム処理を主な処理とする一連の情報処理を実行させるためのプログラムである。
【0112】
入力値補正処理プログラム71は、情報処理部31に入力値補正処理を実行させるためのプログラムである。入力値補正処理プログラム71は、内部変数として入力装置出力値など含み得るが、当該内部変数の一部は、後述の各種変数72として本入力値補正処理プログラム71とは別領域に規定されていてよい。
【0113】
各種変数72は、ゲームプログラム70または入力補正処理プログラム71の実行の際に用いられる各種変数である。
【0114】
ゲーム装置10の電源が投入されると、ゲーム装置10の情報処理部31(CPU311)は、図示しないROMに記憶されている起動プログラムを実行し、これによってメインメモリ32等の各ユニットが初期化される。次に、データ保存用内部メモリ35に記憶されたゲームプログラムがメインメモリ32に読み込まれ、情報処理部31のCPU311によって当該ゲームプログラムの実行が開始される。
【0115】
以下、図8Aから図8Cまでのフローチャートを参照して、一連の情報処理プログラムに基づいて実行される処理の流れを説明する。本図および後続の図では、「ステップ」を、「S」と略記する。なお、図8Aから図8Cまでのフローチャートは、単なる一例にすぎない。したがって、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判断ステップで利用される閾値も、単なる一例に過ぎず、必要に応じて他の値を採用してもよい。また、本実施形態では、図8Aから図8Cまでのフローチャートのすべてのステップの処理をCPU311が実行するものとして説明するが、図8Aから図8Cまでのフローチャートの一部のステップの処理を、CPU311以外のプロセッサや専用回路が実行するようにしてもよい。
【0116】
(入力値補正処理)
アナログスティック15は、それに対して行われた入力操作に応じて2次元データ(ix,iy)を出力する。次いで、ゲーム装置10のCPU311は、アナログスティック15から当該2次元データを所定の時間間隔で取得する。以下、ゲーム装置10が2次元データを取得するこの時間間隔の最小単位を、ここで説明する入力値補正処理における、単位時間として表現する。また、CPU311は、2次元データは、単位時間ごとにアナログスティック15から連続的に取得するが、以下の説明において「今回」の2次元データとは、CPU311がその時点で処理対象としている2次元データである。また、「前回」の2次元データとは、現時点(すなわち、「今回」の2次元データが処理対象とされている時点)から単位時間分だけ前にCPU311により取得された2次元データをいう。
【0117】
図8Aから図8Cまでは、アナログスティック15から得られた一次データを処理する入力値補正処理のながれを示したフローチャートである。
【0118】
図8Aは、当該入力値補正処理のメインフローを示す。なお、後述により明らかとなる次の変数は、入力値補正処理が開始される前に、以下のように初期化される。なお、初期化の具体的な頻度、タイミングは、ゲーム装置10の仕様によって適宜変更され得る。距離iLTは、前回の2次元データ(ix,iy)の2次元ベクトルとしての大きさであり、iLTは0となるように初期化される(iLT=0);変化量iLVは、今回の2次元データ(ix,iy)のベクトルとしての大きさ(iL)から、前回の2次元データ(ix,iy)のベクトルとしての大きさ(iLT)を差し引いた量として定義され、変化量iLVは0として初期化される(iLV=0)。また、制御用パラメータsは、初期化されてsは1となる(s=1)。調整用パラメータNは、初期化されて、任意の実数値となる。この調整用パラメータNは、キートップの可動範囲を擬似的に拡大する際に、その拡大の程度を調整し得るパラメータである。
【0119】
ステップ101において、CPU311は、アナログスティック15からその入力操作に応じて提供される2次元データ(ix,iy)を取得する。
【0120】
ステップ102において、CPU311は、予備補正処理を行う。具体的には、このステップ102で行われる処理は、図8Bに示されるフローチャートに沿って行われる。この予備補正処理の詳細は、後述するが、この予備補正処理によって、アナログスティック15からその入力操作に応じて提供される2次元データ(ix,iy)が、予備的に補正され、この予備的な補正の結果得られた値により2次元データ(ix,iy)が更新される。なお、この予備補正処理は、入力値補正処理においてなくともよい。
【0121】
ステップ103において、CPU311が、予備補正処理を経た2次元データ(ix,iy)に対して補正処理を行う。この補正処理の詳細は、後述するが、この補正処理を介して最終的に得られたデータが、ゲームプログラム70において入力値として利用されるデータとなる。
【0122】
次に、ステップ101において、CPU311が、アナログスティック15からその入力操作に応じて提供される2次元データ(ix,iy)を取得した後に、予備補正処理(ステップ102)が行われる過程の詳細を、図8Bを参照して説明する。図8Bは、予備補正処理の流れを示したフローチャートである。
【0123】
ステップ111において、CPU311が、アナログスティック15からその入力操作に応じて提供される2次元データ(ix,iy)を取得する。その後、CPU311は、ステップ112に処理を進める。
【0124】
ステップ112からステップ116までの一連のステップでは、CPU311は、アナログスティック15に対する入力操作に応じて出力され得る値の組合せ(ix,iy)が、所定の条件を満たした場合には、その実際に得られた(ix,iy)を(0,0)であるとして取る扱う過程を示している。具体的には、次のような処理が行われる。
【0125】
ステップ112において、CPU311は、アナログスティック15からその入力操作に応じて提供された2次元データ(ix,iy)が、xy平面上の点としてみなされたときに、原点(0,0)が中心でありかつ半径a(a<1)である円の内側の領域(図6(a)を参照)に存在する2次元データであるか否かを判定する。
【0126】
この判定において、CPU311が、2次元データ(ix,iy)を上述の条件に該当すると判定したとき(ステップ112,Yes)、CPU311は、ステップ113の処理を進める。他方、CPU311が、2次元データ(ix,iy)を当該条件に該当しないと判定したとき(ステップ112,No)、CPU311は、ステップ115の処理を進める。
【0127】
ステップ113において、CPU311は、上述の2次元データ(ix,iy)が正方形Aの内側に存在するか否かを判定する。すなわち、CPU311は、このステップ113および上述のステップ112によって、図6(c)で示された領域Sの内部に(ix,iy)が存在するか否かを判定する。ステップ113の判定において、CPU311が、2次元データ(ix,iy)を当該条件に該当すると判定したとき(ステップ113,Yes)、CPU311は、ステップ114の処理を進める。他方、CPU311が、2次元データ(ix,iy)を当該条件に該当しないと判定したとき(ステップ113,No)、CPU311は、ステップ115の処理を進める。
【0128】
ステップ114において、CPU311は、今回の2次元データ(ix,iy)を(0.0)となるように更新する。
【0129】
ステップ115において、まず、CPU311は、位置ベクトル(ix,iy)と正方形Aのいずれかの辺との交点から原点までの距離(以下、距離D)を計算し、その距離Dと、上述の円の半径aと比較する。そして、CPU311は、計算された値Dおよびaのうち小さな方を、変数bとして記憶する(b=min[D,a])。
【0130】
ステップ116において、CPU311は、ステップ115の計算により得られた数値bを用いて、(ix、iy)を更新する。具体的には、CPU311は、{(ix−b)/(1−b)}および{(iy−b)/(1−b)}を計算し、この2つの数値の組合せを、新たな(ix,iy)として記憶する。
【0131】
なお、ステップ115および116における計算を経ることで、CPU311は、入力操作に応じた出力により自然な挙動を与える値を提供することができる。
【0132】
次に、ステップ102において、CPU311が、予備補正処理を行った後に、補正処理(ステップ103)が行われる過程の詳細を、図8Cを参照して説明する。図8Cは、補正処理の流れを示したフローチャートである。
【0133】
ステップ201において、CPU311は、予備補正処理(ステップ102)の結果として得られた(ix,iy)を取得する。ここで、得られた(ix,iy)は、後続の一連の処理において、所定条件を満たせば、中心(0,0)で半径1である円の範囲でクランプされる(図6を参照)。
【0134】
ステップ202において、CPU311は、2次元データ(ix,iy)を、2次元ベクトルとみなした際の当該ベクトルの大きさ(iL)を計算する。具体的には、CPU311は、ベクトル(ix,iy)の大きさを、(ix2+iy2)の正の平方根(主平方根)を計算することで得る(これは、xy平面において、原点(0,0)と点P(ix,iy)との距離iLを求めることに相当する)。
【0135】
ステップ203において、CPU311は、距離iLが1以上であるか否かを判定する。すなわち、CPU311は、処理対象となっているデータに対応するxy平面上の点(ix,iy)が、原点(0,0)を中心として半径が1である円の外側の領域に存在するか、またはその内側の領域に存在するかを判定する。ここで、CPU311が、xy平面上の点(ix,iy)が原点(0,0)を中心として半径が1である円の外側の領域に存在すると判定した場合(ステップ203,Yes)は、CPU311は、ステップ204の処理に進む。他方、CPU311が、その円の内側の領域に存在すると判定した場合(ステップ203,No)は、CPU311は、ステップ206の処理に進む。
【0136】
ステップ204において、CPU311は、ベクトル(ix,iy)の大きさを1に抑える処理を行う。換言すると、CPU311は、一連のステップ202からステップ204までの処理を行うことで、ステップ201で取得された(ix,iy)を所定の範囲(すなわち、その2次元ベクトルの大きさが1以下となる範囲)にクランプする処理(クランプ処理)を行う。具体的には、CPU311は、成分ixおよびiyのそれぞれを、iLで除算し、それにより得られた値の組を、(ix,iy)として更新する。
【0137】
ステップ205において、CPU311は、アナログスティック15から取得された前回の2次元データに基づいて計算された距離(iLT)が、1未満であるか否かを判定する。すなわち、アナログスティック15から連続的に取得されている2次元データ(ix,iy)において、前回の2次元データが、ステップ202からステップ204までのクランプ処理の対象となっていたか否かを評価し、今回の2次元データの取得において、当該2次元データが、クランプ処理の対処となる位置に配置されたという状態であるか否かを判定する。具体的には、CPU311が、距離iLTが1未満であると判定したとき(ステップ205,Yes)、CPU311は、ステップ207の処理に進む。他方、CPU311が、距離iLTが1以上であると判定したとき(ステップ205,No)、CPU311は、ステップ208の処理に進む。
【0138】
ステップ206において、CPU311は、アナログスティック15から取得された前回の2次元データに基づいて計算された距離(iLT)が、1以上であるか否かを判定する。すなわち、アナログスティック15から連続的に取得されている2次元データ(ix,iy)において、前回の2次元データが、ステップ202からステップ204までのクランプ処理の対象となっていたか否かを評価し、今回の2次元データの取得において、当該2次元データが、クランプ処理の対処となる位置からはずれた状態となったか否かを判定する。
【0139】
具体的には、CPU311が、距離iLTが1以上であると判定したとき(ステップ207,Yes)、CPU311は、ステップ207の処理に進む。他方、CPU311が、距離iLTが1未満であると判定したとき(ステップ206,No)、CPU311は、ステップ208の処理に進む。
【0140】
ステップ207において、CPU311は、前回の2次元データから計算された距離(iLT)を、今回の2次元データから計算された距離(iL)から差し引き、単位時間当たりの当該距離の変化速度(iLV)を得る。なお、本ステップにおいて、前回の2次元データから計算された距離(iLT)を、今回の2次元データから計算された距離(iL)から差し引くことでその距離の変化速度を計算しているが、このような計算の代わりに、前回および今回の2次元データの差分ベクトルを計算して、得られた差分ベクトルの大きさを求め、その大きさによって変化速度を代替的に規定してもよい。ただし、アナログスティックのキーパットに対してその円周に沿った操作の影響が著しい場合などには、本例のような計算に基づいた変化速度の取得が好ましい。
【0141】
ステップ208において、CPU311は、距離iLTの値を更新する。具体的には、CPU311は、次回の入力値補正処理のために、今回の2次元データから計算された距離(iL)の値を、距離iLTとして記憶する。
【0142】
ステップ209において、CPU311は、制御用パラメータsを更新する。具体的には、CPU311は、制御用パラメータsを、現時点での制御用パラメータsの値(初期化した時点で、パラメータsは1である)に、変化速度iLVを加算した値を、新たなパラメータsとするように更新する。
【0143】
ステップ210からステップ213までの一連のステップは、制御用パラメータsを、1以上かつN以下の値の範囲(1≦s≦N)に収めるための処理である。
【0144】
ステップ210において、CPU311は、制御用パラメータsが1未満である(s<1)か否かを判定する。制御用パラメータsが1未満であるとき(ステップ210、Yes)、CPU311は、ステップ211に進む。他方、制御用パラメータsが1以上のとき(ステップ210、No)、CPU311は、ステップ212に進む。
【0145】
ステップ211において、CPU311は、制御パラメータのs値を1とするように、当該sを更新する。
【0146】
ステップ212において、CPU311は、制御用パラメータsがNを超える(s>N)か否かを判定する。制御用パラメータsがNを超えるとき(ステップ212、Yes)、CPU311は、ステップ213に進む。他方、制御用パラメータsがN以下であるのとき(ステップ212、No)、CPU311は、ステップ214に進む。
【0147】
ステップ213において、CPU311が、制御パラメータのs値をNとするように、当該sを更新する。
【0148】
ステップ214において、CPU311は、2次元データ(ix,iy)をスケーリングする。具体的には、CPU311は、成分ixを更新して、ix×(s/N)とし、成分iyを更新してiy×(s/N)とする。
【0149】
(変形例)
上述した例示的実施形態においては、2次元入力を提供するアナログスティック15が、具体的な入力装置として使用された。しかしながら、本明細書の開示に基づけば、本発明の入力値補正処理プログラムは、1次元の入力、3次元以上の多次元データ入力を与える入力装置を使用した場合においても利用され得ることは、当業者は容易に理解し得る。
【0150】
また、上記実施形態では、ゲーム装置10を用いて入力値補正処理プログラムについて説明しているが、他の実施形態では、任意の情報処理装置または情報処理システム(例えば、PDA(Personal Digital Assistant)、携帯電話、パーソナルコンピュータ、カメラ等)を用いて入力値補正処理プログラムを使用してもよい。
【0151】
また、上記実施形態では、一台の装置(ゲーム装置10)のみによってゲーム処理を実行しているが、他の実施形態では、互いに通信可能な複数の情報処理装置を有する画像表示システムにおいて、当該複数の情報処理装置が画像表示処理を分担して実行するようにしてもよい。
【0152】
また、様々なプログラムモジュールがコンピュータのオペレーティングシステムの一部を構成することがある。このような場合、アプリケーションプログラムは、必要に応じて、当該モジュールを呼び出して所望の処理を実行する。したがって、汎用的なモジュールの一部の提供が期待されるハードウェアにおいて使用されることを前提とするならば
、そのような汎用的なモジュールがアプリケーションプログラムと必ずしも一体的に提供されないくともよい。したがって、上記プログラムからそれらモジュールに対応する部分を除いたソフトウェアが、コンピュータ読取り可能な記憶媒体に記憶された形式で、またはネットワーク上で提供される形式で提供/流通された場合であって、上述のモジュールによって機能が補完されたときには、結果として上記プログラムそのものが提供された場合と等価な効果が存在し得る。よって、上述のようなモジュールによって機能が補完されることを前提に、上記ゲームプログラムから上述のようなモジュールに対応する機能を除いたものは、実質的に上記ゲームプログラムに相当するものと解釈され得る。
【0153】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。ここで、当業者は、本発明の具体的な実施形態の記載から、本発明の記載および技術常識に基づいて均等な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用されるすべての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。
【符号の説明】
【0154】
10 ゲーム装置
11 下側ハウジング
12 下側LCD
13 タッチパネル
14 操作ボタン
15 アナログスティック
16 LED
21 上側ハウジング
22 上側LCD
23 外側撮像部
23a 外側撮像部(左)
23b 外側撮像部(右)
24 内側撮像部
25 3D調整スイッチ
26 3Dインジケータ
28 タッチペン
31 情報処理部
311 CPU
312 GPU
32 メインメモリ

【特許請求の範囲】
【請求項1】
入力装置から出力されたデータの補正を行う情報処理装置のコンピュータにおいて実行される情報処理プログラムであって、
前記コンピュータを、
前記入力装置から出力された入力データを、処理対象データとして取得する入力データ取得手段と、
前記入力データが、前記入力装置の入力操作可能範囲により規定される上限値に到達したとき、または前記上限値を超えたときに、前記処理対象データを、前記上限値より大きい所定の値となるまで、逐次的に更新する第1入力データ更新手段として機能させる、情報処理プログラム。
【請求項2】
前記第1入力データ更新手段は、前記処理対象データを、前記上限値より大きい所定の値に近づけるように更新する、請求項1に記載の情報処理プログラム。
【請求項3】
前記第1入力データ更新手段は、前記処理対象データを、所定量ずつ前記上限値より大きい所定の値に近づけるように更新する、請求項2に記載の情報処理プログラム。
【請求項4】
前記入力データが、前記入力装置の入力操作可能範囲により規定される上限値に到達したとき、または前記上限値を超えたときの、前記入力データに基づく量の単位時間当たりの変化量に応じて、前記第1入力データ更新手段は、前記処理対象データを更新する、請求項1から請求項3までのいずれかに記載の情報処理プログラム。
【請求項5】
前記入力データは、前記入力装置における所定位置と対応づけられる基準位置を設定したときの、当該基準位置から変位した点の位置を示すデータとして規定される、請求項1から請求項4までのいずれかに記載の情報処理プログラム。
【請求項6】
前記第1入力データ更新手段は、前記入力データで規定される位置と、前記基準位置である原点との間の距離の単位時間当たりの変化に応じて、前記処理対象データを更新する、請求項5に記載の情報処理プログラム。
【請求項7】
前記第1入力データ更新手段は、前記入力データにより規定される位置を示す位置ベクトルと、時間軸上で当該入力データの直前または直後の入力データにより規定される位置ベクトルとの差分ベクトルをとり、当該差分ベクトルの大きさを計算することで、前記入力データに基づく量の単位時間当たりの変化量に応じた、前記処理対象データの更新を行う、請求項5に記載の情報処理プログラム。
【請求項8】
前記入力データが、前記入力装置の入力操作可能範囲により規定される上限値に到達したか、または前記上限値を超えた後であって、時間軸上で当該入力データの直後の入力データが、前記入力装置の入力操作可能範囲により規定される上限値に到達していないときに、
前記処理対象データを、前記上限値より大きい所定の値から当該上限値まで逐次的に更新する、第2入力データ更新手段としてさらに機能させる、請求項1から請求項7までのいずれかに記載の情報処理プログラム。
【請求項9】
前記第2入力データ更新手段は、前記処理対象データを、前記上限値に近づけるように更新する、請求項8に記載の情報処理プログラム。
【請求項10】
前記第2入力データ更新手段は、前記処理対象データを、所定量ずつ前記上限値に近づけるように更新する、請求項9に記載の情報処理プログラム。
【請求項11】
前記入力データが、前記入力装置の入力操作可能範囲により規定される上限値に到達したか、または前記上限値を超えた後であって、時間軸上で当該入力データの直後の入力データが、前記入力装置の入力操作可能範囲により規定される上限値に到達していないときの、前記入力データに基づく量の単位時間当たりの変化量に応じて、前記第2入力データ更新手段は、前記処理対象データを更新する、請求項8から請求項10までのいずれかに記載の情報処理プログラム。
【請求項12】
前記入力データが、前記入力装置の入力操作可能範囲により規定される上限値に到達したとき、または前記上限値を超えたときに、前記第1入力データ更新手段は、前記入力データに所定値を乗ずることで正規化した後に、当該正規化された入力データに基づく量の単位時間当たりの変化量に応じて、前記処理対象データを更新する、請求項1に記載の情報処理プログラム。
【請求項13】
前記コンピュータを、
前記入力データ取得手段が前記入力データを処理対象データとして取得する前に、前記入力データに対してクランプ処理を行う予備補正手段としてさらに機能させる、請求項1に記載の情報処理プログラム。
【請求項14】
前記コンピュータを、
前記第1入力データ更新手段によって逐次的に更新された前記処理対象データを入力値として所定の処理を行う処理手段としてさらに機能させる、請求項1から13のいずれかに記載の情報処理プログラム。
【請求項15】
前記コンピュータを、
前記第2入力データ更新手段によって逐次的に更新された前記処理対象データを入力値として所定の処理を行う処理手段としてさらに機能させる、請求項8から11のいずれかに記載の情報処理プログラム。
【請求項16】
前記入力データは、多次元データである、請求項1から15までのいずれかに記載の情報処理プログラム。
【請求項17】
入力装置から出力されたデータの補正を行う情報処理装置であって、
前記入力装置から出力された入力データを、処理対象データとして取得する入力データ取得手段と、
前記入力データが、前記入力装置の入力操作可能範囲により規定される上限値に到達したとき、または前記上限値を超えたときに、前記処理対象データを、前記上限値より大きい所定の値となるまで、逐次的に更新する第1入力データ更新手段とを備える、情報処理装置。
【請求項18】
入力装置から出力されたデータの補正を情報処理装置が行うための情報処理方法であって、
前記情報処理装置の入力データ取得手段が、前記入力装置から出力された入力データを、処理対象データとして取得するステップと、
前記入力データが、前記入力装置の入力操作可能範囲により規定される上限値に到達したとき、または前記上限値を超えたときに、前記情報処理装置の第1入力データ更新手段が、前記処理対象データを、前記上限値より大きい所定の値となるまで、逐次的に更新するステップを含む、情報処理方法。
【請求項19】
入力装置から出力されたデータの補正を行う情報処理システムであって、
前記入力装置から出力された入力データを、処理対象データとして取得する入力データ取得手段と、
前記入力データが、前記入力装置の入力操作可能範囲により規定される上限値に到達したとき、または前記上限値を超えたときに、前記処理対象データを、前記上限値より大きい所定の値となるまで、逐次的に更新する第1入力データ更新手段とを備える、情報処理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5A】
image rotate

【図5B】
image rotate

【図5C】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8A】
image rotate

【図8B】
image rotate

【図8C】
image rotate


【公開番号】特開2012−108673(P2012−108673A)
【公開日】平成24年6月7日(2012.6.7)
【国際特許分類】
【出願番号】特願2010−256256(P2010−256256)
【出願日】平成22年11月16日(2010.11.16)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】