(58)【調査した分野】(Int.Cl.,DB名)
プロセッサによって実行されたときに、周辺機器において経験されるハプティック効果を前記プロセッサに制御させる命令を記憶する非一時的コンピュータ可読媒体であって、前記ハプティック効果を制御するステップは、
複数のハプティックデータチャネルの各々と関連付けられた複数のパラメータを定義するハプティック効果定義データ構造を受信するステップであって、各チャネルは、複数のハプティック出力装置の異なる対象となるハプティック出力装置に対する前記ハプティック効果定義データ構造からハプティックデータの一部を含む、ステップと、
前記周辺機器のトリガの位置、または前記周辺機器の前記トリガの範囲のうちの少なくとも1つを有するトリガデータを受信するステップと、
受信した前記トリガデータに基づいて、トリガ条件に到達したか否かを判断するステップと、
前記トリガ条件に到達した後に、アプリケーションプログラミングインターフェースを通じて、ハプティック命令および前記ハプティック効果定義データ構造を前記周辺機器に送信するステップと、
前記ハプティック命令に応じて、前記周辺機器の前記トリガおよび前記周辺機器の表面における前記ハプティック効果定義データ構造に基づいて1つ以上のハプティック効果を前記ハプティック出力装置に生成させるステップと、を有し、
各チャネル内に含まれる前記ハプティックデータの一部は、前記周辺機器の前記トリガ又は前記表面において、対応するハプティック出力装置に1以上のハプティック効果を生成させ、
前記ハプティック効果定義データ構造は、異なるフォーマットのハプティック効果を再生成する、
非一時的コンピュータ可読媒体。
前記ハプティック効果を制御するステップは、第1の空間化データに基づいて、前記ハプティック効果定義データ構造の前記ハプティックデータを変更するステップと、第2の空間化データに基づいて、チャネルのサブセットの前記ハプティック効果定義データ構造の前記ハプティックデータを変更するステップと、をさらに有する、請求項1に記載の非一時的コンピュータ可読媒体。
前記ハプティック効果定義データ構造の前記ハプティックデータを変更するステップは、前記ハプティックデータのマグニチュード、前記ハプティックデータの周波数、または前記ハプティックデータの持続時間のうちの少なくとも1つをスケーリングするステップを有する、請求項2に記載の非一時的コンピュータ可読媒体。
各チャネルは、複数のチャネルが単一のハプティック出力装置に結合されないように、異なるハプティック出力装置に結合される、請求項1に記載の非一時的コンピュータ可読媒体。
前記ハプティック効果を制御するステップは、オーディオフォーマットを有するファイルまたはストリーム内の前記ハプティック効果定義データ構造の前記ハプティックデータをエンコードするステップをさらに有する、請求項1に記載の非一時的コンピュータ可読媒体。
前記ハプティック効果を制御するステップは、前記ファイルまたはストリーム内のエンコードされた前記ハプティックデータをデコードするステップをさらに有する、請求項6に記載の非一時的コンピュータ可読媒体。
エンコードされた前記ハプティックデータをデコードするステップは、プログラマブルクロスオーバーを計算するステップをさらに有する、請求項7に記載の非一時的コンピュータ可読媒体。
前記ハプティック効果を制御するステップは、オーディオデータを有するオーディオ効果定義を前記ハプティック効果定義データ構造に変換するステップをさらに有する、請求項1に記載の非一時的コンピュータ可読媒体。
受信した空間化方向に基づいて、前記ハプティック効果定義データ構造の前記ハプティックデータを変更するステップは、前記ハプティック効果の方向、または前記ハプティック効果の流れのうちの少なくとも1つへの変更を含む、請求項14に記載のコンピュータ実施方法。
前記ハプティック効果定義データ構造の前記ハプティックデータを変更するステップは、前記ハプティックデータのマグニチュード、前記ハプティックデータの周波数、または前記ハプティックデータの持続時間のうちの少なくとも1つをスケーリングするステップを有する、請求項15に記載のコンピュータ実施方法。
前記ハプティック効果定義データ構造を前記周辺機器に送信するステップは、前記ハプティック効果定義データ構造の前記ハプティックデータを前記周辺機器に直接送信するステップをさらに有する、請求項14に記載のコンピュータ実施方法。
前記プロセッサは、さらに、前記ハプティックトリガ制御モジュールを実行するとき、前記ハプティック効果の方向、または前記ハプティック効果の流れのうちの少なくとも1つを有する、受信した空間化方向に基づいて、前記ハプティック効果定義データ構造の前記ハプティックデータを変更するように構成されている、請求項19に記載のシステム。
前記プロセッサは、さらに、前記ハプティックトリガ制御モジュールを実行するとき、前記ハプティックデータのマグニチュード、前記ハプティックデータの周波数、または前記ハプティックデータの持続時間のうちの少なくとも1つをスケーリングするように構成されている、請求項20に記載のシステム。
前記プロセッサは、さらに、前記ハプティックトリガ制御モジュールを実行するとき、前記ハプティック効果定義データ構造の前記ハプティックデータを前記周辺機器に直接送信するように構成されている、請求項19に記載のシステム。
前記プロセッサは、さらに、前記ハプティックトリガ制御モジュールを実行するとき、前記ハプティック効果定義データ構造の前記ハプティックデータを第1フォーマットから第2フォーマットに変換するように構成されており、
前記プロセッサはさらに、前記ハプティックトリガ制御モジュールを実行するとき、前記ハプティック効果定義データ構造の変換されたハプティックデータを前記周辺機器に送信するように構成されている、請求項19に記載のシステム。
プロセッサによって実行されたときに、周辺機器において表現されるハプティック効果を前記プロセッサに制御させる命令を記憶する非一時的コンピュータ可読媒体であって、前記ハプティック効果を制御するステップは、
複数のハプティックデータチャネルの各々と関連付けられた複数のパラメータを定義するハプティック効果定義データ構造を受信するステップであって、各チャネルは、複数のハプティック出力装置の異なる対象となるハプティック出力装置に対する前記ハプティック効果定義データ構造からハプティックデータの一部を含む、ステップと、
前記ハプティック効果の方向、または前記ハプティック効果の流れのうちの少なくとも1つを含む、受信した空間化データに基づいて、前記ハプティック効果定義データ構造の前記ハプティックデータを変更するステップと、
ハプティック命令および前記ハプティック効果定義データ構造を、アプリケーションプログラミングインターフェースを通じて、前記周辺機器に送信するステップと、
前記ハプティック命令に応じて、前記周辺機器のトリガおよび表面における前記ハプティック効果定義データ構造に基づいて1つ以上のハプティック効果を1つ以上のハプティック出力装置に生成させるステップと、を有し、
各チャネル内に含まれる前記ハプティックデータの一部は、前記周辺機器の前記トリガまたは前記表面において、対応するハプティック出力装置に1以上のハプティック効果を生成させ、
前記ハプティック効果定義データ構造は、異なるフォーマットのハプティック効果を再生成する、
非一時的コンピュータ可読媒体。
前記ハプティック効果定義データ構造の前記ハプティックデータを変更するステップは、前記ハプティックデータのマグニチュード、前記ハプティックデータの周波数、または前記ハプティックデータの持続時間のうちの少なくとも1つをスケーリングするステップを有する、請求項24に記載の非一時的コンピュータ可読媒体。
前記ハプティック効果を制御するステップは、オーディオデータを有するオーディオ効果定義を前記ハプティック効果定義データ構造に変換するステップをさらに有する、請求項24に記載の非一時的コンピュータ可読媒体。
プロセッサによって実行されたときに、周辺機器において経験されるハプティック効果を前記プロセッサに制御させる命令を記憶する非一時的コンピュータ可読媒体であって、前記ハプティック効果を制御するステップは、
複数のハプティックデータチャネルの各々と関連付けられた複数のパラメータを定義するハプティック効果定義データ構造、および複数のトリガハプティックデータチャネルの各々と関連付けられた複数のパラメータを定義するトリガハプティック定義データ構造を受信するステップであって、各チャネルは、ハプティックデータの一部を含み、各チャネルは、複数のハプティック出力装置の異なるハプティック出力装置と結合される、ステップと、
前記周辺機器のトリガの位置、または前記周辺機器の前記トリガの範囲のうちの少なくとも1つを含むトリガデータを受信するステップと、
受信した前記トリガデータに基づいて、トリガ条件に到達したか否かを判断するステップと、
前記トリガ条件に到達した後に、トリガ命令を含むハプティック命令および前記ハプティック効果定義データ構造を前記周辺機器に送信するステップと、
前記ハプティック命令に応じて、前記周辺機器の前記トリガおよび前記周辺機器の表面における前記ハプティック効果定義データ構造に基づく1つ以上のハプティック効果を複数のハプティック出力装置に生成させるステップと、
各チャネル内に含まれる前記ハプティックデータの一部は、前記周辺機器の前記トリガまたは前記表面において、対応するハプティック出力装置に1以上のハプティック効果を生成させ、
前記ハプティック効果定義データ構造は、異なるフォーマットのハプティック効果を再生成する、
非一時的コンピュータ可読媒体。
前記ハプティック効果の方向、または前記ハプティック効果の流れのうちの少なくとも1つを含む、受信した空間化データに基づいて、前記ハプティック効果定義データ構造の前記ハプティックデータを変更するステップと、
前記ハプティック効果定義データ構造の前記ハプティックデータを第1フォーマットから第2フォーマットに変換するステップと、をさらに有する、請求項29に記載の非一時的コンピュータ可読媒体。
【発明を実施するための形態】
【0007】
一実施形態は、ゲームコントローラまたはゲームパッドなど、周辺機器において経験されるハプティックフィードバックを提供するシステムである。例えば、システムは、コントローラ、またはその他何らかの周辺機器のトリガにおいて経験されるトリガハプティック効果を提供できる。トリガハプティック効果は、やはりコントローラまたはその他の周辺機器において経験される、鳴動(ランブル)ハプティック効果(rumble haptic effects)を補完できる。別の例として、システムは、コントローラ、ゲームパッド、またはその他の周辺機器のユーザ入力エレメントにおいて経験される一般ハプティック効果を提供できる。戻り止め、振動、触感、および堅さなど、多様なハプティックフィードバック感覚が作り出されることができる。ハプティックフィードバック感覚は、やはりシステムによって実行されることができる、ゲームアプリケーションまたはその他のソフトウェアアプリケーションを補完できる。ハプティックフィードバック感覚は:一人称視点シューティング;ファンタジー/ロールプレイ;レース;またはスポーツなど、特定のゲームのジャンルに適している可能性がある。代替実施形態において、ゲームコントローラまたはゲームパッドなどの周辺機器は、周辺機器のハンドル上に、個別の分離した振動領域を有することができる。
【0008】
システムは、まず、ハプティック効果定義を受信できる。システムは、トリガの位置および/または範囲、あるいはトリガからの位置情報、もしくはその他何らかのユーザ入力エレメント(例えばジョイスティックなど)などの、トリガデータをさらに受信できる。このようなトリガデータの例は、特定位置にトリガを配置すること、特定位置を通じてトリガを引くこと、特定範囲内にトリガを配置すること、または特定範囲を通じてトリガを引くこと、を含むことができる。システムは、受信したトリガデータに基づいて、ハプティック効果定義を変更できる。システムは、任意に、ハプティック効果定義に基づくハプティック効果の方向および/または流れなど、空間化データ(spatialization data)に基づいてハプティック効果定義をさらに変更できる。システムは、その後、コントローラ、ゲームパッド、またはその他の周辺機器の1つ以上のモータまたはアクチュエータに、変更されたハプティック効果定義に基づいてハプティックフィードバックを生じさせるか、または別途出力させ、こうしてハプティックフィードバックを経験させる。言い換えると、システムは、コントローラ、ゲームパッド、またはその他の周辺機器に、ハプティック効果定義に基づいてハプティック効果を再生させる。当業者によって理解されるように、「再生」は、データ(例えばオーディオデータ、ビデオデータ、またはハプティックデータ)を再生する動作または事例である。このため一例において、システムは、全体的なトリガハプティック効果をコントローラのトリガにおいて経験させることができる。
【0009】
一実施形態において、システムは、トリガハプティック効果プリセットなど、選択されることができる多数のハプティックプリセットを含むことができる。システムは、ハプティックプリセットの包括的なライブラリを含むことができる。選択された各ハプティック効果プリセットは、グラフィカル・ユーザ・インターフェース内で変更されることができる。変更されたハプティック効果プリセットは、ゲームアプリケーションまたはその他のソフトウェアアプリケーションの実行の中でコンパイルおよび実行されることができ、ここでコントローラ、ゲームパッド、またはその他の周辺機器は、トリガハプティック効果などのハプティック効果を生成できる。
【0010】
別の実施形態において、システムは、手動コンテンツ駆動型ツールセット(manual content−driven toolset)を含むことができる。ツールセットは、ユーザがオーディオ効果定義と同時にハプティック効果定義を設計できるようにする。するとシステムは、ハプティック効果定義を、オーディオフォーマットを有することができる、またはオーディオファイルと同時に記憶されることができる、ハプティックファイルにエンコードできる。コントローラ、ゲームパッド、またはその他の周辺機器の中に存在するデコーダは、エンコードハプティック効果定義を引き続きデコードできる。さらに、設計されたハプティック効果定義は、設計されたハプティック効果定義に基づいてハプティック効果を開始するために、トリガエンジンおよび/または空間化エンジン内にロードされることができる。トリガエンジンは、ハプティック効果がトリガ運動またはその他のトリガ挙動にマッピングされ始めることを可能にし、空間化エンジンは、特定方向から生じるハプティック効果の感覚を作り出すために、各ハプティック効果をあちこちに移動させることができる。トリガエンジンおよび/または空間化エンジンはオフラインツール内で利用可能とされてもよく、ここでユーザは、一旦ハプティック効果がエンジン内にロードされると、エンジンとグラフィックを通じて相互作用することができ、コントローラ、ゲームパッド、またはその他の周辺機器の中でのハプティック再生を手の中に感じることができる。
【0011】
さらに別の実施形態において、システムは、自動コンテンツ駆動型ツールセット(automatic content−driven toolset)を含むことができる。ツールセットは、オーディオ効果定義をハプティック効果定義に自動的に変換できる。ツールセットは、オーディオ効果定義をオーディオファイルとして受信できる。ツールセットは、オーディオ効果定義のハプティック効果定義への変換を制御するために、1つ以上のパラメータを変更できる。一例として、1つ以上のパラメータは:(a)変換されるオーディオ効果定義を包含するオーディオファイルを特定するオーディオファイルパラメータと;(b)オーディオ効果定義のオーディオデータが、その後2つ以上の異なる出力(例えば、低鳴動(ランブル)モータまたはアクチュエータ;中鳴動モータまたはアクチュエータ;およびトリガモータまたはアクチュエータ)に適用される2つ以上の個別の周波数帯域にどのように分割されるかを定義する、変換制御パラメータと;(c)オーディオ効果定義からハプティック効果定義へのマグニチュード(magnitude)マッピングを制御し、ノイズフロアおよびダイナミックレンジ(ダイナミクスを伸長または圧縮する)を望み通りに調整できる、動的パラメータと;(d)ハプティック効果定義の最終マグニチュード(または強度)を制御する、マグニチュード(または強度)パラメータと、を含むことができる。代替実施形態において、オーディオ効果定義を受信するよりむしろ、ツールセットは、ハプティック効果定義に変換されることができるハプティック命令を受信できる。ハプティック命令は、ハプティック効果の持続時間を決定できるゲーム内の武器からの発砲率、ハプティック効果の開始点および停止点を決定できる、ゲーム内のアニメーションの中のキーフレーム、ハプティック効果の軸上の指向性に関するアニメーションデータ、ハプティック効果のマグニチュードを決定できるゲーム内の武器のダメージ量など、ゲームアプリケーションによって受信されるゲームプレイパラメータの形態を取ることができる。さらに、先に記載されたように、設計されたハプティック効果定義に基づいてハプティック効果を開始するために、変換されたハプティック効果定義は、トリガエンジンおよび/または空間化エンジン内にロードされることができる。トリガエンジンおよび/または空間化エンジンは、先に記載されたように、オフラインツール内で利用可能とされてもよい。
【0012】
さらに別の実施形態において、システムは、ハプティック効果スタジオエンジンを含むことができる。ハプティック効果スタジオは、ユーザが特定のモータまたはアクチュエータのためのハプティック効果定義を定義できるようにするために提供されることができる。設計されたハプティック効果定義は、先に記載されたように、設計されたハプティック効果定義に基づいてハプティック効果を開始するために、トリガエンジンおよび/または空間化エンジン内にロードされることができる。トリガエンジンおよび/または空間化エンジンは、先に記載されたように、オフラインツール内で利用可能とされてもよい。
【0013】
図1は、本発明の一実施形態に係るシステム10のブロック図を示す。一実施形態において、システム10は、装置(例えばパーソナルコンピュータ、またはビデオ・ゲーム・コンソールなどのコンソール)の一部であり、システム10は装置のハプティックトリガ制御機能性を提供する。別の実施形態において、システム10は、装置(例えばパーソナルコンピュータまたはコンソール)から分離しており、装置の上記機能性を遠隔的に提供する。単一のシステムとして示されているものの、システム10の機能性は、分散システムとして実装されてもよい。システム10は、情報を通信するためのバス12またはその他の通信機構、および情報を処理するためにバス12と動作可能に結合されたプロセッサ22を含む。プロセッサ22は、いずれのタイプの専用または汎用プロセッサであってもよい。システム10は、プロセッサ22によって実行される情報および命令を記憶するためのメモリ14を、さらに含む。メモリ14は、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、磁気または光ディスクなどのスタティックストレージデバイス、あるいはその他いずれかのタイプのコンピュータ可読媒体の、いずれかの組み合わせからなってもよい。
【0014】
コンピュータ可読媒体は、プロセッサ22によってアクセス可能ないずれの利用可能な媒体であってもよく、揮発性および不揮発性媒体、リムーバブルおよびノンリムーバブル媒体、通信媒体、ならびに記憶媒体の、いずれも含んでもよい。通信媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、あるいは搬送波またはその他の搬送機構などの変調データ信号中のその他のデータを含んでもよく、当該技術分野において周知のその他いずれの形態の情報配信媒体を含んでもよい。記憶媒体は、RAM、フラッシュメモリ、ROM、消去可能プログラマブル読み出し専用メモリ(EPROM)、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスク読み出し専用メモリ(CD−ROM)、または当該技術分野において周知のその他いずれの形態の記憶媒体を含んでもよい。
【0015】
一実施形態において、メモリ14は、プロセッサ22によって実行されたときに機能性を提供するソフトウェアを記憶する。モジュールは、一実施形態における全体的な装置の残りの部分と同様に、システム10のためのオペレーティングシステム機能性を提供するオペレーティングシステム15を含む。モジュールは、トリガまたはその他何らかのユーザ入力エレメントにおいて経験されるハプティック効果を制御するハプティックトリガ制御モジュール16をさらに含む。特定の実施形態において、トリガ制御モジュール16は複数のモジュールを備えることができ、ここで各モジュールは、トリガまたはその他何らかのユーザ入力エレメントにおいて経験されるハプティック効果を制御するための、特定の個別機能性を提供する。システム10は、典型的には、コントローラ30などの周辺機器に制御機能性を提供できる周辺ファームウェアなど、追加機能性を含むために1つ以上の追加アプリケーションモジュール18を含むことになる。
【0016】
システム10は、リモートソースからデータを送受信する実施形態において、赤外線、無線、Wi−Fi、またはセルラーネットワーク通信など、移動無線ネットワーク通信を提供するために、ネットワーク・インターフェース・カードなどの通信装置20をさらに含む。別の実施形態において、通信装置20は、イーサネット(登録商標)接続またはモデムなど、有線ネットワーク接続を提供する。
【0017】
システム10は、コントローラ30に動作可能に接続されている。コントローラ30は、システム10への入力を提供するために使用される、周辺機器である。コントローラ30は、無線接続または有線接続のいずれかを用いて、システム10に動作可能に接続されることができる。コントローラ30は、無線接続または有線接続のいずれかを用いてシステム10と通信できるローカルプロセッサをさらに含むことができる。あるいは、コントローラ30は、ローカルプロセッサを含まないように構成されてもよく、コントローラ30に関連付けられた全ての入力信号および/または出力信号は、システム10のプロセッサ22によって直接取り扱いおよび処理されることができる。
【0018】
コントローラ30は、1つ以上のデジタルボタン、1つ以上のアナログボタン、1つ以上のバンパ、1つ以上の方向パッド、1つ以上のアナログまたはデジタルスティック、1つ以上のハンドル、および/またはユーザによって相互作用されることができ、システム10への入力を提供できる1つ以上のユーザ入力エレメントを、さらに含むことができる。コントローラ30はまた、ユーザによって相互作用されることができ、システム10への入力を提供できる、1つ以上のアナログまたはデジタル・トリガ・ボタン(もしくは「トリガ」)も含むことができる。以下により詳細に記載されるように、コントローラ30は、コントローラ30の少なくとも1つのトリガ上に双方向性の押引力を印加するように構成された、モータ、またはその他のタイプのアクチュエータまたはハプティック出力装置を、さらに含むことができる。
【0019】
コントローラ30はまた、1つ以上のアクチュエータ、またはその他のタイプのハプティック出力装置も含むことができる。コントローラ30のローカルプロセッサ、またはコントローラ30がローカルプロセッサを含まない実施形態において、プロセッサ22は、ハプティック効果に関連付けられたハプティック信号を、コントローラ30の少なくとも1つのアクチュエータに送信してもよい。翻ってアクチュエータは、ハプティック信号に応じて、振動触知ハプティック効果、運動感覚ハプティック効果、または変形ハプティック効果などのハプティック効果を出力する。ハプティック効果は、コントローラ30のユーザ入力エレメント(例えばデジタルボタン、アナログボタン、バンパ、方向パッド、アナログまたはデジタルスティック、ハンドル、あるいはトリガ)において経験されることができる。あるいは、ハプティック効果は、コントローラ30の外表面において経験されることができる。アクチュエータは、アクチュエータ駆動回路を含む。アクチュエータは、例えば電気モータ、電磁アクチュエータ、ボイスコイル、形状記憶合金、電気活性ポリマー、ソレノイド、偏心回転質量モータ(ERM)、リニア共振アクチュエータ(LRA)、圧電アクチュエータ、高帯域アクチュエータ、電気活性ポリマー(EAP)アクチュエータ、静電摩擦ディスプレイ、または超音波振動アクチュエータであってもよい。アクチュエータはハプティック出力装置の一例であって、ハプティック出力装置は、駆動信号に応えて振動触知ハプティック効果、静電摩擦ハプティック効果、運動感覚ハプティック効果、または変形ハプティック効果などのハプティック効果を出力するように構成された装置である。代替実施形態において、コントローラ30内の1つ以上のアクチュエータは、その他何らかのタイプのハプティック出力装置に置き換えられることができる。
【0020】
コントローラ30は、1つ以上のスピーカをさらに含むことができる。コントローラ30のローカルプロセッサ、またはコントローラ30がローカルプロセッサを含まない実施形態におけるプロセッサ22は、コントローラ30の少なくとも1つのスピーカにオーディオ信号を送信してもよく、これは翻ってオーディオ効果を出力する。スピーカは、例えば、ダイナミックラウドスピーカ、動電型ラウドスピーカ、圧電ラウドスピーカ、磁歪ラウドスピーカ、静電ラウドスピーカ、リボンまたは平面磁気ラウドスピーカ、屈曲波ラウドスピーカ、フラッド・パネル・ラウドスピーカ、ハイルエアモーショントランスデューサ、プラズマ・アーク・スピーカ、およびデジタルラウドスピーカであってもよい。
【0021】
コントローラ30は、1つ以上のセンサをさらに含むことができる。センサは、例えば音、運動、加速度、生体信号、距離、流れ、力/圧力/歪み/屈曲、湿度、線形位置、配向/傾斜、無線周波数、回転位置、回転速度、スイッチの操作、温度、振動、または可視光強度などの、ただしこれらに限定されない、エネルギー形態またはその他の物理的特性を検出するように構成されることができる。センサはさらに、検出されたエネルギーまたはその他の物理的特性を、電気信号、または仮想センサ情報を表すいずれかの信号に変換するように構成されることができ、コントローラ30は、変換された信号を、コントローラ30のローカルプロセッサに、またはコントローラ30がローカルプロセッサを含まない実施形態においてはプロセッサ22に、送信できる。センサは、加速度計、心電図、脳波図、筋電計、電気眼球図、電子口蓋図、電気皮膚反応センサ、容量センサ、ホール効果センサ、赤外線センサ、超音波センサ、圧力センサ、光ファイバセンサ、屈曲センサ(または曲がりセンサ)、力感抵抗器、ロードセル、LuSenseCPS
2155、小型圧力トランスデューサ、圧電センサ、歪みゲージ湿度計、線形位置タッチセンサ、線形ポテンショメータ(またはスライダ)、線形可変差動変圧器、コンパス、傾斜計、磁性タグ(または部線周波数識別タグ)、回転エンコーダ、回転ポテンショメータ、ジャイロスコープ、オン・オフスイッチ、温度センサ(温度計、熱電対、抵抗温度検出器、サーミスタ、または温度変換集積回路など)、マイクロフォン、光度計、高度計、生物モニタ、カメラ、または光依存性抵抗器などの、ただしこれらに限定されない、いずれの装置であってもよい。
【0022】
図2は、本発明の実施形態に係る、コントローラ100を示す。一実施形態において、コントローラ100は
図1のコントローラ30と同一である。さらに、
図3はコントローラ100の別の図を示す。コントローラ100は一般的に、コンピュータ、携帯電話、テレビ、またはその他の類似装置に接続されてもよい、ゲームシステムとともに使用される。
図2および
図3に示されるコントローラ100のコンポーネント(すなわち、筐体102、アナログまたはデジタルスティック110、ボタン114、トリガ118、および鳴動アクチュエータ122および124)はさらに、
図4と併せて以下により詳細に記載される。
【0023】
図4は、ホストコンピュータ104およびディスプレイ106をさらに含むゲームシステム101内で使用されるコントローラ100のブロック図を示す。
図4のブロック図に示されるように、コントローラ100は、接続105を介してホストコンピュータ104と通信するローカルプロセッサ108を含む。接続105は、有線接続、無線接続、または当該技術分野において周知の別のタイプの接続であってもよい。コントローラ100はあるいはローカルプロセッサ108を含まないように構成されてもよく、これによってコントローラ100からの全ての入出力信号は、ホストコンピュータ104によって直接取り扱いおよび処理される。ホストコンピュータ104は、ディスプレイ画面106に動作可能に結合されている。一実施形態において、ホストコンピュータ104は、ゲーム装置コンソールであって、ディスプレイ画面106は、当該技術分野において周知のように、ゲーム装置コンソールに動作可能に結合されたモニタである。別の実施形態において、当業者にとって周知のように、ホストコンピュータ104およびディスプレイ画面106は、単一の装置に組み込まれてもよい。
【0024】
コントローラ100の筐体102は、左利きユーザまたは右利きユーザのいずれかによって、装置を握持する両手に容易に適合するような形状になっている。コントローラ100は、例えばMicrosoft(登録商標)Xbox One(商標)コントローラ、またはPlayStation(登録商標)DualShock(商標)コントローラなどのビデオ・ゲーム・コンソール向けに現在利用可能な多くの「ゲームパッド」と類似の形状およびサイズのコントローラの例示的な一実施形態に過ぎないこと、ならびにWii(商標)リモコンまたはWii(商標)Uコントローラ、Sony(登録商標)SixAxis(商標)コントローラまたはSony(登録商標)Wandコントローラを含むがこれらに限定されないその他の構成のユーザ入力エレメント、形状、およびサイズを備えるコントローラ、ならびに実在の物体(テニスラケット、ゴルフクラブ、野球のバットなど)のような形状またはその他の形状のコントローラ、あるいはディスプレイまたは頭部装着型ディスプレイを備えるコントローラが使用されてもよいことを、当業者は認識するだろう。
【0025】
コントローラ100は、アナログまたはデジタルスティック110、ボタン114、およびトリガ118を含む、いくつかのユーザ入力エレメントを含む。本明細書において使用される際に、ユーザ入力エレメントは、ホストコンピュータ104と相互作用するためにユーザによって操作される、トリガボタン、アナログまたはデジタルスティックなどの、インターフェース装置を指す。
図2および
図3に見られるように、そして当業者にとって周知のように、各ユーザ入力エレメントおよび追加ユーザ入力エレメントのうちの2つ以上がコントローラ100上に含まれてもよい。したがって、例えばトリガ118の本説明は、コントローラ100を単一のトリガに限定するものではない。さらに、
図4のブロック図は、アナログまたはデジタルスティック110、ボタン114、およびトリガ118の各々のうちの1つしか示していない。しかしながら、当業者は、先に記載されたように、複数のアナログまたはデジタルスティック、ボタン、およびトリガ、ならびにその他のユーザ入力エレメントが使用されてもよいことを理解するだろう。
【0026】
図4のブロック図に見られるように、コントローラ100は、ユーザの手が通常位置している場所で筐体102に動作可能に結合された1つ以上の一般または鳴動アクチュエータ122および124と同じくそのユーザ入力エレメントの各々を直接駆動するために、対象となるアクチュエータまたはモータを含む。より具体的には、アナログまたはデジタルスティック110は、アナログまたはデジタルスティック110に動作可能に結合された対象となるアクチュエータまたはモータ112を含み、ボタン114はそこに動作可能に結合された対象となるアクチュエータまたはモータ116を含み、トリガ118はそこに動作可能に結合された、対象となるアクチュエータまたはモータ120を含む。複数の対象となるアクチュエータに加えて、コントローラ100は、コントローラ100のユーザ入力エレメントの各々に動作可能に結合された、位置センサを含む。より具体的には、アナログまたはデジタルスティック110は、アナログまたはデジタルスティック110に動作可能に結合された位置センサ111を含み、ボタン114は、ボタン114に動作可能に結合された位置センサ115を含み、トリガ118は、トリガ118に動作可能に結合された位置センサ119を含む。ローカルプロセッサ108は、それぞれアナログまたはデジタルスティック110、ボタン114、およびトリガ118の位置センサ111、115、119と同様に、対象となるアクチュエータ112、116、120に動作可能に結合されている。位置センサ111、115、119から受信した信号に応えて、ローカルプロセッサ108は対象となるアクチュエータ112、116、120に、指向性または対象となる運動感覚効果をアナログまたはデジタルスティック110、ボタン114、およびトリガ118にそれぞれ直接提供するように命令する。このような対象となる運動感覚効果は、コントローラの全体に沿って一般アクチュエータ122、124によって生成される一般または鳴動ハプティック効果から、識別可能または区別可能である。総合的なハプティック効果は、例えばビデオ、オーディオ、およびハプティックなどの複数の方式が同時に関与しているので、ゲームに対するさらなる没入感をユーザに提供する。ハプティックを生成するように構成されたコントローラのさらなる詳細は、参照により本明細書に組み込まれる、「GAMING DEVICE HAVING A HAPTIC−ENABLED TRIGGER」と題される2014年4月22日出願の特許出願第14/258,644号明細書に、より詳細に記載されている。
【0027】
図5は、本発明の実施形態に係る、システム用のトリガハプティック効果ソフトウェアスタックのブロック図を示す。トリガハプティック効果ソフトウェアスタックは、
図1のシステム10など、システム上で実施される。図示される実施形態において、システムは以下のコンポーネントを含む:装置500、周辺ファームウェア510、およびコントローラ520。装置500は、パーソナルコンピュータ、タブレット、スマートフォン、またはコンソール(例えばビデオ・ゲーム・コンソール)など、いずれのタイプのコンピュータ装置であってもよい。周辺ファームウェア510は、装置500に動作可能に接続されることができる、1つ以上の周辺機器(例えばコントローラ)のためのファームウェアである。コントローラ520は、装置500に動作可能に接続された周辺機器の一例である。コントローラ520は、ビデオ・ゲーム・コントローラであってもよい。一実施形態において、コントローラ520は、
図1のコントローラ30、ならびに
図2、
図3、および
図4のコントローラ100と同一であってもよい。
【0028】
装置500は、ゲーム入力管理コード501を含む。ゲーム入力管理コード501は、装置500内で実行される、ゲームアプリケーションまたはその他のタイプのアプリケーションに従って、コントローラ520によって提供された入力を管理する、コンピュータ可読命令のセットを含む。装置500は、周辺入力アプリケーション・プログラミング・インターフェース(API)502を、さらに含む。周辺入力API502は、コントローラ520によって提供された入力を受信および管理するために、ゲーム入力管理コード501が周辺ファームウェア510と相互作用できるようにする、コンピュータ可読機能またはルーチンのセットを含む。装置500は鳴動API503をさらに含む。鳴動APIは、コントローラ520の1つ以上の鳴動モータまたは鳴動アクチュエータ(例えば、
図5に示される鳴動モータLおよびR)に鳴動命令を送信するために、ゲーム入力管理コード501が周辺ファームウェア510と相互作用できるようにする、コンピュータ可読機能またはルーチンのセットを含む。鳴動命令は、コントローラ520の鳴動モータまたは鳴動アクチュエータに、一般または鳴動ハプティック効果を生成させることができる。
【0029】
装置500は、トリガハプティック効果API504(
図5において「API」とされる)をさらに含む。トリガハプティック効果API504は、ゲーム入力管理コード501に曝され、コントローラ520の1つ以上のトリガ(例えば
図5に示されるようなトリガLおよびR)へのトリガ命令など、コントローラ520にハプティック命令を送るために、ゲーム入力管理コード501に周辺ファームウェア510と相互作用させる、コンピュータ可読機能またはルーチンのセットを含む。ハプティック命令は、コントローラ520の1つ以上の対象となるモータまたは対象となるアクチュエータに、コントローラ520の1つ以上のユーザ入力エレメントにおけるハプティック効果を生成させることができる。トリガ命令は、コントローラ520の1つ以上の対象となるモータまたは対象となるアクチュエータ(例えば
図5に示されるようなモータLおよびR)に、コントローラ520の1つ以上のトリガ(例えば
図5に示されるようなトリガLおよびR)におけるトリガハプティック効果を生成させることができる、特定のタイプのハプティック命令である。トリガハプティック効果は、コントローラ520などのコントローラのトリガにおいて経験される、特定のタイプのハプティック効果である。トリガハプティック効果API504は、1つ以上のトリガハプティック効果定義を記憶できる。ハプティック効果定義は、コントローラ520のコンポーネント、またはユーザ入力エレメントにおいてハプティック効果を生成するために、事前定義され、記憶装置の中に記憶されることができるハプティック信号、ハプティックファイル、またはハプティックストリームなどのハプティックデータを含み、1つ以上の鳴動モータ、鳴動アクチュエータ、対象となるモータ、または対象となるアクチュエータに送信されることができる、データ構造である。ハプティックデータは対応するハプティック効果の1つ以上の性質を含むことができ、ここで性質はパラメータとして記憶されることができる。ハプティック効果定義の例示的なパラメータは、振幅パラメータ、周波数パラメータ、波形パラメータ、エンベロープパラメータ、マグニチュード(または強度)パラメータ、および持続時間パラメータを含む。トリガハプティック効果定義は、コントローラ520の1つ以上のトリガ(例えば
図5に示されるようなトリガLおよびR)におけるトリガハプティック効果を生成するために、コントローラ520の1つ以上のモータまたはアクチュエータ(例えば
図5に示されるようなモータLおよびR)に送信されることができる、特定のタイプのハプティック効果定義である。
【0030】
実施形態によれば、トリガハプティック効果API504は、ゲーム入力管理コード501に直接再生/クロスオーバー505、トリガエンジン506、および空間化エンジン507と相互作用させることができ、ゲーム入力管理コード501によって呼び出されたリクエストにしたがって直接再生/クロスオーバー505、トリガエンジン506、および空間化エンジン507をさらに管理できる。さらに、トリガハプティック効果API504は、周辺ファームウェア510との通信に必要とされ、1つ以上のトリガハプティック効果の生成に必要とされる、データを記憶できる。代替実施形態において、トリガハプティック効果API504は、装置500ではなく周辺ファームウェア510の中に存在してもよい。トリガハプティック効果API504はさらに、
図16と併せて以下により詳細に記載される。
【0031】
装置500は、直接再生/クロスオーバー505をさらに含む。直接再生/クロスオーバー505は、ハプティックデータを入力として受信し、ハプティックデータを出力として生成し、コントローラ520の1つ以上の対象となるモータまたは対象となるアクチュエータ(例えば
図5に示されるようなモータLおよびR)にハプティックデータを送信する。特定の実施形態において、直接再生/クロスオーバー505は、入力ハプティックデータのフォーマットを変更することなく、入力ハプティックデータを直接出力できる。この結果、入力ハプティックデータの「そのままの」再生を生成する。別の実施形態において、直接再生/クロスオーバー505は、入力されたハプティックデータを第1フォーマットから第2フォーマットに変換でき、変換されたハプティックデータをさらに出力できる。再生のタイプに応じて、直接再生/クロスオーバー505はハプティックデータを変換するために任意にプログラマブルクロスオーバーを使用できる。ハプティックデータを変換することによって、装置500はハプティック効果を「分解」して、複数のアクチュエータにおいてハプティック効果を忠実に再生できる。一実施形態において、ハプティックデータのフォーマットはハプティックエレメンタリストリーム(Haptic Elementary Stream(HES))フォーマットであってもよい。HESフォーマットは、装置にストリーム配信されることができるハプティックデータを表すファイルまたはデータフォーマットである。ハプティックデータはHESフォーマットで暗号化されることができるものの、ハプティックデータは、非圧縮オーディオが表されるのと同一または類似の方法で表されることもできる。このためハプティックデータはハプティックファイルまたはハプティックストリーム中に記憶されることができ、ここでハプティックファイルまたはハプティックストリームのフォーマットはHESフォーマットである。言い換えると、HESフォーマットは、ハプティックフォーマットでハプティックデータを表すために、ハプティックファイルまたはハプティックストリームによって使用されることができる。代替実施形態において、直接再生/クロスオーバー505は、装置500ではなく周辺ファームウェア510の中に存在してもよい。直接再生/クロスオーバー505はさらに、
図7、
図8、
図9、
図10、
図11、
図12、および
図13と併せて、以下により詳細に記載される。
【0032】
装置500は、トリガエンジン506をさらに含む。トリガエンジン506は、トリガハプティック効果定義などのハプティックデータを受信でき、コントローラ520から受信したトリガデータ(例えば
図5に示されるようなトリガデータ513)などのデータに基づいて、ハプティックデータを変更できる。トリガデータは、コントローラ520の1つ以上のトリガ(例えば
図5に示されるようなトリガLおよびR)の位置および/または範囲を示す1つ以上のパラメータを含むデータである。トリガエンジン506はさらに、コントローラ520にハプティック命令を送信することができる。例えば、トリガエンジン506は、コントローラ520の1つ以上のトリガ(例えば
図5に示されるようなトリガLおよびR)にトリガ命令を送信することができる。先に記載されたように、トリガ命令は、コントローラ520の1つ以上の対象となるモータまたは対象となるアクチュエータ(例えば
図5に示されるようなモータLおよびR)に、コントローラ520の1つ以上のトリガ(例えば
図5に示されるようなトリガLおよびR)におけるトリガハプティック効果を生成させることができる。このため一実施形態において、トリガハプティック効果定義のハプティックデータを変更することによって、トリガエンジン506は、トリガの位置および/または範囲に基づいて特定のトリガハプティック効果がトリガにおいて経験されるようにできる。別の実施形態において、トリガハプティック効果定義のハプティックデータを変更することによって、トリガエンジン506は、トリガの位置および/または範囲に基づいて、コントローラ520の1つ以上の対象となるモータまたは対象となるアクチュエータ(例えば
図5に示されるようなモータLおよびR)のためのトリガハプティック効果をスケーリングできる。トリガエンジン506はさらに、トリガハプティック効果定義などの1つ以上のハプティック効果定義を記憶できる。代替実施形態において、トリガエンジン506は、装置500ではなく周辺ファームウェア510の中に存在してもよい。トリガエンジン506はさらに、
図14と併せて、以下により詳細に記載される。
【0033】
装置500は、空間化エンジン507(
図5において「空間化エンジン」とされる)をさらに含む。空間化エンジン507は、トリガハプティック効果定義などのハプティックデータを受信でき、空間化データに基づいてハプティックデータを変更できる。空間化データは、トリガハプティック効果などのハプティックデータの所望の方向および/または流れを示すデータを含むことができる。特定の実施形態において、空間化エンジン507は、ゲーム入力管理コード501から、方向および/または流れを含む空間化データを受信できる。さらに、空間化データはまた、コントローラ520上に位置するユーザの1つ以上の手の1つ以上の位置を含むことができる。特定の実施形態において、空間化エンジン507は、コントローラ520から、1つ以上の手の位置を含む空間化データを受信できる。さらに、特定の実施形態において、空間化エンジン507は、ゲーム入力管理コード501によって通信された通りのゲームアプリケーション内のユーザのキャラクタの位置を含む空間データを受信できる。
【0034】
実施形態によれば、空間化エンジン507は、トリガハプティック効果などのハプティック効果がコントローラ520の1つ以上の鳴動モータまたは鳴動アクチュエータ(例えば
図5に示されるような鳴動モータLおよびR)のためにスケーリングされるように、およびハプティック効果がコントローラ520の1つ以上の対象となるモータまたは対象となるアクチュエータ(例えば
図5に示されるようなモータLおよびR)のためにもスケーリングされるように、ハプティックデータを変更できる。言い換えると、全体的なハプティック効果の方向および流れの感覚を伝達するために、空間化エンジン507は、各モータまたはアクチュエータに送信されるハプティックデータを変更でき、こうして各モータまたはアクチュエータにおいて経験されるハプティック効果を変更できる。例えば、モータまたはアクチュエータにおいて経験されるハプティック効果を強調するために、空間化エンジン507は、ハプティック効果の1つ以上の部分をスケーリングしてもよい。例えば、空間化エンジン507は、ハプティック効果が経験されるようにするモータまたはアクチュエータに送信されるハプティックデータをスケーリングして、ハプティック効果をより明確にしてもよい(例えば、マグニチュード(magnitude)の増加、持続時間の増加など)。加えて、空間化エンジン507は、別のモータまたはアクチュエータに送信されるハプティックデータをスケーリングして、これらのモータまたはアクチュエータにおいて経験される別のハプティック効果を目立たなくさせてもよい(例えば、マグニチュード、持続時間の減少など)。特定の実施形態において、空間化エンジン507は、リアルタイムでハプティックデータを変更できる。さらに、特定の実施形態において、空間化エンジン507は、全体的なトリガハプティック効果を誇張するために、入力とモータまたはアクチュエータの出力との間に非線形関係を有することができる。代替実施形態において、空間化エンジン507は、装置500ではなく周辺ファームウェア510の中に存在してもよい。空間化エンジン507はさらに、
図15、
図32、および
図33と併せて、以下により詳細に記載される。
【0035】
装置500はエンコーダ508をさらに含む。エンコーダ508は、直接再生/クロスオーバー505、トリガエンジン506、および/または空間化エンジン507から受信したハプティックデータを、あるフォーマットにエンコードする。一実施形態において、フォーマットはHESフォーマットであってもよい。エンコーダ508はさらに、エンコードハプティックデータを周辺ファームウェア510に送信する。
【0036】
周辺ファームウェア510は、デコーダおよびクロスオーバー511を含む。デコーダおよびクロスオーバー511は、エンコーダ508からエンコードハプティックデータを受信して、エンコードハプティックデータをデコードする。特定の実施形態において、デコーダおよびクロスオーバー511は、エンコードハプティックデータをデコードするために、プログラマブルクロスオーバーを計算する。これらの実施形態のうちのいくつかにおいて、デコーダおよびクロスオーバー511は、プログラマブルクロスオーバーをリアルタイムで計算する。周辺ファームウェア510は、トリガ制御512をさらに含む。トリガ制御512は、コントローラ520の1つ以上の対象となるモータまたは対象となるアクチュエータ(例えば
図5に示されるようなモータLおよびR)のための、低レベル制御APIである。トリガ制御512は、装置500からトリガ命令を受信でき、トリガ命令をコントローラ520の指定された対象となるモータまたは対象となるアクチュエータのための低レベルトリガ命令に変換でき、低レベルトリガ命令をコントローラ520の指定された対象となるモータまたは対象となるアクチュエータに送ることができる。低レベルトリガ命令は、指定された対象となるモータまたは対象となるアクチュエータに、コントローラ520の指定されたトリガにおけるトリガハプティック効果を生成させる。
【0037】
周辺ファームウェア510は、トリガデータ513をさらに含む。トリガデータ513は、先に記載されたように、コントローラ520の1つ以上のトリガ(例えば
図5に示されるようなトリガLおよびR)の位置および/または範囲を示す1つ以上のパラメータなど、1つ以上のパラメータを含むデータである。トリガデータ513は、周辺ファームウェア510によってコントローラ520から受信されることができる。周辺ファームウェア510は、トリガデータ513をさらに記憶でき、さらにトリガデータ513を装置500に送信することができる。周辺ファームウェア510はその他のゲームパッド機能514をさらに含み、これらは周辺ファームウェア510によって管理されることができるコントローラ520の機能である。このような機能は、有線/無線通信、入力レポート、プロトコル実施、電力管理などを含むことができる。周辺ファームウェア510は、鳴動制御(rumble control)515をさらに含む。鳴動515は、コントローラ520の1つ以上の鳴動モータまたは鳴動アクチュエータ(例えば
図5に示されるような鳴動モータLおよびR)のための、低レベル制御APIである。鳴動制御515は、装置500から鳴動命令を受信でき、鳴動命令をコントローラ520の指定された鳴動モータまたは鳴動アクチュエータのための低レベル鳴動命令に変換でき、低レベルトリガ命令をコントローラ520の指定された鳴動モータまたは鳴動アクチュエータに送信することができる。
【0038】
コントローラ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に鳴動命令を送信する。
【0039】
代替実施形態において、1つ以上の対象となるモータ、または対象となるアクチュエータは、コントローラ520の1つ以上のユーザ入力エレメント(1つ以上のデジタルボタン、1つ以上のアナログボタン、1つ以上のバンパ、1つ以上の方向パッド、1つ以上のアナログまたはデジタルスティック、1つ以上のハンドルなど)に、動作可能に結合されることができる。代替実施形態によれば、周辺ファームウェア510は1つ以上の対象となるモータまたは対象となるアクチュエータに命令を送信して、1つ以上の対象となるモータまたは対象となるアクチュエータに、コントローラ520の1つ以上のユーザ入力エレメントにおいて経験されるハプティック効果を生成させることができる。
【0040】
図6は、本発明の実施形態に係る、トリガハプティック効果を設計するための例示的なユーザインターフェース600を示す。システム(
図1のシステム10など)は、トリガハプティック効果を設計するための専用ツールとして、ユーザインターフェース600をユーザに提供できる。この実施形態において、ユーザは、既存のトリガハプティック効果定義を変更する選択肢を伴って、既存のトリガハプティック効果定義に基づいてトリガハプティック効果を設計できる。実施形態によれば、ユーザインターフェース600は効果プリセット610を含む。効果プリセット610は、トリガハプティック効果プリセットなど、より多くのハプティック効果プリセットのうちの1つを表示できる。ハプティック効果プリセットは、所定のハプティック効果を生成する任意の形状および/または形態の所定のハプティック効果定義である。ハプティック効果プリセットは、ハプティックファイルまたはハプティックストリーム内に記憶されることができる。一実施形態において、ハプティックファイルまたはハプティックストリームのフォーマットはHESフォーマットであってもよい。トリガハプティック効果プリセットは、所定のトリガハプティック効果を生成する特定のタイプのハプティック効果プリセットである。ユーザインターフェース600は、編集領域620をさらに含む。実施形態によれば、ユーザは効果プリセット610内に表示されるハプティック効果プリセットを選択でき、編集領域620は、選択されたハプティック効果プリセットによって表されるハプティック効果定義の図形描写を表示できる。さらに、ユーザは、編集領域620の中の1つ以上の表示要素(ボタンなど)と相互作用することによって、選択されたハプティック効果定義の1つ以上のパラメータを変更できる。ハプティック効果定義の1つ以上のパラメータを変更することによって、対応するハプティック効果の1つ以上の対応する性質を変更できる。変更可能なハプティック効果定義の例示的なパラメータは、振幅パラメータ、周波数パラメータ、波形パラメータ、エンベロープパラメータ、マグニチュード(または強度)パラメータ、および持続時間パラメータを含む。
【0041】
ユーザインターフェース600は、効果定義630をさらに含む。実施形態によれば、ユーザは変更されたハプティック効果定義を新しいハプティック効果定義として保存できるが、新しいハプティック効果定義は効果定義630の中に表示される。新しいハプティック効果定義は、ハプティックファイルまたはハプティックストリーム内に記憶されることができる。一実施形態において、ハプティックファイルまたはハプティックストリームのフォーマットはHESフォーマットであってもよい。新しいハプティック効果定義は、外部ハプティックファイルまたは外部ハプティックストリームにさらにエクスポートされることができる。ユーザインターフェース600は、プレイボタン640をさらに含む。プレイボタン640との相互作用は、ユーザインターフェース600に動作可能に制御されることができるコントローラにおけるハプティック効果を、システムに出力させることができる。ハプティック効果がトリガハプティック効果である場合、システムはコントローラのトリガにおけるトリガハプティック効果を出力できる。ハプティック効果は、選択された所定のハプティック効果定義、または選択された新しいハプティック効果定義であってもよい。
【0042】
ユーザインターフェース600は、トリガエンジン領域650をさらに含む。トリガエンジン領域650は、トリガエンジン(
図5のトリガエンジン506など)によって生成されたトリガハプティック効果を視覚化できる、編集可能視覚領域である。先に記載されたように、トリガエンジンはトリガハプティック効果定義を受信でき、コントローラのトリガの位置および/または範囲に基づいてトリガハプティック効果定義を変更できる。このためトリガエンジン領域650は、トリガの実際の位置を含む、トリガの視覚化映像を表示できる。さらに、トリガエンジン領域650は、トリガハプティック効果定義のために定義されたトリガの位置および/または範囲を表示でき、ここで位置および/または範囲は、トリガエンジンにトリガハプティック効果定義を変更させることができる。ユーザは、トリガハプティック効果定義のために定義されたトリガの位置および/または範囲を編集できる。ユーザインターフェース600は、空間化エンジン領域660をさらに含む。空間化エンジン領域660は、元々はトリガエンジンによって生成されて空間化エンジン(
図5の空間化エンジン507など)によってさらに変更されたトリガハプティック効果を視覚化できる、編集可能視覚領域である。先に記載されたように、空間化エンジンは、トリガハプティック効果がコントローラの1つ以上の対象となるモータ、対象となるアクチュエータ、鳴動モータ、または鳴動アクチュエータのためにスケーリングされるように、トリガハプティック効果定義を変更できる。このため、空間化エンジン領域660は、コントローラの視覚化映像を表示できる。空間化エンジン領域660は、コントローラの各対象となるモータ、対象となるアクチュエータ、鳴動モータ、または鳴動アクチュエータにおいて経験されたトリガハプティック効果の視覚化映像を、さらに表示できる。ユーザは、コントローラの各対象となるモータ、対象となるアクチュエータ、鳴動モータ、または鳴動アクチュエータにおいて経験されたトリガハプティック効果のスケーリングを編集できる。
【0043】
図7は、本発明の実施形態に係る、トリガハプティック効果を設計するために使用されるコンポーネントのブロック図を示す。この実施形態において、システム(
図1のシステム10など)は:(1)トリガハプティック効果の作成(すなわち、ハプティック効果定義を作成することによる);または(2)オーディオ効果としてのトリガハプティック効果の作成(すなわち、オーディオ効果定義を作成することによる)のいずれかの専用ツールとして、オーサリングコンポーネント700を提供できる。一実施形態において、オーサリングコンポーネント700は、Avid Technology,Inc.による「Pro Tools(登録商標)」製品であってもよい。システムは、ハプティック効果定義またはオーディオ効果定義をストリーム配信するために、単一ポートクロスオーバーオーディオストリーム入出力(ASIO)ドライバ710または4ポートASIOドライバ720のいずれかをさらに使用できる。単一ポート・クロスオーバー・ドライバ710は、単一チャネルのハプティックデータまたはオーディオデータとしてハプティック効果定義またはオーディオ効果定義をストリーム配信できる。対照的に、4ポートASIOドライバ720は、4チャネルのハプティックデータまたはオーディオデータとしてハプティック効果定義またはオーディオ効果定義をストリーム配信できる。代替実施形態において、4ポートASIOドライバ720は、6または8チャネルのハプティックデータまたはオーディオデータなど、いずれかの複数のチャネルのハプティックデータまたはオーディオデータとしてハプティック効果定義またはオーディオ効果定義をストリーム配信する、別のドライバに置き換えられることができる。ユーザがオーディオ効果定義を作成する実施形態において、単一ポートクロスオーバーASIOドライバ710または4ポートASIOドライバ720のいずれかはまた、オーディオ効果定義をハプティック効果定義に変換することもできる。システムは、オーディオ効果定義またはハプティック効果定義をHESフォーマットなどの外部フォーマットにエンコードするために、HESエンコーダ730をさらに使用できる。システムが単一ポート・クロスオーバー・ドライバ710を用いて単一チャネルのハプティックデータまたはオーディオデータとしてオーディオ効果定義またはハプティック効果定義をストリーム配信する場合、HESエンコーダ730は、ハプティックデータまたはオーディオデータを3つの異なる出力(例えば(1)低周波鳴動モータまたは鳴動アクチュエータ;(2)中周波鳴動モータまたは鳴動アクチュエータ;あるいは(3)高周波対象となるモータまたは対象となるアクチュエータ)にマッピングされることができる3つの異なる帯域に分離するために、クロスオーバー入力ワープアルゴリズムを適用できる。
【0044】
クロスオーバー入力ワープアルゴリズムは、装置自体の中に存在するか、または通信リンクの反対側に存在して、装置とは異なるプロセッサ上で実行できる。クロスオーバー入力ワープアルゴリズムはまた、入力データ(ハプティックまたはオーディオ)を2つの帯域に分離してもよく、ここで低周波は分離されて、その後1つ以上のアクチュエータ出力に適用される前に任意に変換され、高周波は分離されて、その後低周波分離データに使用されるのとは異なる多数のアクチュエータに適用される前に、任意に変換される。このタイプのデータ分離は、任意の数の周波数帯域およびアクチュエータ出力において発生する可能性がある。代替実施形態において、入力データ(オーディオまたはハプティック)は複数の重複する周波数領域に分離されることができ、これらはその後各々任意に変換されて、多数の出力アクチュエータに適用される。別のセットの実施形態は、多数の信号強度帯域を作り出すことができ、ここで入力データ(オーディオまたはハプティック)は(ピーク検出、RMS計算などを通じて)出力パワーまたは強度にしたがって分離され、これら分離データストリームは、1つ以上の異なるアクチュエータのセットに各々適用される。代替実施形態において、入力データ(オーディオまたはハプティック)は、(ピーク検出、RMS計算などを通じて)出力パワーまたは強度にしたがって、完全に異なるストリームではなく、異なるが重複するデータストリームに分離されることができ、ここで強度フィルタリングアルゴリズムは重複する強度の領域を捕捉し、任意に変換を適用し、出力の各々を多数の出力アクチュエータに適用する。
【0045】
システムは、エンコードオーディオ効果定義またはエンコードハプティック効果定義を、コントローラ750上に存在するヒューマンインターフェース装置(HID)インタープリタ740に、さらに送信できる。HIDインタープリタ740は、コントローラ750のトリガにおけるトリガハプティック効果を提供するために、エンコードオーディオ効果定義またはエンコードハプティック効果定義を受信および解釈する。一実施形態において、システムは、システムがエンコードオーディオ効果定義またはエンコードハプティック効果定義をコントローラ750のHIDインタープリタ740に送信する前に、トリガエンジン(
図5のトリガエンジン506など)および/または空間化エンジン(
図5の空間化エンジン507など)を用いてエンコードオーディオ効果定義またはエンコードハプティック効果定義をさらに変更できる。
【0046】
図8は、本発明の実施形態に係る、直接再生のためのトリガハプティック効果を作成するために使用されるコンポーネントのブロック図、およびトリガハプティック効果を保存するために使用されるコンポーネントのブロック図を示す。この実施形態において、システム(
図1のシステム10など)は、オーディオ効果としてトリガハプティック効果を作成するための(すなわち、オーディオ効果定義を作成することによる)専用ツールとして、オーディオオーサリングコンポーネント800を提供できる。一実施形態において、オーディオオーサリングコンポーネント800は、Avid Technology,Inc.による「Pro Tools(登録商標)」製品であってもよい。
【0047】
一旦システムのユーザがオーディオオーサリングコンポーネント800を用いてトリガハプティック効果を作成すると、ユーザはトリガハプティック効果をプレビューできる。プレビュー機能は、トリガハプティック効果のさらなるカスタマイズを可能にする。トリガハプティック効果をプレビューすると、システムは作成されたオーディオ効果定義を4チャネル出力ドライバ801に送信でき、4チャネル出力ドライバ801はオーディオ効果定義を4チャネルのオーディオデータとしてストリーム配信できる。一実施形態において、4チャネル出力ドライバ801は、4チャネルASIO出力ドライバであってもよい。代替実施形態において、4チャネル出力ドライバ801は、6または8チャネルのオーディオデータなど、いずれかの複数のチャネルのオーディオデータとしてオーディオ効果定義をストリーム配信する、別のドライバに置き換えられることができる。
【0048】
さらに、システムは、オーディオストリームをオーディオハプティック変換器802に送信でき、オーディオハプティック変換器802は、ハプティック変換アルゴリズムを用いてオーディオストリームのオーディオ効果定義をハプティック効果定義に変換できる。一実施形態において、あるモータまたはアクチュエータに対応するオーディオ効果定義の各個別チャネルは、ハプティック効果定義のあるチャネルに変換されることができる。例示的なハプティック変換アルゴリズムは、(その全てが全体として参照により本明細書に組み込まれる)以下の特許または特許出願に記載される:米国特許第7,979,146号明細書;米国特許第8,000,825号明細書;米国特許第8,378,964号明細書;米国特許公開第2011/0202155号明細書;米国特許公開第2011/0215913号明細書;米国特許公開第2012/0206246号明細書;米国特許公開第2012/0206247号明細書;米国特許公開第2013/0265286号明細書;米国特許公開第2013/0131851;号明細書;米国特許公開第2013/0207917号明細書;米国特許公開第2013/0335209号明細書;米国特許公開第2014/0064516号明細書;米国特許出願第13/661,140号明細書;米国特許出願第13/785,166号明細書;米国特許出願第13/788,487号明細書;米国特許出願第14/078,438号明細書;米国特許出願第14/078,442号明細書;米国特許出願第14/078,445号明細書;米国特許出願第14/051,933号明細書;米国特許出願第14/020,461号明細書;米国特許出願第14/020,502号明細書;米国特許出願第14/277,870号明細書;および米国特許出願第14/467,184号明細書。
【0049】
システムは、さらに変換されたハプティック効果定義をHES多チャネルエンコーダ803に送信でき、多チャネルエンコーダ803は、変換されたハプティック効果定義をHESフォーマットなどの外部フォーマットにエンコードできる。システムはエンコードおよび変換されたハプティック効果定義を、コントローラ805上に存在するトリガ・コントローラ・インターフェース(I/F)804に、さらに送信できる。トリガコントローラI/F804は、コントローラ805のトリガにおける作成されたトリガハプティック効果をプレビューするために、エンコードおよび変換されたハプティック効果定義を受信および解釈できる。
【0050】
この実施形態において、システムはオーディオオーサリングコンポーネント810を提供することができ、ここでオーディオオーサリングコンポーネント810はオーディオオーサリングコンポーネント800と同一である。一旦システムのユーザがオーディオオーサリングコンポーネント810を用いてトリガハプティック効果を作成すると、ユーザはトリガハプティック効果を保存できる。トリガハプティック効果を保存すると、システムは、オーディオ効果定義を個別のオーディオファイル811としてエクスポートできる。オーディオ効果定義が4つのチャネルを含む一実施形態において、オーディオファイル811は4つのオーディオファイルを含むことができる。オーディオ効果定義が別の数のチャネルを含む代替実施形態において、オーディオファイル811は、その数の個別のオーディオファイルを含むことができる。特定の実施形態において、オーディオファイル811は、波形オーディオファイル(WAV)フォーマットであってもよい。システムはさらに、オーディオファイル811をHESエンコーダ・グラフィカル・ユーザ・インターフェース(GUI)812に送信でき、ここでHESエンコーダGUI812は、オーディオファイル811を単一のオーディオファイルにエンコードできる。一実施形態において、オーディオファイルはHESフォーマットであってもよい。さらに、システムはオーディオファイルをオーディオハプティック変換器812に送信でき、オーディオハプティック変換器813は、ハプティック変換アルゴリズムを用いてオーディオファイルのオーディオ効果定義をハプティック効果定義に変換できる。一実施形態において、あるモータまたはアクチュエータに対応するオーディオ効果定義の各個別チャネルは、ハプティック効果定義のあるチャネルに変換されることができる。システムはさらに、変換されたハプティック効果定義をHES多チャネルエンコーダ814に送信でき、多チャネルエンコーダ814は、変換されたハプティック効果定義をHESフォーマットなどの外部フォーマットにエンコードできる。システムはさらに、エンコードおよび変換されたハプティック効果定義をハプティックファイル815内に記憶できる。一実施形態において、ハプティックファイル815はHESファイルであってもよい。
【0051】
図9は、本発明の実施形態に係る、クロスオーバー再生のためのトリガハプティック効果を作成するために使用されるコンポーネントのブロック図、およびトリガハプティック効果を保存するために使用されるコンポーネントのブロック図を示す。この実施形態において、システム(
図1のシステム10など)は、オーディオ効果としてトリガハプティック効果を作成するための(すなわち、オーディオ効果定義を作成することによる)専用ツールとして、オーディオオーサリングコンポーネント900を提供できる。
【0052】
一旦システムのユーザがオーディオオーサリングコンポーネント900を用いてトリガハプティック効果を作成すると、ユーザはトリガハプティック効果をプレビューできる。トリガハプティック効果をプレビューすると、システムは作成されたオーディオ効果定義を単一チャネル出力ドライバ901に送信でき、単一チャネル出力ドライバ901はオーディオ効果定義を単一チャネルのオーディオデータとしてストリーム配信できる。一実施形態において、単一チャネル出力ドライバ901は、単一チャネルASIO出力ドライバであってもよい。さらに、システムはオーディオストリームをオーディオハプティック変換器902に送信でき、オーディオハプティック変換器902は、ハプティック変換アルゴリズムを用いてオーディオストリームのオーディオ効果定義をハプティック効果定義に変換できる。一実施形態において、あるモータまたはアクチュエータに対応するオーディオ効果定義の各個別チャネルは、ハプティック効果定義のあるチャネルに変換されることができる。さらにまた、システムは変換されたハプティック効果定義をクロスオーバーGUI905に送信でき、クロスオーバーGUI905は、変換されたハプティック効果定義を3つの異なる出力(例えば(1)低周波鳴動モータまたは鳴動アクチュエータ;(2)中周波鳴動モータまたは鳴動アクチュエータ;あるいは(3)高周波対象となるモータまたは対象となるアクチュエータ)にマッピングされることができる3つの異なるチャネルに分離するために、クロスオーバー入力ワープアルゴリズムを適用できる。
【0053】
システムはさらに、変換されたハプティック効果定義をHES多チャネルエンコーダ903に送信でき、多チャネルエンコーダ903は、変換されたハプティック効果定義をHESフォーマットなどの外部フォーマットにエンコードできる。システムはさらに、エンコードおよび変換されたハプティック効果定義を、コントローラ906上に存在するトリガコントローラI/F904に送信できる。トリガコントローラI/F904は、コントローラ906のトリガにおける作成されたトリガハプティック効果をプレビューするために、エンコードおよび変換されたハプティック効果定義を受信および解釈できる。
【0054】
この実施形態において、システムはオーディオオーサリングコンポーネント910を提供することができ、ここでオーディオオーサリングコンポーネント910はオーディオオーサリングコンポーネント900と同一である。一旦システムのユーザがオーディオオーサリングコンポーネント910を用いてトリガハプティック効果を作成すると、ユーザはトリガハプティック効果を保存できる。トリガハプティック効果を保存すると、システムは、オーディオ効果定義を単一のオーディオファイル911としてエクスポートできる。特定の実施形態において、オーディオファイル911はWAVフォーマットであってもよい。システムはさらに、クロスオーバー設定912をエクスポートできる。システムはさらに、オーディオファイル911をHESエンコーダGUI913に送信でき、ここでHESエンコーダGUI913は、オーディオファイル911およびクロスオーバー設定912を単一のオーディオファイルにエンコードできる。一実施形態において、オーディオファイルはHESフォーマットであってもよい。システムはさらに、オーディオファイルをHES単一チャネルおよびクロスオーバーエンコーダ914に送信でき、単一チャネルおよびクロスオーバーエンコーダは、オーディオファイルをHESフォーマットなどの外部フォーマットにエンコードできる。システムはさらに、エンコードオーディオファイルをハプティックファイル915内に記憶できる。一実施形態において、ハプティックファイル915はHESファイルであってもよい。
【0055】
図10は、本発明の実施形態に係る、トリガハプティック効果を直接再生するために使用されるコンポーネントのブロック図を示す。一実施形態によれば、システム(
図1のシステム10など)は、ハプティック効果定義を含むハプティックファイル1000をロードできる。一実施形態において、ハプティックファイル1000はHESファイルであってもよい。実施形態によれば、ハプティックファイル1000内に含まれるハプティック効果定義は4つのチャネルを含み、各チャネルは、ハプティック効果定義内に含まれるハプティックデータの一部を含む。代替実施形態において、ハプティックファイル1000内に含まれるハプティック効果定義は、いずれかの複数のチャネルを含むことができる。各チャネルのハプティック効果定義は、対象となるモータ、対象となるアクチュエータ、鳴動モータ、または鳴動アクチュエータに関連付けられることができる。図示される実施形態において、第1チャネル(すなわち「チャネルLR」)は低鳴動モータに関連付けられ、第2チャネル(すなわち「チャネルMR」)は中鳴動モータに関連付けられ、第3チャネル(すなわち「チャネルLT」)は左トリガに動作可能に結合されたモータに関連付けられ、第4チャネル(すなわち「チャネルRT」)は右トリガに動作可能に結合されたモータに関連付けられている。一実施形態において、ハプティックファイル1000内に含まれるハプティック効果定義は、再生速度および再生率制御を定義できる。
【0056】
実施形態によれば、システムは、ハプティックファイル1000内に含まれる4つのチャネルのハプティック効果定義を強度制御1010に送信でき、強度制御1010は、各チャネルのハプティック効果定義内に含まれるハプティックデータの強度、またはマグニチュードを変更できる。システムはその後、4つのチャネルのハプティック効果定義を前後(F/B)空間化1020に送信でき、F/B空間化1020は、空間化データに基づいて各チャネルのハプティック効果定義内に含まれるハプティックデータを変更できる。空間化データは、ハプティック効果の方向および/または流れを含むことができる。一実施形態において、ハプティック効果の方向および/または流れは、前向きまたは後ろ向き方向であってもよい。さらに、空間化データは、1つ以上の手の位置を含むことができる。実施形態によれば、F/B空間化1020は、ハプティック効果が各モータまたはアクチュエータのためにスケーリングされるように、各チャネル内に含まれるハプティックデータを変更できる。システムはその後、チャネルLRを低鳴動モータ1030(
図10において「低鳴動モータ」とされる)に送信でき、チャネルMRを中鳴動モータ1040(
図10において「中鳴動モータ」とされる)にさらに送信できる。チャネルLR内に包含されるハプティックデータは、低鳴動モータ1030に一般または鳴動ハプティック効果を生成させることができ、チャネルMR内に包含されるハプティックデータは、中鳴動モータ1040に一般または鳴動ハプティック効果を生成させることができる。
【0057】
システムはさらに、チャネルLTおよびRTを左右(L/R)空間化1050に送信でき、L/R空間化1050は、空間化データに基づいてチャネルLTおよびRT内に含まれるハプティックデータを変更できる。空間化データは、ハプティック効果の方向および/または流れを含むことができる。一実施形態において、ハプティック効果の方向および/または流れは、左または右方向であってもよい。さらに、空間化データは1つ以上の手の位置を含むことができる。実施形態によれば、L/R空間化1050は、ハプティック効果が各モータまたはアクチュエータのためにスケーリングされるように、各チャネル内に含まれるハプティックデータを変更できる。システムはその後、チャネルLTを左トリガ対象となるモータ1060(
図10において「LTモータ」とされる)に送信でき、チャネルRTを右トリガ対象となるモータ1070(
図10において「RTモータ」とされる)にさらに送信できる。チャネルLT内に包含されるハプティックデータは、左トリガ対象となるモータ1060に、左トリガにおけるトリガハプティック効果を生成させることができ、チャネルRT内に包含されるハプティックデータは、右トリガ対象となるモータ1070に、右トリガにおけるトリガハプティック効果を生成させることができる。
【0058】
図11は、本発明の実施形態に係る、プログラマブルクロスオーバーを使用してトリガハプティック効果を再生するために使用されるコンポーネントのブロック図を示す。実施形態によれば、システム(
図1のシステム10など)は、ハプティック効果定義を含むハプティックファイル1100をロードできる。一実施形態において、ハプティックファイル1100はHESファイルであってもよい。実施形態によれば、ハプティックファイル1100内に含まれるハプティック効果定義は単一チャネルを含み、該チャネルはハプティック効果定義内に含まれるハプティックデータを含む。やはり実施形態によれば、ハプティックファイル1100内に含まれるハプティック効果定義は1つ以上のクロスオーバーパラメータを含み、1つ以上のクロスオーバーパラメータはクロスオーバー入力ワープアルゴリズムのためのパラメータであってもよい。一実施形態において、ハプティックファイル1100内に含まれるハプティック効果定義は、再生速度および再生率制御を定義できる。
【0059】
実施形態によれば、システムは、ハプティックファイル1100内に含まれるハプティック効果定義のチャネル、およびやはりハプティックファイル1100内に含まれる1つ以上のクロスオーバーパラメータを、プログラマブルクロスオーバー1110に送信できる。プログラマブルクロスオーバー1110は、チャネルを3つの異なるチャネル:すなわち低周波チャネル;中周波チャネル;および高周波チャネルに分離するために、1つ以上のクロスオーバーパラメータを用いてクロスオーバー入力ワープアルゴリズムを適用できる。低周波チャネルは、1つ以上の低周波を含むハプティック効果定義内に含まれるハプティックデータの一部を含む。中周波チャネルは、1つ以上の中周波を含むハプティック効果定義内に含まれるハプティックデータの一部を含む。高周波チャネルは、1つ以上の高周波を含むハプティック効果定義内に含まれるハプティックデータの一部を含む。
【0060】
システムはその後、3つのチャネルのハプティック効果定義をF/B空間化1120に送信でき、F/B空間化1120は、空間化データに基づいて各チャネルのハプティック効果定義内に含まれるハプティックデータを変更できる。空間化データは、ハプティック効果の方向および/または流れを含むことができる。一実施形態において、ハプティック効果の方向および/または流れは、前向きまたは後ろ向き方向であってもよい。さらに、空間化データは、1つ以上の手の位置を含むことができる。実施形態によれば、F/B空間化1120は、ハプティック効果が各モータまたはアクチュエータのためにスケーリングされるように、各チャネル内に含まれるハプティックデータを変更できる。システムはその後、低周波チャネルを低鳴動モータ1130(
図11において「低鳴動モータ」とされる)に送信でき、中周波チャネルを中鳴動モータ1140(
図11において「中鳴動モータ」とされる)にさらに送信できる。低周波チャネル内に包含されるハプティックデータは、低鳴動モータ1130に一般または鳴動ハプティック効果を生成させることができ、中周波チャネル内に包含されるハプティックデータは、中鳴動モータ1140に一般または鳴動ハプティック効果を生成させることができる。
【0061】
システムはさらに、高周波チャネルをL/R空間化1150に送信でき、L/R空間化1150は、空間化データに基づいて高周波チャネル内に含まれるハプティックデータを変更できる。一実施形態において、ハプティック効果の方向および/または流れは、左または右方向であってもよい。さらに、空間化データは1つ以上の手の位置を含むことができる。実施形態によれば、L/R空間化1150は、ハプティック効果が各モータまたはアクチュエータのためにスケーリングされるように、チャネル内に含まれるハプティックデータを変更できる。システムはその後、高周波チャネルを左トリガ対象となるモータ1160(
図11において「LTモータ」とされる)に送信でき、また高周波チャネルを右トリガ対象となるモータ1170(
図11において「RTモータ」とされる)に送信することもできる。高周波チャネル内に包含されるハプティックデータは、左トリガ対象となるモータ1160に、左トリガにおけるトリガハプティック効果を生成させることができ、高周波チャネル内に包含されるハプティックデータは、右トリガ対象となるモータ1170に、右トリガにおけるトリガハプティック効果を生成させることができる。
【0062】
図12は、本発明の実施形態に係る、トリガハプティック効果の例示的な4チャネル直接再生を示す。実施形態によれば、システム(
図1のシステム10など)は、オーディオ効果定義を含むオーディオファイル1200をロードできる。一実施形態において、オーディオファイル1200はHESファイルであってもよい。実施形態によれば、オーディオファイル1200内に含まれるオーディオ効果定義は4つのチャネルを含み、各チャネルはオーディオ効果定義内に含まれるオーディオデータの一部を含む。代替実施形態において、オーディオファイル1200内に含まれるオーディオ効果定義は、いずれかの複数のチャネルを含むことができる。ハプティック効果定義の各チャネルは、対象となるモータ、対象となるアクチュエータ、鳴動モータ、または鳴動アクチュエータに関連付けられることができる。図示される実施形態において、第1チャネル(すなわち「チャネルLR」)は低鳴動モータに関連付けられ、第2チャネル(すなわち「チャネルMR」)は中鳴動モータに関連付けられ、第3チャネル(すなわち「チャネルLT」)は左トリガに動作可能に結合された対象となるモータに関連付けられ、第4チャネル(すなわち「チャネルRT」)は右トリガに動作可能に結合された対象となるモータに関連付けられている。
【0063】
実施形態によれば、システムは、オーディオファイル1200内に含まれる4つのチャネルのオーディオ効果定義をオーディオハプティック変換器1210に送信でき、オーディオハプティック変換器1210は、ハプティック変換アルゴリズムを用いてオーディオ効果定義をハプティック効果定義に変換できる。一実施形態において、オーディオ効果定義の各個別チャネルはハプティック効果定義のあるチャネルに変換されることができる。図示される実施形態において:チャネルLRは60ヘルツ(Hz)未満の範囲を有するピーク/デシメーションフィルタを用いて変換されることができ;チャネルMRは60Hzの値を有するピーク/デシメーションフィルタを用いて変換されることができ;チャネルLTおよびRTは、200Hzから2kHzの範囲を有するピーク/デシメーションフィルタを用いて各々変換されることができる。
【0064】
システムはさらに、4つのチャネルの変換されたハプティック効果定義をエンコーダ/デコーダ1220に送信でき、エンコーダ/デコーダ1220は各チャネルの変換されたハプティック効果定義をHESフォーマットなどの外部フォーマットにエンコードできる。システムはその後、4つのエンコードチャネルの変換されたハプティック効果定義をF/B空間化1230に送信でき、F/B空間化1230は、空間化データに基づいて各エンコードチャネルの変換されたハプティック効果定義内に含まれる変換されたハプティックデータを変更できる。空間化データは、ハプティック効果の方向および/または流れを含むことができる。一実施形態において、ハプティック効果の方向および/または流れは、前向きまたは後ろ向き方向であってもよい。さらに空間化データは、1つ以上の手の位置を含むことができる。実施形態によれば、F/B空間化1230は、ハプティック効果が各モータまたはアクチュエータのためにスケーリングされるように、各エンコードチャネル内に含まれる変換されたハプティックデータを変更できる。システムはその後、エンコードチャネルLRを低鳴動モータ1240(
図12において「低鳴動モータ」とされる)に送信でき、エンコードチャネルMRを中鳴動モータ1250(
図12において「中鳴動モータ」とされる)にさらに送信できる。チャネルLRに包含される変換されたハプティックデータは、低鳴動モータ1240に、一般または鳴動ハプティック効果を生成させることができ、チャネルMR内に包含される変換されたハプティックデータは、中鳴動モータ1250に、一般または鳴動ハプティック効果を生成させることができる。
【0065】
システムはさらに、エンコードチャネルLTおよびRTをL/R空間化1260に送信でき、L/R空間化1260は、空間化データに基づいてエンコードチャネルLTおよびRTに含まれる変換されたハプティックデータを変更できる。空間化データは、ハプティック効果の方向および/または流れを含むことができる。一実施形態において、ハプティック効果の方向および/または流れは、左または右方向であってもよい。さらに、空間化データは1つ以上の手の位置を含むことができる。実施形態によれば、L/R空間化1260は、ハプティック効果が各モータまたはアクチュエータのためにスケーリングされるように、各チャネル内に含まれるハプティックデータを変更できる。システムはその後、チャネルLTを左トリガ対象となるモータ1270(
図12において「LTモータ」とされる)に送信でき、チャネルRTを右トリガ対象となるモータ1280(
図12において「RTモータ」とされる)にさらに送信できる。チャネルLT内に包含されるハプティックデータは、左トリガ対象となるモータ1270に、左トリガにおけるトリガハプティック効果を生成させることができ、チャネルRT内に包含されるハプティックデータは、右トリガ対象となるモータ1280に、右トリガにおけるトリガハプティック効果を生成させることができる。
【0066】
図13は、本発明の実施形態に係る、トリガハプティック効果の例示的なクロスオーバー再生を示す。実施形態によれば、システム(
図1のシステム10など)は、オーディオ効果定義を含むオーディオファイル1300をロードできる。一実施形態において、オーディオファイル1300はHESファイルであってもよい。実施形態によれば、オーディオファイル1300内に含まれるオーディオ効果定義は単一チャネルを含み、該チャネルはオーディオ効果定義内に含まれるオーディオデータを含む。一実施形態において、オーディオファイル1300内に含まれるオーディオ効果定義は1つ以上のクロスオーバーパラメータを含むことができ、1つ以上のクロスオーバーパラメータは、クロスオーバー入力ワープアルゴリズムのためのパラメータであってもよい。
【0067】
実施形態によれば、システムは、オーディオファイル1300内に含まれるオーディオ効果定義のチャネル、ならびに一実施形態において、やはりオーディオファイル1300内に含まれる1つ以上のクロスオーバーパラメータを、プログラマブルクロスオーバー1310に送信できる。プログラマブルクロスオーバー1310は、チャネルを3つの異なるチャネル:すなわち低周波チャネル;中周波チャネル;および高周波チャネルに分離するために、クロスオーバー入力ワープアルゴリズムを(一実施形態において、1つ以上のクロスオーバーパラメータを用いて)適用できる。プログラマブルクロスオーバー1310はさらに、ハプティック変換アルゴリズムを用いてオーディオ効果定義をハプティック効果定義に変換できる。一実施形態において、オーディオ効果定義の各個別チャネルはハプティック効果定義のあるチャネルに変換されることができる。図示される実施形態において:低周波チャネルは60ヘルツ(Hz)未満の範囲を有するピーク/デシメーションフィルタを用いて変換されることができ;中周波チャネルは60Hzの値を有するピーク/デシメーションフィルタを用いて変換されることができ;高周波チャネルは200Hzから2kHzの範囲を有するピーク/デシメーションフィルタを用いて各々変換されることができる。
【0068】
システムはさらに、3つのチャネルの変換されたハプティック効果定義をエンコーダ/デコーダ1320に送信でき、エンコーダ/デコーダ1320は各チャネルの変換されたハプティック効果定義をHESフォーマットなどの外部フォーマットに変換できる。システムはその後、3つのチャネルのハプティック効果定義をF/B空間化1330に送信でき、F/B空間化1330は、空間化データに基づいて各チャネルのハプティック効果定義内に含まれるハプティックデータを変更できる。空間化データは、ハプティック効果の方向および/または流れを含むことができる。一実施形態において、ハプティック効果の方向および/または流れは、前向きまたは後ろ向き方向であってもよい。さらに空間化データは、1つ以上の手の位置を含むことができる。実施形態によれば、F/B空間化1330は、ハプティック効果が各モータまたはアクチュエータのためにスケーリングされるように、各チャネル内に含まれるハプティックデータを変更できる。システムはその後、低周波チャネルを低鳴動モータ1340(
図13において「低鳴動モータ」とされる)に送信でき、中周波チャネルを中鳴動モータ1350(
図13において「中鳴動モータ」とされる)にさらに送信できる。低周波チャネル内に包含されるハプティックデータは、低鳴動モータ1340に、一般または鳴動ハプティック効果を生成させることができ、中周波チャネル内に包含されるハプティックデータは、中鳴動モータ1350に、一般または鳴動ハプティック効果を生成させることができる。
【0069】
システムはさらに、高周波チャネルをL/R空間化1360に送信でき、L/R空間化1360は、空間化データに基づいて高周波チャネル内に含まれるハプティックデータを変更できる。一実施形態において、ハプティック効果の方向および/または流れは、左または右方向であってもよい。さらに、空間化データは1つ以上の手の位置を含むことができる。実施形態によれば、L/R空間化1360は、ハプティック効果が各モータまたはアクチュエータのためにスケーリングされるように、チャネル内に含まれるハプティックデータを変更できる。システムはその後、高周波チャネルを左トリガ対象となるモータ1370(
図13において「LTモータ」とされる)に送信でき、高周波チャネルを右トリガ対象となるモータ1380(
図13において「RTモータ」とされる)に送信することもまたできる。高周波チャネル内に包含されるハプティックデータは、左トリガ対象となるモータ1370に、左トリガにおけるトリガハプティック効果を生成させることができ、高周波チャネル内に包含されるハプティックデータは、右トリガ対象となるモータ1380に、右トリガにおけるトリガハプティック効果を生成させることができる。
【0070】
図14は、本発明の実施形態に係る、トリガエンジンの例示的なユーザインターフェース1400を示す。ユーザインターフェース1400は、トリガエンジン(
図5のトリガエンジン506など)によって生成された1つ以上のトリガハプティック効果を視覚化できる、編集可能視覚領域である。ユーザインターフェース1400はさらに、ユーザが1つ以上のトリガハプティック効果をプログラムで管理できるようにすることもできる。先に記載されたように、トリガエンジンはトリガハプティック効果定義を受信でき、コントローラのトリガの位置および/または範囲に基づいてトリガハプティック効果定義を変更できる。実施形態によれば、ユーザインターフェース1400はトリガビュー1410を表示するが、トリガビュー1410はトリガの視覚化映像である。トリガビュー1410はトリガ入力範囲1420を表示ことができ、トリガ入力範囲1420はトリガの有効な入力範囲の視覚化映像である。図示される実施形態において、トリガ入力範囲1420は、0から255までの範囲の整数値の連続体によって表されることができる。トリガは、トリガ入力範囲1420内の初期位置0に位置する。トリガを押すことまたは引くことによって、ユーザはトリガの位置をトリガ入力範囲1420内のいずれか有効な位置に調整できる。ユーザがトリガを解放すると、トリガの位置はトリガ入力範囲1420内の位置0に戻る。
【0071】
ユーザインターフェース1400を用いて、ユーザは1つ以上のトリガ定義を作り出すことができ、トリガ定義は、トリガハプティック効果を生成または変更させる条件を定義する。いくつかの実施形態において、条件はトリガの位置であってもよく、位置はトリガ入力範囲1420内である。別の実施形態において、条件はトリガの範囲であってもよく、範囲はトリガ入力範囲1420内である。ユーザインターフェース1400は閾値トリガ定義1430を含むが、これはトリガ定義の一例である。閾値トリガ定義1430は、トリガが指定された位置に到達したときに、指定されたトリガハプティック効果定義に基づくトリガハプティック効果を生成させ、指定された位置は図示される実施形態において99である。閾値トリガ定義1430は、トリガハプティック効果がトリガの押下のみにおいて、トリガの解放のみにおいて、またはトリガの押下および解放の両方において生成されることを、定義できる。代替実施形態において、閾値トリガ定義1430は、単に指定された位置に到達するのとは対照的に、トリガが指定された位置に存在するときに、指定されたトリガハプティック効果定義に基づくトリガハプティック効果を生成させる位置トリガ定義に置き換えられることができる。ユーザインターフェース1400は範囲トリガ定義1440をさらに含むが、これはトリガ定義の別の例である。範囲トリガ定義1440は、トリガが指定された範囲に到達したときに、指定されたトリガハプティック効果定義に基づくトリガハプティック効果を生成させ、指定された範囲は図示される実施形態において164から255である。
【0072】
図15は、本発明による、空間化エンジンの例示的なユーザインターフェース1500を示す。ユーザインターフェース1500は、元々トリガエンジン(
図5のトリガエンジン506など)によって生成されて空間化エンジン(
図5の空間化エンジン507など)によってさらに変更されたトリガハプティック効果を視覚化できる、編集可能視覚領域である。ユーザインターフェース1500はさらに、ユーザが空間化エンジンによるトリガハプティック効果の1つ以上の変更をプログラムで管理できるようにすることもできる。このような変更は、将来の動的再生のためにさらに記録されることができる。先に記載されたように、空間化エンジンは、トリガハプティック効果がコントローラの1つ以上の対象となるモータ、対象となるアクチュエータ、鳴動モータ、または鳴動アクチュエータのためにスケーリングされるように、元々トリガエンジンによって生成されたハプティック効果定義を変更できる。より具体的には、空間化エンジンは、コントローラのユーザによって経験された通りのトリガハプティック効果の方向感覚を伝達するために、各対象となるモータ、対象となるアクチュエータ、鳴動モータ、または鳴動アクチュエータに適用された通りにハプティック効果定義を変更できる。ハプティック効果定義に対する各変更は、空間化エンジンによって定義された通りのトリガハプティック効果の意図される方向および/または流れに基づいてもよい。さらに、各変更はまた、コントローラによって受信された入力に基づいてもよく、入力は、コントローラ上のユーザの手の位置を示す。このように、空間化エンジンは、元々トリガエンジンによって生成されたハプティック効果定義を受信でき、トリガハプティック効果の「空間化」局面(例えば、トリガハプティック効果の位置および/または流れ)に基づいてハプティック効果定義を変更できる。代替実施形態において、空間化エンジンは、ハプティック効果がコントローラの1つ以上の対象となるモータ、対象となるアクチュエータ、鳴動モータ、または鳴動アクチュエータのためにスケーリングされるように、元々トリガエンジンによって生成されたハプティック効果定義とは対照的に、元のハプティック効果定義を変更できる。
【0073】
ユーザインターフェース1500は、流れ(flow)1510を含む。流れ1510は、ユーザがトリガハプティック効果の流れをプログラムで管理できるようにする。流れは、コントローラの個々の対象となるモータ、対象となるアクチュエータ、鳴動モータ、または鳴動アクチュエータ上での再生を遅延させるための、一時的再生開始オフセット変更である。あるいは流れは、コントローラの対象となるモータ、対象となるアクチュエータ、鳴動モータ、または鳴動アクチュエータにおいて経験されるハプティック効果の持続時間を変更するための、持続時間変更であってもよい。例えば流れは、ハプティック再生がまず左対象となるモータまたは対象となるアクチュエータ上で開始し、その後続いて中鳴動モータまたは鳴動アクチュエータ上で開始し、その後さらに右対象となるモータまたは対象となるアクチュエータ上で開始するように、定義されることができる。この例において、コントローラのユーザは、まずコントローラの左、その後コントローラの中央、その後コントローラの右における全体的なトリガハプティック効果のハプティック再生を経験するので、全体的なトリガハプティック効果の流れは左から右である。流れは左から右またはその逆、前から後ろまたはその逆、あるいはこれら2つの組み合わせであってもよい。このように、流れはハプティック再生ベクトルを定義できる。流れ1510は、ユーザインターフェース1500の中で水平に、垂直に、または斜めに配置されることができる矢印として、ユーザインターフェース1500内で視覚化されることができる。このように、流れ1510と相互作用することにより、ユーザはハプティック再生をずらすために、コントローラの様々なモータまたはアクチュエータに適用される1つ以上の遅延を変更できる。
【0074】
ユーザインターフェース1500は、方向1520をさらに含む。方向1520は、ユーザがトリガハプティック効果の方向をプログラムで変更できるようにする。方向は、コントローラの様々なモータまたはアクチュエータの間の前後および/または左右バイアス(またはバランス)を強調するための、マグニチュード(または強度)変更である。あるいは、方向は周波数変更であってもよい。例えば、方向は、トリガハプティック効果のハプティック再生がコントローラの右において最も強くなるように、定義されることができる。方向1520は、2つの軸によって定義された二次元グリッドまたは空間内の点として、ユーザインターフェース1500内で視覚化されることができる。このように、方向1520と相互作用することにより、ユーザは左右および/または前後バイアス(またはバランス)を強調するために、様々なモータまたはアクチュエータに適用されるマグニチュード(または強度)を変更できる。
【0075】
ユーザインターフェース1500は、強度1530をさらに含む。強度1530は、再生の前または最中に、ユーザが全体的なトリガハプティック効果のマグニチュード(magnitude)(または強度(strength))をプログラムで変更できるようにする。強度1530は、スライダとしてユーザインターフェース1500内で視覚化されることができる。このように、強度1530と相互作用することにより、ユーザはトリガハプティック効果の全体的なマグニチュード(または強度)を変更できる。ユーザインターフェース1500は、再生速度1540をさらに含む。再生速度1540は、トリガハプティック効果を再生するためにシステム(
図1のシステム10など)がトリガハプティック効果のトリガハプティック効果定義を処理する再生速度または率を、ユーザがプログラムで変更できるようにする。再生速度1540は、スライダとしてユーザインターフェース1500内で視覚化されることができる。このように、再生速度1540と相互作用することにより、ユーザはトリガハプティック効果の再生速度または率を変更できる。ユーザインターフェース1500は、ループ1550をさらに含む。ループ1550は、トリガハプティック効果の再生がループになっているか否かをユーザがプログラムで変更できるようにする。ループ1550は、ボタンとしてユーザインターフェース1500内で視覚化されることができる。このように、ループ1550と相互作用することにより、ユーザはトリガハプティック効果のループ化を制御できる。空間化エンジンのさらなる詳細はさらに、
図32および
図33と併せて、以下により詳細に記載される。
【0076】
図16は、本発明の実施形態に係る、トリガハプティック効果API1600のアーキテクチャ図を示す。トリガハプティック効果API1600は、コントローラのユーザ入力エレメントにおいて、トリガハプティック効果などのハプティック効果を開発者が再生できるようにする、コンピュータ可読機能またはルーチンのセットを含む。トリガハプティック効果APIは、運転/レース、武器/戦争、およびスポーツ(例えばサッカー、フットボール、野球、ゴルフ、またはホッケー)など、多くの異なるゲームジャンルのための所定のハプティック効果定義を包含する広範なハプティック効果ライブラリを含むことができる。一実施形態において、トリガハプティック効果APIはC++クラスのセットを含むことができ、クライアントアプリケーションにおいて停止される可能性のある、例外および実行時型情報などの拡張機能を使用する必要はない。代替実施形態において、トリガハプティック効果APIは、C、Java(登録商標)、またはC#など、その他の言語結合を使用できる。さらに、トリガハプティック効果APIは、Unity3D(商標)およびMarmalade(商標)など、特定のゲームジャンルのためのプラグインを提供できる。
【0077】
実施形態によれば、トリガハプティック効果API1600はアプリケーション1610によってアクセス可能であり、これはシステム(
図1のシステム10など)上で実行されることができる、ゲームアプリケーションなどのソフトウェアアプリケーションである。さらに、トリガハプティック効果API1600は効果ライブラリ1620にアクセスでき、効果ライブラリ1620は、ハプティック効果定義1621(
図16において「効果1621」とされる)など、1つ以上のハプティック効果定義を含むことができる。先に記載されたように、ハプティック効果定義の一例はトリガハプティック効果定義である。さらに、トリガハプティック効果API1600は、装置定義1601(
図16において「装置1601」とされる)など、1つ以上の装置定義を含む。装置定義は、コントローラ、ゲームパッド、またはその他の周辺機器などのハードウェア装置を定義する装置データを含み、ここでハプティック効果が再生されることになる。トリガハプティック効果API1600は、タイマー定義1602(
図16において「タイマー1602」とされる)など、1つ以上のタイマー定義をさらに含む。タイマー定義は、特定のハードウェア装置に登録された全てのハプティック効果定義が更新されるのにかかる時間を定義する、タイマーデータを含む。トリガハプティック効果API1600は、トリガ定義1603(
図16において「トリガ1603」とされる)をさらに含む。トリガ定義は、特定のハードウェア装置のトリガを定義する、トリガデータを含む。トリガハプティック効果API1600は、プロトコル定義1604(
図16において「プロトコル1604」とされる)をさらに含む。プロトコル定義は、特定のハードウェア装置と通信するためにトリガハプティック効果API1600によって使用される通信インターフェースのプロトコルを記述する。プロトコル定義1604を使用して、トリガハプティック効果API1600は装置ファームウェア1630(
図16において「FW1630」とされる)と通信でき、装置ファームウェア1630は、特定のハードウェア装置のためのファームウェアである。装置ファームウェア1630を使用して、トリガハプティック効果API1600はさらにハードウェア装置1640(
図16において「HW1640」とされる)と通信でき、ハードウェア装置1640は特定のハードウェア装置である。
【0078】
一実施形態において、アプリケーション1610は、ハプティック効果が再生されることになる対象となるハードウェア装置(すなわち、HW1640)を取得するために、装置定義1601にアクセスできる。装置定義1601にアクセスすることにより、アプリケーション1610はタイマー定義1602、トリガ定義1603、およびプロトコル定義1604に、さらにアクセスできる。アプリケーション1610は、ハプティック効果をインスタンス作成するために、効果ライブラリ1620からのハプティック効果定義1621にさらにアクセスできる。アプリケーション1610はさらに、トリガハプティック効果API1600およびFW1630を介して対象となるハードウェア装置(すなわち、HW1640)に命令を送信することによって、対象となるハードウェア装置(すなわち、HW1640)においてハプティック効果を再生させることができる。
【0079】
図17は、本発明の実施形態に係る、トリガハプティック効果を生成するファームウェアのアーキテクチャ図を示す。アーキテクチャは通信インターフェース1700を含む。通信インターフェース1700は、トリガハプティック効果API(
図16のトリガハプティック効果API1600など)と、コントローラまたはゲームパッドなどの周辺機器のためのファームウェアとの間の通信を提供する。アーキテクチャは、効果スロット1710をさらに含む。効果スロットはハプティック効果のタイプを定義し、以下のパラメータを含むことができる:マグニチュード(または強度);周波数(または周期);エンベロープ(例えば攻撃レベル、攻撃時間、フェードレベル、およびフェード時間);アクチュエータ(例えば、「鳴動(rumble)」または「指向性(directional)」など、特定のアクチュエータまたは仮想アクチュエータ);方向(例えば1つまたは2つの角度、あるいは二次元ベクトル);距離(例えば、ハプティック効果全体をモジュール化するために使用可能);開始/終了ハプティック効果定義(例えば挿入されるハプティック効果を作り出すために挿入されることができる、開始ハプティック効果定義および終了ハプティック効果定義)。特定のタイプの効果スロット1710は、トリガされた効果スロット1720である。トリガされた効果スロットは、トリガハプティック効果のタイプを定義し、効果スロットの上記パラメータに加えて、以下の追加パラメータを含むことができる:トリガボタン(例えばなし、左、または右);トリガ開始/停止点、および方向(例えば、特定方向へ移動中にトリガボタンが特定位置に到達したときにトリガハプティック効果を開始/停止する);ならびにトリガ終了点(例えば、トリガハプティック効果の再生中に開始トリガハプティック効果定義と終了トリガハプティック定義との間に挿入する)。
【0080】
アーキテクチャは、トリガエンジン1730をさらに含む。先に記載されたように、トリガエンジン1730はトリガハプティック効果定義を受信でき、コントローラのトリガの位置および/または範囲など、トリガデータに基づいてトリガハプティック効果定義を変更できる。アーキテクチャは、トリガ・ハードウェア・インターフェース1740(
図17において「トリガHWインターフェース1740」とされる)をさらに含む。トリガ・ハードウェア・インターフェース1740は、トリガエンジン1730がコントローラまたはゲームパッドなどの周辺機器からトリガデータを受信できるようにする、通信インターフェースである。アーキテクチャは、空間化エンジン1750をさらに含む。先に記載されたように、空間化エンジン1750は、トリガハプティック効果などのハプティック効果がコントローラの1つ以上の対象となるモータ、対象となるアクチュエータ、鳴動モータ、または鳴動アクチュエータのためにスケーリングされるように、トリガハプティック効果定義などのハプティック効果定義を変更できる。アーキテクチャは、基本効果レンダリングエンジン1760をさらに含む。基本効果レンダリングエンジン1760は、トリガハプティック効果定義などのハプティック効果定義に基づいて、モータまたはアクチュエータのためにトリガハプティック効果などのハプティック効果を表現する。アーキテクチャは、アクチュエータ・ハードウェア・インターフェース1770(
図17において「アクチュエータHWインターフェース1770」とされる)をさらに含む。アクチュエータ・ハードウェア・インターフェース1770は、モータまたはアクチュエータにハプティック効果を再生させるために、表現されたハプティック効果内に含まれるハプティックデータを基本効果レンダリングエンジン1760にモータまたはアクチュエータまで送信させる、通信インターフェースである。
【0081】
図18は、本発明の実施形態に係る、コントローラのための例示的な指向性モデルを示す。実施形態によれば、コントローラは鳴動モータ1810および1820ならびに対象となるモータ1830および1840を含み、対象となるモータ1830および1840は、コントローラのトリガに各々動作可能に結合されている。鳴動モータ1810および1820は、補完的な振動範囲を有することができる。さらに、対象となるモータ1830および1840は、より空間的に隔離された高周波振動を生成できる。左右空間化ハプティック効果のために鳴動モータ1810および1820を使用することで非対称振動経験(すなわち、ほとんどのユーザにとってあまり空間的に分離されていない異なる周波数成分)を提供することは、理解され得る。このためハプティック効果定義は、左前、右前、および無指向性チャネルを含むことができる。さらに、前後指向性は、鳴動モータ1810および1820から対象となるモータ1830および1840まで振動を推移させることによって強化されることができる。このため鳴動モータ1810および1820は、無指向性低周波ハプティック効果のために使用されることができる。鳴動モータ1810および1820はまた、前後指向性のために任意に使用されることもできる。さらに、対象となるモータ1830および1840は、左右指向性のために使用されることもできる。
【0082】
図19は、本発明の実施形態に係る、トリガハプティック効果ファームウェアスタックのブロック図を示す。トリガハプティック効果ファームウェアスタックは、
図5の周辺ファームウェア510などの、周辺機器のためのファームウェア用であってもよい。トリガハプティック効果ファームウェアスタックは、トリガコントローラハプティックAPI1900を含むことができる。トリガコントローラハプティックAPI1900は、トリガなどのコントローラのユーザ入力エレメントにおけるトリガハプティック効果などのハプティック効果をファームウェアが再生できるようにする、コンピュータ可読機能またはルーチンのセットを含む。トリガコントローラハプティックAPI1900は、基本的な効果定義1901を含むことができる。効果定義1901は、トリガハプティック効果定義などの1つ以上のハプティック効果定義を含む。トリガコントローラハプティックAPI1900は、効果ライブラリコード1902をさらに含むことができる。効果ライブラリコード1902は、効果定義1901内に記憶されたハプティック効果定義に基づいてハプティック効果をインスタンス作成できる、コンピュータ可読命令のセットを含む。効果ライブラリコード1902は、ハプティック効果定義に基づくハプティック効果のインスタンス作成の一部として、1つ以上の効果専用パラメータを提供できる。トリガコントローラハプティックAPI1900は、指向性エンジン1903をさらに含むことができる。指向性エンジン1903は、トリガハプティック効果などのハプティック効果がコントローラの1つ以上の対象となるモータ、対象となるアクチュエータ、鳴動モータ、または鳴動アクチュエータのためにスケーリングされるように、トリガハプティック効果定義などのハプティック効果定義を変更できる。トリガコントローラハプティックAPI1900は、エミュレータ1904をさらに含む。エミュレータ1904は、トリガハプティック効果定義などのハプティック効果定義に基づいて、コントローラの1つ以上のモータまたはアクチュエータ(例えば4つのモータ)のために、トリガハプティック効果などのハプティック効果を表現する。トリガコントローラハプティックAPI1900はさらに、コントローラAPI1910を使用して、表現されたハプティック効果をコントローラ1920に送信する。
【0083】
図20は、本発明の実施形態に係る、コントローラのトリガにおいて経験されるトリガハプティック効果を提供するシステム(
図1のシステム10など)のアーキテクチャ図を示す。システムは、アプリケーション2000(
図20において「app2000」とされる)を含む。アプリケーション2000は、システム上で実行されることができる、ゲームアプリケーションなどのソフトウェアアプリケーションである。システムは、トリガハプティック効果API2010(
図20において「API2010」とされる)をさらに含む。一実施形態において、トリガハプティック効果API2010は、
図19のトリガコントローラハプティックAPI1900と同一である。実施形態によれば、トリガハプティック効果API2010は、全てのコントローラ、ゲームパッド、またはその他の周辺機器のための単一のAPIであってもよい。このためトリガハプティック効果API2010は、コントローラ、ゲームパッド、およびその他の周辺機器の間の差を抽出できる。さらに、トリガハプティック効果API2010は、1つ以上の内蔵ハプティック効果定義を含む内蔵効果ライブラリを含むことができる。内蔵ハプティック効果定義は、対応するハプティック効果の1つ以上の性質を封じ込めたデータ構造である。
【0084】
あるタイプの内蔵ハプティック効果定義は、静的ハプティック効果定義2011(
図20において「静的2011」とされる)である。静的ハプティック効果定義2011は、経時的に変化しない静的ハプティック効果を生成する、1つ以上の周期的またはマグニチュード掃引効果定義のセットである。例としては、自動車事故、ロケット発射装置、およびユーザインターフェース確認を含む。静的ハプティック効果定義2011は、ゲーム内のイベントに基づいて、アプリケーション2000によって直接呼び出されることができる。静的ハプティック効果定義2011によって生成される静的ハプティック効果は、トリガハプティック効果として使用されることができる。
【0085】
別のタイプの内蔵ハプティック効果定義は、動的ハプティック効果定義2012(
図20において「動的2012」とされる)である。動的ハプティック効果定義2012は、1つ以上のパラメータ2014を入力として受け付け、連続的に変化するハプティック効果(すなわち、動的ハプティック効果)を生成する、アルゴリズムである。例としては、エンジンの毎分回転数(RPM)、スノーボード、および爆発を含む。静的ハプティック効果定義は、ベクトル(すなわち、距離および方向)、および1つ以上のボタンまたは軸の入力位置/状態)を含むことによって、動的ハプティック効果定義に変えられることができる。動的ハプティック効果は、アプリケーション2000から渡されることができるゲーム変数に基づいてもよい。動的ハプティック効果はまた、トリガ入力などのコントローラ入力に基づいてもよい。
【0086】
別のタイプの内蔵ハプティック効果定義は、直接制御ハプティック効果定義2013(
図20において「直接制御2013」とされる)である。直接制御シナリオでは、直接制御ハプティック効果定義2013は、コア効果ライブラリ2020内を移動する際に直接制御ハプティック効果定義2013にほとんど処理を行わずに、出力装置への直接表現を可能にするような方法で、定義されることができる。このシナリオにおいて、直接制御ハプティック効果定義2013は、出力装置上の多数の出力アクチュエータに対応し、これらを正確にマッピングする、多数の異なるデータチャネルを含むことができる。あるいは、直接制御ハプティック効果定義2013は、出力装置上で利用可能な出力アクチュエータの数を超える多数の異なるデータチャネルを包含でき、コア効果ライブラリ2020は多数のチャネルを選択でき、各チャネルは出力装置内の特定のアクチュエータを最もよくマッピングするように選択され、コア効果ライブラリ2020はその後、選択されたチャネルのデータをマッピングされたアクチュエータに送信できる。
【0087】
システムは、コア効果ライブラリ2020(
図20において「コア2020」とされる)をさらに含む。コア効果ライブラリ2020は、1つ以上のハプティック効果定義2021(
図20において「FX2021」とされる)を含む。ハプティック効果定義2021は、トリガハプティック効果定義2022(
図20において「トリガ効果2022」とされる)を含むことができる。ハプティック効果定義の例は、爆発ハプティック効果定義、RPMハプティック効果定義、スノーボードハプティック効果定義、およびその他のハプティック効果定義を含むことができる。コア効果ライブラリは、ミキサ2023(
図20において「ミキサ/優先順位付け2023」とされる)をさらに含む。ミキサ2023は、1つ以上のハプティック効果定義を混ぜるかまたは優先順位を付けることができる。
【0088】
システムは、低レベルAPI2030をさらに含む。低レベルAPI2030は、ハプティック効果定義に基づいてハプティック効果を再生するための命令を受信でき、命令を、コントローラ2040によって解釈されることができる低レベル命令に変換できる。低レベルAPI2030の一例はマイクロソフト社によるXbox(登録商標)API2031であり、コントローラ2040の一例はマイクロソフト社によるXbox(登録商標)コントローラ2041である。
【0089】
図21は、本発明の実施形態に係る、トリガハプティック効果をプレビューおよび変更するための例示的なユーザインターフェース2100を示す。システム(
図1のシステム10など)は、トリガハプティック効果プレビューおよび変更ツールとして、ユーザインターフェース2100をユーザに提供できる。実施形態によれば、ユーザインターフェース2100は、オープン効果2110を含む。オープン効果2110は、選択可能なトリガハプティック効果プリセットなどの1つ以上のハプティック効果プリセットを表示できる。ユーザインターフェース2100は、効果ライブラリ2120をさらに含む。効果ライブラリ2120は、ハプティック効果ライブラリ内に含まれる、トリガハプティック効果プリセットなどの1つ以上のハプティック効果プリセットを表示できる。効果ライブラリ2120は、カテゴリごとに1つ以上のハプティック効果プリセットを表示できる。
【0090】
ユーザインターフェース2100は、タイムライン2130をさらに含む。実施形態によれば、ユーザはオープン効果2110内に表示されたハプティック効果プリセットを選択でき、タイムライン2130は、選択されたハプティック効果プリセットによって表されるハプティック効果定義の図形描写を表示できる。図示される実施形態において、ハプティック効果定義は4つのチャネルを含み、各チャネルは特定の出力(例えば、(1)右トリガ用の対象となるモータまたはアクチュエータ;(2)左トリガ用の対象となるモータまたはアクチュエータ;(3)右鳴動モータまたはアクチュエータ;および(4)左鳴動モータまたはアクチュエータ)のためにマッピングされるハプティックデータを含み、各チャネルはタイムラインに沿って表示される。しかしながら、別の実施形態において、ハプティック効果定義はいくつのチャネルでも含むことができる。さらに、ユーザは、タイムライン2130内の1つ以上の表示要素と相互作用することによって、1つ以上のチャネルの選択されたハプティック効果定義を変更できる。1つ以上のチャネルのハプティック効果定義を変更することによって、対応するハプティック効果の1つ以上の性質を変更できる。
【0091】
ユーザインターフェース2100は、効果特性2140をさらに含む。効果特性2140は、トリガエンジン(
図5のトリガエンジン506など)によって生成されるトリガハプティック効果を視覚化できる、編集可能視覚領域である。先に記載されたように、トリガエンジンはトリガハプティック効果定義を受信でき、コントローラのトリガの位置および/または範囲に基づいてトリガハプティック効果定義を変更できる。このように効果特性2140は、トリガの実際の位置を含む、トリガの視覚化映像を表示できる。さらに、効果特性2140は、トリガハプティック効果定義のために定義されたトリガの位置および/または範囲を表示でき、位置および/または範囲はトリガエンジンにトリガハプティック効果定義を変更させることができる。ユーザは、トリガハプティック効果定義のために定義されたトリガの位置および/または範囲を編集できる。さらに、効果特性2140はコントローラのためのトリガのリストを表示できるので、ユーザはトリガハプティック効果定義のために定義されたトリガを編集できる。さらにまた、効果特性2140はトリガハプティック効果定義のマグニチュード(または強度)を表示でき、ユーザはマグニチュード(または強度)を変更できる。
【0092】
ユーザインターフェース2100は、空間化2150をさらに含む。空間化2150は、元々トリガエンジンによって生成され、空間化エンジン(
図5の空間化エンジン507など)によってさらに変更されたトリガハプティック効果を視覚化できる、編集可能視覚領域である。先に記載されたように、空間化エンジンは、トリガハプティック効果がコントローラの1つ以上の対象となるモータ、対象となるアクチュエータ、鳴動(鳴動)モータ、または鳴動アクチュエータのためにスケーリングされるように、トリガハプティック効果定義を変更できる。このため、空間化2150はコントローラの視覚化映像を表示できる。空間化2150はさらに、コントローラの各対象となるモータ、対象となるアクチュエータ、鳴動モータ、または鳴動アクチュエータにおいて経験されるトリガハプティック効果の視覚化映像を表示できる。ユーザは、コントローラの各対象となるモータ、対象となるアクチュエータ、鳴動モータ、または鳴動アクチュエータにおいて経験されるトリガハプティック効果のスケーリングを編集でき、トリガハプティック効果の発生源のスケーリングを編集することもできる。
【0093】
図22は、本発明の実施形態に係る、オーディオ信号をトリガハプティック効果に変換するための例示的なユーザインターフェース2200を示す。実施形態によれば、ハプティック効果設計は、ユーザインターフェース2200に組み込まれるオーディオ設計プロセスの一部になることができる。より具体的には、ユーザインターフェース2200内に表示されるオーディオ効果定義3〜8はハプティック効果定義に変換されることができ、ここでハプティック効果定義はエクスポートされることができる。
【0094】
図23は、本発明の実施形態に係る、物体パラメータに基づいてトリガハプティック効果を作り出すための例示的なユーザインターフェース2300を示す。実施形態によれば、ユーザインターフェース2300は、ハプティック効果定義の名前を表示する、ハプティック効果定義名2310を含む。ユーザインターフェース2300は、ハプティック効果定義の1つ以上の物体パラメータを表示する、物体パラメータ2320をさらに含む。実施形態に示される例示的な物体パラメータは:タイプ;発砲率;スタイル;強度(またはマグニチュード);周波数;および音響効果を含む。ユーザインターフェース2300は、トリガスローまたはトリガ起動など、ハプティック効果定義のトリガ局面をユーザが変更できるようにする、トリガ変更2330をさらに含む。ユーザインターフェース2300は、ランダム強度(またはマグニチュード);最大強度(またはマグニチュード;あるいは最小強度(またはマグニチュード)などのハプティック効果定義の強度(またはマグニチュード)局面をユーザが変更できるようにする、強度(またはマグニチュード)変更2340をさらに含む。ユーザインターフェース2300は、ランダム化長さ;最小持続時間;または最大持続時間など、ハプティック効果定義の持続時間局面をユーザが変更できるようにする、持続時間変更2350をさらに含む。ユーザインターフェース2300は、ハプティック効果定義に基づいてユーザがハプティック効果を視覚化できるようにする、ハプティック効果視覚化2360をさらに含む。ユーザインターフェース2300は、ユーザが変更されたハプティック効果定義を保存できるようにする、保存(save)2370をさらに含む。
【0095】
図24は、本発明の実施形態に係る、トリガハプティック効果をプレビューするシステム(
図1のシステム10など)のアーキテクチャ図を示す。システムはユーザインターフェース2400を含む。一実施形態において、ユーザインターフェース2400はQtユーザインターフェースであり、Qtは、クロスプラットフォームアプリケーションおよびユーザ・インターフェース・フレームワークである。システムはアダプタ層2410をさらに含む。システムはトリガAPI層2420をさらに含む。システムはトリガファームウェア層2430をさらに含む。
【0096】
ユーザインターフェース2400はプロッタ2401を含む。プロッタ2401はユーザによって指定されたハプティック効果定義を入力として受け取り、アダプタ層2410を通じてトリガAPI層2420に、ハプティック効果定義内に含まれるハプティックデータを送信する。トリガAPI層2420は、プロッタ2401がユーザインターフェース2400内に表示する個々のチャネルデータを送り返す。レンダー2402はコントローラGUI2403からの入力を受け取り、ハプティックプレーヤ・レンダー・ループを開始する。入力はアダプタ層2410を通され、これはトリガAPI層2420とのコールバック設定、およびコントローラ2414から送信されるリレーコントローラ入力2413(ボタンおよびトリガ入力など)を有する。アダプタ層2410はまた、レンダーループがユーザインターフェース2400を更新するために起動している間に、プロッタ2401と通信もできる。コントローラGUI2403はまた、コントローラセレクタ2412を用いてコントローラ2414を選択することも可能であり、何が接続されているかを示すことができる。コントローラGUI2403はまた、トリガ起動点を設定することもできる。さらに、インポータ/エクスポータ2404は、入力オーディオファイルを受け取って、これらをハプティックファイルに変換できる。一実施形態において、オーディオファイルはWAVファイルである。さらに、アダプタ層2410は、ユーザインターフェース2400内に埋め込まれることができるか、または個別のライブラリであってもよい。アダプタ層2410が個別のライブラリであるとき、アダプタ層2410は個別のC++ライブラリであってもよい。
【0097】
図25は、本発明の実施形態に係る、トリガハプティック効果を生成するシステム(
図1のシステム10など)のアーキテクチャ図を示す。システムは、ゲームアプリケーション2500(
図25において「ゲーム2500」とされる)を含む。ゲームアプリケーション2500は、ソフトウェアゲーム、またはその他のタイプのソフトウェアアプリケーションに従って、コントローラ、ゲームパッド、またはその他の周辺機器によって提供された入力を管理する、コンピュータ可読命令のセットを含む。一実施形態において、ゲームアプリケーション2500はハプティック効果ライブラリ2501を含み、ハプティック効果ライブラリ2501は1つ以上のハプティック効果定義を含む。
【0098】
システムは、ハプティックエンジン2510をさらに含む。ハプティックエンジン2510は、ハプティック効果の再生を実行するため、およびゲームアプリケーション2500にハプティック効果を加えるために、低レベルAPIを利用できる、高レベルAPIである。ハプティックエンジン2510は、ハプティック効果をロード、開始、停止および表現することができる。ハプティックエンジン2510は、ハプティック効果を解析/その情報を取得するために、ハプティック効果パーサ2520とインターフェース接続できる。ハプティックエンジン2510は、効果を開始または停止してミキサバッファを変更するために、ハプティックミキサ2530とさらにインターフェース接続できる。ハプティックエンジン2510は、コントローラ、ゲームパッド、またはその他の周辺機器の装置ハンドルを取得し、これらにおけるハプティック効果を表現するために、ハプティック装置ハンドラ2550とさらにインターフェース接続できる。
【0099】
システムは、ハプティック効果パーサ2520をさらに含む。ハプティック効果パーサ2520は、メモリにハプティック効果をロードし、該ハプティック効果のフォーマットを検証し、サイズ、持続時間、およびハプティックデータなどのハプティック効果に関する情報を取得できる、APIを含む。システムは、ハプティックミキサ2530をさらに含む。ハプティックミキサ2530は、複数のハプティック効果の再生を同時に支援する。システムは、ハプティック装置ハンドラ2540をさらに含む。ハプティック装置ハンドラ2540は、コントローラ、ゲームパッド、またはその他の周辺機器との通信を開始および管理できる。ハプティック装置ハンドラ2540は、ユニバーサル・シリアル・バス(USB)通信層とインターフェース接続して、コントローラ、ゲームパッド、またはその他の周辺機器の装置ハンドルを取得できる。ハプティック装置ハンドラ2540はさらに、ハプティック効果再生のために不可欠ないくつかの状態機械構造を初期化できる。
【0100】
システムは、トリガハプティックレポートハンドラ2550をさらに含む。トリガハプティックレポートハンドラ2550は、トリガ通信プロトコルにしたがって、ハプティックデータをUSB・HIDパケット内にパッケージできる。システムは、プラットフォーム補完USB・HIDライブラリ2560をさらに含む。プラットフォーム補完USB・HIDライブラリ2560は、USB・HIDおよびBluetooth(登録商標)HIDクラスのコントローラ、ゲームパッド、またはその他の周辺機器とインターフェース接続するために、1つ以上のコンピュータ可読ルーチンを含む。システムは、周辺ファームウェア2570(
図25において「ゲームパッドファームウェア2570」とされる)をさらに含む。周辺ファームウェア2570は、コントローラ、ゲームパッド、またはその他の周辺機器のためのファームウェアである。システムは、周辺入力リーダ2580(
図25において「ゲームパッド入力リーダ2580」とされる)をさらに含む。周辺入力リーダ2580は、コントローラ、ゲームパッド、またはその他の周辺機器によって送信された周辺入力を受信する。周辺入力リーダ2580はさらに、周辺入力を解釈して、ゲームアプリケーション2500に周辺入力を送信する。
【0101】
図26は、本発明の実施形態に係る、トリガハプティック効果を生成するファームウェアのアーキテクチャ図を示す。ファームウェアアーキテクチャは、ファームウェアをモジュール式にでき、ハードウェア独立コンポーネントをハードウェア依存コンポーネントから分離でき、あるマイクロコンピュータユニットから別のものへの移植を容易にできる。ハードウェア独立層は、機能ポインタによってハードウェア依存層と通信できる。ハードウェア依存層は、実装テンプレートに基づいて、別のマイクロコントローラユニットに移植されることができる。全てのハードウェア依存ルーチンは、異なるポート/ボタン定義を有するハードウェアの内部観察を提供できる基板構成ファイルと、インターフェース接続できる。
【0102】
図26は、ホストソフトウェア2600(
図26において「ホストSW2600」とされる)を含む。ホストソフトウェア2600は、ソフトウェアゲーム、またはその他のタイプのソフトウェアアプリケーションに従って、コントローラ、ゲームパッド、またはその他の周辺機器によって提供される入力を管理する、コンピュータ可読命令のセットを含む。ホストソフトウェア2600は、ソフトウェア空間内にあってもよい。
図26は、USB・HIDハンドラ2605をさらに含む。USB・HIDハンドラ2605は、コントローラ、ゲームパッド、またはその他の周辺機器とホストソフトウェア2600との間の全ての通信のための、主要入力点であってもよい。USB・HIDハンドラ2605は、トリガ通信プロトコルにしたがって、ハプティックデータなどのデータをエンコード/デコードするための、1つ以上のコンピュータ可読機能またはルーチンを含むことができる。USB・HIDハンドラ2605はまた、USB通信を取り扱うための、全てのUSB記述子およびルーチンを記憶することもできる。USB・HIDハンドラ2605は、ファームウェア空間内にあってもよい。
【0103】
図26は、通信インターフェース2610をさらに含む。通信インターフェース2610は、入ってくるパケットを解析し、適切な動作を行うためにコマンドハンドラ2615を呼び出す。
図26は、コマンドハンドラ2615をさらに含む。コマンドハンドラ2615は、アクチュエータ上でのハプティック再生を支援するトリガプロトコルによって支援されるコマンドを取り扱うために、1つ以上のコンピュータ可読機能またはルーチンを含むことができる。
図26は、ハプティック駆動ハンドラ2620をさらに含む。ハプティック駆動ハンドラ2620は、ハプティック再生エンジンの状態を更新でき、アクチュエータの駆動値を更新し、アクチュエータを制御する。ハプティック駆動ハンドラ2620は、機能ポインタ機構によって、ハードウェア依存性のタイマーハンドラ2635およびアクチュエータ制御2625とインターフェース接続できる。通信インターフェース2610、コマンドハンドラ2615、およびハプティック駆動ハンドラ2620は、全てファームウェア空間内にあってもよい。
【0104】
図26は、アクチュエータ制御2625(
図26において「アクチュエータ駆動制御2625」とされる)をさらに含む。アクチュエータ制御2625は、アクチュエータを制御して駆動値を設定できる。アクチュエータ制御2625は、パルス幅変調生成ユニットとインターフェース接続するための、およびアクチュエータ・ドライバ・チップとインターフェース接続するための、1つ以上のコンピュータ可読機能またはルーチンを含むことができる。
図26は、コントローラ入力リーダ2630(
図26において「ゲームパッド入力リーダ2630」とされる)をさらに含む。コントローラ入力リーダ2630は、コントローラ、ゲームパッド、またはその他の周辺機器の異なる入力の状態を取得するため、入力をパッケージするため、およびホストソフトウェア2600にさらに送信されるために入力を通信インターフェース2610に送信するため、プラットフォーム依存性の入力リーダ2640とインターフェース接続できる。
図26は、タイマーハンドラ2635をさらに含む。タイマーハンドラ2635は、アクチュエータの駆動値を更新するルーチンを呼び出すために周期割り込みを生成する役割を担うタイマーを制御できる、ハードウェア依存層である。
図26は、入力リーダ2640をさらに含む。入力リーダ2640は、全てのポテンショメータの状態、およびコントローラ、ゲームパッド、またはその他の周辺機器のデジタル入力を取得できる、ハードウェア依存層である。
図26は、周辺およびインターフェースドライバ2650をさらに含む。周辺およびインターフェースドライバ2650は、通信インターフェースおよびハードウェア周辺機器を制御するための、1つ以上のコンピュータ可読機能またはルーチンを含むことができる。アクチュエータ制御2625、コントローラ入力リーダ2630、タイマーハンドラ2635、入力リーダ2640、および周辺およびインターフェースドライバ2650は、全てファームウェア空間内にあってもよい。
【0105】
図26はマイクロコントローラユニット2660をさらに含み、マイクロコントローラユニット2660はコンピュータ処理ユニット2661、USB2662、割り込みコントローラ2663、タイマー周辺機器2664、およびその他の周辺機器2665などのコンポーネントを含むことができる。これらのコンポーネントの機能は、当業者にとって周知である。
図26は、コントローラハードウェア2670(
図26において「ゲームパッドハードウェア2670」とされる)をさらに含む。コントローラハードウェア2670の機能もまた、当業者にとって周知である。マイクロコントローラユニット2660、およびコントローラハードウェア2670は、全てファームウェア空間内にあってもよい。さらに、通信インターフェース2610、コマンドハンドラ2615、ハプティック駆動ハンドラ2625、およびコントローラ入力リーダ2630は全てハードウェア独立コンポーネントであってもよく、その一方でUSB・HIDハンドラ2605、アクチュエータ制御2625、タイマーハンドラ2635、入力リーダ2640、周辺およびインターフェースドライバ2650、マイクロコントローラユニット2660、およびコントローラハードウェア2670は全てハードウェア依存コンポーネントであってもよい。
【0106】
一実施形態において、コントローラ、ゲームパッド、またはその他の周辺機器は、ハプティックデータを伝達するため、および個々のモータまたはアクチュエータを駆動するための、カスタマイズされたプロトコルを有することができる。したがって、オーディオオーサリングコンポーネントからオーディオ効果定義として作成されたハプティック効果を含むオーディオファイルを受信し、オーディオファイル内に含まれるオーディオデータをコントローラ、ゲームパッド、またはその他の周辺機器に送信する、オーディオドライバが提供されてもよい。一実施形態において、オーディオオーサリングコンポーネントは、Avid Technology,Inc.による「Pro Tools(登録商標)」製品であってもよい。オーディオドライバは、起動プロセスの間にロードされることができる。オーディオドライバは、コントローラ、ゲームパッド、またはその他の周辺機器内の全てのモータまたはアクチュエータの使用のためのハプティック効果定義を可能にするため、必要な数のオーディオチャネルを曝すことができる。オーディオドライバはさらにユーザ空間内で作業でき、全てのユーザ空間オーディオ編集/再生アプリケーションにアクセスできてもよい。オーディオドライバはさらに、オーディオオーサリングコンポーネントがコントローラ、ゲームパッド、またはその他の周辺機器に送信したオーディオデータを読み取ることができる。オーディオドライバはさらに、提示されているオーディオデータに対して必要な処理を実行でき、オーディオデータをアクチュエータ駆動値などのハプティックデータに変換できる。オーディオドライバはさらに、通信インターフェースを通じて、ハプティックデータをコントローラ、ゲームパッド、またはその他の周辺機器に通信できる。
【0107】
実施形態によれば、コントローラ、ゲームパッド、またはその他の周辺機器は、4つのアクチュエータを含むことができる。2つのアクチュエータは、トリガ上のハプティックフィードバックに影響を及ぼすトリガアクチュエータとして使用されることができる。トリガアクチュエータは双方向性であってもよい。プッシュおよびプルの2種類の方向イベントが、トリガアクチュエータによって起こり得る。プッシュおよびプル方向は、トリガ上のユーザの指に対するものであってもよい。他の2つのアクチュエータは、コントローラ、ゲームパッド、またはその他の周辺機器の中の一般ハプティックフィードバックまたは鳴動フィードバックに影響を及ぼす鳴動アクチュエータとして、使用されることができる。鳴動アクチュエータは、一方向性であってもよい。より具体的には、鳴動アクチュエータは、時計回り方向または反時計回り方向のいずれかに回転できるが、しかし両方向には回転できない。運動の方向は、コントローラ、および/またはコントローラの駆動エレクトロニクスに依存できる。
【0108】
この実施形態において、オーディオドライバのために以下のチャネルレイアウトが選択されることができる。
【0110】
一実施形態において、16ビットPCMのために選択されたオーディオフォーマットは、44.1KHzであってもよい。オーディオドライバは、オーディオオーサリングコンポーネントからオーディオデータを受信し、オーディオデータをハプティックデータ(例えば駆動値)に変換し、ハプティックデータをコントローラに相応に通信できる。
【0111】
図27は、本発明の実施形態に係る、例示的なオーディオアーキテクチャを示す。オーディオアーキテクチャはアプリケーションレベルサービス2700を含む。アプリケーションレベルサービス2700は:オーディオキューサービス;オーディオユニット;システムオーディオ;オーディオファイル・ストリーム・サービス;オーディオファイル、変換器、およびコーデックサービス;OpenAL;音楽シーケンスサービス;またはコア・オーディオ・クロックなどのサービスを含むことができる。アプリケーションレベルサービス2700は、ハードウェア抽出層(HAL)2710と通信する。HAL2710の一例は、コア楽器デジタルインターフェース(MIDI)2711である。同様に、HAL2710は入出力(I/O)キット2720、ドライバ2730、およびハードウェア2740と通信する。I/Oキット2720、ドライバ2730、およびハードウェア2740は、カーネル空間内に存在する。アプリケーションレベルサービスがハードウェア2740に送信しようとするオーディオデータを受信するために、オーディオドライバはHAL2710へのプラグインを必要とする可能性があり、ここでプラグインはオーディオデータを受信してハードウェア2740にアクセスできる。オーディオドライバのプラグインは、アプリケーションレベルサービス2700からオーディオデータをリアルタイムで、またはほぼリアルタイムで受信でき、ハプティックデータ(例えば駆動値)にオーディオデータを変換してオーディオデータの5ミリ秒(ms)部分に対してデシメーションを実行できる。例示的なオーディオドライバはさらに、
図28と併せて以下により詳細に記載される。
【0112】
図28は、本発明の実施形態に係る、オーディオ効果をトリガハプティック効果に変換する例示的なオーディオドライバ2800(
図28において「ハプティックトリガドライバ2800」とされる)を示す。オーディオドライバ2800は、1つ以上のアプリケーションからオーディオデータ2805を受信する。オーディオデータは、4チャネルオーディオストリームまたは6チャネルオーディオストリームなどのインターリーブ多チャネルオーディオストリームであってもよい。その後、スプリッタ2815は、様々なチャネルのオーディオデータをそれぞれのチャネルバッファに分離する。さらに、オーディオハプティックデータ変換器2825は、各チャネルバッファのオーディオデータをハプティックデータに変換する。より具体的には、一実施形態において、オーディオハプティックデータ変換器2825は、オーディオデータの一部(例えば、5msのオーディオデータ)上のチャネルバッファでピーク検出アルゴリズムを実行し、各チャネルの間引き値アレイ内に値を追加する。オーディオハプティックデータ変換器2825はその後、以下の式に基づいて、個々のアクチュエータの駆動値を計算する:
トリガの駆動値:(プッシュチャネル間引き値−プルチャネル間引き値)→これを[0,255]にスケーリングする
鳴動の駆動値:(間引き値)→これを[128,255]にスケーリングする
【0113】
続いて、トリガ・プロトコル・パケット・マネージャ2835は、全てのアクチュエータ(例えば4つ全てのアクチュエータ)の駆動値を取得し、トリガ通信プロトコルにしたがって、USB・HIDパケットなどのデータパケットとして駆動値をパッケージする。さらに、XPCハンドラ2845は、トリガ・プロトコル・パケット・マネージャ2835からデータパケットを受信し、データパケットをXPCサービス2810に送信するが、これはバックグラウンドサービスである。2855において、XPCサービス2810はデータパケットを受信し、2865においてUSBインターフェースを通じてデータパケットを2865にコントローラ2820(
図28において「ハプティックトリガゲームパッド2820」とされる)に送信する。
【0114】
図29は、本発明の実施形態に係る、第2フォーマットでトリガハプティック効果を再生成する第1フォーマットでのトリガハプティック効果の生成を示す。実施形態によれば、異なるコントローラ、ゲームパッド、またはその他の周辺機器は異なるタイプのモータまたはアクチュエータを有することができ、これらはトリガにおいて異なるタイプのトリガハプティック効果を生成できる。例えば、モータまたはアクチュエータは、第1コントローラのためのトリガにおける運動感覚フィードバックを生じてもよく、その一方でモータまたはアクチュエータは、第2コントローラのためのトリガにおける振動触知フィードバックを生じてもよい。このため、トリガハプティック効果を第1フォーマットから第2フォーマットに変換する必要がある可能性がある。これは、下層のトリガハプティック効果定義を第1フォーマットから第2フォーマットに変換することによって、実現されることができる。トリガハプティック効果定義を変換することによって、トリガハプティック効果は、異なるコントローラにおいて同等のトリガハプティック効果を生成するハプティック効果定義と同等になるように、徐々に低下できる。
【0115】
図29は、トリガハプティック効果定義に基づくトリガハプティック効果2900を含む。トリガハプティック効果2900のためのトリガハプティック効果定義は、75msの持続時間にわたって100Hzの周波数のハプティック信号(すなわち、5msプッシュハプティック信号および5msギャップ)を略定義する。
図29に示されるように、トリガハプティック効果2900は、別のトリガハプティック効果定義に基づくトリガハプティック効果2910を再生成する。トリガハプティック効果2910のためのトリガハプティック効果定義は、75msの持続時間にわたっておよそ100Hzの周波数の一定のハプティック信号を定義する。このため、実施形態によれば、トリガハプティック効果2900およびトリガハプティック効果2910は「知覚的に等しく(perceptually equal)」、ここでユーザはトリガハプティック効果2900およびトリガハプティック効果2910の両方からの同一の、または略同一のハプティックフィードバックを経験し、「略同一のハプティックフィードバック(substantially identical haptic feedback)」は、再生成されたハプティック効果によって生じたハプティックフィードバックが元のハプティック効果によって生じたハプティックフィードバックと異なったとしても、元のハプティック効果によって生じたハプティックフィードバックと同一または類似の設計意図を実現するか、または別途同一のまたは類似の経験がなされる、再生成されたハプティック効果によって生成されるハプティックフィードバックである。
【0116】
図30は、本発明の実施形態に係る、第2フォーマットでトリガハプティック効果を再生成する第1フォーマットでのトリガハプティック効果の別の生成を示す。
図30は、トリガハプティック効果に基づくトリガハプティック効果3000を含む。
図30に示されるように、トリガハプティック効果3010はハプティック効果3000を再生成するが、トリガハプティック効果3010は別のハプティック効果定義に基づいている。トリガハプティック効果3000のためのトリガハプティック効果定義は、攻撃(すなわち立ち上がり)時間および減衰時間を定義する。トリガハプティック効果3010のためのトリガハプティック効果定義は、トリガハプティック効果3000の攻撃時間の長さについて、およびトリガハプティック効果3000の減衰時間の長さについて、より小さいマグニチュードを定義する。
【0117】
図31は、本発明の実施形態に係る、ハプティックトリガ制御モジュール(
図1のハプティックトリガ制御モジュール16など)の機能性のフロー図を示す。一実施形態において、
図31の機能性は、メモリまたはその他のコンピュータ可読または有形媒体に記憶されてプロセッサによって実行される、ソフトウェアによって実施される。別の実施形態において、機能性は、ハードウェア(例えば、特定用途向け集積回路(ASIC)、プログラマブル・ゲート・アレイ(PGA)、フィールド・プログラマブル・ゲート・アレイ(FPGA)など)、あるいはハードウェおよびソフトウェアの組み合わせによって、実行されてもよい。特定の実施形態において、機能性のうちのいくつかは省略されることができる。
【0118】
フローが開始して3110に進む。3110において、オーディオデータを含むオーディオ効果定義は、ハプティックデータを含むハプティック効果定義に変換される。一実施形態において、ハプティック効果定義は、周辺機器のユーザ入力エレメントにおいて経験されることができる、あるいは周辺機器において経験されることができる、ハプティック効果を定義できる。さらに、一実施形態において、ユーザ入力エレメントはトリガであってもよく、周辺機器はコントローラまたはゲームパッドであってもよい。フローはその後3120に進む。3120において、ハプティック効果定義が受信される。一実施形態において、ハプティック効果定義はトリガ効果定義であってもよい。さらに、実施形態において、ハプティック効果定義は異なるフォーマットのハプティック効果を再生成することができる。フローはその後、3130に進む。
【0119】
3130において、ハプティック効果定義のハプティックデータは、受信した空間化データに基づいて変更される。空間化データは、ハプティック効果の方向;またはハプティック効果の流れのうちの少なくとも1つを含むことができる。特定の実施形態において、ハプティック効果定義のハプティックデータを変更することは、ハプティックデータのマグニチュード;ハプティックデータの周波数;またはハプティックデータの持続時間のうちの少なくとも1つをスケーリングすることを含む。フローはその後3140に進む。3140において、トリガデータが受信される。トリガデータは、周辺機器のトリガの位置;または周辺機器のトリガの範囲のうちの少なくとも1つを含むことができる。フローはその後3150に進む。
【0120】
3150において、受信したトリガデータに基づいて、トリガ条件に到達したか否かが判断される。フローはその後3160に進む。3160において、ハプティック効果定義のハプティックデータはエンコードされる。特定の実施形態において、ハプティック効果定義のハプティックデータは、オーディオファイルまたはオーディオストリーム内でエンコードされることができる。フローはその後3170に進む。
【0121】
3170において、ハプティック効果定義のハプティック命令が周辺機器に送信される。特定の実施形態において、ハプティック命令およびハプティック効果定義は、トリガ条件に到達したときに周辺機器に送信されることができる。これらの実施形態において、ハプティック命令はトリガ命令であってもよい。特定の実施形態において、ハプティック効果定義を周辺機器に送信することは、ハプティック効果定義のハプティックデータを周辺機器に直接送信することを含むことができる。別の実施形態において、ハプティック効果定義を周辺機器に送信することは、(1)ハプティック効果定義のハプティックデータを第1フォーマットから第2フォーマットに変換すること;および(2)ハプティック効果定義の変換されたハプティックデータを周辺機器に送信すること、を含むことができる。フローはその後3180に進む。
【0122】
3180において、ハプティック効果定義のエンコードハプティックデータがデコードされる。特定の実施形態において、エンコードハプティックデータは、プログラマブルクロスオーバーを計算することによってデコードされ得る。フローはその後3190に進む。3190において、ハプティック命令はハプティック出力装置に、周辺機器におけるハプティック効果定義に基づいてハプティック効果を生成させる。特定の実施形態において、ハプティック命令はハプティック出力装置に、周辺機器のユーザ入力エレメントにおけるハプティック効果定義に基づいてハプティック効果を生成させることができる。特定の実施形態において、ハプティック命令はトリガ命令であってもよく、ハプティック効果定義はトリガハプティック効果定義であってもよく、ハプティック出力装置は対象となるハプティック出力装置であってもよく、対象となるハプティック出力装置は周辺機器のトリガにおけるハプティック効果を生成できる。特定の実施形態において、対象となるハプティック出力装置は対象となるアクチュエータであってもよい。これらの実施形態のうちのいくつかにおいて、対象となるアクチュエータは対象となるモータであってもよい。さらに、特定の実施形態において、ハプティック命令は複数のハプティック出力装置に、周辺機器におけるハプティック効果定義に基づいて複数のハプティック効果を生成させることができる。フローはその後終了する。
【0123】
一実施形態において、先に記載されたように、空間化エンジンはトリガハプティック効果定義などのハプティックデータを受信でき、空間化データに基づいてハプティックデータを変更でき、ここで空間化データは1つ以上のパラメータを含むことができる。このため、空間化エンジンはハプティック効果を局所化または空間化できる。より具体的には、空間化エンジンは、ハプティック効果の距離に基づいてアクチュエータまたはモータ上のハプティック効果をスケーリングまたは減衰することによって、ハプティック効果の距離を伝達するハプティック効果を生成できる。空間化エンジンはさらに、異なるアクチュエータまたはモータ上のハプティック効果を遅延またはスケーリングすることによって、コントローラ、ゲームパッド、またはその他の周辺機器上の運動を伝達するハプティック効果を生成できる。空間化エンジンは、APIまたはライブラリのコンポーネントであってもよく、あるいはコントローラ、ゲームパッド、またはその他の周辺機器のためのファームウェア内に実装されることができる。
【0124】
図32は、本発明の実施形態に係る、APIまたはライブラリ中に存在する例示的な空間化エンジンを示す。空間化エンジンは、
図1のシステム10などのシステム上に実装される。図示される実施形態において、システムは以下のコンポーネントを含む:装置3200(
図32において「ゲームコンソール、スマートフォン、タブレット、またはコンピュータ(例えば)3200」とされる)、およびコントローラ3210(
図32において「ゲームパッド3210」とされる)。装置3200は、パーソナルコンピュータ、タブレット、スマートフォン、またはコンソール(例えば、ビデオ・ゲーム・コンソール)など、いずれのタイプのコンピュータ装置であってもよい。コントローラ3210は、装置3200に動作可能に接続された周辺機器の一例である。コントローラ3210はビデオ・ゲーム・コントローラであってもよい。一実施形態において、コントローラ3210は
図1のコントローラ30、
図2、
図3、および
図4のコントローラ100、ならびに
図5のコントローラ520と同一であってもよい。
【0125】
装置3200は効果ライブラリ3201を含み、効果ライブラリ3201は1つ以上のハプティック効果定義を含むことができる。実施形態において、これらのハプティック効果定義は、空間化エンジンによって変更されていないハプティック効果定義なので、非空間化ハプティック効果定義として認識されることができる。装置3200はゲーム3202をさらに含み、ゲーム3202はシステム上で実行されることができる、ゲームアプリケーションなどのソフトウェアアプリケーションである。実施形態によれば、ゲーム3202は1つ以上の空間化パラメータを生成でき、1つ以上の空間化パラメータは、効果ライブラリ3201内に記憶されたハプティック効果定義によって定義されたハプティック効果の位置、速度、方向および/または流れを定義できる。
【0126】
装置3200は空間化エンジン3203(
図32において「ハプティック空間化エンジン3203」とされる)をさらに含み、ここで効果ライブラリ3201は1つ以上の非空間化ハプティック効果定義を空間化エンジン3203に送信でき、ゲーム3202は1つ以上の空間化パラメータを空間化エンジン3203に送信できる。空間化エンジン3203は、1つ以上の非空間化ハプティック効果定義を受信でき、1つ以上の空間化パラメータに基づいて1つ以上の非空間化ハプティック効果定義を変更できる。実施形態によれば、空間化エンジン3203は、1つ以上のハプティック効果がコントローラ3210の1つ以上のアクチュエータ3211のためにスケーリングまたは減衰されるように、1つ以上の非空間化ハプティック効果定義を変更でき、1つ以上の変更されたハプティック効果定義は、空間化ハプティック効果定義として認識されることができる。言い換えると、空間化エンジン3203は、アクチュエータ3211の各アクチュエータに送信されるハプティック効果定義を変更でき、このためハプティック効果の位置、速度、方向および/または流れの感覚を伝達するために、アクチュエータ3211の各アクチュエータにおいて経験されるハプティック効果を変更できる。空間化エンジン3203は引き続き1つ以上の空間化ハプティック効果定義をコントローラ3210に送信できる。コントローラ3210はその後、各空間化ハプティック効果定義をアクチュエータ3211の各アクチュエータに送信でき、ここで各アクチュエータは空間化ハプティック効果を生成できる。
【0127】
図33は、本発明の実施形態に係る、コントローラ中に存在する例示的な空間化エンジンを示す。空間化エンジンは、
図1のシステム10などのシステム上に実装される。図示される実施形態において、システムは以下のコンポーネントを含む:装置3300(
図33において「ゲームコンソール、スマートフォン、タブレット、またはコンピュータ(例えば)3300」とされる)、およびコントローラ3310(
図33において「ゲームパッド3310」とされる)。装置3300は、パーソナルコンピュータ、タブレット、スマートフォン、またはコンソール(例えば、ビデオ・ゲーム・コンソール)など、いずれのタイプのコンピュータ装置であってもよい。コントローラ3310は、装置3300に動作可能に接続された周辺機器の一例である。コントローラ3310はビデオ・ゲーム・コントローラであってもよい。一実施形態において、コントローラ3310は
図1のコントローラ30、
図2、
図3、および
図4のコントローラ100、ならびに
図5のコントローラ520と同一であってもよい。
【0128】
装置3300は効果ライブラリ3301を含み、効果ライブラリ3301は、非空間化ハプティック効果定義として認識される1つ以上のハプティック効果定義を含むことができる。装置3300はゲーム3302をさらに含み、ゲーム3302はシステム上で実行されることができる、ゲームアプリケーションなどのソフトウェアアプリケーションである。実施形態によれば、ゲーム3302は1つ以上の空間化パラメータを生成でき、1つ以上の空間化パラメータは、効果ライブラリ3301内に記憶されたハプティック効果定義によって定義されたハプティック効果の位置、速度、方向および/または流れを定義できる。
【0129】
コントローラ3310は空間化エンジン3311(
図33において「ハプティック空間化エンジン3311」とされる)を含み、ここで効果ライブラリ3301は1つ以上の非空間化ハプティック効果定義を空間化エンジン3311に送信でき、ゲーム3302は1つ以上の空間化パラメータを空間化エンジン3311に送信できる。空間化エンジン3311は、1つ以上の非空間化ハプティック効果定義を受信でき、1つ以上の空間化パラメータに基づいて1つ以上の非空間化ハプティック効果定義を変更でき、1つ以上の変更されたハプティック効果定義は空間化ハプティック効果定義として認識される。空間化エンジン3311は、引き続き各空間化ハプティック効果定義をアクチュエータ3312の各アクチュエータに送信でき、ここで各アクチュエータは空間化ハプティック効果を生成できる。
【0130】
このように、一実施形態において、システムは、コントローラまたはゲームパッドなど、周辺機器において経験されるハプティック効果を生成できるハプティック制御アーキテクチャを提供できる。ハプティック効果は、周辺機器のトリガにおいて経験されるトリガハプティック効果であってもよい。トリガハプティック効果は、システムによって受信されたトリガデータに基づいて、ハプティック制御アーキテクチャによってカスタマイズされることができ、トリガデータはトリガの位置および/または範囲を含むことができる。トリガハプティック効果は、トリガハプティック効果が指向性および/または流れの感覚を含むように、トリガハプティック効果が周辺機器の各モータまたはアクチュエータにおいてスケーリングされるように、ハプティック制御アーキテクチャによってさらに空間化されることができる。周辺機器において経験されたハプティックフィードバック、および具体的には周辺機器のトリガにおいて経験されたハプティックフィードバックを、システムによって実行されるゲームアプリケーションに組み込むことによって、より現実的で没入感のあるゲーム体験が提供され得る。
【0131】
本明細書全体に記載された本発明の特徴、構造、および特性は、いずれか適切な方法で1つ以上の実施形態に組み込まれてもよい。例えば、「一実施形態」、「いくつかの実施形態」、「特定の実施形態」、またはその他類似の語彙の使用は、本明細書全体にわたって、実施形態に関連して記載された特定の特徴、構造、または特性が、本発明の少なくとも1つの実施形態に含まれてもよいという事実を指す。このためフレーズ「一実施形態」、「いくつかの実施形態」、「特定の実施形態」、またはその他類似の語彙の出現は、本明細書全体にわたって全て同じ群の実施形態を指すとは限らず、記載された特徴、構造、または特性はいずれか適切な方法で1つ以上の実施形態に組み込まれてもよい。
【0132】
上記で論じられたような本発明は、異なる順序のステップで、および/または開示されたものとは異なる構成の要素を用いて実践されてもよいことを、当業者は容易に理解するだろう。したがって、本発明はこれらの好適な実施形態に基づいて記載されてきたものの、本発明の精神および範囲内にありながら、特定の変更、変形、および代替構造が明らかであることは、当業者にとって自明であろう。したがって、本発明の境界を決定するために、添付の請求項が参照されるべきである。