一実施形態は、ゲームコントローラまたはゲームパッド等の周辺機器で経験されるハプティックフィードバックを、周辺機器から受信されるユーザ入力データに基づいて修正するシステムである。例えば、システムは、コントローラまたは他の何らかの周辺機器のトリガで経験されるトリガハプティック効果を、周辺機器から受信されるトリガデータに基づいて修正することができる。トリガデータの例には、トリガの位置、トリガの閉鎖率、またはトリガに加えられた力が挙げられる。トリガハプティック効果の修正の例には、トリガハプティック効果のマグニチュード(magnitude)(すなわち強度)、周波数、立ち上がり、減衰、または持続時間のプログラム的修正が挙げられる。システムは、トリガハプティック効果を修正することにより、トリガで「理想」のトリガハプティック効果が経験されるようにトリガ位置、トリガ閉鎖率、またはトリガに加えられた力を補償することができる。別の例として、システムは、コントローラ、ゲームパッド、または他の周辺機器のユーザ入力エレメントで経験される一般的ハプティック効果を、ユーザ入力データに基づいて修正することができる。修正されたハプティックフィードバック感は、ユーザのユーザ入力エレメントとの相互作用を補償することができる。
  システムはまず、ハプティック効果定義を受信することができる。システムはさらに、トリガの位置、トリガの閉じる割合、またはトリガに加えられた力等のトリガデータを受信することができる。このようなトリガデータの例には、トリガを特定の位置に置くこと、トリガを特定の位置に引くこと、またはトリガを絞ることが挙げられる。システムは、例えばハプティック効果定義のマグニチュードパラメータ、周波数パラメータ、指向性パラメータ、アタックパラメータ、減衰(decay)パラメータ、および/または持続時間パラメータをプログラム的に修正するなど、受信したトリガデータに基づいてハプティック効果定義をプログラム的に修正することができる。それからシステムは、コントローラ、ゲームパッド、または他の周辺機器の一つ以上のモータまたはアクチュエータに、修正されたハプティック効果定義に基づくハプティックフィードバックを再生または別途出力させることができ、これにより、修正されたハプティックフィードバックを経験させる。換言すれば、システムは、コントローラ、ゲームパッド、または他の周辺機器に、修正されたハプティック効果定義に基づくハプティック効果を再生させることができ、この修正されたハプティック効果定義に基づくハプティックフィードバックは、元のハプティック効果定義に基づくハプティックフィードバックとは異なるものとすることができる。通常の技術を有する当業者には当然のことながら、「再生」は、データ(例えば、オーディオデータ、ビデオデータ、またはハプティックデータ)を再現する行為または場合である。このように、一例においては、システムは、ユーザのトリガとの相互作用に基づいて、コントローラのトリガで経験されることとなるトリガハプティック効果全体を修正することができる。
  一実施形態例では、ゲームアプリケーション内の武器が、コントローラのトリガで「ビビり」トリガハプティック効果を生じるリロード効果を有し、あたかもトリガ自体の中にアクチュエータがあるかのようなハプティック感が生じうる。この性質のトリガハプティック効果には、非常に小さな力だけがトリガに加えられることが必要でありうる。しかし、ゲームの戦闘の最中には、ユーザが指でトリガを連続的に引き、それによってトリガハプティック効果を効かなくしてしまうことがある。本実施形態によれば、システムは、トリガの位置(もしくはトリガの閉じる割合、またはトリガに加えられた力)を判断し、トリガハプティック効果をなお経験できるようにトリガハプティック効果を修正することができる。
  図1は、本発明の一実施形態に係るシステム10のブロック図である。一実施形態では、システム10は、デバイス(例えば、パーソナルコンピュータ、またはビデオゲームコンソール等のコンソール)の一部であり、システム10は、デバイスにトリガハプティック効果修正機能を提供する。別の実施形態では、システム10は、デバイス(例えば、パーソナルコンピュータまたはコンソール)とは別々であり、デバイスに上述の機能を遠隔で提供する。単一のシステムとして図示されているが、システム10の機能は、分散システムとして実装されてもよい。システム10は、バス12または他の情報通信用の通信機構と、情報処理のためにバス12に動作可能に結合されたプロセッサ22とを含む。プロセッサ22は、任意のタイプの汎用または特殊目的プロセッサであればよい。システム10は、プロセッサ22により実行される情報および命令を記憶するためのメモリ14をさらに含む。メモリ14は、ランダムアクセスメモリ(「RAM:random  access  memory」)、リードオンリメモリ(「ROM:read  only  memory」)、磁気もしくは光ディスク等のスタティックストレージデバイス、または他の任意のタイプのコンピュータ可読媒体の任意の組み合わせで構成することができる。
  コンピュータ可読媒体は、プロセッサ22がアクセスできる任意の利用可能な媒体であればよく、揮発性および不揮発性媒体、取外し可能および取り外し不能媒体、通信媒体、ならびに記憶媒体を含みうる。通信媒体は、搬送波または他の転送機構等の変調データ信号にコンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを含むことができ、公知技術の他の任意の形の情報送達媒体を含みうる。記憶媒体は、RAM、フラッシュメモリ、ROM、消去可能プログラム可能リードオンリメモリ(「EPROM:erasable  programmable  read−only  memory」)、電気的消去可能プログラム可能リードオンリメモリ(「EEPROM:electrically  erasable  programmable  read−only  memory」)、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスクリードオンリメモリ(「CD−ROM:compact  disk  read−only  memory」)、または公知技術の他の任意の形の記憶媒体を含みうる。
  一実施形態では、メモリ14は、プロセッサ22により実行されたときに機能を提供するソフトウェアモジュールを記憶する。モジュールは、一実施形態では、システム10ならびにデバイス全体の残りの部分にオペレーティングシステム機能を提供するオペレーティングシステム15を含む。モジュールは、トリガで経験されるハプティック効果を修正するハプティックトリガ修正モジュール16をさらに含む。ある実施形態では、ハプティックトリガ修正モジュール16は、複数のモジュールを含み、各モジュールが、トリガで経験されるハプティック効果を修正するための特定の個々の機能を提供してもよい。システム10は、コントローラ30等の周辺機器に制御機能を提供しうる周辺ファームウェア等、追加の機能を含むための一つ以上の追加のアプリケーションモジュール18を典型的に含む。
  システム10は、リモートソースからデータを送信および/または受信する実施形態では、赤外線、無線、Wi−Fiまたはセルラネットワーク通信等の移動無線ネットワーク通信を提供するための、ネットワークインタフェースカード等の通信デバイス20をさらに含む。他の実施形態では、通信デバイス20は、イーサネット(登録商標)接続またはモデム等の有線ネットワーク接続を提供する。
  システム10は、コントローラ30に動作可能に接続される。コントローラ30は、システム10に入力を提供するために用いられる周辺機器である。コントローラ30は、無線接続または有線接続を用いてシステム10に動作可能に接続することができる。コントローラ30は、無線接続または有線接続を用いてシステム10と通信しうるローカルプロセッサをさらに含むことができる。あるいは、コントローラ30は、ローカルプロセッサを含まないように構成されてもよく、コントローラ30に関連する全ての入力信号および/または出力信号が、システム10のプロセッサ22により直接対処および処理されてもよい。
  コントローラ30は、ユーザが相互作用することができ、システム10に入力を提供することができる、一つ以上のデジタルボタン、一つ以上のアナログボタン、一つ以上のバンパ、一つ以上の方向パッド、一つ以上のアナログもしくはデジタルスティック、一つ以上のハンドル、および/または一つ以上のユーザ入力エレメントをさらに含むことができる。コントローラ30は、ユーザがさらに相互作用することができ、システム10にさらに入力を提供することができる、一つ以上のアナログまたはデジタルトリガボタン(または「トリガ」)も含むことができる。より詳細に後述するように、コントローラ30には、コントローラ30の少なくとも一つのトリガに対して双方向押/引力を及ぼすように構成された、モータまたは別のタイプのアクチュエータもしくはハプティック出力デバイスをさらに含むことができる。
  コントローラ30は、一つ以上のアクチュエータまたは他のタイプのハプティック出力デバイスも含むこともできる。コントローラ30のローカルプロセッサ、またはコントローラ30がローカルプロセッサを含まない実施形態におけるプロセッサ22は、コントローラ30の少なくとも一つのアクチュエータに、ハプティック効果に関連したハプティック信号を送信すればよい。次に、アクチュエータが、ハプティック信号に応じて振動触知ハプティック効果、運動感覚ハプティック効果、または変形ハプティック効果等のハプティック効果を出力する。ハプティック効果は、コントローラ30のユーザ入力エレメント(例えば、デジタルボタン、アナログボタン、バンパ、方向パッド、アナログもしくはデジタルスティック、ハンドル、スライダ、またはトリガ)で経験されることができる。あるいは、コントローラ30の外側表面でハプティック効果が経験されてもよい。アクチュエータは、アクチュエータ駆動回路を含む。アクチュエータは、例えば、電動モータ、電磁アクチュエータ、ボイスコイル、形状記憶合金、電気活性ポリマ、ソレノイド、偏心モータ(「ERM:eccentric  rotating  mass  motor」)、線形共振アクチュエータ(「LRA:linear  resonant  actuator」)、圧電アクチュエータ、高帯域アクチュエータ、電気活性ポリマ(「EAP:electroactive  polymer」)アクチュエータ、静電摩擦ディスプレイ、または超音波振動ジェネレータでありうる。アクチュエータはハプティック出力デバイスの一例であり、ここで、ハプティック出力デバイスは、駆動信号に応じて振動触知ハプティック効果、静電摩擦ハプティック効果、または変形ハプティック効果等のハプティック効果を出力するように構成されたデバイスである。代替的実施形態では、コントローラ30内の一つ以上のアクチュエータは、何らかの他のタイプのハプティック出力デバイスで置き換えられてもよい。
  コントローラ30は、一つ以上のスピーカをさらに含むことができる。コントローラ30のローカルプロセッサ、またはコントローラ30がローカルプロセッサを含まない実施形態におけるプロセッサ22は、コントローラ30の少なくとも一つのスピーカにオーディオ信号を送信すればよく、次いでスピーカがオーディオ効果を出力する。スピーカは、例えば、ダイナミックラウドスピーカ、エレクトロダイナミックラウドスピーカ、圧電ラウドスピーカ、磁気歪ラウドスピーカ、静電ラウドスピーカ、リボンプラナー磁気ラウドスピーカ、屈曲波ラウドスピーカ、フラットパネルラウドスピーカ、ヘイルエアモーショントランスデューサ、プラズマアークスピーカ、およびデジタルラウドスピーカであればよい。
  コントローラ30は、一つ以上のセンサをさらに含むことができる。センサは、音、動作、加速度、生体信号、距離、流量、力/圧力/歪み/屈曲、湿度、線形位置、方位/傾斜、無線周波数、回転位置、回転速度、スイッチの操作、温度、振動、または可視光強度等であるがこれに限定されない、エネルギーの一形態または他の物理的性質を検出するように構成できる。センサは、検出エネルギーまたは他の物理的特性を、電気信号または仮想センサ情報を表す任意の信号に変換するようにさらに構成でき、コントローラ30は、変換された信号を、コントローラ30のローカルプロセッサに、またはコントローラ30がローカルプロセッサを含まない実施形態におけるプロセッサ22に送信することができる。センサは、加速度計、心電図、脳波図、筋電計、眼電図、電気的パラトグラフ、電気皮膚反応センサ、容量センサ、ホール効果センサ、赤外センサ、超音波センサ、圧力センサ、光ファイバセンサ、曲りセンサ(または屈曲センサ)、力感知レジスタ、ロードセル、LuSense  CPS2  155、小型圧力トランスデューサ、圧電センサ、ストレインゲージ、湿度計、線形位置タッチセンサ、線形ポテンショメータ(またはスライダ)、線形可変差動変圧器、コンパス、傾斜計、磁性タグ(または無線周波数識別タグ)、回転エンコーダ、回転ポテンショメータ、ジャイロスコープ、オンオフスイッチ、温度センサ(温度計、熱電対、抵抗温度検知器、サーミスタ、または温度変換集積回路等)、マイクロホン、光度計、高度計、生体モニタ、カメラ、または光依存レジスタ等であるがこれに限定されない任意のデバイスであってよい。
  図2は、本発明の一実施形態に係るコントローラ100の図である。一実施形態では、コントローラ100は、図1のコントローラ30と同一である。さらに、図3は、コントローラ100の別の図である。コントローラ100は一般に、コンピュータ、携帯電話、テレビ、または他の類似のデバイスに接続できるゲームシステムに用いることができる。図2および図3のコントローラ100のコンポーネント(すなわち、ハウジング102、アナログまたはデジタルスティック110、ボタン114、トリガ118、ならびに鳴動(ランブル)(rumble)アクチュエータ122および124)を、以下で図4とともにさらに詳述する。
  図4は、ホストコンピュータ104およびディスプレイ106をさらに含むゲームシステム101で使用されるコントローラ100のブロック図である。図4のブロック図に示すように、コントローラ100は、接続105を介してホストコンピュータ104と通信するローカルプロセッサ108を含む。接続105は、有線接続、無線接続、または当業者に公知の他のタイプの接続であればよい。あるいは、コントローラ100は、ローカルプロセッサ108を含まないように構成され、コントローラ100からの全ての入力/出力信号が、ホストコンピュータ104により直接対処および処理されてもよい。ホストコンピュータ104は、ディスプレイスクリーン106に動作可能に結合される。一実施形態では、当技術分野で周知のように、ホストコンピュータ104は、ゲームデバイスコンソールであり、ディスプレイスクリーン106は、ゲームデバイスコンソールに動作可能に結合されたモニタである。別の実施形態では、当業者に周知のように、ホストコンピュータ104およびディスプレイスクリーン106は、単一のデバイスに組み合わされてもよい。
  コントローラ100のハウジング102は、左利きユーザまたは右利きユーザのデバイスを握る両手に合い易いように成形される。当業者には当然のことながら、コントローラ100は、Microsoft(登録商標)Xbox  One(商標)コントローラまたはPlayStation(登録商標)DualShock(商標)コントローラ等のビデオゲームコンソールシステム用に現在市販される多数の「ゲームパッド」と類似の形状およびサイズのコントローラの一実施形態例にすぎず、Wii(商標)リモートまたはWii(商標)Uコントローラ、Sony(登録商標)SixAxis(商標)コントローラまたはSony(登録商標)Wandコントローラ、ならびに、実在の物(テニスラケット、ゴルフクラブ、野球のバット等)の形および他の形のコントローラ、またはディスプレイもしくはヘッドマウントディスプレイを有するコントローラ等のコントローラを含むがこれに限定されない、ユーザ入力エレメントの他の構成、形状、サイズのコントローラが使用されてもよい。
  コントローラ100は、アナログまたはデジタルスティック110、ボタン114、およびトリガ118を含む、いくつかのユーザ入力エレメントを含む。本明細書において用いられるところのユーザ入力エレメントは、トリガ、ボタン、アナログまたはデジタルスティックなどのインタフェースデバイスであって、ホストコンピュータ104と相互作用するためにユーザにより操作されるものを指す。図2および図3で分かるように、当業者にも公知のように、複数の各ユーザ入力エレメントおよび追加のユーザ入力エレメントがコントローラ100に含まれうる。したがって、例えばトリガ118の本明細書の記述は、コントローラ100を単一のトリガに限定しない。さらに、図4のブロック図は、アナログまたはデジタルスティック110、ボタン114、およびトリガ118をそれぞれ一つ(1)だけ示している。しかし、当業者には当然のことながら、上述のように複数のアナログまたはデジタルスティック、ボタンおよびトリガ、ならびに他のユーザ入力エレメントが使用されてもよい。
  図4のブロック図で分かるように、コントローラ100は、そのユーザ入力エレメントの各々を直接駆動するためのターゲットアクチュエータまたはモータ、ならびにユーザの手が大抵置かれる場所でハウジング102に動作可能に結合された一つ以上の一般的アクチュエータまたは鳴動アクチュエータ122、124を含む。より具体的には、アナログまたはデジタルスティック110は、アナログまたはデジタルスティック110に動作可能に結合されたターゲットアクチュエータまたはモータ112を含み、ボタン114は、ボタン114に動作可能に結合されたターゲットアクチュエータまたはモータ116を含み、トリガ118は、トリガ118に動作可能に結合されたターゲットアクチュエータまたはモータ120を含む。複数のターゲットアクチュエータに加えて、コントローラ100は、そのユーザ入力エレメントの各々に動作可能に結合された位置センサを含む。より具体的には、アナログまたはデジタルスティック110は、アナログまたはデジタルスティック110に動作可能に結合された位置センサ111を含み、ボタン114は、ボタン114に動作可能に結合された位置センサ115を含み、トリガ118は、トリガ118に動作可能に結合された位置センサ119を含む。ローカルプロセッサ108は、ターゲットアクチュエータ112、116、120、ならびにアナログまたはデジタルスティック110、ボタン114およびトリガ118のそれぞれの位置センサ111、115、119に、動作可能に結合される。ローカルプロセッサ108は、位置センサ111、115、119から受信した信号に応じて、方向付けられた運動感覚効果またはターゲット運動感覚効果を、アナログまたはデジタルスティック110、ボタン114、およびトリガ118にそれぞれ直接提供するようにターゲットアクチュエータ112、116、120に命令する。このようなターゲット運動感覚効果は、コントローラ本体全体に沿って一般的アクチュエータ122、124により生み出される一般的ハプティック効果または鳴動ハプティック効果とは識別もしくは区別可能である。集合的ハプティック効果により、例えば映像、音声、および触覚といった複数のモダリティを同時に駆使することで、ユーザがゲームへのより高い没入感を得られる。ハプティクスを生み出すように構成されるコントローラのさらなる詳細は、参照により全体として本明細書に組み込まれる「ハプティック対応トリガを備えたゲームデバイス(GAMING  DEVICE  HAVING  A  HAPTIC−ENABLED  TRIGGER)」と題する2014年4月22日に出願の出願番号第14/258,644号に、より詳しく記載されている。
  図5は、本発明の一実施形態に係るシステムのトリガハプティック効果ソフトウェアスタックのブロック図である。トリガハプティック効果ソフトウェアスタックは、図1のシステム10等のシステムに実装される。図の実施形態では、システムには、デバイス500、周辺ファームウェア510、およびコントローラ520のコンポーネントが含まれる。デバイス500は、パーソナルコンピュータ、タブレット、スマートフォン、またはコンソール(例えば、ビデオゲームコンソール)等の任意のタイプのコンピュータデバイスであればよい。周辺ファームウェア510は、デバイス500に動作可能に接続されうる一つ以上の周辺機器(例えば、コントローラ)のためのファームウェアである。コントローラ520は、デバイス500に動作可能に接続される周辺機器の一例である。コントローラ520は、ビデオゲームコントローラであってもよい。一実施形態では、コントローラ520は、図1のコントローラ30、ならびに図2、図3および図4のコントローラ100と同一であってもよい。
  デバイス500は、ゲーム入力管理コード501を含む。ゲーム入力管理コード501は、デバイス500内で実行されるゲームアプリケーションまたは他のタイプのアプリケーションの文脈でコントローラ520により提供される入力を管理するコンピュータ可読命令のセットを含む。デバイス500は、周辺入力アプリケーションプログラミングインタフェース(「API:application  programmable  interface」)502をさらに含む。周辺入力API502は、コントローラ520により提供される入力を受信および管理するためにゲーム入力管理コード501が周辺ファームウェア510と相互作用することを可能にする、コンピュータ可読関数またはルーチンのセットを含む。デバイス500は、鳴動API503をさらに含む。鳴動APIは、コントローラ520の一つ以上の鳴動モータまたは鳴動アクチュエータ(例えば、図5に示した鳴動モータLおよびR)に鳴動命令を送信するためにゲーム入力管理コード501が周辺ファームウェア510と相互作用することを可能にするコンピュータ可読関数またはルーチンのセットを含む。鳴動命令は、コントローラ520の鳴動モータまたは鳴動アクチュエータに一般的ハプティック効果または鳴動ハプティック効果を生み出させることができる。
  デバイス500は、(図5に「API」として識別される)トリガハプティック効果API504をさらに含む。トリガハプティック効果API504は、ゲーム入力管理コード501に露出され、コントローラ520の一つ以上のトリガ(例えば、図5に示したトリガLおよびR)へのトリガ命令等、コントローラ520へのハプティック命令を送信するためにゲーム入力管理コード501が周辺ファームウェア510と相互作用することを可能にする、コンピュータ可読関数またはルーチンのセットを含む。ハプティック命令は、コントローラ520の一つ以上のターゲットモータまたはターゲットアクチュエータに、コントローラ520の一つ以上のユーザ入力エレメントでハプティック効果を生み出させることができる。トリガ命令は、コントローラ520の一つ以上のターゲットモータまたはターゲットアクチュエータ(例えば、図5に示したモータLおよびR)に、コントローラ520の一つ以上のトリガ(例えば、図5に示したトリガLおよびR)でトリガハプティック効果を生み出させることができる特定のタイプのハプティック命令である。トリガハプティック効果は、コントローラ520等のコントローラのトリガで経験される、特定のタイプのハプティック効果である。トリガハプティック効果API504は、一つ以上のトリガハプティック効果定義を記憶することができる。ハプティック効果定義は、ハプティックファイルまたはハプティックストリーム等、予め定義され、記憶装置内に記憶されることができ、一つ以上の鳴動モータ、鳴動アクチュエータ、ターゲットモータ、またはターゲットアクチュエータに送信されて、コントローラ520のコンポーネントまたはユーザ入力エレメントでハプティック効果を生み出すことができる、ハプティック信号等のハプティックデータを含むデータ構造である。ハプティックデータは、対応するハプティック効果の一つ以上の属性を含むことができ、属性は、パラメータとして記憶されることができる。ハプティック効果定義のパラメータの例には、振幅パラメータ、周波数パラメータ、波形パラメータ、エンベロープパラメータ、マグニチュード(または強度)パラメータ、および持続時間パラメータが含まれる。トリガハプティック効果定義は、コントローラ520の一つ以上のモータまたはアクチュエータ(例えば、図5に示したモータLおよびR)に送信されて、コントローラ520の一つ以上のトリガ(例えば、図5に示したトリガLおよびR)でトリガハプティック効果を生み出すことができる、特定のタイプのハプティック効果定義である。
  本実施形態によれば、トリガハプティック効果API504は、ゲーム入力管理コード501が直接プレイバック/クロスオーバ部505、トリガエンジン506、および空間化エンジン507と相互作用することを可能にでき、さらに、ゲーム入力管理コード501により呼び出されたリクエストにしたがって直接プレイバック/クロスオーバ部505、トリガエンジン506、および空間化エンジン507を管理することができる。さらに、トリガハプティック効果API504は、周辺ファームウェア510との通信に必要であり、一つ以上のトリガハプティック効果の生成に必要なデータを記憶することができる。代替的実施形態では、トリガハプティック効果API504は、デバイス500ではなく周辺ファームウェア510内にあってもよい。
  デバイス500は、直接プレイバック/クロスオーバ部505をさらに含む。直接プレイバック/クロスオーバ部505は、ハプティックデータを入力として受信し、ハプティックデータを出力として生み出し、ハプティックデータをコントローラ520の一つ以上のターゲットモータ、またはターゲットアクチュエータ(例えば、図5に示したモータLおよびR)に送信する。ある実施形態では、直接プレイバック/クロスオーバ部505は、入力されたハプティックデータのフォーマットを修正せずに、入力されたハプティックデータを直接出力すればよい。その結果、入力されたハプティックデータが「そのまま」再生される。他の実施形態では、直接プレイバック/クロスオーバ部505は、入力されたハプティックデータを第一フォーマットから第二フォーマットへ変換し、さらに変換されたハプティックデータを出力すればよい。再生のタイプに応じて、直接プレイバック/クロスオーバ部505は、ハプティックデータを変換するためにプログラマブルクロスオーバを任意に使用することができる。ハプティックデータを変換することにより、デバイス500は、ハプティック効果を「分解」し、複数のアクチュエータでハプティック効果を忠実に再生することができる。一実施形態では、ハプティックデータのフォーマットは、ハプティックエレメンタリストリーム(「HES:Haptic  Elementary  Stream」)フォーマットであればよい。HESフォーマットは、デバイスにストリーミングされうるハプティックデータを表すためのファイルまたはデータフォーマットである。ハプティックデータは、圧縮されていない音が表されるのと同一または類似の様式で表されうるが、ハプティックデータは、HESフォーマットにおいて暗号化されうる。代替的実施形態では、直接プレイバック/クロスオーバ部505は、デバイス500ではなく周辺ファームウェア510内にあってもよい。
  デバイス500は、トリガエンジン506をさらに含む。トリガエンジン506は、トリガハプティック効果定義等のハプティックデータを受信し、コントローラ520から受信したトリガデータ(例えば、図5に示したトリガデータ513)等のデータに基づいてハプティックデータを修正することができる。トリガデータは、コントローラ520の一つ以上のトリガ(例えば、図5に示したトリガLおよびR)の位置および/またはレンジを指示する一つ以上のパラメータを含むデータである。トリガエンジン506は、コントローラ520にハプティック命令をさらに送信することができる。例えば、トリガエンジン506は、コントローラ520の一つ以上のトリガ(例えば、図5に示したトリガLおよびR)に、トリガ命令を送信することができる。前述したように、トリガ命令は、コントローラ520の一つ以上のターゲットモータまたはターゲットアクチュエータ(例えば、図5に示したモータLおよびR)に、コントローラ520の一つ以上のトリガ(例えば、図5に示したトリガLおよびR)でトリガハプティック効果を生み出させることができる。したがって、一実施形態では、トリガエンジン506は、トリガハプティック効果定義のハプティックデータを修正することにより、トリガの位置および/またはレンジに基づいてトリガで特定のトリガハプティック効果を経験させることができる。別の実施形態では、トリガエンジン506は、トリガハプティック効果定義のハプティックデータを修正することにより、トリガの位置および/またはレンジに基づいてコントローラ520の一つ以上のターゲットモータまたはターゲットアクチュエータ(例えば、図5に示したモータLおよびR)に関するトリガハプティック効果をスケーリングすることができる。トリガエンジン506は、トリガハプティック効果定義等の一つ以上のハプティック効果定義をさらに記憶することができる。代替的実施形態では、トリガエンジン506は、デバイス500ではなく周辺ファームウェア510内にあってもよい。
  デバイス500は、(図5に「空間化エンジン」として識別される)空間化エンジン507をさらに含む。空間化エンジン507は、トリガハプティック効果定義等のハプティックデータを受信し、空間化データに基づいてハプティックデータを修正することができる。空間化データには、トリガハプティック効果等のハプティック効果の所望の方向および/または流れを指示するデータを含むことができる。ある実施形態では、空間化エンジン507は、方向および/または流れを含む空間化データをゲーム入力管理コード501から受信すればよい。さらに、空間化データには、コントローラ520上に位置するユーザの一つ以上の手の一つ以上の位置も含むことができる。ある実施形態では、空間化エンジン507は、一つ以上の手の位置を含む空間化データをコントローラ520から受信すればよい。さらに、ある実施形態では、空間化エンジン507は、ゲーム入力管理コード501により通信される、ゲームアプリケーション内のユーザのキャラクタの位置を含む空間化データを受信すればよい。
  本実施形態によれば、空間化エンジン507は、コントローラ520の一つ以上の鳴動モータまたは鳴動アクチュエータ(例えば、図5に示した鳴動モータLおよびR)に関してトリガハプティック効果等のハプティック効果がスケーリングされ、コントローラ520の一つ以上のターゲットモータまたはターゲットアクチュエータ(例えば、図5に示したモータLおよびR)に関してもハプティック効果がスケーリングされるように、ハプティックデータを修正することができる。換言すれば、空間化エンジン507は、全体的ハプティック効果の方向および流れの感覚を伝えるために、各モータまたはアクチュエータに送信されるハプティックデータを修正し、これにより各モータまたはアクチュエータで経験されるハプティック効果を修正することができる。例えば、空間化エンジン507は、あるモータまたはアクチュエータで経験されるハプティック効果を強調するために、ハプティック効果の一つ以上の部分をスケーリングすることができる。例えば、空間化エンジン507は、ハプティック効果を経験させるモータまたはアクチュエータに送信されるハプティックデータをスケーリングして、ハプティック効果をより目立たせることができる(例えば、マグニチュード、持続時間を増加させるなど)。加えて、空間化エンジン507は、他のモータまたはアクチュエータに送信されるハプティックデータをスケーリングして、それらのモータまたはアクチュエータで経験される他のハプティック効果を目立たないようにすることができる(例えば、マグニチュード、持続時間を減少させるなど)。ある実施形態では、空間化エンジン507は、ハプティックデータをリアルタイムで修正することができる。さらに、ある実施形態では、空間化エンジン507は、全体的トリガハプティック効果を誇張するために、入力とモータまたはアクチュエータの出力との間に非線形関係を有していてもよい。代替的実施形態では、空間化エンジン507は、デバイス500ではなく周辺ファームウェア510内にあってもよい。
  デバイス500は、エンコーダ508をさらに含む。エンコーダ508は、直接プレイバック/クロスオーバ部505、トリガエンジン506、および/または空間化エンジン507から受信したハプティックデータを一つのフォーマットにエンコードする。一実施形態では、このフォーマットはHESフォーマットであってもよい。エンコーダ508は、エンコードされたハプティックデータを周辺ファームウェア510にさらに送信する。
  周辺ファームウェア510は、デコーダおよびクロスオーバ部511を含む。デコーダおよびクロスオーバ部511は、エンコーダ508からエンコードされたハプティックデータを受信し、エンコードされたハプティックデータをデコードする。ある実施形態では、デコーダおよびクロスオーバ部511は、エンコードされたハプティックデータをデコードするために、プログラマブルクロスオーバを計算する。これらの実施形態の一部では、デコーダおよびクロスオーバ部511は、プログラマブルクロスオーバをリアルタイムで計算する。周辺ファームウェア510は、トリガ制御部512をさらに含む。トリガ制御部512は、コントローラ520(例えば、図5に示したモータLおよびR)の一つ以上のターゲットモータまたはターゲットアクチュエータのための低レベル制御APIである。トリガ制御部512は、デバイス500からトリガ命令を受信し、トリガ命令を、コントローラ520の指定のターゲットモータまたはターゲットアクチュエータへの低レベルトリガ命令に変換し、低レベルトリガ命令を、コントローラ520の指定のターゲットモータまたはターゲットアクチュエータに送信することができる。低レベルトリガ命令は、指定のターゲットモータまたはターゲットアクチュエータに、コントローラ520の指定のトリガでトリガハプティック効果を生み出させることができる。
  周辺ファームウェア510は、トリガデータ513をさらに含む。前述のように、トリガデータ513は、コントローラ520の一つ以上のトリガ(例えば、図5に示したトリガLおよびR)の位置および/またはレンジを指示する一つ以上のパラメータなど、一つ以上のパラメータを含むデータである。周辺ファームウェア510は、コントローラ520からトリガデータ513を受信することができる。周辺ファームウェア510は、トリガデータ513をさらに記憶することができ、トリガデータ513をデバイス500にさらに送信することができる。周辺ファームウェア510は、他のゲームパッド機能514をさらに含むが、これは、周辺ファームウェア510によって管理されうるコントローラ520の機能である。このような機能には、有線/無線通信、入力報告、プロトコル実装、電力管理などの機能を含むことができる。周辺ファームウェア510は、鳴動制御部515をさらに含む。鳴動制御部515は、コントローラ520の一つ以上の鳴動モータまたは鳴動アクチュエータ(例えば、図5に示した鳴動モータLおよびR)のための低レベル制御APIである。鳴動制御部515は、デバイス500から鳴動命令を受信し、鳴動命令を、コントローラ520の指定の鳴動モータまたは鳴動アクチュエータのための低レベル鳴動命令に変換し、低レベル鳴動命令を、コントローラ520の指定の鳴動モータまたは鳴動アクチュエータに送信することができる。
  コントローラ520は、トリガLおよびRを含む。コントローラ520は、ギヤボックスLおよびR、ならびにモータLおよびRをさらに含む。モータLおよびギヤボックスLは、コントローラ520内のトリガLに動作可能に結合される。同様に、モータRおよびギヤボックスRは、コントローラ520内のトリガRに動作可能に結合される。モータLがトリガ命令を受信すると、モータLおよびギヤボックスLが集合的にトリガLでトリガハプティック効果を経験させる。同様に、モータRがトリガ命令を受信すると、モータRおよびギヤボックスRが集合的にトリガRでトリガハプティック効果を経験させる。本実施形態によれば、周辺ファームウェア510は、駆動エレクトロニクス530を用いてコントローラ520のモータLおよびRにトリガ命令を送信する。コントローラ520は、ポテンショメータLおよびRをさらに含む。ポテンショメータLは、トリガLの位置および/またはレンジを検出することができ、検出されたトリガLの位置および/またはレンジをトリガデータとして周辺ファームウェア510にさらに送信することができる。同様に、ポテンショメータRは、トリガRの位置および/またはレンジを検出することができ、検出されたトリガRの位置および/またはレンジをトリガデータとして周辺ファームウェア510にさらに送信することができる。一実施形態では、ポテンショメータLおよびRは、ホール効果センサ等の別のタイプの位置センサでそれぞれ置き換えられてもよい。コントローラ520は、鳴動モータLおよびRをさらに含む。鳴動モータLが鳴動命令を受信すると、鳴動モータLは、コントローラ520の左本体に沿ってハプティック効果を経験させる。同様に、鳴動モータRが鳴動命令を受信すると、鳴動モータRは、コントローラ520の右本体に沿ってハプティック効果を経験させる。本実施形態によれば、周辺ファームウェア510は、鳴動駆動エレクトロニクス530を用いてコントローラ520の鳴動モータLおよびRに鳴動命令を送信する。
  代替的実施形態では、一つ以上のターゲットモータまたはターゲットアクチュエータが、コントローラ520の一つ以上のユーザ入力エレメント(一つ以上のデジタルボタン、一つ以上のアナログボタン、一つ以上のバンパ、一つ以上の方向パッド、一つ以上のアナログまたはデジタルスティック、一つ以上のハンドル、一つ以上のスライダ等)に、動作可能に結合されてもよい。この代替的実施形態によれば、周辺ファームウェア510は、一つ以上のターゲットモータまたはターゲットアクチュエータに命令を送信して、一つ以上のターゲットモータまたはターゲットアクチュエータに、コントローラ520の一つ以上のユーザ入力エレメントで経験されるハプティック効果を生み出させることができる。
  一実施形態では、前述したように、システム(図1のシステム10等)は、元のハプティック効果定義に基づくハプティック効果が周辺機器のユーザ入力エレメントで再生され、または周辺機器で別途再生されている間に、コントローラまたはゲームパッド等の周辺機器のユーザ入力エレメントに関するユーザ入力データを受信することができる。具体例として、システムは、周辺機器のトリガでトリガハプティック効果が再生されている間に、コントローラのトリガに関するトリガデータを受信することができる。システムは、受信したユーザ入力データに基づいてハプティック効果定義が編集されたときには、ハプティック効果が元々企図されたようには経験されないものと判断することができる。例えば、低周波数(例えば200ヘルツ(「Hz」))の振動触知ハプティック効果は、トリガに加えられると通常はトリガ上に小さな振動を生み出す。しかし、ユーザがトリガを完全に引き入れた場合、および/またはユーザがトリガをきつく握っている場合には、マグニチュードおよび周波数を増加させるように振動触知ハプティック効果が修正されない限り、ユーザが振動触知ハプティック効果を感じない可能性が最も高い。別の例として、トリガ上のユーザの指に対する押力を生み出す運動感覚ハプティック効果は、ユーザがトリガを引いている場合には、マグニチュード(すなわち強度)または周波数を増加させるように運動感覚ハプティック効果が修正されない限り、ユーザが感じない可能性が高い。
  システムはさらに、受信したユーザ入力データを考慮しても、修正されたハプティック効果が元々企図されたハプティック効果と類似または同一であるように、ハプティック効果定義をプログラム的に修正することができる。換言すれば、システムは、受信したユーザ入力データにより表されるユーザのユーザ入力エレメントとの相互作用により生じる元のハプティック効果の減少を補償するように、ハプティック効果定義をプログラム的に修正することができる。システムは、ハプティック効果定義をプログラム的に修正することにより、ハプティック効果定義内に含まれるハプティックデータの一つ以上のパラメータをプログラム的に修正することができる。このようなパラメータには、マグニチュード(または強度)パラメータ;周波数パラメータ;指向性パラメータ;アタックパラメータ;減衰パラメータ;または持続時間パラメータを含むことができる。別法として、システムは、ハプティック効果定義をプログラム的に修正することにより、元のハプティック効果の生成と同時に、元のハプティック効果を補償する別個のハプティック効果を生成するために、別個のハプティック効果定義を生成し、別個のハプティック効果定義を別個のモータまたはアクチュエータに送信してもよい。ハプティック効果定義のプログラム的修正は、システムの修正アルゴリズムにしたがって達成されることができる。システムはさらに、ハプティック命令および修正されたハプティック効果定義を周辺機器内のアクチュエータまたはモータに送信することができる。アクチュエータまたはモータはさらに、修正されたハプティック効果定義に基づく修正されたハプティック効果を出力することができる。
  一実施形態では、ハプティック命令はトリガ命令であり、修正されたハプティック効果定義は、修正されたトリガハプティック効果定義であってもよい。さらに、トリガ命令および修正されたトリガハプティック効果定義は、トリガに動作可能に結合されたターゲットアクチュエータまたはモータに送信されることができる。例えば、トリガハプティック効果定義は、トリガに動作可能に結合されたターゲットアクチュエータまたはモータによりトリガに加えられる、指定のマグニチュード(または強度)を有する双方向押/引力を定義することができる。さらに、ポテンショメータ、ホールセンサ、または他のタイプのセンサが、ユーザがトリガを引いているか押しているかを判断することができる。システムは、ユーザがトリガを弾いているときに、トリガに動作可能に結合されたターゲットアクチュエータまたはモータがユーザによるトリガの引きを補償するためにトリガにどのくらいの押力を加える必要があるかを、プログラム的に判断することができる。システムは、ターゲットアクチュエータまたはモータがユーザによるトリガの引きを補償するのに十分な押力を加えるように、トリガハプティック効果定義をプログラム的に修正することができる。システムは、トリガハプティック効果定義の以下のパラメータ:マグニチュード(すなわち強度)パラメータ;周波数パラメータ;持続時間パラメータ;指向性パラメータ;アタックパラメータ;または減衰パラメータのうちの少なくとも一つを修正することにより、トリガハプティック効果定義をプログラム的に修正することができる。代替的実施形態では、システムは、周辺機器内にあるがトリガに動作可能に結合されていない一つ以上の一般的アクチュエータまたはモータが、トリガに動作可能に結合されたターゲットアクチュエータまたはモータにより加えられる双方向押/引力を補償する定義されたハプティック効果を生成できるようにハプティック効果を定義するハプティック効果定義を生成してもよい。さらに別の代替的実施形態では、一つ以上の一般的アクチュエータまたはモータにより生成されるハプティック効果が、トリガに動作可能に結合されたターゲットアクチュエータまたはモータにより加えられる双方向押/引力に置き換わってもよい。
  前述したように、ユーザ入力エレメントは、例えば、デジタルボタン、アナログボタン、バンパ、方向パッド、アナログもしくはデジタルスティック、ハンドル、スライダ、またはトリガであればよい。さらに、ユーザ入力データは、例えば、ユーザ入力エレメントの位置、ユーザ入力エレメントの閉じる割合、またはユーザ入力エレメントに加えられた力であればよい。一実施形態では、ユーザ入力データは、ユーザ入力エレメントの位置、ユーザ入力エレメントの閉じる割合、またはユーザ入力エレメントに加えられた力から導出されたデータをさらに含むことができる。ユーザ入力エレメントがトリガであるとき、ユーザ入力データはトリガデータであればよく、トリガデータは、例えば、トリガの位置、トリガの閉じる割合、またはトリガに加えられた力であればよい。トリガデータ等のユーザ入力データは、トリガ等のユーザ入力エレメントに動作可能に結合された、ポテンショメータ、ホールセンサ、または他のタイプのセンサにより生成することができる。
  一実施形態では、周辺機器は、ユーザ入力エレメントのモーション等のモーションを検出でき、このモーションは、多軸モーション(すなわち、周辺機器の二軸以上にわたるモーション)である。この実施形態では、モーションデータが生成され、システムに送信され、システムがモーションデータを受信すればよい。システムはさらに、受信したモーションデータを考慮してハプティック効果定義をプログラム的に修正することができる。例えば、システムは、多軸モーションの間にハプティック効果を中断するようにハプティック効果定義を修正することができる。別の例として、システムは、上昇モーションが下降モーションに移行したときにハプティック効果の周波数を減少させるようにハプティック効果定義を修正することができる。
  図6は、本発明の一実施形態に係る、トリガ610が押圧されていないときにコントローラのトリガ610で経験されることができる元のトリガハプティック効果を生み出すことができる元のトリガハプティック効果定義600の図である。この実施形態によれば、元のトリガハプティック効果定義600は、一つ以上のパラメータにより生成される波形を含む。一実施形態において、一つ以上のパラメータには、マグニチュード(強度)パラメータ;周波数パラメータ;持続時間パラメータ;指向性パラメータ;アタックパラメータ;および減衰パラメータを含むことができる。システムは、トリガ610の位置を含むトリガデータを受信することができ、トリガ610の位置は、トリガ610が押圧されていないことを示す。システムは、元のトリガハプティック効果定義600に対する修正が必要ないものと判断することができる。システムはさらに、元のトリガハプティック効果定義600をコントローラに送信することができ、ターゲットモータまたはアクチュエータが、元のトリガハプティック効果定義600に基づいて力をトリガ610に加えて、トリガ610でトリガハプティック効果を生み出すことができる。
  図7は、本発明の一実施形態に係る、トリガが一杯まで押圧されているときにコントローラのトリガ710で経験されることができる修正されたトリガハプティック効果を生み出すことができる修正されたトリガハプティック効果定義700の図である。この実施形態によれば、修正されたトリガハプティック効果定義700は、一つ以上のパラメータにより生成される波形を含む。一実施形態では、一つ以上のパラメータには、マグニチュード(強度)パラメータ;周波数パラメータ;持続時間パラメータ;指向性パラメータ;アタックパラメータ;および減衰パラメータを含むことができる。図7に示したように、修正されたトリガハプティック効果定義700の波形は、元のトリガハプティック効果定義600の波形とは大きく異なる。より具体的には、修正されたトリガハプティック効果定義700と元のトリガハプティック効果定義600との波形の差には、マグニチュードおよび周波数の変化が含まれる。元のトリガハプティック効果定義600の波形は、約100Hzのハプティック効果波形であるが、修正されたトリガハプティック効果定義700では、より周波数が低く減衰が大きい、より短いハプティック効果波形に変化する。システムは、トリガ710の位置を含むトリガデータを受信することができ、トリガ710の位置は、トリガ710が一杯まで押圧されていることを示す。システムは、トリガ710が一杯まで押圧されていることを考慮すると、元のトリガハプティック効果定義600はトリガ710で「理想的な」トリガハプティック効果を生み出さないであろうと判断することができる。より具体的には、トリガ710で大きな力が加えられたときには、元のトリガハプティック効果定義600によって生み出されるトリガハプティック効果の属性が大きく失われる可能性がある。システムはさらに、元のトリガハプティック効果定義600を修正されたハプティック効果定義700に変換することにより、元のトリガハプティック効果定義600を修正することができる。システムは、元のトリガハプティック効果定義600の一つ以上のパラメータをプログラム的に修正することにより、この修正をプログラム的に行うことができる。システムはさらに、修正されたトリガハプティック効果定義700をコントローラに送信でき、ターゲットモータまたはアクチュエータが、修正されたトリガハプティック効果定義700に基づいてトリガ710に力を加えて、トリガ710で修正されたトリガハプティック効果を生み出すことができる。修正されたトリガハプティック効果は、トリガ710で大きな力が加えられていることを考慮した上で「より理想的な」ハプティック効果体験を生み出すことができる。
  図8は、本発明の一実施形態に係るハプティックトリガ修正モジュール(図1のハプティックトリガ修正モジュール16等)の機能のフローチャートである。一実施形態では、図8の機能は、後述の図9の機能と同様に、メモリまたは他のコンピュータ可読もしくは有形の媒体に記憶されたソフトウェアにより実装され、プロセッサにより実行される。他の実施形態では、各機能は、ハードウェア(例えば、特定用途向け集積回路(「ASIC:application  specific  integrated  circuit」)、プログラマブルゲートアレイ(「PGA:programmable  gate  array」)、フィールドプログラマブルゲートアレイ(「FPGA:field  programmable  gate  array」)などを用いることにより)またはハードウェアおよびソフトウェアの任意の組み合わせにより行われてもよい。ある実施形態では、機能の一部が省略されてもよい。
  フローが開始し、810に進む。810では、周辺機器に元のハプティック命令およびハプティック効果定義が送信される。元のハプティック命令は、ハプティック出力デバイスに、周辺機器のユーザ入力エレメントで、または周辺機器内で、ハプティック効果定義に基づくハプティック効果を生成させることができる。ハプティック効果定義は、ハプティックデータを含むことができる。ある実施形態では、ハプティックデータは、一つ以上のパラメータを含むことができる。パラメータは、マグニチュードパラメータ;周波数パラメータ;持続時間パラメータ;指向性パラメータ;アタックパラメータ;または減衰パラメータのうちの少なくとも一つを含むことができる。ある実施形態では、元のハプティック命令は、元のトリガ命令であってもよく、ハプティック効果定義は、トリガハプティック効果定義であってもよい。これらの実施形態では、元のトリガ命令は、ターゲット出力デバイスに、周辺機器のトリガでトリガハプティック効果定義に基づくトリガハプティック効果を生成させることができる。ある実施形態では、周辺機器は、コントローラまたはゲームパッドであってもよい。ある実施形態では、810は省略されてもよい。フローは、820へ進む。
  820では、周辺機器からユーザ入力データが受信される。ユーザデータは、周辺機器のユーザ入力エレメントの位置;または周辺機器のユーザ入力エレメントに加えられた力のうちの少なくとも一つを含むことができる。ユーザ入力エレメントがトリガである実施形態では、ユーザ入力データは、トリガデータであればよい。トリガデータは、トリガの位置;トリガの閉じる割合;またはトリガに加えられた力のうちの少なくとも一つを含むことができる。その後、フローは830へ進む。
  830では、受信したユーザ入力データに基づいてハプティック効果定義が修正される。受信したユーザ入力データがトリガデータである実施形態では、ハプティック効果定義は、受信したトリガデータに基づいて修正される。ある実施形態では、ハプティック効果定義は、ハプティック効果定義のハプティックデータを修正することにより修正することができる。これらの実施形態の一部では、ハプティック効果定義は、ハプティックデータの一つ以上のパラメータを修正することにより修正することができる。ハプティックデータの一つ以上のパラメータを修正することには、マグニチュードパラメータ;周波数パラメータ;指向性パラメータ;アタックパラメータ;減衰パラメータ;または持続時間パラメータのうちの少なくとも一つを修正することを含むことができる。他の実施形態では、ハプティック効果定義は、新たなハプティック効果定義を作成すること;周辺機器にハプティック命令および新たなハプティック効果定義を送信すること;および、一般的ハプティック出力デバイスに、ハプティック命令に応じて周辺機器で、新たなハプティック効果定義に基づくハプティック効果を生成させることにより修正することができる。いくつかの実施形態では、ハプティック効果定義をプログラム的に修正することができる。その後、フローは840へ進む。
  840では、周辺機器に新たなハプティック命令および修正されたハプティック効果定義が送信される。ある実施形態では、新たなハプティック命令は、新たなトリガ命令であってもよい。その後、フローは850へ進む。
  850では、新たなハプティック命令が、ハプティック出力デバイスに、周辺機器のユーザ入力エレメントで、修正されたハプティック効果定義に基づいてハプティック効果を修正させる。ある実施形態では、ハプティック出力デバイスは、修正されたハプティック効果定義に基づく修正されたハプティック効果を生成することにより、ハプティック効果を修正することができ、修正されたハプティック効果が、元のハプティック効果に置き換わる。他の実施形態では、ハプティック出力デバイスは、修正されたハプティック効果定義に基づく新たなハプティック効果を生成することにより、ハプティック効果を修正することができ、新たなハプティック効果が、元のハプティック効果と同時に生成されることができる。ある実施形態では、ハプティック出力デバイスは、ターゲットハプティック出力デバイスであることができ、ターゲットハプティック出力デバイスが、周辺機器のトリガでのハプティック効果を修正することができる。ある実施形態では、ターゲットハプティック出力デバイスは、ターゲットアクチュエータであってもよい。それらの実施形態の一部では、ターゲットアクチュエータは、ターゲットモータであってもよい。その後、フローは終了する。
  図9は、本発明の別の実施形態に係るハプティックトリガ修正モジュールの機能のフローチャートである。フローが開始し、910に進む。910では、周辺機器に元のハプティック命令およびハプティック効果定義が送信される。元のハプティック命令は、ハプティック出力デバイスに、周辺機器のユーザ入力エレメントで、または周辺機器内で、ハプティック効果定義に基づくハプティック効果を生成させることができる。ハプティック効果定義は、ハプティックデータを含むことができる。ある実施形態では、ハプティックデータは、一つ以上のパラメータを含むことができる。パラメータは、マグニチュードパラメータ;周波数パラメータ;持続時間パラメータ;指向性パラメータ;アタックパラメータ;または減衰パラメータのうちの少なくとも一つを含むことができる。ある実施形態では、元のハプティック命令は元のトリガ命令であってもよく、ハプティック効果定義は、トリガハプティック効果定義であってもよい。これらの実施形態では、元のトリガ命令は、ターゲット出力デバイスに、周辺機器のトリガでトリガハプティック効果定義に基づくトリガハプティック効果を生成させることができる。ある実施形態では、周辺機器は、コントローラまたはゲームパッドであってもよい。ある実施形態では、910は省略されてもよい。フローは、920へ進む。
  920では、周辺機器からモーションデータが受信される。モーションデータは、周辺機器の第一軸から周辺機器の第二軸へのユーザ入力エレメントのモーション、または周辺機器内の第一方向から周辺機器内の第二方向へのユーザ入力エレメントのモーションのうちの少なくとも一つを含むことができる。フローは、930へ進む。
  930では、周辺機器からユーザ入力データが受信される。ユーザデータは、周辺機器のユーザ入力エレメントの位置;または周辺機器のユーザ入力エレメントに加えられた力のうちの少なくとも一つを含むことができる。ユーザ入力エレメントがトリガである実施形態では、ユーザ入力データはトリガデータであればよい。トリガデータは、トリガの位置;トリガの閉じる割合;またはトリガに加えられる力のうちの少なくとも一つを含むことができる。その後、フローは940へ進む。
  940では、受信したモーションデータに基づいてハプティック効果定義が修正される。ある実施形態では、ハプティック効果定義は、ハプティック効果定義のハプティックデータを修正することにより修正することができる。これらの実施形態の一部では、ハプティック効果定義は、ハプティックデータの一つ以上のパラメータを修正することにより修正することができる。ハプティックデータの一つ以上のパラメータを修正することには、マグニチュードパラメータ;周波数パラメータ;指向性パラメータ;アタックパラメータ;減衰パラメータ;または持続時間パラメータのうちの少なくとも一つを修正することを含むことができる。他の実施形態では、ハプティック効果定義は、新たなハプティック効果定義を作成すること;周辺機器にハプティック命令および新たなハプティック効果定義を送信すること;および、一般的ハプティック出力デバイスに、ハプティック命令に応じて周辺機器で、新たなハプティック効果定義に基づくハプティック効果を生成させることにより修正することができる。いくつかの実施形態では、ハプティック効果定義は、プログラム的に修正することができる。その後、フローは950へ進む。
  950では、受信したユーザ入力データに基づいてハプティック効果定義が修正される。受信されるユーザ入力データがトリガデータである実施形態では、受信したトリガデータに基づいてハプティック効果定義が修正される。ある実施形態では、ハプティック効果定義は、ハプティック効果定義のハプティックデータを修正することにより修正することができる。これらの実施形態の一部では、ハプティック効果定義は、ハプティックデータの一つ以上のパラメータを修正することにより修正することができる。ハプティックデータの一つ以上のパラメータを修正することには、マグニチュードパラメータ;周波数パラメータ;指向性パラメータ;アタックパラメータ;減衰パラメータ;または持続時間パラメータのうちの少なくとも一つを修正することを含むことができる。他の実施形態では、ハプティック効果定義は、新たなハプティック効果定義を作成すること;周辺機器にハプティック命令および新たなハプティック効果定義を送信すること;および、一般的ハプティック出力デバイスに、ハプティック命令に応じて周辺機器で、新たなハプティック効果定義に基づくハプティック効果を生成させることにより修正することができる。いくつかの実施形態では、ハプティック効果定義は、プログラム的に修正することができる。その後、フローは960へ進む。
  960では、周辺機器に新たなハプティック命令および修正されたハプティック効果定義が送信される。ある実施形態では、新たなハプティック命令は、新たなトリガ命令であってもよい。その後、フローは970へ進む。
  970では、新たなハプティック命令が、ハプティック出力デバイスに、周辺機器のユーザ入力エレメントで、修正されたハプティック効果定義に基づいてハプティック効果を修正させる。ある実施形態では、ハプティック出力デバイスは、修正されたハプティック効果定義に基づく修正されたハプティック効果を生成することにより、ハプティック効果を修正することができ、修正されたハプティック効果が、元のハプティック効果に置き換わる。他の実施形態では、ハプティック出力デバイスは、修正されたハプティック効果定義に基づく新たなハプティック効果を生成することにより、ハプティック効果を修正することができ、新たなハプティック効果が、元のハプティック効果と同時に生成されることができる。ある実施形態では、ハプティック出力デバイスはターゲットハプティック出力デバイスであることができ、ターゲットハプティック出力デバイスが、周辺機器のトリガでのハプティック効果を修正することができる。ある実施形態では、ターゲットハプティック出力デバイスは、ターゲットアクチュエータであってもよい。それらの実施形態の一部では、ターゲットアクチュエータは、ターゲットモータであってもよい。その後、フローは終了する。
  したがって、一実施形態では、システムが、コントローラまたはゲームパッド等の周辺機器で経験されるハプティック効果を修正することができる。ハプティック効果は、周辺機器のトリガで経験されるトリガハプティック効果であってもよい。ハプティック効果は、システムが受信するユーザ入力データに基づいて修正することができ、ユーザ入力データには、ユーザ入力エレメントの位置および/またはユーザ入力エレメントに加えられた力を含むことができる。周辺機器で経験されるハプティックフィードバック、特に周辺機器のトリガで経験されるハプティックフィードバックを、ユーザの周辺機器との相互作用に基づいて修正することで、よりリアルで没入感のあるゲーム体験を提供することができる。
  本明細書を通して記載された本発明の特徴、構造、または特性は、一つ以上の実施形態において任意の適切な様式で組み合わされてもよい。例えば、本明細書を通じて、「一実施形態」、「一部の実施形態」、「ある実施形態」、「ある実施形態(複数)」、または他の類似の言葉の使用は、実施形態に関連して記載された特定の特徴、構造、または特性が、本発明の少なくとも一つの実施形態に含まれうるという事実を意味する。したがって、本明細書を通じて、「一実施形態」、「一部の実施形態」、「ある実施形態」、「ある実施形態(複数)」の語句または他の類似の言葉の記載は、必ずしも全てが同じ実施形態の群をさすのではなく、記載された特徴、構造、または特性は、一つ以上の実施形態において任意の適切な様式で組み合わされてもよい。
  通常の技術を有する当業者には当然のことながら、上述の本発明は、異なる順序のステップを用いて、および/または、開示された構成とは異なる構成の要素を用いて実施されてもよい。したがって、これらの好ましい実施形態に基づいて本発明を記載しているが、当業者には当然のことながら、本発明の趣旨および範囲内を逸脱しない、ある修正、変更、および代替的構成が明らかであろう。したがって、本発明の境界および範囲を決定するためには、添付の特許請求の範囲を参照しなければならない。