以下、本発明の一実施形態について図面に基づき詳細に説明する。
図1は、本発明の一実施形態に係る情報処理システム10の全体構成の一例を示す図である。図1に示すように、本実施形態に係る情報処理システム10は、情報処理装置12とコントローラ14とディスプレイ16とを含んでいる。
本実施形態に係る情報処理装置12は、例えば、ゲーム装置やパーソナルコンピュータ等のコンピュータであり、例えば図2に示すように、制御部20、記憶部22、通信部24、を含んでいる。制御部20は、例えば情報処理装置12にインストールされるプログラムに従って動作するCPU等のプログラム制御デバイスである。記憶部22は、例えばROMやRAM等の記憶素子やハードディスクドライブなどである。記憶部22には、制御部20によって実行されるプログラムなどが記憶される。通信部24は、例えばネットワークボードや無線LANモジュールなどの通信インタフェースなどである。
本実施形態に係るコントローラ14は、情報処理装置12に対する操作入力を行うための操作入力装置である。図3は、本実施形態に係るコントローラ14の外観の一例を示す図である。本実施形態では、コントローラ14の上面には、4つの方向キーDK1〜DK4、4つのボタンB1〜B4、2つのアナログコントローラAC1及びAC2が配置されている。また、コントローラ14は、その他の操作部材も備えている。また、本実施形態に係るコントローラ14は、角速度を検出するジャイロセンサ、加速度を検出する加速度センサ等のセンサを備えている。なお、本実施形態に係るコントローラ14が、方位を検出する電子コンパス(地磁気センサ)を備えていてもよい。また、本実施形態に係るコントローラ14は、ネットワークボードや無線LANモジュール等を備えており、情報処理装置12と有線又は無線で通信可能となっている。以下の説明において、図3に示すY1方向及びY2方向はそれぞれ前方向及び後方向であることとする。また、X1方向及びX2方向はそれぞれ右方向及び左方向であることとする。また、Z1方向及びZ2方向はそれぞれ上方向及び下方向であることとする。
本実施形態に係るディスプレイ16は、液晶ディスプレイや有機ELディスプレイ等である。本実施形態では、情報処理装置12とディスプレイ16とは、HDMI(登録商標)(High-Definition Multimedia Interface)ケーブルやUSB(Universal Serial Bus)ケーブル等のケーブルにより接続されている。
図4は、本実施形態におけるディスプレイ16に表示される画像の一例を示す図である。以下、当該画像を全体画像30と呼ぶこととする。本実施形態では、全体画像30の一部を占める領域が、オンスクリーンキーボードの画像が配置されるオンスクリーンキーボード領域32として設定されている。
オンスクリーンキーボード領域32には、文字列配置領域32a、予測候補配置領域32b、及び、キー配置領域32cが含まれている。文字列配置領域32aには、本実施形態では、文字列が配置される。そして、予測候補配置領域32bには、本実施形態では、文字列配置領域32aに配置されている文字列に基づいて特定される1又は複数の予測候補の一覧が横に並んで配置される。そして、キー配置領域32cには、複数の選択肢、本実施形態では例えば複数のキーKの画像が配置されている。
本実施形態では、キーKはキー配置領域32cにマトリクス状に配置されている。すなわち、キー配置領域32cには、横方向に沿って配置された複数のキーKをそれぞれ含む複数のキー群が縦方向に複数行にわたって配置されている。具体的には例えば、最も上の行から4行は横方向に10個のキーKが配置されている。そして、その下の行には横方向に6個のキーKが配置されており、最も下の行には横方向に8個のキーKが配置されている。
また、図4に示すように、本実施形態では、縦方向に沿ったキーKの配置間隔は横方向に沿ったキーKの配置間隔よりも短い。また、縦方向に沿って配置されているキーKの数は横方向に沿って配置されているキーKの数よりも少ない。
また、全体画像30には、カーソルCも配置されている。本実施形態に係るカーソルCは円形の図形である。本実施形態では、ユーザは、コントローラ14を操作することでカーソルCを移動することができるようになっている。本実施形態では、コントローラ14が備えるジャイロセンサが検出するコントローラ14の姿勢の変化、すなわち、コントローラ14の回転量に応じて、カーソルCの位置が変化するようになっている。本実施形態では例えば、ユーザが、コントローラ14に対して、X1−X2方向を軸とした、X2方向に沿って見た場合における反時計回りの回転操作を行うと、カーソルCが上方向に移動し、時計回りの回転操作を行うと、カーソルCが下方向に移動する。また、ユーザが、コントローラ14に対して、Z1−Z2方向を軸とした、Z2方向に沿って見た場合における反時計回りの回転操作を行うと、カーソルCが左方向に移動し、時計回りの回転操作を行うと、カーソルCが右方向に移動する。
そして、本実施形態では、カーソルCの位置に基づいて、複数のキーKのうちのいずれかが選択状態のキーKとして決定される。そして、選択状態のキーKは、強調表示される。図4では、強調表示の対象となるキーKを囲む矩形によって当該キーKが強調表示されていることが表現されている。そして、図4に示すオンスクリーンキーボードでは、文字「f」に対応するキーKが選択状態となっている。
そして、ユーザが、決定操作、本実施形態では例えば、ボタンB1を押下する操作を行うと、選択状態であるキーKが入力されたものとして扱われ、当該キーKに対応する文字が文字列配置領域32aに配置されている文字列に追加される。図5には、図4に示す全体画像30が表示されている状態から、カーソルCを左上に移動させて、その後決定操作を行った際の全体画像30が示されている。図5に示すオンスクリーンキーボードでは、文字「e」に対応するキーKが選択状態となっており、文字列配置領域32aに配置されている文字列に文字「e」が追加されている。
そしてその後、ユーザが、キー配置領域32cの右下に配置されたエンターキーEKを選択状態として決定操作を行うと、文字列配置領域32aに配置されている文字列が情報処理装置12への入力文字列として取り扱われる。そして、当該文字列に応じた処理が実行される。
本実施形態では、図6に示すように、選択状態であるキーKが存在する場合に、キーKの一部を占める判定領域DA内にカーソルCの重心Gの位置が移動した際に、選択状態であるキーKが当該キーKに更新される。本実施形態では、キーKの一部を占める判定領域DAは、当該キーKと重心の位置が一致する。また、本実施形態では、判定領域DAの高さ及び幅は、それぞれキーKの高さ及び幅の所定倍、例えば7/8である。このようにして、本実施形態では、カーソルCがキーKの境界付近に配置されているある場合に選択状態であるキーKが過剰な頻度で更新されることを防いでいる。
また、本実施形態では、文字列配置領域32aや予測候補配置領域32bにカーソルCを移動する操作を行うことができるようになっている。そして、文字列配置領域32aに配置されている文字の範囲を指定する操作や、指定された範囲を解除する操作、予測候補配置領域32bに配置された予測候補を選択する操作も行えるようになっている。ここで、カーソルCの重心Gの位置が文字列配置領域32a内となった際に、円形のカーソルCを全体画像30から消去し、文字列配置領域32aに配置されている、文字の追加位置を示す縦棒状のカーソル(キャレット)が点滅するようにしてもよい。また、このとき、キャレットが点滅するようにする代わりに、あるいは点滅するようにするとともに、キャレットの色が変わるようにしてもよい。このことにより、文字列配置領域32a内での操作が可能であることをユーザは認識することができる。また、カーソルCの重心Gの位置が文字列配置領域32aの外、あるいは、文字列配置領域32aを囲む所定の領域の外となった際に、再び円形のカーソルCが全体画像30に配置されるようにしてもよい。
以下、本実施形態におけるカーソルCの移動操作についてさらに説明する。図7に、コントローラ14の姿勢と当該姿勢を表すパラメータとの関係が表現された仮想3次元空間である検出結果空間34の一例を示す。図7に示す検出結果空間34では、手前方向がX軸正方向であり、上方向がY軸正方向であり、右方向がZ軸正方向であることとする。そして、Z軸正方向を基準方向と呼ぶこととする。
本実施形態では、ジャイロセンサの検出結果であるクォータニオン形式の回転情報に基づいて、基準方向に対する姿勢を特定する。本実施形態では、初期状態の際、又は、リセット操作が行われた際には、コントローラ14のY1方向が、図7に示す検出結果空間34における基準方向と一致するように設定される。なお本実施形態では、アナログコントローラAC1の押下操作がリセット操作として取り扱われる。そして、初期状態の際、又は、リセット操作が行われた際のコントローラ14の姿勢を基準として、上述の回転情報に基づいて基準方向に対する姿勢が特定される。本実施形態では、基準方向に対する姿勢は、図7に示す検出結果空間34内に設定された球面座標系における座標値(λo,θo)で表現される。当該座標値を、以下、操作座標値と呼ぶこととする。本実施形態では、値λoはZ軸正方向からX軸正方向に向かう回転方向を正とする角度を表し、値θoはXZ平面に沿った方向からY軸正方向に向かう回転方向を正とする角度を表す。そして本実施形態では、コントローラ14の、Z1−Z2方向を軸とした、Z2方向に沿って見た場合における時計回りの回転が、値λoを増加させる回転として、反時計回りの回転が、値λoを減少させる回転として取り扱われる。また本実施形態では、コントローラ14の、X1−X2方向を軸とした、X2方向に沿って見た場合における反時計回りの回転が、値θoを増加させる回転として、時計回りの回転が、値θoを減少させる回転として取り扱われる。
本実施形態では、所定のフレームレートで、ジャイロセンサによる姿勢の検出が行われる。本実施形態では例えば1/60秒間隔で姿勢の検出が行われる。そして、当該所定のフレームレートで、操作座標値(λo,θo)の特定が行われることとなる。そして、本実施形態では、検出された1フレームにおける操作量、本実施形態では例えば1フレームにおけるコントローラ14の回転量に基づいて、カーソルCの移動量、すなわちカーソルCの位置の変化量が決定される。以下、操作座標値(λo,θo)のλo成分についての1フレームにおける差分を第1操作量成分と呼び、操作座標値(λo,θo)のθo成分についての1フレームにおける差分を第2操作量成分と呼ぶこととする。そして、第1操作量成分の値を第1操作量成分値Δλoと表現し、第2操作量成分の値を第2操作量成分値Δθoと表現することとする。
例えば、あるフレームにおける操作座標値(λo,θo)が(λo1,θo1)であると特定されたとする。そして、次のフレームにおける操作座標値(λo,θo)が(λo2,θo2)であると特定されたとする。この場合、図8に示すように、第1操作量成分値Δλoは、λo2−λo1となり、第2操作量成分値Δθoは、θo2−θo1となる。
そして、本実施形態では、第1操作量成分値Δλo及び第2操作量成分値Δθoに基づいて、図9に示すカーソル空間36内に設定された球面座標系における1フレームにおけるカーソルCの移動量が決定される。
図9に、カーソルCの位置とオンスクリーンキーボードの一部を占める移動可能領域MA(図10参照)との関係が表現された仮想3次元空間であるカーソル空間36の一例を示す。図9に示すカーソル空間36内の球面上には、カーソルC及び移動可能領域MAが配置されている。図9に示すカーソル空間36では、手前方向がX軸正方向であり、上方向がY軸正方向であり、右方向がZ軸正方向であることとする。そして、Z軸正方向を基準方向と呼ぶこととする。
本実施形態では、カーソルCの移動量が決定されると、当該移動量に基づいて、図9に示すカーソル空間36の球面座標系におけるカーソルC及び移動可能領域MAの位置が決定される。ここで、図9に示すカーソル空間36内に設定された球面座標系におけるカーソルCの重心の位置を座標値(λc,θc)で表現することとする。図9では、当該座標値がG(λc,θc)と記載されている。当該座標値を、以下、カーソル座標値と呼ぶこととする。そして、移動可能領域MAの四隅の位置を座標値(λ1,θ1)、(λ1,θ2)、(λ2,θ1)、及び、(λ2,θ2)で表現することとする。なお、値λ1は値λ2より小さく、値θ1は値θ2より小さいこととする。本実施形態では、値λc、λ1、λ2はZ軸正方向からX軸正方向に向かう回転方向を正とする回転角を表し、値θc、θ1、θ2はXZ平面に沿った方向からY軸正方向に向かう回転方向を正とする回転角を表す。
図10に、オンスクリーンキーボードと移動可能領域MAとの位置関係の一例を示す。図10では、キーKに配置された文字の記載は省略されている。図9に示す移動可能領域MAを部分球面から平面に座標変換した領域が図10における移動可能領域MAとして示されている。すなわち、図9における座標値(λ1,θ1)、(λ1,θ2)、(λ2,θ1)、及び、(λ2,θ2)のそれぞれに対応付けられる位置は、それぞれ、図10における座標値(x1,y1)、(x1,y2)、(x2,y1)、及び、(x2,y2)の位置となる。そして本実施形態では、図9に示す移動可能領域MAを部分球面から平面に座標変換した際の当該移動可能領域MA内におけるカーソルCの相対的な位置が、図10に示す移動可能領域MA内においても維持される。そして、本実施形態では、カーソルCが移動可能な範囲は移動可能領域MAに制限される。
以下、カーソル座標値(λc,θc)のλc成分についての1フレームにおける差分を第1移動量成分と呼び、カーソル座標値(λc,θc)のθc成分についての1フレームにおける差分を第2移動量成分と呼ぶこととする。そして、第1移動量成分の値を第1移動量成分値Δλcと表現し、第2移動量成分の値を第2移動量成分値Δθcと表現することとする。本実施形態では、図11に示す関係に従って、第1操作量成分値Δλoに基づいて、第1移動量成分値Δλcが決定され、第2操作量成分値Δθoに基づいて、第2移動量成分値Δθcが決定される。図11には、第1操作量成分値Δλoの絶対値と第1移動量成分値Δλcの絶対値との関係、及び、第2操作量成分値Δθoの絶対値と第2移動量成分値Δθcの絶対値との関係の一例が示されている。なお、本実施形態では、第1操作量成分値Δλoと第1移動量成分値Δλcの符号は一致し、第2操作量成分値Δθoと第2移動量成分値Δθcの符号は一致する。そして、カーソルCの重心Gの現在位置と、第1移動量成分値Δλc及び第2移動量成分値Δθcと、に基づいて、当該フレームにおけるカーソルCの移動後のカーソル座標値(λc,θc)が決定される。例えば、あるフレームにおけるカーソルCの重心Gの位置を表すカーソル座標値(λc,θc)が(λc1,θc1)であることとする。そして、第1移動量成分値Δλc及び第2移動量成分値Δθcが決定されたこととする。この場合、カーソルCの当該フレームにおける移動後のカーソルCの重心Gの位置を表すカーソル座標値(λc,θc)を(λc2,θc2)とすると、図12に示すように、値λc2は、λc1+Δλcとなり、値θc2は、θc1+Δθcとなる。
以下、図11に示す関係についてさらに説明する。本実施形態では、図11で低速度範囲R1と表現されている、操作量成分値の絶対値が小さい範囲については、操作量成分値の絶対値と、当該操作量成分に対応付けられる移動量成分値の絶対値との関係は、指数関数で表現される。そのため、操作量成分値の絶対値と当該操作量成分に対応付けられる移動量成分値の絶対値とが比例する場合よりも、操作量成分値の絶対値に対する当該操作量成分に対応付けられる移動量成分値の絶対値の比率が小さい状態となっている。すなわち操作量成分値の絶対値と当該操作量成分に対応付けられる移動量成分値の絶対値とが比例する場合よりも、コントローラ14の感度が鈍い状態となっている。そのため、本実施形態では、ユーザが、コントローラ14を止めていると思っていても実際はコントローラ14が揺れている際に発生する、ユーザが意図しないカーソルCの移動を抑えることができることとなる。また、本実施形態では、低速度領域R1では、コントローラ14の感度が鈍くなっているため、ユーザはカーソルCの位置合わせを精度よく行えることとなる。そのため、本実施形態では、カーソルCの目標位置への位置合わせが容易に行えることとなる。また、低速度範囲R1についても、操作量成分値の絶対値が0でない場合には、当該操作量成分に対応付けられる移動量成分値の絶対値は0ではない。そのため、コントローラ14に対する操作が検出されている際にはカーソルCが移動するので、ユーザはコントローラ14に対する操作が行われていることを認識できることとなる。
また、本実施形態では、低速度範囲R1以外の範囲については、操作量成分値の絶対値と、当該操作量成分に対応付けられる移動量成分値の絶対値とが比例する。そして、操作量成分値の絶対値が大きい範囲については、操作量成分値の絶対値に対する当該操作量成分に対応付けられる移動量成分値の絶対値の比率が、操作量成分値の絶対値が中程度である範囲よりも大きい。操作量成分値の絶対値が大きい範囲は、図11で高速度範囲R3と表現されており、操作量成分値の絶対値が中程度である範囲は、図11で中速度範囲R2と表現されている。以上のようにすることで、高速度範囲R3については、操作量を示す値に対するカーソルCの移動量を示す値の比率が中速度範囲R2よりも大きくなるので、カーソルCを速く移動させる際の操作量が減ることとなる。
また、本実施形態では、第2操作量成分値Δθoの絶対値に対する第2移動量成分値Δθcの絶対値の比率は、第1操作量成分値Δλoの絶対値に対する第1移動量成分値Δλcの絶対値の比率よりも小さい。具体的には例えば、第2操作量成分値Δθoの絶対値が第1操作量成分値Δλoの絶対値の1.5倍である場合に、第1移動量成分値Δλcの絶対値と第2移動量成分値Δθcの絶対値は同じになる。図11には、第1移動量成分値Δλcの絶対値及び第2移動量成分値Δθcの絶対値がaである場合の、第1操作量成分値Δλoの絶対値がbであり、第2操作量成分値Δθoの絶対値が1.5bであることが示されている。すなわち、コントローラ14の感度は、縦方向の方が横方向よりも鈍くなっている。本実施形態では、縦方向に沿ったキーKの配置間隔は横方向に沿ったキーKの配置間隔よりも短いので、縦方向の方が横方向よりも細かい操作が必要とされる。また、縦方向に沿って配置されているキーKの数は横方向に沿って配置されているキーKの数よりも少ないので、横方向についてはキーKを選択する際のカーソルCの移動量が大きくなりがちである。また、縦方向については、方向キーDK1〜DK4やボタンB1〜B4などの操作部材の操作により、カーソルCの位置がぶれてしまいがちである。本実施形態では、以上の点に着目して、縦方向についてのコントローラ14の感度が横方向についてのコントローラ14の感度よりも鈍くすることで、カーソルCを目標位置に移動させる操作の操作性を向上させている。
また、本実施形態では、決定操作が行われてから所定時間(例えば、5フレーム、すなわち約80ミリ秒)については、カーソルCの移動が抑制されるようになっている。そのため、本実施形態では、決定操作、本実施形態では例えばボタンB1の押下に伴う、ユーザが意図せぬカーソルCの移動が抑制されることとなる。
また、本実施形態では、移動後のカーソルCの重心Gの位置が移動可能領域MAの範囲を超えると、移動可能領域MAがカーソルCの移動方向に沿って移動して、カーソルCが移動可能領域MA内に配置されている状態が維持されるようになっている。このようにして、結果的に、カーソルCの移動可能な範囲が、移動可能領域MAに制限されることとなる。例えば、図13に示すように、カーソルCの重心Gが左方向に移動して重心Gの位置を表すカーソル座標値(λc,θc)が(λc’,θc’)から(λc’’,θc’)に変化したこととする。そして、移動後のカーソルCの重心Gの位置が移動可能領域MAの範囲を超えたこととする。この場合には、移動後のカーソルCの重心Gの位置が移動可能領域MAの左辺上の位置となるよう、図13に示すように、移動可能領域MAがカーソル空間36内の球面に沿って左方向に移動することとなる。すなわち、値λc’’が、移動可能領域MAの左辺の位置を表す座標値λ1として設定されるよう、移動可能領域MAがカーソル空間36内の球面に沿って左方向に移動することとなる。このように、本実施形態では、移動可能領域MAの縁にカーソルCが配置された状態のままコントローラ14の姿勢を変えることができるので、コントローラ14をユーザにとって操作しやすい姿勢となるようコントローラ14を調整することが可能となる。そして、このことによって、ユーザがリセット操作を明示的に行わなければならない状況が減ることとなる。
また、本実施形態では、図10に示すように、移動可能領域MAはオンスクリーンキーボードの一部を占める矩形領域であり、移動可能領域MAの左辺、下辺、右辺の位置には、キーKが配置されている。特に、移動可能領域MAの右下隅の位置には、エンターキーEKが配置されている。このように、本実施形態では、移動可能領域MAの縁にキーKが配置されているので、ユーザが移動可能領域MAの縁に配置されているキーKを選択する際には移動量を気にせずカーソルCを移動させる操作を行える。このようにして、本実施形態によれば、カーソルCによるキーKの選択における操作性が向上することとなる。また、以上の説明からわかるように、例えばエンターキーEKなどといった使用頻度の高いキーKを、オンスクリーンキーボードの外周に、すなわち、移動可能領域MAの縁に配置されるようにすることが望ましい。
また、本実施形態では、上述のように、初期状態の際、又は、リセット操作が行われた際には、コントローラ14のY1方向が、図7に示す検出結果空間34における基準方向と一致するよう設定される。また、本実施形態では、上述の際には、コントローラ14のY1方向が、及び図9に示すカーソル空間36における基準方向と一致するようにも設定される。また、本実施形態では、上述の際には、操作座標値(λo,θo)及びカーソル座標値(λc,θc)が、(0,0)に設定される。また、本実施形態では、上述の際には、図9に示す移動可能領域MAの重心の位置がカーソルCの重心Gの位置と一致するよう、カーソル空間36内における移動可能領域MAの位置が設定される。
そして、本実施形態では、カーソルCの重心Gが移動可能領域MAの縁に配置された状態で、コントローラ14の姿勢に対応する方向と、基準方向と、のなす角が45度を超えた場合には、強制リセット処理が実行される。また、カーソルCの重心が移動可能領域MAの縁に配置された状態が、所定時間、ここでは例えば8秒継続した場合にも、強制リセット処理が実行される。強制リセット処理が実行されると、コントローラ14のY1方向が検出結果空間34における基準方向と一致し、コントローラ14のY1方向がカーソル空間36における基準方向と一致するよう設定される。また、強制リセット処理の実行前における、図8に示す移動可能領域MA内におけるカーソルCの位置が維持されるよう、カーソル空間36内における移動可能領域MAの位置が設定される。そして、本実施形態では、強制リセット処理が実行されてから所定時間(例えば、2フレーム、すなわち約32ミリ秒)については、カーソルCの移動が抑制されるようになっている。ジャイロセンサは、姿勢の検出が開始されてからの時間が経過するとともに、基準となる姿勢からのずれが蓄積される。その結果、カーソルCの位置がぶれたり、静止状態でもカーソルCが移動するドリフトが発生したりすることがある。そのため、上述のリセット操作が行われた際の処理や強制リセット処理を何らかのタイミングで行う必要がある。本実施形態では、強制リセット処理が実行されても、図8に示す移動可能領域MA内におけるカーソルCの位置が維持されるので、ユーザに気づかれることなく強制リセット処理を実行することができることとなる。
また、本実施形態では、ユーザは、全体画像30内におけるオンスクリーンキーボード領域32の位置を変更可能になっている。本実施形態では、ユーザが、方向キーDKを押下する操作やアナログコントローラACを傾倒する操作を行うと、押下された方向キーDKに対応付けられる方向やアナログコントローラACの傾倒方向に、オンスクリーンキーボード領域32が移動する。図14には、図5に示す全体画像30が表示されている状態から、オンスクリーンキーボード領域32を左上に移動させた際の全体画像30が示されている。本実施形態では、オンスクリーンキーボード領域32が移動しても、コントローラ14の姿勢が変わっていない場合は、移動可能領域MA内におけるカーソルCの位置は変化しない。
以上説明したように、本実施形態に係る情報処理装置12は、カーソルCの位置を制御するカーソル位置制御装置としての役割を担っている。以下、カーソルCの移動処理を中心にさらに説明する。
図15は、本実施形態に係る情報処理装置12で実装される機能の一例を示す機能ブロック図である。なお、本実施形態に係る情報処理装置12で、図15に示す機能のすべてが実装される必要はなく、また、図15に示す機能以外の機能が実装されていても構わない。
そして、本実施形態に係る情報処理装置12は、図15に示すように、機能的には、例えば、座標値データ記憶部40、関係データ記憶部42、操作量データ取得部44、操作量成分特定部46、移動量成分決定部48、カーソル位置変化部50、移動可能領域変化部52、全体画像生成部54、表示制御部56、を含んでいる。座標値データ記憶部40、関係データ記憶部42は、記憶部22を主として実装される。操作量データ取得部44は、通信部24を主として実装される。その他の機能は、制御部20を主として実装される。
そして、以上の機能は、コンピュータである情報処理装置12にインストールされた、以上の機能に対応する指令を含むプログラムを制御部20で実行することにより実装されている。このプログラムは、例えば、光ディスク、磁気ディスク、磁気テープ、光磁気ディスク、フラッシュメモリ等のコンピュータ読み取り可能な情報記憶媒体を介して、あるいは、インターネットなどのコンピュータネットワークを介して情報処理装置12に供給される。
座標値データ記憶部40は、本実施形態では、操作座標値(λo,θo)を示す操作座標値データ、カーソル座標値(λc,θc)を示すカーソル座標値データを記憶する。また、座標値データ記憶部40は、本実施形態では、移動可能領域MAの四隅の位置の座標値(λ1,θ1)、(λ1,θ2)、(λ2,θ1)、及び、(λ2,θ2)を示す移動可能領域座標値データも記憶する。
関係データ記憶部42は、本実施形態では、第1操作量成分値Δλoと第1移動量成分値Δλcとの関係を示す第1関係データ、第2操作量成分値Δθoと第2移動量成分値Δθcとの関係を示す第2関係データ、を記憶する。第1関係データや第2関係データは、例えば、操作量成分値と当該操作量成分に対応付けられる移動量成分値とを対応付けたテーブルにより実装される。なお、第1関係データや第2関係データが、操作量成分値に基づいて当該操作量成分に対応付けられる移動量成分値を決定する関数等の数式を示すデータにより実装されてもよい。
操作量データ取得部44は、コントローラ14から送信される、操作された方向及び大きさを表す操作量ベクトルに対応付けられる操作量データを取得する。操作量データ取得部44は、本実施形態では例えば、ジャイロセンサが検出するクォータニオン形式の回転情報を、回転量ベクトルに対応付けられる操作量データとして取得する。なお、操作量データ取得部44が、ジャイロセンサが検出する回転情報以外のセンサの検出結果に対応付けられる操作量データを取得してもよい。具体的には例えば、操作量データ取得部44が、アナログコントローラACが傾倒された向き及び大きさを表す操作量ベクトルに対応付けられる操作量データを取得してもよい。
操作量成分特定部46は、第1の操作方向についての操作量ベクトルの成分である第1操作量成分の大きさと、当該第1の操作方向とは異なる第2の操作方向についての操作量ベクトルの成分である第2操作量成分の大きさと、を特定する。操作量成分特定部46は、本実施形態では例えば、座標値データ記憶部40に記憶されている操作座標値データと、操作量データ取得部44が取得した操作量データに基づいて、第1操作量成分値Δλo及び第2操作量成分値Δθoを特定する。そして、操作量成分特定部46は、座標値データ記憶部40に記憶されている操作座標値データが示す操作座標値(λo,θo)を、操作量データに基づいて特定される操作座標値(λo,θo)に更新する。
本実施形態では、第1の操作方向は、コントローラ14のZ1−Z2方向を軸とした回転方向に相当し、第2の操作方向は、コントローラ14のX1−X2方向を軸とした回転方向に相当する。なお、第1の操作方向や第2の操作方向は上述の操作方向に限定されない。例えば、コントローラ14のY1−Y2方向を軸とした回転方向が第1の操作方向又は第2の操作方向に相当してもよい。
移動量成分決定部48は、第1操作量成分の大きさに基づいて、カーソルCの移動量を表す移動量ベクトルの第1の配置方向についての成分である第1移動量成分の大きさを決定する。また、移動量成分決定部48は、第2操作量成分の大きさに基づいて、移動量ベクトルの第2の配置方向についての成分である第2移動量成分の大きさを決定する。
ここで、第1の配置方向や第2の配置方向は選択肢の配置方向を示している。また、第2の配置方向に沿った選択肢の配置間隔は第1の配置方向に沿った選択肢の配置間隔よりも短い。なお、第2の配置方向に沿って配置されている選択肢の数が第1の配置方向に沿って配置されている選択肢の数よりも少なくてもよい。本実施形態では、上述のように、縦方向に沿ったキーKの配置間隔は横方向に沿ったキーKの配置間隔よりも短い。また、縦方向に沿って配置されているキーKの数は横方向に沿って配置されているキーKの数よりも少ない。そのため、本実施形態では、第1の配置方向は横方向に相当し、第2の配置方向は縦方向に相当することとなる。なお、第1の配置方向や第2の配置方向が横方向や縦方向である必要はない。
また、本実施形態では、第1操作量成分の大きさに対する第1移動量成分の大きさの比率が、第2操作量成分の大きさに対する第2移動量成分の大きさの比率よりも小さいこととなる。
本実施形態では、移動量成分決定部48は、具体的には例えば、第1関係データと第1操作量成分値Δλoとに基づいて、第1移動量成分値Δλcを決定する。また、移動量成分決定部48は、具体的には例えば、第2関係データと第2操作量成分値Δθoの値とに基づいて、第2移動量成分値Δθcを決定する。
カーソル位置変化部50は、カーソルCの位置を、カーソルCの現在位置から第1の配置方向については第1移動量成分の大きさだけ第2の配置方向については第2移動量成分の大きさだけ離れた位置に変化させる。カーソル位置変化部50は、本実施形態では例えば、座標値データ記憶部40に記憶されているカーソル座標値データが示すカーソル座標値(λc,θc)を取得する。そして、カーソル位置変化部50は、当該カーソル座標値(λc,θc)と、第1移動量成分値Δλc及び第2移動量成分値Δθcとに基づいて、カーソルCの移動後の位置を示す座標値(λc,θc)を特定する。そして、座標値データ記憶部40に記憶されているデータにおけるカーソル座標値データが示すカーソル座標値(λc,θc)を、特定されたカーソル座標値(λc,θc)に更新する。
移動可能領域変化部52は、移動後のカーソルCの重心Gの位置が、移動可能領域MA外である場合は、上述のようにして、移動可能領域MAを移動させる。移動可能領域変化部52は、具体的には例えば、更新後のカーソル座標値(λc,θc)が、移動可能領域座標値データが示す4つの座標値で囲まれる領域外である場合は、上述のようにして、移動可能領域座標値データが示す4つの座標値を更新する。
全体画像生成部54は、座標値データ記憶部40に記憶されているカーソル座標値データ及び移動可能領域座標値データに基づいて全体画像30を生成する。
表示制御部56は、全体画像生成部54が生成する全体画像30をディスプレイ16に出力する。
ここで、本実施形態に係る情報処理装置12で各フレームについて行われる処理の流れの一例を、図16に示すフロー図を参照しながら説明する。
まず、操作量データ取得部44が、ジャイロセンサによる検出結果に対応付けられる操作量データを取得する(S101)。そして、操作量成分特定部46は、S101に示す処理で取得した操作量データに基づいて、当該フレームにおける操作座標値(λo,θo)を特定する(S102)。そして、S102に示す処理で特定された操作座標値(λo,θo)と座標値データ記憶部40に記憶されている操作座標値(λo,θo)との差分に基づいて、第1操作量成分値Δλo及び第2操作量成分値Δθoを特定する(S103)。そして、操作量成分特定部46は、座標値データ記憶部40に記憶されている操作座標値データが示す操作座標値(λo,θo)を、S102に示す処理で特定された操作座標値(λo,θo)に更新する(S104)。
そして、移動量成分決定部48は、所定の抑制条件を満足するか否かを判定する(S105)。ここで例えば、決定操作が行われてから所定時間(例えば、5フレーム)以内である、又は、強制リセット処理が実行されてから所定時間(例えば、2フレーム)以内であるという条件を満足する場合は、所定の抑制条件を満足すると判定される。
所定の抑制条件を満足しないと判定された場合は(S105:N)、移動量成分決定部48が、第1関係データと、S103に示す処理で特定された第1操作量成分値Δλoと、に基づいて、第1移動量成分値Δλcを決定する(S106)。そして、移動量成分決定部48が、第2関係データと、S103に示す処理で特定された第2操作量成分値Δθoと、に基づいて、第2移動量成分値Δθcを決定する(S107)。
そして、カーソル位置変化部50は、カーソルCの移動後のカーソル座標値(λc,θc)を特定する(S108)。このとき本処理例では、カーソル座標値データが示すカーソル座標値(λc,θc)のθc成分の値と、S106に示す処理で決定された第1移動量成分値Δλcと、に基づいて、カーソルCの移動後のカーソル座標値(λc,θc)のθc成分の値が特定される。また、カーソル座標値データが示すカーソル座標値(λc,θc)のλc成分の値と、S107に示す処理で決定された第2移動量成分値Δθcと、に基づいて、カーソルCの移動後の位置を示すカーソル座標値(λc,θc)のλc成分の値が特定される。
そして、カーソル位置変化部50は、座標値データ記憶部40に記憶されているカーソル座標値データが示すカーソル座標値(λc,θc)を、S108に示す処理で特定されたカーソル座標値(λc,θc)に更新する(S109)。
そして、移動可能領域変化部52は、移動後のカーソルCの重心Gの位置が、移動可能領域MA外であるか否かを判定する(S110)。S110に示す処理では、具体的には例えば、更新後のカーソル座標値(λc,θc)が表す位置が、移動可能領域座標値データが示す4つの座標値で囲まれる領域外であるか否かが判定される。移動可能領域MA外である場合は(S110:Y)、移動可能領域変化部52は、上述したように、移動可能領域MAを移動させる(S111)。S111に示す処理では、具体的には例えば、座標値データ記憶部40に記憶されている移動可能領域座標値データが示す4つの座標値を更新する。
移動可能領域MA内である場合(S110:N)、又は、S111に示す処理が終了した場合は、全体画像生成部54は、図10に示す移動可能領域MA内におけるカーソルCの重心Gの相対的な位置を決定する(S112)。S112に示す処理では、当該相対的な位置は、例えば、カーソル座標値データ及び移動可能領域座標値データに基づいて決定される。
そして、S105に示す処理で所定の抑制条件を満足すると判定された場合(S105:Y)、又は、S112に示す処理が終了した場合は、全体画像生成部54は、S112に示す処理で決定された位置にカーソルCの重心Gが配置された移動可能領域MAを含む全体画像30を生成する(S113)。
そして、表示制御部56は、S113に示す処理で生成された全体画像30をディスプレイ16に出力して(S114)、本処理例に示す処理を終了する。ディスプレイ16は、S115に示す処理で出力された全体画像30を受け付けると、当該全体画像30を画面に表示させる。
なお、本発明は上述の実施形態に限定されるものではない。
例えば、オンスクリーンキーボードのサイズが可変であっても構わない。そして例えば、オンスクリーンキーボードのサイズに基づいて、操作量成分の大きさに対する当該操作量成分に対応付けられる移動量成分の大きさが決定されてもよい。より具体的には例えば、オンスクリーンキーボードのサイズが小さいほど、操作量成分の大きさに対する当該操作量成分に対応付けられる移動量成分の大きさが小さくなるようにしてもよい。
また、ユーザが、操作量成分の大きさに対する当該操作量成分に対応付けられる移動量成分の大きさを変更できるようになっていても構わない。
また、情報処理装置12がディスプレイ16を内蔵していてもよい。また、情報処理装置12が複数の筐体から構成されていてもよい。また、上記の具体的な文字列や図面中の具体的な文字列は例示であり、これらの文字列には限定されない。