(57)【要約】所定可動範囲で押し込み可能なボタンを備え、当該ボタンが押し込まれたときに、その押し込み位置を検出するデバイスであって、上記ボタンの押し込み力に反発する抵抗力を提示可能なデバイスに接続され、デバイスの上記ボタンの、押し込み回数、過去の最大押し込み位置、押し込み操作の継続時間、のうち少なくとも一つを含む決定基準に基づいて、上記ボタンの押し込み位置に関係する、提示する抵抗力の大きさを表す制御情報を決定する情報処理装置である。
2019107207.tif 000002
【特許請求の範囲】
【請求項１】
所定可動範囲で押し込み可能なボタンを備え、当該ボタンが押し込まれたときに、その押し込み位置を検出するデバイスであって、前記ボタンの押し込み力に反発する抵抗力を提示可能なデバイスに接続され、
前記デバイスの前記ボタンの、
押し込み回数、
過去の最大押し込み位置、
押し込み操作の継続時間、
のうち少なくとも一つを含む決定基準に基づいて、前記ボタンの押し込み位置に関係する、提示する抵抗力の大きさを表す制御情報を決定する決定手段、及び
前記デバイスに対して、前記決定した制御情報を出力する手段、
を有する情報処理装置。
【請求項２】
請求項１の情報処理装置であって、
仮想的な空間に配された仮想的な対象物に対する操作をユーザから受け入れる手段、を備え、
前記仮想的な対象物ごとに、前記決定基準と、当該決定基準によって決定される制御情報候補とが設定されており、
前記決定手段は、操作の対象となった前記仮想的な対象物について設定された前記決定基準と、前記制御情報候補とに基づいて、前記デバイスに出力する制御情報を決定する情報処理装置。
【請求項３】
請求項１または２の情報処理装置であって、
前記デバイスはさらに、デバイスを振動させる振動子を有して、指示により当該振動子を振動させるデバイスであって、
前記デバイスが検出した前記ボタンの押し込み位置に基づいて前記振動子の振動指示を行う手段をさらに備える情報処理装置。
【請求項４】
所定可動範囲で押し込み可能なボタンを備え、当該ボタンが押し込まれたときに、その押し込み位置を検出するデバイスであって、前記ボタンの押し込み力に反発する抵抗力を提示可能なデバイスに接続される情報処理装置を用い、
決定手段が、前記デバイスの前記ボタンの、
押し込み回数、
過去の最大押し込み位置、
押し込み操作の継続時間、
のうち少なくとも一つを含む決定基準に基づいて、前記ボタンの押し込み位置に関係する、提示する抵抗力の大きさを表す制御情報を決定する工程、及び
出力手段が、前記デバイスに対して、前記決定した制御情報を出力する工程、
を含む、情報処理方法。
【請求項５】
所定可動範囲で押し込み可能なボタンを備え、当該ボタンが押し込まれたときに、その押し込み位置を検出するデバイスであって、前記ボタンの押し込み力に反発する抵抗力を提示可能なデバイスに接続される情報処理装置に、
前記デバイスの前記ボタンの、
押し込み回数、
過去の最大押し込み位置、
押し込み操作の継続時間、
のうち少なくとも一つを含む決定基準に基づいて、前記ボタンの押し込み位置に関係する、提示する抵抗力の大きさを表す制御情報を決定する工程、及び
前記デバイスに対して、前記決定した制御情報を出力する工程、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、ヘッドマウントディスプレイ等のデバイスを用い、仮想的な空間において仮想的な対象物の操作を行わせる、仮想現実の技術が普及している。このような仮想現実の情報処理では、ユーザは一般的なゲームコントローラを操作するか、あるいは、手に把持可能な形状のコントローラデバイスを用いて、仮想的な対象物の操作を行っているのが一般的である。【０００３】
このような従来のゲームコントローラ等のコントローラデバイスでは、バイブレータ等により、ユーザの操作に対して触覚フィードバックを提供している。例えば、ユーザが仮想的な空間内で、仮想的な対象物である銃を撃つ操作を行うと、バイブレータを振動させて射撃を行ったことを表す触覚的フィードバックを提供している。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来の技術では、ユーザの操作に対する触覚的フィードバックは提供されるものの、当該操作の結果で対象物の状態が変化することまでは考慮されていなかった。【０００５】
本発明は上記実情に鑑みて為されたもので、比較的簡便な処理により、触覚フィードバックの現実感を、より向上できる情報処理装置、情報処理方法、及びプログラムを提供することを、その目的の一つとする。
【課題を解決するための手段】
【０００６】
上記従来例の問題点を解決する本発明は、情報処理装置であり、所定可動範囲で押し込み可能なボタンを備え、当該ボタンが押し込まれたときに、その押し込み位置を検出するデバイスであって、前記ボタンの押し込み力に反発する抵抗力を提示可能なデバイスに接続され、前記デバイスの前記ボタンの、押し込み回数、過去の最大押し込み位置、押し込み操作の継続時間、のうち少なくとも一つを含む決定基準に基づいて、前記ボタンの押し込み位置に関係する、提示する抵抗力の大きさを表す制御情報を決定する決定手段、及び前記デバイスに対して、前記決定した制御情報を出力する手段、を有することとしたものである。
【発明の効果】
【０００７】
本発明によると、比較的簡便な処理により、触覚フィードバックの現実感を、より向上できる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施の形態に係る情報処理装置の構成例を表すブロック図である。
【図２】本発明の実施の形態に係る情報処理装置に接続される操作デバイスの例を表す概要図である。
【図３】本発明の実施の形態に係る情報処理装置に接続される操作デバイスの反力提示部の例を表す説明図である。
【図４】本発明の実施の形態に係る情報処理装置の例を表す機能ブロック図である。
【図５】本発明の実施の形態に係る情報処理装置による制御情報の例を表す説明図である。
【発明を実施するための形態】
【０００９】
本発明の実施の形態について図面を参照しながら説明する。本発明の実施の形態に係る情報処理装置１は、図１に例示するように、制御部１１と、記憶部１２と、表示制御部１３と、通信部１４と、インタフェース部１５とを含んで構成されている。また、この情報処理装置１には、インタフェース部１５を介して、操作デバイス２が接続されている。
【００１０】
ここで制御部１１は、ＣＰＵ等のプログラム制御デバイスであり、記憶部１２に格納されたプログラムに従って動作する。本実施の形態の一例では、この制御部１１は、後に説明する操作デバイス２が備える所定のボタンに関わる決定基準に基づいて、ユーザに対して提示する、ボタンの押し込みに対する抵抗力の大きさを表す制御情報を決定する。
【００１１】
ここで決定基準は、過去の押し込み回数、過去の最大押し込み位置、または過去の押し込み操作の継続時間、のうち少なくとも一つを含む。制御部１１は、このような決定基準に基づいて、当該操作デバイス２のボタンの押し込み位置に関係してユーザに対して提示する、ボタンの押し込みに対する抵抗力の大きさを表す制御情報を決定する。そしてこの制御部１１は、当該決定した制御情報を、操作デバイス２に対して出力する。この制御部１１の詳しい動作については後に述べる。
【００１２】
記憶部１２は、メモリデバイスやディスクデバイス等を含んで構成され、制御部１１によって実行されるプログラムを保持する。このプログラムは、ＤＶＤ−ＲＯＭ等のコンピュータ可読かつ非一時的な記憶媒体に格納されて提供され、この記憶部１２に格納されたものであってもよいし、ネットワーク等を介して配信され、この記憶部１２に格納されたものであってもよい。またこの記憶部１２は、制御部１１のワークメモリとしても動作する。
【００１３】
表示制御部１３は、テレビやモニタ、ＨＭＤ（ヘッドマウントディスプレイ）等のディスプレイに接続され、制御部１１から入力される指示に従って、当該ディスプレイに対して表示させる画像の情報を出力する。通信部１４は、ネットワークインタフェース等であり、制御部１１から入力される指示に従って、ネットワークを介してデータを受信し、またはネットワークを介してデータを送出する。
【００１４】
インタフェース部１５は、例えばＵＳＢ（Universal Serial Bus）インタフェースやブルートゥース（登録商標）等の有線または無線インタフェースを含み、操作デバイス２から入力される、指示操作に係る情報を受信して制御部１１に出力する。またこのインタフェース部１５は、制御部１１から入力される制御情報等の情報を、操作デバイス２に対して送出する。
【００１５】
操作デバイス２は、例えば図２に例示するように、円柱ないし多角柱状の把持部２１と、この把持部２１から連続的に形成された操作部２２とを含む。また、この操作部２２には、操作デバイス２をユーザが把持したとき、ユーザの人さし指で操作可能な位置に配された、押し込みボタン２２１が含まれる。この押し込みボタン２２１は、例えばその外面２２１Ｆ（筐体外部に露出してユーザの指が触れる面）の位置が、操作デバイス２の筐体から外部に突出した第１の位置Ｐ１と、筐体側に押し込まれた第２の位置Ｐ２との間となる所定の可動範囲で押し込み可能となっている。また、押し込みボタン２２１は、ユーザが操作しない状態では、その外面が第１の位置Ｐ１の位置に移動するよう、弾性体などによって付勢された状態にある。
【００１６】
また操作部２２は、操作デバイス２に対するユーザの操作内容を表す情報を、情報処理装置１に出力する制御部２２２を含む。この制御部２２２は、マイクロコンピュータなどのプログラム制御デバイスを含んで構成され、本実施の形態の例では、押し込みボタン２２１の押し込み量を表す情報を含む、操作内容を表す情報を、情報処理装置１に対して出力する。
【００１７】
本実施の形態のある例では、操作デバイス２は、傾きセンサ（不図示）やプッシュスイッチ（図２のＳ）などを含んでもよく、この場合、制御部２２２は、傾きセンサが検出する操作デバイス２の姿勢の情報（傾き角度の情報）や、プッシュスイッチの操作に関する情報を、操作内容を表す情報に含めて情報処理装置１に対して出力する。
【００１８】
この操作デバイス２はさらに、押し込みボタン２２１の押し込みに対して反力を提示する反力提示部２３を有する。この反力提示部２３は、図３に例示するように、アクチュエータ２３１と、当該アクチュエータ２３１により回動するアーム２３２と、アクチュエータ２３１を制御する制御回路２３３とを含む。
【００１９】
ここでアクチュエータ２３１は、回転軸を備えて、制御回路２３３から入力される指示に従って、指示された方向に、この回転軸を回転させる。また、このアクチュエータ２３１は、回転軸の回転角を検出して制御回路２３３に出力する。アーム２３２は、アクチュエータ２３１の回転軸に取り付けられており、当該回転軸を回転の中心軸として、中心軸まわりに所定の角度範囲で回動する。本実施の形態では、このアーム２３２は、アクチュエータ２３１により、次の範囲内で移動する。この範囲は、アーム２３２の先端部が押し込みボタン２２１の背面２２１Ｂ（筐体内部側の面であって、押し込み方向とその法線とが平行、ないし実質的に平行な（平行から所定の角度範囲内にある）面）の可動範囲外となる範囲外位置Ｐｘと、押し込みボタン２２１の移動軌跡上にあって、押し込みボタン２２１の可動範囲を規制する所定の規制位置Ｐｙとの間の範囲である。アクチュエータ２３１は、これら点Ｐｘ，Ｐｙの間の任意の点Ｐを目標位置として、この目標位置にアーム２３２の先端が位置することとなるよう、その回転方向と回転速度とが制御される。また、このアクチュエータ２３１は、ユーザの操作により（つまりユーザが力を加えているために）アーム２３２が目標位置の方向に移動しない場合に、予め指示された目標位置の方向にどの程度の力（抵抗力）で回転させるかを表す抵抗力（Stiffness）の情報に基づいて、アーム２３２を回転制御する。
【００２０】
このように構成される反力提示部２３によると、アーム２３２の先端部の目標位置が、押し込みボタン２２１の可動範囲を規制する位置Ｐであるときには、アーム２３２は押し込みボタン２２１の底面に当接しないので、押し込みボタン２２１が押し込まれるとき、その背面２２１Ｂが位置Ｐに達するまではユーザは押し込みボタン２２１を比較的軽い力（押し込みボタン２２１の外面２２１Ｆを位置Ｐ１に移動する方向に付勢する付勢力に反する程度の力）で操作できる。一方、押し込みボタン２２１の背面が位置Ｐに達すると、アーム２３２が押し込みボタン２２１の底面に当接した状態となり、押し込みボタン２２１をさらに押し込むためには、ユーザは、アーム２３２の先端位置をこの位置Ｐの方向に移動（位置Ｐに維持）しようとするアクチュエータ２３１の抵抗力（Stiffness）に反して、比較的強い力で押し込みボタン２２１を操作する必要がある。このようにして、反力提示部２３は、ユーザに対して、押し込みボタン２２１を押し込む力に対する反力（トルク）を提示する。
【００２１】
このように、目標位置をＰとする制御情報に基づく制御を行う場合、押し込みボタン２２１の押し込み位置に関係して、押し込み位置が位置Ｐまでは、提示される抵抗力の大きさは実質的に「０」であり、押し込み位置がＰを超えると、指示された大きさの抵抗力が提示される。
【００２２】
制御回路２３３は、マイクロコンピュータなどのプログラム制御デバイスを含んで構成され、情報処理装置１から入力される制御情報と、アクチュエータ２３１が出力する回転角の検出結果とに基づいてアクチュエータ２３１を制御する。ここで具体的に情報処理装置１が出力する制御情報は、アーム２３２の先端部の目標位置に対応するアクチュエータ２３１の回転角度の情報を含む。
【００２３】
制御回路２３３は、情報処理装置１から制御情報が入力されると、当該制御情報に含まれるアクチュエータ２３１の回転角度の情報と、アクチュエータ２３１が出力する回転角の検出結果とに基づいて、アクチュエータ２３１の回転方向及び回転速度（アクチュエータ２３１に対して供給する電流など）を制御する。この制御は、一般的なフィードバック制御により行うことができるので、ここでの詳しい説明を省略する。
【００２４】
また制御回路２３３は、アクチュエータ２３１が出力する回転角の検出結果を所定のタイミングごとに参照する。そして制御回路２３３は、回転方向及び回転速度の制御にも関わらず、アクチュエータ２３１が出力する回転角の検出結果が、入力された制御情報に基づく制御を開始してから所定の時間内に目標位置に対応する角度に到達しない場合、フィードバック制御に代えて、指示された大きさの抵抗力を提示するよう、回転方向及び回転速度（アクチュエータ２３１に対して供給する電流など）を制御してもよい。さらに、このように指示された大きさの抵抗力を提示している間は、制御回路２３３は、前回参照した検出結果と今回参照した検出結果との間に目標位置に対応する角度が含まれる（制御により目標位置を行きすぎた）か否かを繰り返し調べる。そして制御回路２３３は、前回参照した検出結果と今回参照した検出結果との間に目標位置に対応する角度が含まれる場合（制御により目標位置を行きすぎた場合）、アクチュエータ２３１の制御をフィードバック制御に戻す。
【００２５】
また、本実施の形態において情報処理装置１が出力する制御情報は、別の例では、押し込みボタン２２１の位置（アクチュエータ２３１が出力する回転角の検出結果）に応じた目標位置の情報を含んでもよい。この場合、制御回路２３３は、アクチュエータ２３１が出力する回転角の検出結果と制御情報とを参照して、目標位置を決定する。そして制御回路２３３は、当該決定した目標位置の情報（アクチュエータ２３１の回転角度の情報）と、アクチュエータ２３１が出力する回転角の検出結果とに基づいて、アクチュエータ２３１の回転方向及び回転速度（アクチュエータ２３１に対して供給する電流など）を制御することとなる。
【００２６】
またこの例では、アクチュエータ２３１を制御しているにも関わらず、所定のタイミングごとに参照しているアクチュエータ２３１が出力する回転角の検出結果が、入力された制御情報に基づく制御を開始してから所定の時間内に目標位置に対応する角度に到達しない場合、フィードバック制御に代えて、予め指示された抵抗力を提示するよう、回転方向及び回転速度（アクチュエータ２３１に対して供給する電流など）を制御してもよい。このように指示された抵抗力を提示するよう制御している間は、制御回路２３３は、前回参照した検出結果と今回参照した検出結果との間に目標位置に対応する角度が含まれる（制御により目標位置を行きすぎた）か否かを繰り返し調べる。そして制御回路２３３は、前回参照した検出結果と今回参照した検出結果との間に目標位置に対応する角度が含まれる場合（制御により目標位置を行きすぎた場合）、アクチュエータ２３１の制御をフィードバック制御に戻す。
【００２７】
なお、押し込みボタン２２１の位置Ｐに対して、目標位置をＰ＋ΔＰ（ΔＰは正または負の値）とする制御情報とすることでも、押し込みに対する抵抗力の大きさを段階的に指定できる。そこで制御回路２３３は、アクチュエータ２３１を制御しているにも関わらず、所定のタイミングごとに参照しているアクチュエータ２３１が出力する回転角の検出結果が、目標位置に対応する角度に到達しない場合でも、フィードバック制御を継続することとしてもよい。この場合、押し込みボタン２２１の位置がＰであるときに、目標位置をＰよりも上側（押し込まれていない側）にΔＰだけ大きく設定すると、目標位置をＰあるいはＰよりも下側（より押し込まれる側）に設定する場合に比べ、より大きい抵抗力を提示することとなる。また制御の方法によっては、このΔＰの大きさを変更することで、さらに抵抗力の大きさを段階的に指定可能となる。そこで、この例では、制御回路２３３は、指示された抵抗力の大きさに対応して、ΔＰの値を決定することとなる。
【００２８】
次に本実施の形態に係る情報処理装置１の制御部１１の動作について説明する。本実施の形態のある例では、この制御部１１は、機能的には図４に例示するように、操作情報取得部４１と、操作履歴情報生成部４２と、制御情報生成部４３と、出力処理部４４とを含んで構成される。
【００２９】
ここで操作情報取得部４１は、操作デバイス２が出力する操作内容を表す情報を取得する。操作履歴情報生成部４２は、操作情報取得部４１が取得した、操作デバイス２が出力する操作内容を表す情報に基づき、ユーザの操作の履歴を表す情報を生成する。本実施の形態の一例では、この操作履歴情報生成部４２は、操作デバイス２の押し込みボタン２２１の過去の押し込み回数と、過去の最大押し込み位置と、過去の押し込み操作の継続時間とのうち少なくとも一つの情報（制御情報パラメータと呼ぶ）を記憶し、操作履歴に関する情報として生成して出力する。
【００３０】
また制御部１１は、所定のタイミングで、記憶している制御情報パラメータの値をリセットする。このタイミングは、例えば、ユーザが、新たな操作の対象となる仮想的な物体をつかむ操作を行った時点など、アプリケーションプログラムの指定に基づくもので構わない。
【００３１】
具体的に、操作履歴情報生成部４２は、過去の所定のタイミング以降における押し込みボタン２２１の押し込み回数（予め定めた第１のしきい値に対応する角度を下回る位置から、当該第１のしきい値に対応する角度を上回る位置まで押し込まれた回数）をカウントする。ここで過去の所定のタイミングは、例えば、制御部１１が実行するアプリケーションによって決定する。
【００３２】
一例として制御部１１は、仮想のゲーム空間内の仮想的な物体をユーザが操作するゲームのアプリケーションを実行する。この例において、操作の対象となる仮想的な物体をつかむ操作を、押し込みボタン２２１の押し込みによって行わせることとすると、制御部１１の操作履歴情報生成部４２は、ユーザが、新たな操作の対象となる仮想的な物体をつかむ操作を行った時点で、押し込み回数のカウント回数をリセットし、この時点以降の押し込みボタン２２１の押し込み回数（予め定めた第１のしきい値に対応する角度以上に押し込まれた回数）をカウントして、当該カウント値を、操作履歴に関する情報として出力する。
【００３３】
なお、操作履歴情報生成部４２は、過去の最大押し込み位置においても同様に、ユーザが、新たな操作の対象となる仮想的な物体をつかむ操作を行った時点で、最大の押し込み位置を表す情報をリセットする。そして、当該リセットした時点以降の押し込み位置の最大値（押し込み位置を表す情報は、押し込むほど大きくなる値となっているものとする）を、過去の最大押し込み位置を表す操作履歴情報として生成し、出力する。
【００３４】
また操作履歴情報生成部４２は、過去の押し込み操作の継続時間については、前回、押し込み角度が所定の第２のしきい値を下回っている状態から、当該第２のしきい値を上回った時点からの経過時間を、押し込み操作の継続時間として計時し、当該計時した継続時間の情報を、操作履歴情報として、所定のタイミングごとに（例えば定期的に）出力する。
【００３５】
なお、ここで述べた過去の押し込み回数、過去の最大押し込み位置、または押し込み操作の継続時間は一例であり、本実施の形態の操作履歴情報生成部４２は、これらに限らず、他の種類の操作履歴に関する情報、例えば、ユーザがゲームを開始した時点からの押し込み回数などの情報を生成してもよい。
【００３６】
制御情報生成部４３は、操作情報取得部４１が取得した操作デバイス２が出力する操作内容を表す情報と、操作履歴情報生成部４２が生成する操作履歴に関する情報とに基づいて、操作デバイス２に出力する制御情報を生成する。
【００３７】
すなわち、この制御情報生成部４３は、操作デバイス２が備える押し込みボタン２２１について、操作履歴情報生成部４２が生成した、過去の押し込み回数、過去の最大押し込み位置、または過去の押し込み操作の継続時間、のうち少なくとも一つに関わる決定基準を用いて、制御情報を決定する。この制御情報は、ユーザに対して提示する、ボタンの押し込みに対する抵抗力の大きさを表す制御情報であり、この抵抗力の大きさは、操作デバイス２の押し込みボタン２２１の押し込み位置に関係するものとして定められる。
【００３８】
一例として、制御情報生成部４３は、過去の押し込み回数を表す値が大きいほど、ボタンの押し込みに対する抵抗力の大きさを低減する。すなわち制御情報生成部４３は、当初は目標位置をＰ、及び提示する抵抗力をＦとする制御情報を生成して出力する。その後制御情報生成部４３は、操作履歴情報生成部４２が生成する操作履歴の情報により、押し込み回数のカウント値がｉ（ｉ＝１，２…なる整数）となったときに、提示する抵抗力の大きさをＦ−ΔＦ×（ｉ−１）と設定する（ここでΔＦは予め定めた方法で設定された値であり、例えば予め定めたΔＦ＞０なる値とする）。これにより、カウント値が「１」だけインクリメントされるごとに、提示する抵抗力の大きさがΔＦずつ小さくなるよう制御される。なお、制御情報生成部４３は、Ｆ−ΔＦ×（ｉ−１）が予め定めた閾値Ｆminを下回ったときには、提示する抵抗力の大きさをＦminと設定することとしてもよい。
【００３９】
また、別の例では、制御情報生成部４３は、Ｆ−ΔＦ×（ｉ−１）が予め定めた閾値Ｆminを下回ったとき、あるいは押し込み回数のカウント値ｉが所定の回数Ｎを超えたときには、アーム２３２の先端部が押し込みボタン２２１の背面の可動範囲外となる範囲外位置Ｐｘに目標位置を設定する制御情報を生成してもよい。この場合、回数Ｎを超えて押し込み操作を行ったときには、Ｎ回以後は、押し込みボタン２２１が（もとの位置に戻そうとする付勢力以外の）抵抗力なしに押し込み可能となる。
【００４０】
さらに本実施の形態の一例では、制御情報生成部４３が用いる決定基準がアプリケーションプログラムに従って動的に設定されてもよい。例えば、仮想のゲーム空間内の仮想的な物体をユーザが操作するゲームのアプリケーションを実行しているときに、操作の対象となる仮想的な物体ごとに、決定基準を異ならせてもよい。
【００４１】
具体的に、制御部１１は、仮想空間内の第１の仮想的な物体に対する操作が行われるときには、過去の押し込み回数による決定基準に基づいて制御情報を決定し、第２の仮想的な物体に対する操作の際には、過去の最大押し込み位置による決定基準に基づいて制御情報を決定する、といったように制御してもよい。出力処理部４４は、制御情報生成部４３が生成した制御情報を、操作デバイス２に対して送出する。
【００４２】
［動作］
本実施の形態は以上の構成を基本的に備えており、次のように動作する。以下の例では、制御部１１が仮想のゲーム空間内の仮想的な物体をユーザが操作するゲームのアプリケーションを実行しているときに、操作デバイス２における押し込みボタン２２１の押し込み量に対する抵抗力についての制御を行う場合を例として説明する。
【００４３】
情報処理装置１の制御部１１は、仮想のゲーム空間内の画像を表示制御部１３を介してディスプレイに表示させ、ユーザから、当該仮想のゲーム空間内に配した仮想的な物体に対する操作を受け入れる。例えば、ここでの仮想的な物体として、制御部１１は、仮想的なスポンジ（吸水しているスポンジ）と、仮想的な金属製のボール（薄く、潰すことが可能とされるもの）とを表示する。
【００４４】
また、このゲームアプリケーションでは、仮想的なスポンジについては、過去の押し込み回数による決定基準に基づいて制御情報を決定し、仮想的な金属製のボールについては押し込み操作の継続時間によって制御情報を決定するよう、設定がされているものとする。また初期値として、仮想的なスポンジについては、目標位置Ｐs、抵抗力をＦsとの設定がされ、金属製のボールについては目標位置をＰm、抵抗力をＦmとする旨の設定されているものとする。
【００４５】
ユーザが仮想的なスポンジを握る操作を行う（操作デバイス２を操作して、仮想的なスポンジに触れた状態で押し込みボタン２２１を押し込む）と、制御部１１は、制御情報パラメータとしての、押し込み回数のカウント回数及び押し込み操作の継続時間の情報をリセットする。制御部１１は、以下、ユーザが操作デバイス２を操作して、仮想的なスポンジに触れた状態で押し込みボタン２２１を押し込むたびに、押し込み回数のカウントを「１」ずつインクリメントし、また押し込み操作が行われた時間を計時して累算し、押し込み操作の継続時間とする。制御部１１は、押し込み回数のカウントと、押し込み操作の継続時間とを操作履歴情報として、操作デバイス２が出力する操作内容を表す情報と、当該操作履歴情報とに基づいて、操作デバイス２に出力する制御情報を生成する。
【００４６】
すなわち制御部１１は、現在操作の対象となっている仮想的な対象物（スポンジ）についての設定を参照し、過去の押し込み回数による決定基準に基づいて制御情報を決定する。具体的に制御部１１は、最初に押し込みボタン２２１が押し込まれたときには、仮想的な対象物（スポンジ）について設定された初期値である目標位置Ｐs、抵抗力Ｆsを制御情報として操作デバイス２に対して出力する。
【００４７】
操作デバイス２は、押し込みボタン２２１が目標位置Ｐsに対応する位置以上に押し込まれると、抵抗力Ｆsで、押し込みに対して反発する。ユーザは、これにより、目標位置Ｐsより先に押し込む際に、所定の抵抗力を感じることとなる。
【００４８】
ユーザが押し込みボタン２２１を放し、再度押し込みを開始すると、操作デバイス２が押し込まれた量を表す情報を情報処理装置１に送信する。情報処理装置１の制御部１１は、押し込み回数のカウントを「１」だけインクリメントし、抵抗力Ｆを、Ｆs−ΔＦsとして制御情報を生成する。そして制御部１１は、当該生成した制御情報を操作デバイス２に対して出力する。ここでΔＦsは予め定めた方法で決定される値（例えば所定の値）とする。
【００４９】
この段階で操作デバイス２は、押し込みボタン２２１が目標位置Ｐsに対応する位置以上に押し込まれると、抵抗力Ｆs−ΔＦsで、押し込みに対して反発する。ユーザは、これにより、目標位置Ｐsより先に押し込む際に、当初の抵抗力よりは低い抵抗力を感じることとなる。
【００５０】
以下、ユーザが押し込みボタン２２１を放し、再度押し込む操作を行い、それに対応して操作デバイス２が押し込まれた量を表す情報を情報処理装置１に送信するごとに、情報処理装置１の制御部１１は、押し込み回数のカウントを「１」ずつインクリメントする。制御部１１は、ｉ回目の操作では、抵抗力Ｆを、Ｆs−ΔＦs×（ｉ−１）として制御情報を生成する。そして制御部１１は、当該生成した制御情報を操作デバイス２に対して出力する。
【００５１】
これにより操作デバイス２は、押し込みボタン２２１が目標位置Ｐsに対応する位置以上に押し込まれるごとに、ユーザが押し込み操作に対して感じる抵抗力は小さくなっていく。このことは、スポンジを繰り返し握っていると、スポンジに含まれていた水が絞り出されて握り込む操作が軽くなっていくこと表現している。
【００５２】
ユーザが仮想的なスポンジを放す操作を行い（操作デバイス２の押し込みボタン２２１から指を放すなど）、仮想的な、金属製のボールをつかむ操作を行う（操作デバイス２を操作して、仮想的な金属のボールに触れた状態で押し込みボタン２２１を押し込む）と、制御部１１は、押し込み回数のカウント回数及び押し込み操作の継続時間の情報をリセットする。
【００５３】
また制御部１１は、現在操作の対象となっている仮想的な対象物（金属製のボール）についての設定を参照し、押し込み操作の継続時間による決定基準に基づいて制御情報を決定する。そして制御部１１は、仮想的な対象物（金属製のボール）について設定された初期値である目標位置Ｐm、抵抗力Ｆmを制御情報として操作デバイス２に対して出力する。
【００５４】
操作デバイス２は、押し込みボタン２２１が目標位置Ｐmに対応する位置以上に押し込まれると、抵抗力Ｆmで、押し込みに対して反発する。ユーザは、これにより、目標位置Ｐmより先に押し込む際に、所定の抵抗力を感じることとなる。
【００５５】
その後、ユーザが操作デバイス２の押し込みボタン２２１を押し込んだ状態で維持していると、操作デバイス２は、押し込まれた状態における押し込み量の情報を情報処理装置１に対して送信する。制御部１１は、当該情報により、操作デバイス２の押し込みボタン２２１が押し込まれた状態で維持されていると判断して、その継続時間を計時する。
【００５６】
制御部１１は、計時している継続時間が予め定めたしきい値（例えば３秒）を超えたか否かを所定のタイミングごと（例えば１／３０秒ごとに１度）に繰り返し判断する。制御部１１が、計時している継続時間が予め定めたしきい値を超えていないと判断している間は、制御部１１は、制御情報を新たに出力しない。このため、上記しきい値を超えてユーザが仮想的な対象物（金属製のボール）を握る操作をしていなければ、ユーザに対しては、目標位置Ｐmより先に押し込む際に、所定の抵抗力を感じる状態が提示される。
【００５７】
一方、制御部１１が、計時している継続時間が予め定めたしきい値を超えたと判断すると、制御部１１は、目標位置を、操作デバイス２のアーム２３２の先端部が押し込みボタン２２１の背面の可動範囲外となる範囲外位置Ｐｘに設定する。これにより、ユーザに対しては、押し込みボタン２２１が押し込みに対して抵抗しないかのような感覚が提示される。
【００５８】
併せて制御部１１は、このとき、金属製のボールが破裂したかのような画像を生成して表示制御部１３を介して出力することとしてもよい。ユーザは、金属製のボールを握っているうちに、割れてしまったかのような感覚の提示を受けることとなる。
【００５９】
［振動デバイスを併せて利用する例］
操作デバイス２は、制御部２２２により制御される振動デバイス２４をその筐体内部に備えてもよい（図２において破線にて図示する）。ここで振動デバイス２４は、ボイスコイルモータ（ＶＣＭ）や、バイブレータなど広く知られたものを採用できる。
【００６０】
この例では、情報処理装置１の制御部１１は、押し込みボタン２２１における反力提示のための制御情報に、振動デバイス２４を振動させる際には、当該振動の強さや、振動波形などの情報を含めて、操作デバイス２に対して出力する。制御部１１は、この振動の指示についても、操作デバイス２の押し込みボタン２２１の、過去の押し込み回数、過去の最大押し込み位置、押し込み操作の継続時間の少なくとも一つを含む基準に基づいて、振動指示を出力するか否か、あるいはどのような振動指示を出力するかを制御してもよい。
【００６１】
操作デバイス２では、振動デバイス２４の振動の強さや、振動波形などの情報が、情報処理装置１から受信する制御情報に含まれる場合、当該情報に基づいて振動デバイス２４を制御して、操作デバイス２を振動させる。
【００６２】
［各種の制御情報の例］
また、ここまでの説明では、仮想的な対象物としてスポンジと、金属製のボールといった例における制御情報の例について説明したが、本実施の形態はこれに限られない。すなわち、仮想的な対象物ごとの初期の設定と、制御情報の決定方法については、ここまでに述べたスポンジなどの例を含めて、次のように例示できる。
【００６３】
［スポンジ］
初期値：目標位置Ｐs、初期の抵抗力Ｆs。
制御情報の決定方法：押し込み操作の回数ｉに基づき、所定の方法で定めた正の値ΔＦsを用いて、抵抗力を、Ｆ＝Ｆs−ΔＦs×（ｉ−１）と設定する。ただし、Ｆs−ΔＦs×（ｉ−１）＜Ｆminとなったときには、Ｆ＝Ｆminとする。これにより、所定回数までは絞るたびに抵抗力が小さくなる状況が演出される。
【００６４】
また制御部１１は、抵抗力の大きさを決定する際に、当該決定の時点で操作デバイス２から受信している、押し込みボタン２２１のその時点での押し込み位置の情報Ｐcに基づいて決定してもよい。
【００６５】
この場合、制御部１１は、押し込み操作の回数ｉに基づき、例えば所定の正の値ΔＦsを用いて、押し込み位置に対する抵抗力を表す関数Ｆ（Ｐc）を、次のように定める：
Ｆ（Ｐc）＝ｆs×（Ｐc−Ｐs）−ΔＦs×（ｉ−１）×（Ｐc−Ｐs）
ここでｆs＝Ｆs／Ｐsとすればよい。
【００６６】
この例では、押し込み量に比例した抵抗力がユーザに提示されるが、その際の抵抗力が、押し込み操作の回数ｉが大きくなるほど、全体的に小さくなる（図５）。
【００６７】
［金属製の物体］
初期値：目標位置Ｐm、初期の抵抗力Ｆm。なお抵抗力Ｆmは比較的大きめとすることで、硬質感がユーザに与えられる。
制御情報の決定方法：押し込み操作の継続時間ｔに基づき、予め定めたしきい値Ｔに対して継続時間ｔがｔ＜Ｔである間は、初期値の設定情報を維持する。ｔ＞Ｔとなると、目標位置を、操作デバイス２のアーム２３２の先端部が押し込みボタン２２１の背面の可動範囲外となる範囲外位置Ｐｘに設定する。これにより、しきい値により定められる時間が経過するまで握り続けたときに割れてしまったかのような演出が行われる。
【００６８】
なお、制御部１１は、押し込み操作の継続時間ｔがしきい値Ｔ未満である別のしきい値Ｔ２より大きくなったときに、振動デバイス２４を振動させる制御情報をさらに含めてもよい。まもなく割れるという感覚をユーザに与えることが可能となる。
【００６９】
［缶など、徐々につぶれる物体の場合］
初期値：目標位置Ｐm、初期の抵抗力Ｆm。
制御情報の決定方法：押し込み操作の継続時間ｔに基づき、予め定めたしきい値Ｔに対して継続時間ｔがｔ＜Ｔである間は、目標位置ＰmをＰm−ΔＰm×ｔ（ただし、ΔＰmは所定の方法で定められる正の値であり、例えば予め定めた正の値とする）とし、抵抗力Ｆは初期値の設定情報であるＦmを維持する。ｔ＞Ｔとなると、目標位置を、操作デバイス２のアーム２３２の先端部が押し込みボタン２２１の背面の可動範囲外となる範囲外位置Ｐｘに設定する。これにより、しきい値により定められる時間が経過するまでは、握り続けると抵抗力が提示される位置がより押し込んだ位置となっていき（徐々につぶれていく感覚が提示され）、握り続けたときにはつぶしきってしまったかのような演出が行われる。また、目標位置を前回出力した制御情報と異ならせるタイミングでは、振動デバイス２４を振動させる制御情報をさらに含めてもよい。このようにすると、つぶれるタイミングで振動が提示され、缶のような対象物がつぶれていく感覚をより強く提示できる。
【００７０】
［空気入れ（風船などに接続された空気入れ）］
初期値：目標位置Ｐb、初期の抵抗力Ｆb。
制御情報の決定方法：押し込み操作の回数ｉに基づき、所定の方法で定めた正の値（例えば予め定めた値）ΔＦbを用いて、抵抗力を、Ｆ＝Ｆb＋ΔＦb×（ｉ−１）と設定する。ただし、Ｆb＋ΔＦb×（ｉ−１）＞Ｆmaxとなったときには、目標位置を、操作デバイス２のアーム２３２の先端部が押し込みボタン２２１の背面の可動範囲外となる範囲外位置Ｐｘに設定する。これにより、風船に空気を入れる操作（押し込み操作）を行うごとに抵抗力が大きくなって（重くなって）いき、限度を超えたときに、破裂してしまい、抵抗がなくなる、といった演出が行われる。
【００７１】
［鳥などの生物］
初期値：目標位置Ｐv、初期の抵抗力Ｆv。
制御情報の決定方法：押し込み位置が予め定めたしきい値Ｐth（ＰthはＰvより押し込まれた位置とする）より小さく、初期の目標位置Ｐvより大きいときには、振動デバイス２４を振動させる制御情報を含める。押し込み位置が予め定めたしきい値Ｐth（ＰthはＰvより押し込まれた位置とする）より大きいときには、振動デバイス２４の振動に係る制御情報を出力しない。これにより、軽く保持すると暴れ、強く保持するとおとなしくなる、鳥などの生物を取り扱っている感覚が与えられる。
【００７２】
［ガラス］
初期値：目標位置Ｐg、初期の抵抗力Ｆg。なお、抵抗力Ｆgは比較的小さく設定する。
制御情報の決定方法：押し込み位置が予め定めたしきい値Ｐgth（ＰgthはＰgより押し込まれた位置とする）より大きくなると、振動デバイス２４の振動に係る制御情報を出力し、目標位置を、操作デバイス２のアーム２３２の先端部が押し込みボタン２２１の背面の可動範囲外となる範囲外位置Ｐｘに設定する。Ｐgと、Ｐgthとの差を比較的小さく設定することで、すぐに割れてしまうガラスの感覚がユーザに与えられる。
【００７３】
［石］
初期値：目標位置Ｐe、初期の抵抗力Ｆe。
制御情報の決定方法：押し込み位置が予め定めたしきい値Ｐeth（ＰethはＰeより押し込まれた位置とする）より大きくなると、振動デバイス２４の振動に係る制御情報を出力し、目標位置をＰe＋ΔＰe、しきい値をＰeth＋ΔＰeとする。ここでΔＰeは、所定の方法で定めた（例えば予め定めた）正の値とする。
【００７４】
また、目標位置の演算結果が、別に定めたしきい値Ｐeth2を上回った（Ｐeth2より押し込まれた位置となった）ときには、目標位置を、操作デバイス２のアーム２３２の先端部が押し込みボタン２２１の背面の可動範囲外となる範囲外位置Ｐｘに設定する。これにより、段階的に破壊されて小さくなっていく石の感覚がユーザに与えられる。
【００７５】
［魚］
初期値：目標位置Ｐf、初期の抵抗力Ｆf。
制御情報の決定方法：押し込み位置が予め定めたしきい値Ｐfth（ＰfthはＰfより押し込まれた位置とする）より大きくなると、振動デバイス２４の振動に係る制御情報を出力する。ここでの振動は、ランダムな波形とする。これにより、押さえると跳ね回る魚のような感覚がユーザに与えられる。
【００７６】
［過去の最大押し込み位置に基づく制御］
制御部１１は、さらに、制御情報を決定する際に用いる制御情報パラメータとして、過去の最大押し込み位置を用いてもよい。この例では、操作履歴情報生成部４２は、ユーザが、新たな操作の対象となる仮想的な物体をつかむ操作を行った時点で制御情報パラメータである過去の最大押し込み位置をリセットする（例えば押し込まれていない位置を表す値とする）。
【００７７】
そして操作履歴情報生成部４２は、操作デバイス２が出力する押し込み位置の情報Ｐcurrentと、記憶している最大押し込み位置の情報Ｐmemoryとを比較し、記憶している最大押し込み位置の情報Ｐmemoryよりも、操作デバイス２が出力する押し込み位置の情報が表す押し込み位置Ｐcurrentが、より押し込まれた位置を表すものであるとき（Ｐcurrent＞Ｐmemoryのとき）には、操作デバイス２が出力する押し込み位置の情報で記憶している最大押し込み位置の情報を置き換える（Ｐmemory＝Ｐcurrentと設定する）。
【００７８】
制御部１１の制御情報生成部４３は、例えば過去の押し込み回数を表す値が大きいほど、ボタンの押し込みに対する抵抗力の大きさを低減する制御を行いつつ、過去の最大押し込み位置の情報を参照して、その低減量を制御する。
【００７９】
すなわち本実施の形態のある例では、制御情報生成部４３は、当初は目標位置をＰ、及び提示する抵抗力をＦとする制御情報を生成して出力する。その後制御情報生成部４３は、操作履歴情報生成部４２が生成する操作履歴の情報により、押し込み回数のカウント値が「１」だけインクリメントされるごとに、現在提示している抵抗力の大きさＦから、過去の最大押し込み位置の情報Ｐmemoryに応じた低減量ΔＦ（Ｐmemory）だけ抵抗力を低減する。
【００８０】
具体的にこの低減量ΔＦ（Ｐmemory）は、ΔＦ＝α・Ｐmemory＋ΔＦdefaultという比例関係で構わない。ここでα、ΔＦdefaultは適宜定められる（例えばアプリケーションで指定される）値であり、例えば正の実数とする。
【００８１】
これにより、カウント値が「１」だけインクリメントされるごとに、提示する抵抗力の大きさが過去の最大の押し込み量に比例するΔＦ（Ｐmemory）だけ小さくなるよう制御される。従って、過去に十分押し込むと、それだけ抵抗力が低減されることとなり、例えば、含水したスポンジを強く絞ったときに感じられる感覚などをユーザに提示できるようになる。
【００８２】
［複数の操作デバイスを制御する例］
ここまでの説明では操作デバイス２が一つである場合を例として説明したが、操作デバイス２の数は複数であってもよい。またこの場合、各操作デバイス２は、必ずしも一人のユーザにより操作されなくてもよい。
【００８３】
この例においては、制御部１１は、各操作デバイス２について押し込みボタン２２１の、押し込み回数、過去の最大押し込み位置、押し込み操作の継続時間を制御情報パラメータとして記憶し、所定のタイミングでリセットする。また、各操作デバイス２に対して出力する制御情報を、各操作デバイス２から入力される現在の（入力された時点での）押し込みボタン２２１の押し込み量の情報と、各操作デバイス２についての制御情報パラメータと、の少なくとも一方に基づいて決定する。
【００８４】
例えば制御部１１は、一対の操作デバイス２ａ，２ｂについて、一方の操作デバイス２ａから入力された押し込みボタン２２１の押し込み量の情報Ｐａに基づき、操作デバイス２ｂに出力する制御情報における目標位置の情報ＰｂをＰｂ＝Ｐmax−Ｐａと設定する。ここでＰmaxは、Ｐａが取り得る最大の値とする。この例によると、操作デバイス２ａの押し込みボタンが押し込まれるほど、操作デバイス２ｂの押し込みボタン２ｂにおいて抵抗力を感じる押し込み位置が浅く（より押し込まれない位置に）なることとなり、例えば長い風船の両端を握っているときに、一方を強く握ると、他方側が膨れて抵抗力を感じることとなるといった、演出が可能となる。
【００８５】
［デバイスの姿勢情報に基づく制御］
また制御部１１は、操作デバイス２が備える姿勢検出デバイス（例えば重力方向などを検出する加速度センサなど）（不図示）の検出結果を受け入れて、操作デバイス２に対する制御情報を調整してもよい。例えば押し込みボタン２２１が重力方向下方に向いているときには、押し込み量の目標位置Ｐを予め定めた１未満の値γ倍するなどして補正することとしてもよい。
【００８６】
［ポーリングのタイミング］
また本実施の形態では、制御部１１は、仮想的な対象物に対する画像情報の制御の回数（例えば秒間６０回）よりも、操作デバイス２から、操作内容を表す情報（押し込み量の情報を含む情報）の受信と制御情報の送信との回数を大きく（例えば秒間３００回など）設定してもよい。
【００８７】
このようにすると、例えば操作デバイス２に対する制御情報について、アクチュエータ２３１の制御に係る目標位置や抵抗力の情報と、振動デバイス２４の制御に係る振動波形の情報とを一度に送信できない場合（通信のプロトコルが異なるなどの理由で一体の制御情報として送信できない場合）には、仮想的な対象物に対して画像上の変化が生じるまでの十分な余裕をもって、制御情報を生成、送信することが可能となる。
【符号の説明】
【００８８】
１  情報処理装置、２  操作デバイス、１１  制御部、１２  記憶部、１３  表示制御部、１４  通信部、１５  インタフェース部、２１  把持部、２２  操作部、２３  反力提示部、２４  振動デバイス、４１  操作情報取得部、４２  操作履歴情報生成部、４３  制御情報生成部、４４  出力処理部、２２１  押し込みボタン、２２２  制御部、２３１  アクチュエータ、２３２  アーム、２３３  制御回路。
【図１】
2019107207.tif 000003
【図２】
2019107207.tif 000004
【図３】
2019107207.tif 000005
【図４】
2019107207.tif 000006
【図５】
2019107207.tif 000007
【国際調査報告】
2019107207.tif 000008
2019107207.tif 000009
2019107207.tif 000010
2019107207.tif 000011