コンピュータ・システムのリアル・タイム制御には、ユーザの実際の行動を入力信号に変換することが必要となる。例えば、テレビジョンのリモコンは、ボタンの押下に応答して特定の信号を発生し、コンピュータのキーボードはキーの押下に応答して信号を発生し、マウスは二軸移動およびボタンの押下を表す信号を発生する。空間またはジェスチャ入力システムでは、三次元空間における手および物体の動きが、6度までの空間自由度および多数の様式(modality)またはポーズを表すことができる信号として変換される。
引用による包含
本明細書において述べる各特許、特許出願、および/または刊行物は、本願において引用することにより、個々の特許、特許出願、および/または刊行物の各々が具体的にそして個々に、引用することにより本願に含まれることを示した場合と同程度にその全体が本願にも含まれるものとする。
本明細書では、空間またはジェスチャ計算システムにマルチモード入力を供給するシステムおよび方法について記載する。本システムおよび方法の実施形態は、以下で詳細に説明する空間動作環境(SOE)のコンテキストにおいて提示することとする。SOEは、ジェスチャ制御システム、またはジェスチャ主体制御システムを含み、空間ユーザ・インターフェース(SUI)または空間インターフェース(SI)と代わりに呼ぶこともできる。
本明細書では、マルチモード入力デバイス(MMID)の多数の実施形態について記載するが、MMIDは、空間またはジェスチャ入力システムのユーザが、ある範囲の入力機能に直感的に、そして最小の労力で効率的にアクセスすることを可能にする。一実施形態のMMIDは、ハンドヘルド入力デバイスである。一実施形態のMMIDは、デバイスの位置および方位を高精度に、そしてリアル・タイムに追跡する手段を備えている。一実施形態のMMIDは、デバイスを構えて操作する人がその軸の1つ以上を中心にしてそれを容易に回転させることができるような物理的および機械的構造を備えている。一実施形態のMMIDは、1つよりも多い回転グリップ(rotation grip)でデバイスを快適に構えて操作できるような物理的および機械的構造を備えている。一実施形態のMMIDは、ユーザがデバイスを維持し操作している回転グリップ状態と、これらの動作回転状態間における遷移との双方を解釈し、ユーザ入力信号に変換することができるソフトウェア・コンポーネント(1つまたは複数)またはメカニズムを備えている。このソフトウェア・コンポーネントは、デバイスに対応する追跡データを拠り所とする。加えて、このような入力デバイスは、ボタン、ジョイスティック、スライダ、およびホイールというような、他の入力機能(capabilities)をその形態に統合することもできる。また、このデバイスは、照明、オーディオ・スピーカ、ラスター・ディスプレイ、および振動モータのような出力能力も統合することができる。
本明細書において示唆するように、種々の実施形態のマルチモード入力デバイスには、大多数の具体的な構成が可能である。デバイスは、物理的形状、可動部分、および使い勝手が異なることもある。また、デバイスは、物理的設計、追跡技術、およびソフトウェア処理の組み合わせによってサポートされる確実な(discreet)様式の数が異なることもある。更に、MMIDは、補足的なオンボード入力(即ち、位置、方位、および様式以外の入力)の設計、およびオンボード出力能力が異なることもある。
一実施形態のMMIDは、消費者向け電子リモコンと同様のフォーム・ファクタを有する筐体を備えた杖状のデバイスを含む。図1は、一実施形態の下における、杖状MMID100を示す。MMID100は、長さが約5インチであり、幅が1/2インチで、断面が三角形であるが、そのように限定されるのではない。MMID100のハウジングの各面は、1つの入力センサを含む。一実施形態では、この入力センサは電気機械式ボタンを備えているが、代替実施形態では、これよりも多い数または少ない数のボタン、または異なるタイプのボタンを各面に有することもできる。ユーザがMMID100を掴むと、三角柱の長いエッジ104の1つが当然ユーザの手の中で下に面し、ユーザの折り曲げた指の中で静止しており、一方角柱の逆側の面は上を向けられており、ユーザの親指の下に来る。MMID100は、指および親指の最小の動きによって、その長軸を中心にして120度回転させると、角柱の隣接する面を上向きにすることができる。このように、この角柱は、角柱の面に対応して、3つの別個の、容易にアクセスできるモード方位を含む。MMID100は、このデバイスを最初に体験するユーザによってでも、素早く、反復可能に、そして繰り返し回転させて、全ての(例えば、3つ)方位に向けさせることができる。
一実施形態のMMID100の位置は、以下で説明するような、磁界追跡を用いて追跡されるが、他の追跡技術(その一部についても、本明細書において説明する)を用いて追跡することもできる。MMID100は、交流(AC)磁界、または電磁界(EMF)に関してデバイスを追跡するための回路、マイクロプロセッサ、およびプログラム・コードを備えている。一実施形態のEMFは、MMIDに近接する、適合する基地局によって発生または放出されるが、そのように限定されるのではない。MMID100は、1つ以上の機械式ボタンを、これら1つ以上のボタンをディジタル化するための対応する電子回路と共に備えている。機械式ボタンのことを、入力センサとも呼ぶ。更に、MMID100は、追跡データ(例えば、方位データ、位置データ等)およびボタン押下生データをホスト・システムに報告するために、無線リンクを設ける回路も含む。加えて、MMID100は、バッテリおよび電源回路も含む。
入力処理ソフトウェアは、生の追跡データおよびボタン押下データを、6度の空間位置および方位、ボタン下方遷移、ボタン上方遷移、ならびにボタン状態の連続的報告を含むデータに変換する。一実施形態の入力処理ソフトウェアは、部分的にデバイス上で実行し、部分的にホスト・システムにおけるアプリケーション・コードとして実行するが、このように限定されるのではなく、あらゆる数/組み合わせの処理デバイスにおいて分散して実行すること、または1つのプロセッサにおいて単独で実行することもできる。このデータは、一連のプログラム「イベント」(プログラム・イベントの処理については、以下で詳細に説明する)として、ソフトウェア・アプリケーションに配信される。加えて、この入力処理レイヤは、モード遷移および連続モード状態イベントをアプリケーション・ソフトウェアに供給する。以下で詳しく説明するように、3つの状態(例えば、i、ii、およびiii)および6つの遷移(例えば、i−>ii、i−>iii、ii−>iii、ii−>i、iii−>i、およびiii−>ii)が可能である。
一実施形態の処理レイヤはヒステリシスを用いることにより、ユーザが、所与のモードから離れることなく、MMIDの長軸に沿った最大限の回転を行うことが可能となり、そしてMMIDが遷移角の端付近にあるときには、モード状態間で素早く行ったり来たり(flip-flopping)する望ましくない動作を回避することを可能にする。このヒステリシスを用いて、モード間の遷移を誘起するには、一実施形態のMMIDを、直前のモードの中心角に対して120度よりも多く回転させなければならない。したがって、MMIDがモード(i)にあり、その絶対角度中心(angular center)が0度である場合、いずれかの方向に、例えば、150度よりも多く長軸を中心とした回転が検出されるまで、MMIDは論理的にモード(i)状態に留まる。MMIDを151度回転させると、モード状態(ii)に遷移する。状態(ii)の角度中心は120度である。状態(i)への逆行を実行するためには、MMIDを逆方向にこの角度中心を通って−150度回転させ、−30(または330)度の絶対角度を通過させなければならない。先に30度(150度から120度を差し引く)として示したヒステリシス・バンドは、プログラミングで設定可能であり、アプリケーション・コードまたはユーザの好みの設定によって調節することができる。前述のように、このヒステリシスの例を三方MMIDに合わせて設ける場合、ここで記載した値に限定されるのではなく、代替実施形態では、回転角度および/またはヒステリシス・バンドは、筐体または杖のフォーム・ファクタ、および設計者/ユーザの好みにしたがって決定されることもある。
加えて、ある種のコードを選択的にアプリケーション・コードによってディスエーブルすることもできる。したがって、MMIDは、アプリケーション・コードによって、一定のモード状態(i)、(ii)、または(iii)を出力する単一モードデバイスとして扱うこともできる。または、ディスエーブルされたモードを2つの残りのモードのいずれかのみにマッピングすることによって、またはディスエーブルされたモードを、ヒステリシス・バンドの追加エリアとして扱うことによって、これらのモードの内いずれか1つをディスエーブルすることもできる。
更に、本システムは、MMID(例えば、三角角柱)の1つの物理面を各モードと不変に関連付けるように構成することもでき、これらの面には、能動的または受動的マーキングによって、モードの関連付けについて任意に名称を付けるとよい。あるいは、本システムは、コンテキストに基づく方法でモードを面に割り当てるように構成することもできる。この後者の場合の一例として、ある期間作動させずに置かれた後にユーザによって最初にMMIDが取り上げられたときに、初期状態で上を向いている面をモード(i)と関連つけるように、MMIDを構成することができる。このような場合、アクティブ・モードのインディケータを、MMID上、ユーザが見ているグラフィカル・ディスプレイ上、またはMMIDおよびグラフィカル・ディスプレイの組み合わせの上に設けることができる。
MMIDの各面は、1つのボタンを含む。このボタンは、入力センサとも呼ぶ。これらのボタンは、アプリケーション・レベルのソフトウェアによって同一に扱われるが、そのように限定されるのではない。ユーザの観点からは、デバイスが、最小の労力で効率的な実用性のために、1つの論理ボタンで、3つの実際にある具体的な機能を有するものとして見なすことができる。MMIDの回路およびソフトウェアは、異なる物理的ボタンの操作を区別しないが、本システムは、特定の組み合わせでボタンを押下すると、種々の構成およびリセット状態にデバイスを設定するように構成することもできる。
一実施形態のMMIDは、磁界追跡技術(例えば、米国特許第3,983,474号参照)を用いて機能する。磁界を発生および検知するための直交コイルの使用は、離れた物体を突き止めて追跡するときに既に行われている。例えば、米国特許第3,644,825号は、互いに動く発生コイルおよび検知コイルを教示する。あるいは、Kalmus, "A New Guiding and Tracking System"(新たな誘導および追跡システム), IRE Transactions on Aerospace and Navigational Electronics, March 1962, 7〜10ページ)に教示されているように、磁界を回転させることができる。
第2座標系に関する第1座標系の方位を決定するために座標変換器を用いることも、行われている。例えば、米国特許第3,474,241号および第3,660,648号は、第1座標フレームにおいて測定された角速度(angular rates)および角度誤差を、中間座標フレームの軸を中心として定められる角速度に変換する変換器を開示する。この軸を中心として、角回転(angular rotation)または角速度が定められる。次いで、積分して、オイラー角を用いることによって、第1座標フレームの第2座標フレームに関する方位を定める、角度−軸シーケンスを定める角度を決定する。
図2は、一実施形態の下において、磁界追跡を用いるMMIDのブロック図である。基地局210が、MMIDの追跡環境に近接してまたはその中に位置し、追跡場を供給すること、およびMMID211と通信することの双方を行う。基地局では、信号発生器が、磁界発生回路201を用いることによって磁界を形成し、3つの直交コイル202に交互に波形を生成する。これらのコイルによって発生された電磁信号は、MMIDの中にある3つの直交コイル203によって受け取られる。これら3つのコイルから受け取られた信号は、通例、演算増幅器204を用いて増幅され、そしてディジタル信号205に変換される。ディジタル信号205は、マイクロプロセッサ207によってサンプリングすることができる。このマイクロプロセッサは、ディジタル信号処理(DSP)技法を用いて、3つのコイルの入力を分析する。DSPプロセスは、基地局からのMMIDの距離および方向を投影する位置ベクトル、ならびにMMIDの方位を決定する方位マトリクスを与える。
また、追加の情報(例えば、タイム・スタンプ、ユニバーサルID等)を、MMID位置データと組み合わせることもできる。また、1つ以上のユーザ入力センサ206も検知して状態を求める。入力センサ206は、瞬間的スイッチ(momentary switch)、トグル・スイッチ、ジョイスティック型入力デバイス、および/またはタッチ・センサとすることがあり、その他にも数多くある。これらのスイッチからのサンプル・データは、1ビット(タッチ・ボタンに合わせて)、またはタッチ・センサの浮動小数点x、y座標のような、もっと複雑なデータ値を含む。
一実施形態では、マイクロプロセッサは、MMIDからの位置データおよび方位データを含むデータを、ワイヤレスでホスト・プロセスに伝達する。MMIDは、アクセス・ポイント209を通じたネットワークへのデータ伝達のために、無線周波数送信機および受信機(TX/RX)208を有する。この無線リンクは、いずれのワイヤレス・プロトコル(例えば、Bluetooth,802.11、ワイヤレスUSB、企業固有のソリューション、Nordic Semiconductor nRF24L01低電力無線ソリューション等)を用いることができる。アクセス・ポイントは、受信したデータ・ストリームを1つ以上のホスト・コンピュータに、ローカル・エリア・ネットワーク(例えば、有線インターネット10/100/1000BaseT、802.11等)または他のインターフェース(例えば、USB等)を通じて伝達することができる。
図3は、一実施形態の下における、追跡環境の中にあるMMIDのブロック図である。MMID304は、追跡環境300に関して示されている。MMIDは、前述のような基地局301と通信しているが、NNIDは、追跡環境300の中にあるいずれの数の異なるタイプおよび/または組み合わせの電子デバイスとでも通信することができる。追跡環境は、特定のサイズには限定されない。何故なら、無線周波数通信チャネルの範囲がAC磁界の範囲と異なることもあるので、コイルを有する追加のAC磁界発生器305/306/308を設けて、追加の追跡ビーコンを形成することもできるからである。これらのビーコンは、異なる周波数で動作すること、および/または異なる時点に送信することができる。MMIDのユーザが磁界発生器302から遠ざかり、発生器305に向かって移動すると、MMIDは、瞬時的に強い方のいずれかの信号で用いて、位置および方位を判定するが、その上アクセス・ポイント303を用いてこのデータをネットワークに返送する。
MMIDがアクセス・ポイント303の範囲の外に移動し、基地局306に向かうと、MMIDは無線リンクを基地局306におけるアクセス・ポイントと関連付ける。磁界発生器およびデータ・アクセス・ポイント間でローミングすることができると、最終的に、MMIDを任意に広い追跡環境において用いることが可能になる。尚、アクセス・ポイントおよび磁界発生器は同じ位置307/308にある必要はないことを注記しておく。アクセス・ポイントおよび磁界発生器の双方が、ローカル・エリア・ネットワークを通じて1つ以上のホスト・デバイスと通信する手段を有しているが、周波数発生器は自律的に動作することができ(305)、設置を一層容易にすることができる。
以下に、一実施形態のMMIDを用いる人の動作例を示す。動作の間、操作者は、三連フォーマット(triptyc format)の広いアスペクト比の投射画面の前に、ある距離(例えば、10フィート)のところに立っている。この画面は、高さがほぼ2メートル、幅が4メートルであり、1.5メートル幅のテーブルが彼女の直前に据えられている。このテーブル自体も、頭上真上の天井に取り付けられているプロジェクタによって扱われる投射面である。操作者は、断面が三角形のMMIDを、平面側「i」が上を向くようにして、彼女の右手で気軽に保持する。彼女がMMIDを前方の画面に向けて画面の辺りに照準を定めると、部分的に透明なグラフィカル・カーソルが、MMIDのポインティング・ベクトルと画面表面との交点を示す。入力システムの高いフレーム・レートおよび低いレイテンシが、因果的即時性の強い感覚に寄与する。操作者がMMIDの照準を変更すると、前方の画面上において、フラッシュライトまたはレーザ・ポインタを振っているという認識になり、カーソルの対応する動きが見かけ上遅れることはない。
操作者によって用いられるアプリケーションは、プレビュー・システムを同梱した製品であり、多くの同様のアプリケーションと同じようにMMIDを利用するように構成されている。つまり、MMIDの様式は、操作者には非常に馴染みがある。モード「i」は、最大の詳細レベルにおけるアプリケーション・エレメントの直接的な操作を可能にする。モード「ii」は、エレメントの擬似操作(例えば、地表面において)を行う。そして、モード「iii」は、三次元操作を可能にする。いずれの時点においても、カーソルの外観は、現在のモードを反映するだけでなく、MMIDのモードを変更するために必要となる軸回転の方向を視覚的に示す。現時点では、カーソルは、MMIDを時計回り方向に回転させると、「ii」にモードが移り、一方反時計回り方向に回転させると、「iii」にモードが移ることを示す。
前方三連画面における左側の1/3に配置されているのは、小さな物体の集合体のアレイである。操作者は、彼女の親指の下で、次の面が上に向けられるまで、MMIDを軸方向に時計回り方向に回転させると、カーソルは、状態「ii」へのモード遷移を示すように変化する。操作者がMMIDを左に向けて、カーソルが各物体集合体上を通過するに連れて、強調境界線(highlight border)が徐々に現れ、続いて、カーソルがその集合体の凸状の外皮(convex hull)から外れると、徐々に消えていく。操作者は、カーソルを特定の集合体上に静止させ、次いで彼女の親指の直下にあるボタンを押下する。カーソルは、物体の集合体が把持されたことを示し、彼女が前方画面の中央に向けてMMIDを振ると、この集合体がカーソルを追跡するように移動する。操作者は、微小集合体を彼女の直接前の位置に持ってきたときにこのボタンを放す。この集合体は、急速に拡大し、前方画面の中央の1/3の範囲全体を埋め尽くし、様々な形状のプラスチック・ボトルの集合体、および文字による指示"Pet Energy Beverages"(ペット・エネルギ飲料)を明示する。
再度操作者がMMIDをその長軸を中心として時計回り方向に回転させると、カーソルは、モード「iii」が現在動作状態にあること、つまり、3D操作がイネーブルされたことを示すように変化する。操作者は、毛を整えたプードルの足のような形状をした、特定の膨らんだボトルにカーソルを向けると、このボトルが視覚的に強調され、次いで操作者はボタンを押下する。すると、システムは直接操作モードに入り、MMIDの平行移動および回転が、レンダリングされている仮想空間において、選択されている物体の平行移動および回転を制御する。したがって、操作者がMMIDを彼女自身に向けて引き寄せると(直接、前方画面に垂直な幾何学的パターン (geometrics)に沿って)、ボトルは大きくなり、仮想カメラに向かって近づいてくる。同様に、MMIDを左右に動かすと、レンダリングされているボトルの左右の移動(画面の横軸に沿った)に変換され、MMIDを上下に平行移動させると、ボトルが垂直に平行移動する。操作者毎にカスタム化することができる倍率を用いて、適した倍率をこれらの平行移動に適用すると、MMIDの僅かな動きによって、仮想物体の移動がもっと大きくなり、これによって、操作者の無理のない手の動きの範囲を超えることなく、グラフィカル/仮想環境の全範囲にアクセスすることが可能になる。
同様の拡大縮小機能を、MMID方位の、レンダリングされたボトルの絶対回転位置へのマッピングにも適用する。本例では、操作者の好みによって4倍の目盛りが指示されるので、MMIDがいずれかの軸を中心として90度回転すると、仮想物体は360度1回転することになる(90度に4を乗算すると、360度になる)。これによって、操作者が可能なあらゆる有利な位置からボトルを検査するときに、手首および腕を用いたMMIDの回転であっても、無理のない範囲内で行われることが確保される。したがって、例えば、彼女が、前の指示から上の指示に進むように、MMIDを上に向けて回転させ、ローカルx軸を中心としてそれを90度傾けると、ボトルは、画面のローカルx軸を中心として完全に1回転し、MMIDが完全に上を向いた姿勢になった丁度そのときに、その最初の方位に戻ってくる。尚、MMIDのボタンが押下されたままになっている限り、しかるべきモード固定効果が適用されることを注記しておく。操作者は、MMIDの長軸に沿ってMMIDを170度時計回り方向に、MMIDをモード「i」に切り替えさせることなく、回転させることができる(仮想物体の510度の「画面内」回転を起こさせる)。
操作者がMMIDのボタンを放すと、レンダリングされているボトルは、直接操作から解放され、その瞬時的な位置および回転を保持する。ボタンが放されたときに、MMIDが、「iii」以外のMMIDモードに通常対応する回転姿勢にある場合、モードの切り替えが実際に行われる前に、操作者には1から2秒の時間的ヒステリシスが付与される(視覚的に、画面上カーソルのグラフィカル状態の一部として示される)。操作者がMMIDを回転させて、モード「iii」に対応する姿勢に戻すと、直接3D操作モードが継続する。次いで、操作者は、膨らんだボトルの上にカーソルを重ね合わせて、再度ボタンを押下することによって、追加の位置および姿勢の調節を行うことができる。代わりに、異なるボトルにカーソルを向けると、その物体が操作者の操作対象となる。
最終的に、操作者は、モード「ii」と同一のドラッグ様式を用いて、MMIDをモード「ii」に切り替え、これによって、ボトルの集合体を中央の画面に持って行き、カラー・パレットを右の画面から中央の画面に持って行く。彼女がボタンを放すと、パレットが拡大し、それ自体が膨らんだボトルの内側に位置する。次いで、彼女はMMIDを回転させてモード「i」を選択し、カラー・パレットの選択インターフェースを操作する。彼女が望む深紅色の色相が選択されたなら、彼女はボタンを押下し、膨らんだボトルを形成する透明材料に重なり合うまで、色見本をパレットから下にそして左にドラッグする。彼女がボタンを放すと、その色が適用され、ボトルの材料は透明な深紅色を採用することになる。
未だモード「i」にある間に、操作者はMMIDを直接膨らんだボトルに向けて指し示すと、ボトルはそれに応答して強調される。ボタンを押して、MMIDを下に振って、ボトルの画像を、前方の画面から、彼女の直ぐ前にあるテーブルにドラッグする。操作者がボタンを放し、それによってボトルを放すと、ボトルはテーブル上の適所に置かれる。次いで、操作者は逆にモード「ii」に回転させ、他のペット・エネルギ飲料ボトルの集合体を指し示すように、MMIDを前方に向ける。彼女は、ボタンを押下し、直ちにMMIDを左にさっと動かし、1秒未満の後にボタンを放す。ボトルの集合体は、左に向かって飛んで行き、 開始したときの位置および倍率に落ち着くまで、移動するに連れてサイズが縮小していく。次いで、操作者は、ペット介護用製品の異なる集合体を選択し、これらの品目から1つを選択し、調査し、修正するために、以前と同様にそれを中央の表示領域に持って行く。最後に、操作者は、選択した物体をテーブル・ディスプレイに追加する。操作者は、この管理(curatorial)プロセスを継続する。
ある時点において、操作者は、単純な外形エディタを用いて、ペット・マッサージ・オイルのキャニスタの物理的外形を変更することを選択する。この外形エディタも、前方三連画面における右側1/3上に表示されるツールの集合体から引き出される。このエディタの使用に伴う多くの操作についての説明は、ここでは、2つのMMIDの同時使用に関する説明を除いて、明確化のために省略する。この例では、操作者は、彼女の左手の中に持っている第2MMIDを用いて、キャニスタ(本来は、矩形断面の単純な押し出し形状である)にねじれを加える。一方のMMIDを用いてキャニスタの外形の最上部を掴み、他方のMMIDを用いてキャニスタの最下部を掴む(MMIDは双方ともモード「iii」になっている)。こうすることによって、最上部および最下部を別々に固定し、操作者は2つのMMIDを逆方向に回転させる。すると、キャニスタの主軸を中心とした線形なねじれが生ずる。操作者は、これらの外形変更を終了し、編集モジュールを右側のディスプレイに戻す。操作者は、変更したキャニスタをテーブルに追加し、種類が増えることになる。
最後に、テーブル上には1ダースの物体がレンダリングされ、前方の中央ディスプレイは再度空になる。操作者は、モード「ii」で、最後の集合体を左に(そして、カラー・パレットを右に)さっと動かす。次いで、彼女は、モード「ii」のまま、テーブルを指し示すようにMMIDを向けるが、彼女の照準は、そこの製品の完成図(rendering)を避ける。代わりに、操作者は右ボタンを押下し、表示されている物体の回りに湾曲した囲いを描くかのように、MMIDで円形の軌道を描く。これに応答して、システムは、分類動作を、以前は別々であった製品の完成図に適用し、これらのレイアウトを編成し、それらの相対的なサイズを合わせる。最後に、操作者は、モード「ii」のドラッグを用いて、グラフィカル「配信チューブ」(delivery tube)の入力アパーチャを、右側のディスプレイから中央に柔軟に拡大する。次いで、操作者は、テーブルのカスタム化した製品集合体を取り上げ、それを中央の画面までドラッグし、それを配信チューブの口に入れる。チューブは、この集合体を消化し、再度右側のディスプレイに引っ込める。集合体は、操作者の同僚に配信される。この同僚は、操作者の作業を検討し、ペット・ショップ・アイル(pet shop aisle)のインタラクティブ可視化を構築したいと思っている。
代替実施形態のMMIDは、矩形のフォーム・ファクタを有する筐体を含む。この代替実施形態のポインタは、例えば、長さが5インチ、幅が1.5インチ、奥行きが1/2インチであるが、他の多くのサイズおよび/または構成も可能である。このMMIDは、以下で詳細に説明する、光学的に追跡されるタグを含む。このMMIDは、ホスト・システム環境において実行する処理ソフトウェアのようなエレクトロニクスを含まないが、実施形態はそのように限定されるのではない。
ユーザは、長軸がユーザ環境の中にある物体(仮想物体を含む)を指し示す役割を果たすように、ポインタを最も自然に保持する。ポインタは、長軸を中心に回転し、2つのモード方位(例えば、モードiおよびii)間で遷移することができる。2つのモードしかないが、4つのモード遷移が可能である。何故なら、本システムは、遷移中の回転方向間で区別することができるからである。即ち、モードiからモードiiへの遷移/時計回り、モードiからモードiiへの遷移/反時計回り、モードiiからモードiへの遷移/時計回り、モードiiからモードiへの遷移/反時計回りを区別することができる。前述のMMIDと同様、これらの回転遷移を、入力処理ソフトウェアにおいて追跡し、ヒステリシス・ロッキングをかけることができる。
光学タグは、ポインタの「前面」部(例えば、前半分)の、例えば、ユーザの手から外側に広がるエリアに取り付けられているが、そのように限定されるのではない。ポインタの両側の各々に、2つのタグが取り付けられている。各側における前側のタグは、その位置に固定されている。各側における後ろ側のタグは、前側のタグの後ろにある距離(例えば、5センチメートル)のところに位置付けられており、同じ軸に沿って位置合わせされ、同じ軸にしたがって向きが決められている。この後ろ側のタグは、ばね装荷摺動メカニズムに固定されており(平行移動の方向が、ポインタの長軸と一直線状に合わされている)、ユーザの親指がこのメカニズム上で前方に押し進め、2つのタグの間の距離を約1センチメートルだけ短縮することができるようになっている。
入力処理ソフトウェアは、2つのタグ間の距離が5センチメートルあるときに、デバイスの論理ボタン状態が、状態(0)にあると解釈する。状態(1)への遷移を行うには、後ろ側のタグを前側のタグに近づけるように、ある距離だけ移動させる(例えば、前側のタグから4.2センチメートル以内に移動させる)。ボタン状態(1)に戻る遷移は、タグ間の距離が4.8センチメートルを超過したときにのみ、誘起される。これは、デバイスの主要(回転)モード遷移に適用されるヒステリシスと同様である。この場合も、ヒステリシス・バンドのサイズは、設定変更可能である。
光学的追跡MMIDの実施形態では、光学追跡タグが用いられ、タグ上に、ある数のドットが整列されている。これらのドットは、例えば、逆反射器で覆われた小さな球体とすることができ、IR追跡システム(以下で説明する)が、タグが付けられた物体の位置および向きを判定することを可能にする。このタグが付けられた物体が入力MMIDである場合、ユーザが、ボタンを押下するというような、非幾何学的、状態変化入力を与えたときを判定する手段を、追跡システムに設けることが望ましい場合もある。
種々の代替実施形態のMMIDは、赤外線(IR)発光ダイオード(LED)(IR LED)を用いて、入力状態に基づいてある種の状態においてのみカメラには見ることができる追跡ドットを供給するように動作する。これらの代替実施形態のMMIDは、入力ボタンによって制御されるバッテリおよびLED駆動回路を含む。図4aおよび図4bは、一実施形態の下における、IR LEDを有するMMIDの入力状態を示す。この実施形態のタグは、多数の逆反射ドット402(塗りつぶしたドットとして示されている)、ならびに2つのIR LED403および404を備えている。図4aでは、タグは、MMID上のボタンが押下されていない状態で示されており、IR LED403は非照明状態になっており、一方IR LED404は照明状態になっている。図4bでは、ユーザがMMID上のボタンを押下しており、それに応答して、IR LED403が照明状態になり、一方IR LED404は非照明状態になる。この光学処理システムは、2つのタグにおける相違を検出し、これら2つのタグの状態から、ユーザの意図を判断する。
図5aおよび図5bは、他の実施形態の下における、IR LEDを有するMMIDの入力状態を示す。この実施形態では、1つのLEDだけが切り替えられる。つまり、図5aを参照すると、ユーザがボタンを押下していないときには、LED504は非照明状態になる。図5bでは、ユーザがボタンを押下しており、このためLED504は点灯している。
また、同様の手法を用いて追加の方法も可能にする。一代替実施形態では、LEDを用いて完了タグを形成し、このタグの有無がユーザの入力を与える。他の実施形態では、2つの同じタグを作成し、重ね合わせる(例えば、0.5cmだけずらす)かまたは隣接させる。一方のタグまたは他方を点灯させ、そのタグの他のタグに関する位置を判定することにより、ユーザの入力状態を判定することができる。
他の代替実施形態のMMIDでは、タグ追跡の使用をEMF追跡と組み合わせることができる。これらの代替実施形態は、本明細書において記載するような種々のタイプのタグを用いて、EMF追跡の態様をタグ追跡と組み合わせる。
他の代替実施形態のMMIDは、2つの赤外線光源と合わせて用いられるコントローラを含む。一方の赤外線光源はユーザの前に配置され、もう1つの赤外線光源はユーザの後ろに位置付けられる。これら2つの光源は、各々、3つの別個の赤外線発光体を有し、各光源の発光体は異なるパターンで構成されている。この実施形態のMMIDは、以下で説明するように、慣性追跡を利用し、2つのモードを含み、多数の機械的入力ボタンを含む。
この実施形態のMMIDは、NintendoのWii(登録商標)のリモコン・デバイスの変更と考えてもよく、2つのモード方位をサポートし、コントローラのその環境に対する方向方位(directional orientation)によってモードが決定される。Wii(登録商標)のコントローラは、NintendoのWii(登録商標)プラットフォーム上でビデオ・ゲームをプレーするために用いられる小さなデバイスであり、赤外線光源が付帯する。このコントローラは、1組の低精度加速度計を用いて、空間におけるその動きを慣性的に追跡する。加速度計は、数値積分の間に蓄積する誤差のために、数十分の1秒よりも長い間正しい位置および方位データを供給できるほど精度が高くないので、光学追跡システムも(光源コンポーネントと共に)用いられる。Wii(登録商標)のコントローラの光学追跡システムは、したがって、二次元画像平面において4つの明るい赤外線光源を突き止めることができる、前面を向いた内部赤外線カメラも備えている。したがって、このカメラは被追跡デバイスに埋め込まれ、光学的に突き止められる物体は、固定位置の環境指示対象となる。環境において既知の赤外線光源を知覚し、そのサイズおよび位置を測定することによって、コントローラが指し示している方向を判定し、これらの光源からのコントローラの距離を三角法によって測定することができる。この赤外線追跡技術は、本明細書において記載する追跡技術の逆と見なすことができる。何故なら、本明細書における実施形態の赤外線追跡技術は、環境内に置かれたカメラを用いて、デバイス、表面、手袋、およびその他の物体上に配された点を光学的に突き止めるからである。
NintendoのWii(登録商標)コンソールによる典型的な使用では、コントローラは常に表示画面を指し示している。赤外線光源が、表示画面の上または下に配置されており、画面に対する方位をコントローラに供給する。対照的に、一実施形態のコントローラは、2つの赤外線光源と合わせて用いられ、1つはユーザの前に位置付けられ、1つはユーザの後ろに位置付けられる。これら2つの光源は、各々、3つの別個の赤外線発光体を有し、各光源の発光体は異なるパターンで構成されている。
一実施形態のコントローラは、Bluetooth無線によって、ホスト・コンピュータ上で実行している入力処理ソフトウェアまたはコンポーネントと通信する。入力処理ソフトウェアは、どの発光体パターンが検出されたのか識別し、したがって、コントローラが前方を指しているのか、または後方を指しているのか識別する。この前方/後方判定から、2つのモード方位が得られる。モード状態(i)では、コントローラが前方に向けられている。モード状態(ii)では、コントローラは後方に向けられている。各場合において、ユーザは論理的に前方を指し示している。ユーザは、コントローラを「前後」にひっくり返すことによって、モードを制御する。これは、モード制御がデバイスの長軸「回転」である、先に説明した実施形態とは対照的である。一実施形態のコントローラは、埋め込みスピーカを含むことができ、音響出力、様々な光、および振動(または「低い連続音」)出力を供給することができる。
本明細書において説明した実施形態には、多数の変更が、この説明の下で可能である。例えば、一実施形態のコントローラは、2つのカメラを、デバイスの各端部に1つずつ有することによって、2つの光源の必要性を回避することもできる。光源は、空間パターンの代わりに、タイミングによって区別することができる。
空間動作環境(SOE)
本明細書では、空間動作環境(SOE)のコンテキストで、空間連続体入力システムの実施形態について説明する。一例として、図6は、一実施形態の下における空間動作環境(SOE)のブロック図である。ユーザは、彼の手101および102を、カメラ104A〜104Dのアレイの視野150に置く。これらのカメラは、指ならびに手101および102の位置、方位、および移動を検出し、出力信号をプリプロセッサ105に発生する。プリプロセッサ105は、カメラ出力をジェスチャ信号に変換し、このジェスチャ信号をシステムのコンピュータ演算装置107に供給する。コンピュータ107は、入力情報を用いて、1つ以上の画面上カーソルを制御するコマンドを発生し、ビデオ出力をディスプレイ103に供給する。
このシステムでは、一人のユーザの手を入力として示すが、SOE100は、多数のユーザを用いても実施することができる。加えて、手の代わりにまたは手に加えて、本システムはユーザの身体の任意の1つ以上の部分を追跡することができ、その部分とは、頭部、足、脚部、腕、肘、膝等を含む。
図示の実施形態では、4台のカメラまたはセンサを用いて、視野150内においてユーザの手101および102の位置、方位、および移動を検出する。SOEの範囲や主旨から逸脱することなく、SOEはこれらよりも多いカメラ(例えば、6台のカメラ、8台のカメラ等)または少ないカメラ(例えば、2台のカメラ)とでも用いることができることは言うまでもない。加えて、実施形態例では、カメラまたはセンサは対称的に配置されているが、SOE100にはこのような対称性の要件はない。ユーザの手の位置、方位、および移動を許容するのであれば、カメラまたはセンサは、いずれの数および位置付けでも、SOE100において用いることができる。
一実施形態では、用いられるカメラは、グレー・スケール画像を取り込むことができるモーション・キャプチャ・カメラである。一実施形態では、用いられるカメラは、Vicon MX40カメラのような、Vicon社が製造するカメラである。このカメラは、カメラ内部処理を含み、毎秒1000フレームの画像取り込みが可能である。モーション・キャプチャ・カメラは、マーカを検出し位置を突き止めることができる。
記載している実施形態では、カメラは光学的検出に用いられるセンサである。他の実施形態では、カメラまたは他の検出器は、電磁、静磁気、RFID、またはその他の任意の適した種類の検出に用いることができる。
プリプロセッサ105は、三次元空間点再現および骨格点ラベリングを発生するために用いられる。ジェスチャ変換器106は、3D空間情報およびマーカ・モーション情報をコマンド言語に変換するために用いられる。コマンド言語は、コンピュータ・プロセッサによって解釈され、ディスプレイ上におけるカーソルの位置、形状、および動作(action)を更新することができる。SOEの代替実施形態では、プリプロセッサ105およびジェスチャ変換器106を組み合わせて1つのデバイスにすることもできる。
コンピュータ107は、Apple社、Dell社、または任意のその他の適した製造業者によって製造されるような、任意の汎用コンピュータとすればよい。コンピュータ107は、アプリケーションを実行し、表示出力を供給する。カーソル情報は、他の場合にはマウスまたはその他の先行技術の入力デバイスから得られるが、ここではジェスチャ・システムから得られる。
マーカ・タグ
SOEまたは一実施形態は、ユーザの1つ以上の指においてマーカ・タグの使用を想定し、本システムがユーザの手を突き止め、ユーザが左または右のどちらの手を見ているのか特定し、どの指が見えるか特定することができるようにする。これによって、本システムは、ユーザの手の位置、方位、および移動を検出することが可能になる。この情報によって、本システムは多数のジェスチャを認識することが可能となり、これらのジェスチャは、ユーザによってコマンドとして用いることが可能になる。
一実施形態では、マーカ・タグは基板(本実施形態では、人の手の上の種々の位置に装着するのに適している)と、基板の表面上に一意識別パターンで配列された離散マーカとを備えている物理的タグである。
マーカおよび連携する外部検知システムは、それらの三空間位置の高精度、正確、ならびに迅速および連続的捕獲が可能である任意のドメイン(光学、電磁、静磁気ドメイン等)において動作することができる。マーカ自体は、能動的(例えば、構造化した電磁パルスを放出することによって)、または受動的(例えば、本実施形態におけるように光学的に逆反射型とすることによって)のいずれでも動作することができる。
各捕獲フレームにおいて、検出システムは、器具を備え付けた作業空間立体(カメラまたはその他の検出器の可視範囲内)において現在タグからの全てのマーカを含む三空間位置を再現した、粒団状「クラウド」を受ける。各タグ上のマーカは、十分に多数であり、一意のパターンに配列されているので、検出システムは以下のタスクを行うことができる。(1)再現した各マーカ位置を、1つのタグを形成する点の1つのみの副集合体に割り当てるセグメント化、(2)セグメント化した点の各副集合体を特定のタグとして識別するラベリング、(3)識別したタグの三空間位置を再現する位置突き止め、および(4)識別したタグの三空間方位を再現する方位決定(orientation)。タスク(1)および(2)は、マーカ・パターンの具体的な本質によって可能となる。これについては、図7の一実施形態において以下で説明し例示する。
一実施形態では、タグ上のマーカは、規則的な格子位置の部分集合に装着されている。この基礎となる格子は、本実施形態のように、従来からのデカルト型であってもよいし、代わりに、他の何らかの規則的平面碁盤目状(例えば、三角形/六角形タイリング配列)であってもよい。格子のスケールおよび空間は、隣接する格子位置が混乱する可能性がないように、マーカ検知システムの既知の空間分解能に関して確定する。全てのタグについてのマーカ・パターンの選択は、次の制約を満たさなければならない。タグのパターンは、回転、平行移動、または鏡像のいずれの組み合わせによる他のいずれのタグ・パターンとも一致してはならない。更に、ある指定した数のコンポーネント・マーカの損失(または遮蔽(occlusion)が許容されるように、多数のマーカおよびその配列を選択するとよい。いずれの任意の変換後であっても、損なったモジュール(compromised module)を他のいずれとも混同させることが起こりそうにないようにしなければならない。
ここで図7を参照すると、多数のタグ201A〜201E(左手)および202A〜202E(右手)が示されている。各タグは、矩形であり、本実施形態では、5×7の格子アレイで構成されている。矩形形状が選択されたのは、タグの方位を決定し易いため、そして鏡面複製(mirror duplicate)の可能性を低減するためである。図示の実施形態では、各手の指毎にタグがある。実施形態によっては、手毎に1つ、2つ、3つ、または4つのタグを用いることが適当である場合もある。各タグは、異なるグレー・スケールまたは色調の境界を有する。この境界の内部には、3×5格子アレイがある。マーカ(図7の黒いドットで表す)は、情報を提供するために、この格子のある点に配置されている。
各パターンを「共通」および「一意」のサブパターンにセグメント化することにより、タグのマーカ・パターンにおいて、認定情報(qualifying information)をエンコードすることができる。例えば、本実施形態は、2つの可能な「境界パターン」、矩形境界線(boundary)を中心としたマーカの分布を指定する。つまり、タグの「ファミリー」を確立する。このため、左手を意図したタグは、タグ201A〜201Eにおいて示されるような同じ境界パターンを全て用いることができ、一方右手の指に取り付けられているタグには、タグ202A〜202Eに示すように異なるパターンを割り当てることができる。タグの全ての方位において、左パターンを右パターンから区別できるように、このサブパターンを選択する。図示した例では、左手パターンは、各角に1つのマーカ、そして角格子位置から2番目に1つのマーカを含む。右手パターンは、2つの角のみにマーカを有し、角でない格子位置に2つのマーカを有する。このパターンを検査することによって、4つのマーカの内いずれか3つが見ることができる限り、左手パターンを右手パターンから明確に区別することができることが明らかとなった。一実施形態では、境界の色または色調も、利き手(handedness)のインディケータとして用いることができる。
各タグは、勿論、一意の内部パターンを採用し続けなければならず、マーカはそのファミリーの共通境界以内に分散されている。図示の実施形態では、内部格子アレイにおける2つのマーカが、10本の指の各々を一意に特定するのに十分であり、指の回転または方位による複製が生じないことが分かる。マーカの1つが遮蔽されたとしても、タグのパターンおよび利き手の組み合わせから、一意の識別子が得られる。
本実施形態では、格子の位置は、各逆反射マーカをその意図する位置に装着する(手作業の)タスクに対する補助として、視覚的に剛性基板上に存在する。これらの格子および意図するマーカ位置は、カラー・インクジェット・プリンタによって基板上にそっくりそのまま印刷される。ここでは、基板はシート状の(初期状態では)可撓性の「収縮フィルム」である。各モジュールがこのシートから切り離され、炉で焼成される。この熱処理の間に、各モジュールには正確で繰り返し可能な収縮が起こる。この手順に続く短い間隔において、冷却するタグには、例えば、指の長手方向曲線にしたがって、僅かに形状を付けることができる。その後、基板は適度に剛性となり、指示された格子点にマーカを装着することができる。
一実施形態では、マーカ自体は、接着剤または何らかのその他のしかるべき手段によって基板に装着された小さな反射球体のように、三次元である。このマーカが三次元であることは、二次元マーカ上における検出および位置突き止めに役立つことができる。しかしながら、いずれも、本明細書に記載するSOEの主旨や範囲から逸脱することなく用いることができる。
現在では、タグはベルクロ(Velcro)またはその他のしかるべき手段によって、操作者が身に付けている手袋に装着されるか、あるいは、柔らかな両面テープを用いて操作者の指に直接装着される。第3実施形態では、剛性基板を全くなしで済ませ、操作者の指および手に直接個々のマーカを装着するまたは「描く」することができる。
ジェスチャ・ボキャブラリ
SOEは、手のポーズ、方位、手の組み合わせ、および方位の配合(orientation blends)で構成されるジェスチャ・ボキャブラリ(gesture vocabulary)を想定する。SOEのジェスチャ・ボキャブラリにおいてポーズおよびジェスチャを立案および伝達するために、表記言語(notation language)も実施する。ジェスチャ・ボキャブラリとは、力学的連結の瞬時的な「ポーズ状態」を簡潔な文字形態で表すシステムである。対象となる連結は、生物(例えば、人の手、または人の身体全体、あるいはバッタの足、あるいはキツネザルの関節脊柱)であってもよく、あるいは代わりに非生物であってもよい(例えば、ロボットのアーム)。いずれの場合でも、この連結は、単純(脊柱)でもまたは分岐(手)でもよい。SOEのジェスチャ・ボキャブラリ・システムは、いずれの特定的な連結についても、一定長のストリングを確立する。こうして、ストリングの「キャラクタ位置」を占める特定のASCIIキャラクタの集合体が、連結の瞬時的状態、即ち、「ポーズ」の一意の記述となる。
手のポーズ
図8は、SOEを用いたジェスチャ・ボキャブラリの一実施形態における手のポーズを示す。SOEは、1本の手における5本の指の各々を用いることを仮定する。これらの指には、p−小指、r−薬指、m−中指、i−人差し指、およびt−親指とコーディングする。指および親指の多数のポーズを、一実施形態のジェスチャ・ボキャブラリにおいて定義し、図8に示す。ジェスチャ・ボキャブラリ・ストリングは、連結(この場合指)の表現可能な自由度毎に1つのキャラクタ位置を確定する。更に、このような各自由度は、離散化(または「量子化」)されていることが分かるので、その最大運動範囲は、当該ストリング位置における有限数の標準的ASCIIキャラクタの内の1つの割り当てによって表現することができる。これらの自由度は、本体特定の原点および座標系(手の裏、バッタの身体の中心、ロボット・アームの底辺等)に関して表現される。したがって、連結の位置および方位を「全体的に」更に大域的な座標系において表現するために、少数の追加のジェスチャ・ボキャブラリ・キャラクタ位置が用いられる。
引き続き図8を参照すると、多数のポーズが定義されており、ASCIIキャラクタを用いて識別されている。これらのポーズの一部は、親指およびそれ以外の指の間で分けられている。この実施形態におけるSOEは、ASCIIキャラクタ自体がポーズを示唆するようなコーディングを用いる。しかしながら、示唆的であろうがなかろうが、ポーズを表すには、いずれのキャラクタでも用いることができる。加えて、本発明では、表記ストリングにASCIIキャラクタを用いる必要性はない。本発明の範囲や主旨から逸脱することなく、適したシンボル、数値、またはその他の表現であればいずれでも用いることができる。例えば、望ましければ、表記は指毎に2ビットを用いることもでき、あるいは所望に応じて、他の何らかの数のビットを用いることもできる。
巻き込んだ指(curled finger)は、キャラクタ「^」によって表され、一方巻き込んだ親指は「>」で表される。真っ直ぐな指または上を向いた親指は、「l」によって示され、角度をなす場合は「\」または「/」で示される。「−」は、真っ直ぐに横を向いた親指を表し、「x」は平面内に向いた親指を表す。
これら個々の指および親指の記述を用いると、確固不動の数(robust number)の手のポーズを、本発明の方式を用いて、定義し記述することができる。各ポーズは、5つのキャラクタによって表され、その順序は、前述したように、p−r−m−i−tとなる。手を平らにして地面に平行に保持する場合、「lllll」で表される。握り拳は「^^^^>」によって表される。「OK」の合図は、「lll^>」によって表される。
キャラクタ・ストリングは、示唆的キャラクタを用いる場合、単純な「人間可読性」(human readabiity)の機会を与える。各自由度を記述する1組の可能なキャラクタは、総じて、素早い認識および明白な類似性に着目して選択することができる。例えば、垂直線(「|」)は、連結エレメントが「直線状」であることを意味するように思われ、エル(「L」)は、90度の屈曲を意味することもでき、曲折アクセント記号(「^」)は、鋭角の屈曲を示すことができる。先に注記したように、所望に応じて、いずれのキャラクタまたはコーディングでも用いることができる。
本明細書に記載するようなジェスチャ・ボキャブラリ・ストリングを採用するシステムはいずれも、ストリング比較の高い計算効率の恩恵を享受する。指定されたいずれのポーズについても、その識別または検索は、文字どおり、所望のポーズ・ストリングと瞬時的な実際のストリングとの間における「ストリングの比較」(例えば、UNIXの「stremp()」関数)となる。更に、「ワイルドカード・キャラクタ」の使用によって、プログラマやシステム設計者には、もっと見慣れた効率(efficiency)および有効性(efficacy)が得られる。自由度の瞬時状態が一致とは関わりがない場合、疑問符(「?」)として指定することができ、追加のワイルドカードの意味を割り当てることができる。
方位
指および親指のポーズに加えて、手の方位が情報を表すことができる。大域空間(global-space)方位を記述するキャラクタも、透過的に選択することができる。キャラクタ「<」、「>」、「^」、および「v」は、方位キャラクタ位置において遭遇した場合、左、右、上、および下の考えを示すために用いることができる。図9は、手方位記述子、ならびにポーズおよび方位をコード化する例を示す。一実施形態では、2つのキャラクタ位置が、最初に手の平の方向を指定し、次いで指の方向を指定する(指が真っ直ぐになっている場合、指の実際の屈曲には関係なく)。これら2つの位置に可能なキャラクタは、方位の「本体中心」観念(body-centric notion)を表現し、「−」、「+」、「x」、「*」、「^」、および「v」は、中間、横方向、前方(順方向、本体から離れる側)、後方(逆方向、本体から離れる側)、頭上(上方)、および後端(下方)を記述する。
本発明の表記方式および実施形態では、キャラクタを示す5本指のポーズに続いて、コロン、次いで完全なコマンド・ポーズを定義するために2つの方位キャラクタがある。一実施形態では、開始位置は「xyz」ポーズと呼ばれ、親指は真っ直ぐ上を指し示し、人差し指は前方を指し示し、中指は人差し指に対して垂直であり、右手によってこのポーズが作られる場合、左を指し示す。これは、ストリング「^^xl−:−x」によって表される。
「XYZ−手」は、視覚的に提示された三次元構造の最大6自由度のナビゲーションを可能にするために、人の手の幾何学的形状を利用する技法である。この技法は操作者の手の全体的(bulk)平行移動および回転のみに依存し、したがってその指は原則として、いずれの所望のポーズに保持することができるが、本実施形態は、人差し指が本体から離れる方向を指し、親指が天井を指し、中指が左−右を指す、静止構成(static configuration)を優先する。つまり、これら3本の指は、三空間座標系の3本の相互に直交する軸、つまり、「XYZ−手」を記述する(大まかであるが、明白な歴然とした趣旨がある)。
次いで、XYZ−手ナビゲーションは、操作者の身体の前において所定の「中立位置」に保持された、前述のようなポーズの手、指に進む。三空間物体(またはカメラ)の三平行移動および三回転自由度へのアクセス(access)は以下の自然な方法で行われる。手の右−左移動(身体の自然座標系に対して)により、計算的コンテキストのx−軸に沿った移動が生じ、手の上下移動により、被制御コンテキストのy−軸に沿った移動が生じ、前後の手の移動(操作者の身体に向かう方向/から離れる方向)によって、このコンテキストにおけるz−軸運動が生ずる。同様に、人差し指を中心とする操作者の手の回転により、計算的コンテキストの方位の「転動」(roll)変化が生じ、操作者の手の中指および親指をそれぞれ中心とする回転によって、「縦方向」および「横方向」変化が類似的に生ずる。
尚、「計算的コンテキスト」は、本明細書では、XYZ−手方法によって制御される全体に言及するために用いられており、合成三空間物体またはカメラのいずれかを示唆するように思われるが、この技法は実世界物体の種々の自由度を制御するため、例えば、しかるべき回転アクチュエータを装備したビデオまたはモーション・ピクチャ・カメラのパン/ティルト/ロール制御にも等しく有用であることは言うまでもないことを注記しておく。更に、XYZ−手の姿勢によって得られる物理的自由度は、仮想ドメインであっても、ありのままにマッピングされ難い場合もある。本実施形態では、XYZ−手は、大きな全景的表示画像に対してナビゲーション的アクセスを提供するためにも用いられるので、操作者の手の左−右および上−下の運動が、画像を中心とする予期された左−右または上−下「パンニング」に繋がるが、操作者の手の前−後運動は「ズーミング」制御にマッピングする。
あらゆる場合において、手の運動と誘発される計算的平行移動/回転との間の結合は、直接的(即ち、操作者の手の位置的または回転オフセットが、一対一で、何らかの線形または非線形関数によって、計算的コンテキストにおける物体またはカメラの位置的または回転オフセットにマッピングする)、または間接的(即ち、操作者の手の位置的または回転オフセットが、一対一で、何らかの線形または非線形関数によって、計算的コンテキストにおける位置/方位の第1導関数またはより上位の導関数にマッピングし、実行中の積分が、計算的コンテキストの実際のゼロ次位置/方位における被静的変化を生み出す)のいずれかであることができる。この後者の制御手段は、自動車の「アクセル・ペダル」の使用に類似しており、ペダルの一定のオフセットによって、ほぼ一定の車速が得られる。
実世界のXYZ−手の局所的六自由度座標原点としての役割を果たす「中立位置」は、(1)空間における絶対位置および方位として(例えば、密閉室に対する)、(2)操作者の全体的な位置および「方向」(heading)には関係なく、操作者自身に対する固定位置および方位(例えば、身体の前方8インチ、顎の下10インチ、横方向に肩の平面と一直線状)として、あるいは(3)操作者の故意の二次的行動によって、対話的に(例えば、操作者の「別の」手によって演じられるジェスチャ・コマンドを用いて。前記コマンドは、XYZ−手の現在の位置および方位が今後平行移動および回転の原点として用いられるべきことを示す)確立することができる。
更に、XYZ−手の中立位置の周囲に「抑止」(detent)領域(または「デッド・ゾーン」)を設けて、この立体空間における移動が被制御コンテキストにおける移動にマッピングしないようにすると便利である。
他のポーズも含むことができる。
[lllll:vx]は、手を平らにして(親指が他の指と平行)、掌が下を向き、指が前方に突き出している。
[lllll:x^]は、手を平らにして、掌が前を向き、指が天井を向いている。
[lllll:-x]は、手を平らにして、掌が身体の中心に向いており(左手の場合は右、右手の場合は左)、指が前方に突き出している。
[^^^^-:-x]は、手を1つにして親指を合わしている(親指は天井を向いている)。
[^^^|-:-x]は、銃を前方に構える真似である。
2つの手の組み合わせ
一実施形態のSOEは、1つの手のコマンドおよびポーズだけでなく、2つの手によるコマンドおよびポーズも想定している。図10は、一実施形態の下における、SOEのジェスチャ・ボキャブラリにおける二手組み合わせおよ対応する表記の例を示す。第1の例の表記を検討すると、「完全停止」とは2つの拳を閉じていることを示す。「スナップショット」の例では、各手の親指および人差し指が広げられ、親指が互いに向き合って、ゴール・ポストの形状の枠を定めている。「舵およびスロットル開始位置」は、指および親指が上を向いており、掌が画面に面している。
方位の配合
図11は、一実施形態の下における方位配合の一例を示す。図示の例では、配合は、指ポーズ・ストリングの後ろにある括弧の中に囲まれた方位表記の対によって表されている。例えば、第1コマンドは、全て真っ直ぐに伸ばした指の位置を示す。方位コマンドの第1対により、掌をディスプレイに向かって平らにして、第2対によって、手を画面に向けて45度縦に回転させる。この例では、配合の対を示したが、SOEではいずれの数の配合でも考えられる。
コマンド例
図13−1および図13−2は、SOEと共に用いることができる、多数の可能なコマンドを示す。本明細書における論述の一部は、ディスプレイ上におけるカーソルの制御についてであったが、SOEはその行動に限定されるのではない。実際に、SOEは、画面上における全てのデータおよびデータの一部、更にはディスプレイの状態を操作する際に、様々に応用することができる。例えば、ビデオ・メディアの再生中に、これらのコマンドをビデオ制御に代わって用いることができる。これらのコマンドは、一時停止、早送り、巻き戻しなどを行うために用いることができる。加えて、画像のズーム・インおよびズーム・アウトを行うため、画像の方位を変化させるため、いずれかの方向にパンニングするため等に実施することができる。また、SOEは、開く、閉じる、保存する等のような、メニュー・コマンドの代わりに用いることもできる。言い換えると、想像することができるいずれのコマンドまたは活動でも、手のジェスチャによって実施することができる。
動作
図12は、一実施形態におけるSOEの動作を示す流れ図である。ステップ701において、検出システムはマーカおよびタグを検出する。判断ブロック702において、タグおよびマーカが検出されたか否か判断を行う。検出されていない場合、システムはステップ701に戻る。ステップ702においてタグおよびマーカが検出された場合、システムはステップ703に進む。ステップ703において、システムは、検出されたタグおよびマーカから、手、指、およびポーズを識別する。ステップ704において、システムは、ポーズの方位を識別する。ステップ705において、システムは、検出された1つまたは双方の手の三次元空間位置を識別する。(ステップ703、704、および705の内いずれでも、または全てを1つの動作として組み合わせてもよいことに注意されたい)。
ステップ706において、以上の情報を、前述したジェスチャ表記に変換する。判断ブロック707において、ポーズが有効か否か判断を行う。これは、発生した表記ストリングを用いた単純なストリング比較によって行うことができる。ポーズが有効でない場合、システムはステップ701に戻る。ポーズが有効である場合、ステップ708において、システムは表記および位置情報をコンピュータに送る。ステップ709において、コンピュータは、ジェスチャに応答して、取るべきしかるべき行為を決定し、ステップ710においてそれに応じてディスプレイを更新する。
SOEの一実施形態では、動作701〜705をカメラ内蔵プロセッサによって実行する。他の実施形態では、望ましければ、この処理をシステム・コンピュータによって実行することもできる。
解析および変換
本システムは、基礎となるシステムによって再現された低レベルのジェスチャの流れを「解析」および「変換」し、これら解析し変換したジェスチャを、コマンドまたはイベント・データの流れに変換することができる。このデータは、広範囲のコンピュータ・アプリケーションおよびシステムを制御するために用いることができる。これらの技法およびアルゴリズムは、これらの技法を実現するエンジン、およびエンジンの能力を利用するコンピュータ・アプリケーションを構築するプラットフォームの双方を提供するコンピュータ・コードから成るシステムにおいて具体化することができる。
一実施形態は、コンピュータ・インターフェースにおいて、人の手の豊富なジェスチャの使用を可能にすることを中心に据えるが、他の身体部分によって行われるジェスチャ(限定ではなく、腕、胴体、脚部、および頭部を含む)や、手ではない種々の器具によって行われるジェスチャを認識することもできる。これらの器具は、静止および連結式(articulating)双方であり、限定ではないが、キャリパ、コンパス、可撓性曲線近似器(curve approximator)、および種々の形状のポインティング・デバイスが含まれる。マーカおよびタグは、操作者によって所望に応じて携行および使用することができる品目および器具に被着することができる。
本明細書において記載するシステムは、認識し反応することができるジェスチャの範囲が豊富なジェスチャ・システムを構築することを可能にしつつ、同時にアプリケーションへの容易な統合にも備えた、多数の改革を組み込む。
一実施形態では、ジェスチャ解析および変換システムは、以下のものを備えている。
1)様々な異なる集計レベルにおいて、ジェスチャを指定する(コンピュータ・プログラムにおいて用いるためのエンコード)緻密かつ効率的な方法。
a.1本の手の「ポーズ」(手の部分の外形および互いに対する方位)。三次元空間における1つの手の方位および位置。
b.2つの手の組み合わせ。いずれかの手がポーズ、位置、または双方を考慮に入れる。
c.多数の人物の組み合わせ。本システムは2つよりも多い手を追跡することができ、したがって、一人よりも多い事物が協同して(ゲーム・アプリケーションの場合には競合して)目標システムを制御することができる。
d.ポーズが連続して組み合わされる順次ジェスチャ。これらを「動画」ジェスチャと呼ぶ。
e.操作者が空間内の形状を追跡する「書記素」ジェスチャ(grapheme gesture)。
2)所与のアプリケーション・コンテキストに関連があるものの上で、各カテゴリから特定のジェスチャを登録するプログラム技法。
3)登録されているジェスチャを識別することができ、これらのジェスチャをカプセル化するイベントを関連するアプリケーション・コンテキストに配信することができるように、ジェスチャの流れを解析するアルゴリズム。
指定システム(1)は、構成エレメント(1a)から(1f)と共に、本明細書に記載するシステムのジェスチャ解析および変換能力を利用するための基礎を提供する。
1つの手の「ポーズ」は、
i)手の指と甲との間の相対的方位、
ii)少数の離散状態への量子化、
のストリングとして表される。
相対的接合方位を用いることにより、本明細書に記載するシステムは、手のサイズおよび外形形状が異なることに伴う問題を回避することができる。このシステムでは、「操作者較正」を必要としない。加えて、ポーズをストリングまたは相対的方位の集合体として指定することにより、ポーズ表現を更に別のフィルタおよび指定と組み合わせることによって、一層複雑なジェスチャ指定(specification)を容易に作成することが可能になる。
ポーズ指定に少数の離散状態を用いることによって、ポーズを簡潔に指定することができ、更に種々の基礎となる追跡技術(例えば、カメラを用いた受動的光学追跡、点灯ドットおよびカメラを用いた能動的光学追跡、電磁場追跡等)を用いて、精度の高いポーズ認識を確実に行うことができる。
各カテゴリ(1a)から(1f)におけるジェスチャは、部分的に(または最小限に)指定することができるので、重大でないデータは無視される。例えば、2本の指の位置が明確であり他の指の位置は重要でないジェスチャは、2本の関連のある指の動作位置が与えられ、同じストリング内において、「ワイルド・カード」または包括的「無視」インディケータが他の指に対して掲示されている1つの指定によって表すことができる。
本明細書において記載するジェスチャ認識のための改革の全ては、限定ではなく、多層指定技法、相対的方位の使用、データの量子化、および各レベルにおける部分的または最小指定の許容を含み、手のジェスチャの指定を超えて、他の身体部分や「製造した」器具および物体を用いたジェスチャの指定に一般化する。
「ジェスチャを登録する」プログラム技法(2)は、どのジェスチャをエンジンが実行システムの他の部分に入手可能にすべきか定めることをプログラマに可能にする、定められた1組のアプリケーション・プログラミング・インターフェース・コールによって構成されている。
これらのAPIルーチンは、アプリケーション設定時に用いることができ、実行アプリケーションの寿命の間用いることができる静止インターフェース定義を作成する。また、これらは、実行中にも用いることができ、インターフェース特性を動作中に変更することができる。このリアル・タイムでのインターフェース変更により、
i)複雑なコンテキストおよび条件付き制御状態を構築すること、
ii)動的にヒステリシスを制御環境に追加すること、および
iii)ユーザが実行システム自体のインターフェース・ボキャブラリを変更または拡張することができるアプリケーションを作成すること、
が可能となる。
ジェスチャの流れを解析するアルゴリズム(3)は、(1)におけるように指定され(2)におけるように登録されたジェスチャを、入来する低レベルのジェスチャ・データと比較する。登録されているジェスチャに対する一致が認識された場合、一致したジェスチャを表すイベント・データが積層され実行アプリケーションに配信される。
このシステムの設計においては、効率的なリアル・タイムでの照合が望まれ、指定されたジェスチャは、できるだけ素早く処理される可能性のツリーとして扱われる。
加えて、指定されたジェスチャを認識するために内部で使用されている原始的比較演算子は、アプリケーション・プログラマが用いるためにも露出されるので、アプリケーション・コンテキスト内部からでも、より多くの比較(例えば、複雑なジェスチャまたは複合ジェスチャにおける柔軟な状態の検査)を行うことができる。
認識「ロッキング」セマンティクス(recognition locking semantics)は、本明細書に記載するシステムの改革の1つである。これらのセマンティクスは、登録API(2)(および、より狭い範囲で、指定ボキャブラリ(1)内に埋め込まれる)によって暗示される(imply)。登録APIコールは、
i)「エントリ」状態通知部および「連続」状態通知部、ならびに
ii)ジェスチャ優先度指定部
を含む。
ジェスチャが認識されている場合、その「連続」状態は、同じまたは低い優先度のジェスチャの全ての「エントリ」状態よりも優先される。このエントリ状態と連続状態との間の区別は、認められるシステム使用可能性に大きくプラスになる。
本明細書において記載するシステムは、実世界のデータ・エラーおよび不確実性をものともせずに、ロバストな動作のためのアルゴリズムを含む。低レベル追跡システムからのデータは不完全である場合もある(光学追跡におけるマーカの遮蔽、ネットワーク・ドロップアウト、処理の遅れ等を含む、種々の理由による)。
欠損データは、解析システムによって印が付けられ、その欠損データの量およびコンテキストに応じて、「最後に分かっていた」状態または「最もあり得る」状態のいずれかに組み込まれる。
特定のジェスチャ・コンポーネント(例えば、特定の関節の方位)についてのデータが見つからないが、その特定のコンポーネントの「最後に分かっていた」状態を、物理的に可能であると分析することができる場合、本システムはこの最後に分かっていた状態をそのリアル・タイム照合において用いる。
逆に、最後に分かっていた状態が、物理的に不可能であると分析された場合、本システムはそのコンポーネントにとって「最良のジェスチャ範囲」に後退し、この合成データをそのリアル・タイム照合において用いる。
本明細書において記載する指定および解析システムは、「利き手不可知論」をサポートするように注意深く設計されているので、多数の手のジェスチャについて、いずれの手でもポーズの要件を満たすことができる。
データ空間のナビゲーション
一実施形態のSOEは、グラフィック空間または他のデータ表現空間全域における線形推移または追跡運動を制御するために、「プッシュバック」(pushback)、即ち、人間の操作者の手の線形空間運動、または同質の次元活動の実行を可能にする。SOE、およびそれによって確立される計算および認識の連携は、スケールのレベルをナビゲートする、主に線形な「深度次元」を横断する、あるいは、最も一般的には、量子化されたまたは「抑止された」(detented)パラメータ空間にアクセスするための、基本的な構造化された方法を提供する。また、SOEは、操作者が意図的に追加コンテキストを取得することができる有効な手段、空間的、概念的、または計算的のいずれであっても、近傍(vicinities)および近隣(neighborhoods)を理解するための素早い技法を提供する。
ある種の実施形態では、プッシュバック技法は、従前の入力デバイス(例えば、マウス、トラックボール、一体化したスライダ、またはノブ)を用いることができ、または操作者自身の身体(person)から外部のタグ付きオブジェクトまたは追跡対象オブジェクトに依存することができる(例えば、器具を取り付けられた連鎖のリンク(instrumented kinematic linkages)、静磁気的に追跡される「入力レンガ」(input bricks))。別の代替実施形態では、プッシュバックの実施は、制御システム全体として十分であればよい。
一実施形態のSOEは、それよりも大きな空間相互作用システムの一部であり、その中に統合されている。このシステムは、コンピュータの制御のための慣習的なマウス主体グラフィック・ユーザ・インターフェース(「WIMP」UI)方法に取って代わり、代わりに、(a)1つ以上のタイプの物体(例えば、人間の手、人間の手の上にある物体、静止物体等)を追跡することができる物理的センサ、(b)検知された手の徐々に進展する位置、方位、およびポーズを分析して、一連のジェスチャ・イベントにする手段、(c)このような空間的イベントおよびジェスチャ・イベントを表すための記述的方式、(d)このようなイベントを制御プログラムにそしてその内部に配信するフレームワーク、(e)ジェスチャ・イベントのストリームによってエンコードされた人間の意思(コマンド)を、イベント・ストリーム自体およびイベント解釈の用途特定結果双方のグラフィック、聴覚的、およびその他の表示様式描写(display-modal depiction)と同期させる方法を備えている。これらの全てについて、以下で詳しく説明する。このような実施形態では、プッシュバック・システムは、追加の空間およびジェスチャ入力−および−インターフェース技法と統合される。
一般に、データ空間のナビゲーションは、検出器によって検出されたジェスチャ・データから、本体のジェスチャを検出することを含む。ジェスチャ・データは、ある時点および物理的空間における本体の瞬時的状態の絶対三次元位置データである。検出は、ジェスチャ・データを用いてジェスチャを識別することを含む。ナビゲーションは、ジェスチャをジェスチャ信号に変換すること、そしてこのジェスチャ信号に応答してデータ空間全体をナビゲートすることを含む。このデータ空間は、物理的空間において表されるデータ集合を含むデータ表現空間である。
一実施形態の全体的な周回レイテンシ(round-trip latency)(センサに対する手の動き−ポーズ分析−プッシュバック解釈システム−ディスプレイ・デバイスへのコンピュータ・グラフィクスのレンダリング−操作者の視覚系と続く周回)が低く抑えられているとき(例えば、実施形態が約15ミリ秒のレイテンシを呈する)、そして、システムの他のパラメータが適正に調整されているとき、プッシュバック相互作用の知覚的結果(perceptual consequence)は、物理的因果関係(causality)の格別な感覚となる。SOEは、ばね装填構造に対抗して押すことの物理的に反響する比喩(physically resonant metaphor)を文字どおりに解釈する(literalize)。知覚される因果関係は、非常に有効なフィードバックとなる。プッシュバック・システムによって供給される他のもっと抽象的なグラフィック・フィードバック様式と共に、そして操作者の移動の解釈におけるある程度の自由度の意図的な抑制によって、このようなフィードバックは、総体的および精細な人間動力活動(human motor activity)双方の、制御メカニズムとしての、安定した、信頼性のある、そして繰り返し可能な使用を可能にする。
SOEのコンテキストを評価する際、多くのデータ集合は本質的に空間的である。これらは、リテラル物理空間(literal physical space)内における現象、イベント、測定、観察、または構造を表す。より抽象的な他のデータ集合、またはリテラルであるが非空間的情報をエンコードする他のデータ集合については、表現(視覚的、聴覚的、または他の表示様式を伴う)を用意することが望ましいことが多い。その基本的態様の一部は、1つのスカラー値パラメータによって制御され、そのパラメータを空間的次元と関連付けることも有益であることが多い。プッシュバック・メカニズムによる操作から利点が得られるのは、この1つのスカラー・パラメータの操作である。これについては、以下で詳しく説明する。
更に、表現は、それらのパラメータに、小さな複数の離散値だけを許可することもできる。実際には、離散値は1つのこともあり、それに対してデータ集合は最適に見なされる。このような場合、「抑止されたパラメータ」、即ち、パラメータが明示的に「抑止されたパラメータ」の表現空間の一次元にマッピングされているか否か伝えることが有用である。本明細書における「抑止された」(detented)という用語の使用は、パラメータの好ましい量子化だけでなく、ラチェットの視野触覚的感覚(visuo-haptic sensation)、磁気整合メカニズム、ジョグ−シャトル・ホイール、および意図的な機械的抑止を有する他の豊かなこの世のデバイス(worldly devices)を呼び起こすことを意図している。
このようなパラメータの自明であるが極めて重要な例には、限定ではなく、(1)コンピュータ・グラフィクス環境における、データ集合のレンダリング可能な表現からの合成カメラの距離、(2)データが元のデータ集合からサンプリングされ、レンダリング可能な形態に変換される密度、(3)サンプルが時間可変データ集合から引き出され、レンダリング可能な表現に変換される時間的インデックスが含まれる。これらは、普遍的な手法であり、無数のドメイン特定パラメータ化も存在する。
SOEのプッシュバックは、一般に、データ集合のパラメータ−制御軸を、物理的空間におけるローカルに関連のある「深度次元」と整合させ、深度次元に沿った構造化実世界運動(real-world motion)が制御軸に沿ったデータ−空間変換を実行することを可能にする。その結果、パラメータ空間をナビゲートする非常に効率的な手段が得られる。以下に、SOEにおいて実施した場合のプッシュバックの代表的な実施形態の詳細な説明が続く。
プッシュバックの一例では、操作者は、テキストおよび画像を含む1つの「データ・フレーム」が現れる大きな壁ディスプレイの前において、十分な距離のところに立つ。グラフィック・データ・エレメントは、静的でも動的でもよい。データ・フレームは、例えば、画像を含むが、そのように限定されるのではない。データ・フレーム自体は二次元構造であるが、三次元コンピュータ・グラフィクス・レンダリング環境内に存在する。その基礎となる座標系は、部屋、ならびにディスプレイおよび操作者を含む、その内容物を記述するのに都合がよい実世界座標と一致するように配置されている。
操作者の手は、センサによって追跡され、センサは、彼女の指の位置および方位、ならびに恐らくは手の塊全体の位置および方位を、高い正確度および高い時間率(temporal rate)で解明する。システムは、各手の「ポーズ」、即ち、指の互いに対する、そして手の塊に対する幾何学的配置を特徴付けるために、得られた空間データを分析する。この実施形態例で追跡する物体は、人間の手(1つまたは複数である)が、代替実施形態では多くの他の物体も入力デバイスとして追跡することができる。一例には、一方側に押し返す場面(one-sided pushback scenario)があり、この場合、本体が開放位置にある操作者の手であり、掌が前方方向に面している(z−軸に沿って)(例えば、操作者の前にある表示画面に向かって)。この説明に限って言えば、壁ディスプレイは、xおよびy次元を占めるように置かれ、zは操作者とディスプレイとの間における次元を記述する。このプッシュバック実施形態と関連のあるジェスチャ相互作用空間は、定数zの平面で突き合わされた2つの空間を備えている。ディスプレイから遠い(即ち、操作者に近い)抑止間隔空間(detented interval space)を「デッド・ゾーン」と呼び、近い方の半空間を「アクティブ・ゾーン」と呼ぶ。デッド・ゾーンは、逆方向(操作者に向かい、ディスプレイから離れる方向)に不定に広がるが、前方には有限距離だけ広がり、デッド・ゾーン閾値にて終端となる。アクティブ・ゾーンは、デッド・ゾーン閾値からディスプレイまで前方に広がる。ディスプレイ上にレンダリングされるデータ・フレーム(1つまたは複数)は、アクティブ・ゾーンにおける本体の移動によって、相互作用的に制御される、即ち、「押し戻される」。
データ・フレームは、ディスプレイのサイズおよびアスペクト比と正確に一致するサイズおよびアスペクト比で構成され、その中心および法線ベクトルがディスプレイのこれら物理的属性と一致するように位置付けおよび方位が決められるが、実施形態はそのように限定されるのではない。シーン(scene)をレンダリングするために用いられる仮想カメラは、ディスプレイから直接前方に、大まかに操作者の距離に配置されている。このコンテキストでは、レンダリングされたフレームは、したがって、正確にディスプレイを満たすことになる。
可視フレームの左右には、論理的に多数の追加の共面データ・フレームが配置されている。これらの共面データ・フレームは均一に離間され、適度のギャップがそれに直接隣接するものから互いに分離する。これらは、コンピュータ・グラフィクス・レンダリング幾何学体系の物理的/仮想レンダリング境界の外側にあるので、これらの横方向に変位した隣接データ・フレームは初期状態では見えない。データ空間は、その幾何学的構造が与えられれば、z−方向において1つの自然な抑止部を、そして複数のx−抑止部を有することは理解されよう。
操作者は、彼女の左手を軽く握ったポーズで保持して、彼女の肩まで持ち上げる。次いで、彼女は指を開いて、これらが上方を指し示し、親指が右側を指し示し、彼女の掌が画面に面するようにする(以下で詳細に説明するジェスチャ記述言語では、このポーズ遷移は、[^^^^>:x^から||||_:x^]というように表現される)。本システムは、新たなポーズを検出すると、プッシュバック相互作用を誘起し、そのポーズが最初に入力されたところである手の絶対三空間位置を直ちに記録する。この位置は、「原点」として用いられ、以降の手の運動は、この原点からの相対的オフセットとして報告される。
直ちに、2つの同心円状の、部分的に透明なグリフ(glyph)がフレームの中心に(つまり、ディスプレイの中心に)重畳される。例えば、グリフは、デッド・ゾーンにおける、デッド・ゾーン閾値の点までの本体プッシュバック・ジェスチャを示すことができる。第2グリフが第1グリフよりも小さいのは、操作者の手がデッド・ゾーン内に存在し、それを貫通するプッシュバック動作が「未だ」加わっていないことを示す。操作者が彼女の手を前方に(デッド・ゾーン閾値およびディスプレイに向かって)移動させると、第2グリフが徐々に大きくなる。操作者の手がデッド・ゾーン閾値に来る地点で、第2グリフのサイズは第1グリフと同等になる。この例のグリフは、操作者の手がその開始位置から、デッド・ゾーンをアクティブ・ゾーンから分離するデッド・ゾーン閾値に向かって進行する際における、グリフの同心円エレメントの進展を示す。グリフの内部にある「歯状」部分は、手が閾値に近づくにつれて大きくなり、手が閾値の位置に達したときに、内側グリフおよび(静止)外側グリフの半径が、正確に一致するように配置されている。
第2グリフは、操作者が彼女の手をデッド・ゾーン閾値から遠離るように、そしてディスプレイから遠離るように移動させると、第1グリフの内側でサイズが小さくなるが、常に第1グリフと同心状にあり、ディスプレイの中心に位置することに変わりはない。極めて重要なのは、操作者の手の運動のz−成分のみがグリフのスケーリングにマッピングされており、手の運動の副次的なx−およびy−成分は何の寄与もなさないことである。
操作者の手がデッド・ゾーンの閾値を順方向に横断し、アクティブ・ゾーンに入ると、プッシュバック・メカニズムが関与する(engage)。手の相対的なz−位置(閾値から測定する)は、スケーリング関数の対象となり(subject)、その結果得られる値は、データ・フレームおよびその横方向の近隣のz−軸変位を行うために用いられるので、そのフレームのレンダリング画像はディスプレイから後退するように見え、そして近隣データ・フレームも見えてきて、表示空間の縁から「埋まっていく」。合成カメラの一定角度範囲(constant angular subtent)は、平面がカメラから離れるように移動するに連れて、フレームが位置する平面のより多くを幾何学的に「取り込む」。z−変位は連続的に更新されるので、操作者は、彼女の手をディスプレイに向けて押し込んだり、彼女自身に向かって引いたりすると、彼女の動きに直接応答して、横方向に後退および近接するフレームの集合体(lateral collections)を知覚する。
対応するプッシュバックから得られるデータ・フレームの第1の相対的z−軸変位の一例として、レンダリングされたデータ・フレームの画像は、ディスプレイから後退するように見え、隣接するデータ・フレームが見えるようになり、ディスプレイ空間の縁から「埋まっていく」。隣接するデータ・フレームは、多数の追加の共面データ・フレームを含み、可視フレームの左右に論理的に配置され、均一に離間され、適度なギャップが各々をその直接隣接するものから分離する。対応するプッシュバックから生ずるデータ・フレームの第2の相対的z−軸変位の一例として、そして第1の相対的z−軸変位について検討する。第1の相対的z−軸変位が生じたプッシング(pushing)から、操作者の手を更にプッシングした(z−軸に沿ってディスプレイに向かい操作者から離れる更なるプッシング)と仮定すると、レンダリングされたフレームの画像は、更にディスプレイから後退するように見えるので、より多くの隣接データ・フレームが見えるようになり、更に表示空間の縁から「埋まっていく」。
一方、対をなす同心円状グリフは、ここでフィードバックの変更を示す。操作者の手はアクティブ・ゾーン内にあり、第2グリフは、スケーリングに基づく反応から、回転反応に切り替わり、手の閾値からの物理的なz−軸オフセットが、正の(平面内)角度オフセットにマッピングされる。デッド・ゾーンにおいてデッド・ゾーン閾値の点を超えた本体のプッシュバック・ジェスチャ(z−軸に沿って、ディスプレイに向かって、そして操作者から遠離る)をグリフが示す例では、これらのグリフは、一旦操作者の手がデッド・ゾーン閾値を交差した際における、即ち、プッシュバック・メカニズムが能動的に関与するときの、グリフの進展を示す。つまり、操作者の手のディスプレイに向かう移動およびディスプレイから離れる移動が、第2グリフの時計回りおよび反時計回り方向の回転によって視覚的に示され(第1グリフは、以前と同様、静止基準状態を示す)、グリフの「歯状」エレメントが、手の閾値からのオフセットの線形関数として回転し、線形運動を回転表現に変える。
したがって、この例では、ディスプレイに向かうz−軸に沿った手の移動が第1増分だけ加わると、第2グリフの増分時計回り方向回転によって視覚的に示され(第1グリフは、以前と同様、静止基準状態を示す)、グリフの「歯状」エレメントは、手の閾値からのオフセットの線形関数に対応する第1の量だけ回転する。ディスプレイに向かうz−軸に沿った手の移動が第2増分だけ加わると、第2グリフの増分時計回り方向回転によって視覚的に示され(第1グリフは、以前と同様、静止基準状態を示す)、グリフの「歯状」エレメントは、手の閾値からのオフセットの線形関数に対応する第2の量だけ回転する。更に、ディスプレイに向かうz−軸に沿った手の移動の第3の増分は、第2グリフの増分時計回り方向回転によって視覚的に示され(第1グリフは、以前と同様、静止基準状態を示す)、グリフの「歯状」エレメントは、手の閾値からのオフセットの線形関数に対応する第3の量だけ回転する。
この見本とした用途では、操作者の手がアクティブ・ゾーン内にあるとき、副次的な次元感度が関与する。手の横方向(x−軸)運動が、この場合も可能なスケーリング関数によって、水平フレーム・シーケンスのx−変位にマッピングされる。スケーリング関数が正である場合、その効果は操作者の手の位置的「追従」(positional following)の1つであり、操作者はフレームを左右にスライドさせていることを知覚する。本体の横方向運動から生ずるデータ・フレームの横方向x−軸変位の一例として、データ・フレームは左から右にスライドし、特定のデータ・フレームが、表示空間の左縁端を通って視野から消えるまたは部分的に消えていき、一方追加のデータ・フレームが表示空間の右縁端から埋まっていくようになっている。
最後に、操作者が彼女の手の掌を前方に向けたポーズを終了させると(例えば、手を閉じて拳を作ることによって)、プッシュバック相互作用が終了し、フレームの集合体は素早くその元のz−抑制(即ち、ディスプレイと同一平面上)に戻される。同時に、フレーム集合体は、1つのフレームのディスプレイとのx−一致を達成するために、横方向に調節させられる。終了するフレーム、つまり、「ディスプレイの中心に来る」フレームは、プッシュバック終了の時点において同心円状グリフの中心に最も近かった、即ち、最も近いx−抑止点(nearest x-detent)にあった、いずれかのフレームである。ここでは、グリフ構造は、選択レティクルとして第2の機能を果たすように見えるが、実施形態はそのように限定されるのではない。フレーム集合体のz−およびx−位置は、通例、「ばね装填戻り」(spring-loaded return)の視覚的感覚を与えるために、短い時間感覚でそれらの最終的なディスプレイ−一致値まで進行することが許される。
この例において配備されるプッシュバック・システムは、(1)直接視覚視線−−深度次元−−に沿って総計したデータ集合を可変的に変位させることによって、認識的に貴重な「近隣コンテキスト」を取得することによって、視野に入れるデータ集合を増やす(データ集合のいずれの所与の部分についても、その角度範囲を縮小することと交換に)、(2)横方向に配列されたデータ集合をその自然水平次元に沿って可変的に変位させることによって、近隣コンテンツを取得し、データのいずれの所与の区間についてもその角度範囲を維持するが、馴染みのある「スクローリング」という感覚で、古いデータの見える範囲(visibility)を新しいデータのそれと交換する、(3)素早く次元的に制約されたナビゲーションによって、データ集合の離散化エレメントを選択するための効率的な制御様式を提供する。
一実施形態のプッシュバックの他の例では、操作者がウェスト・レベル・ディスプレイ・デバイスの直ぐ隣に起立する。ディスプレイ・デバイスのアクティブ面は、床面と平行な水平面にある。ここでは、座標系は、以前の例のそれと矛盾しないように設定される。表示面はx−z面内にあるので、表面に対して法線を表すy−軸は、物理的重力ベクトルに対して反対に位置合わせされる。
本体をテーブル状表示面の上で水平に保持した、物理的場面の一例では、本体は操作者の手であるが、実施形態はそのように限定されるのではない。プッシュバック相互作用は両面型であるので、上側デッド・ゾーン閾位値および下側デッド・ゾーン閾値1がある。加えて、プッシュバック操作によってアクセスされる線形空間には、離散空間抑止点(例えば、「第1抑止点」、「第2抑止点」、「第3抑止点」、「第4抑止点」)が上側アクティブ・ゾーンの中に設けられており、離散空間抑止点(例えば、「第1抑止点」、「第2抑止点」、「第3抑止点」、「第4抑止点」)が下側アクティブ・ゾーンの中に設けられている。一実施形態の相互作用空間は、上側デッド・ゾーンおよび下側デッド・ゾーンを備えている比較的小さなデッド・ゾーンが、プッシュバックが関与する垂直(y−軸)位置を中心に配され、アクティブ・ゾーンがこのデッド・ゾーンの上となり、アクティブ・ゾーンがこのデッド・ゾーンの下になるように構成されている。
操作者は、データ集合の一例を用いて作業しており、このデータ集合は離散平行面のスタックに分析されており、これらの離散平行面がデータ・フレームとなる。このデータ集合は、このようにして、それが表す物理的現実の自然な結末(例えば、断層写真走査からの離散スライス、三次元集積回路の多数のレイヤ等)として構成することができ、またはこれは、データ(例えば、多数のスペクトル帯域において取得した衛星画像、10年毎のデータが別個のレイヤに入っている、地理的に組織された人口調査データ等)を分離および離散化するように論理的または有益であるので、そのように構成することができる。更に、データの視覚表現は、静的であってもよく、または動的エレメントを含んでもよい。
プッシュバック機能が関与していない区間では、1つのレイヤが「現行」と見なされ、表示によって視覚的に目立って表され、物理的にディスプレイと一致すると知覚される。現行のレイヤの上および下にあるレイヤは、この例では、視覚的に一目瞭然ではない(その存在を示すためにこじんまりした図象が用いられているが)。
操作者は、ディスプレイ上で彼の閉じた右手を広げる。手を広げると、指が前方に広がり、親指が左に広がり、掌は下方を指し示し(遷移:[^^^^>:vxから||||−:vx])、このときにプッシュバック・システムが関与する。短い間隔(例えば、200ミリ秒)の間、現行のレイヤに隣接するある数のレイヤが、異なる視感度で現れる。各々は、ぼやけフィルタおよび透明性で、上下に合成される。その「程度」(severities)はそれぞれのレイヤの現行レイヤからの通常距離(ordinal distance)に依存する。
例えば、プッシュバック・システムを起動させると、現行のレイヤ(例えば、データ・フレーム)に隣接するレイヤ(例えば、データ・フレーム)が、異なる視感度で、徐々に現れる。この例では、スタックが多数のデータ・フレーム(データ・フレームのデータ集合に相応しいいずれかの数)を備えており、プッシュバック・システムを用いてこれらの間であちこちに移動する(traverse)ことができる。
同時に、以前の例から馴染みのある同心円状フィードバック・グリフが現れる。この場合、小さなデッド・ゾーンが、プッシュバックが関与する垂直(y−軸)位置を中心として配置され、アクティブ・ゾーンがデッド・ゾーンの上下双方に来るように、相互作用が構成されている。この配置によって、元のレイヤに「帰り着く」際において補助が与えられる。この場合、グリフは、連続レイヤに対する接近指示(directed proximity)を示す追加の単純なグラフィックによって作成される。
操作者の手がデッド・ゾーン内に残っている間、レイヤ・スタックの変位は発生しない。グリフは、直前の例における場合と同じ「予備的」行動を表し、手がゾーンのいずれかの境界に近づくに連れて、内側のグリフが大きくなる(勿論、ここでは、行動は両面で対称的である。内側のグリフは、手の開始y−位置では最小スケールにあり、手が上または下に動いても、外側のグリフと一致する方向に大きくなる)。
操作者の手がデッド・ゾーンの上平面を超えて上方に移動すると、内側のグリフは外側のグリフと重なり合い、以前と同様に、その方向に手が更に移動すると、内側グリフの反時計回り方向の回転運動が生ずる。同時に、レイヤ・スタックは「上方に平行移動」し始める。これらのレイヤの位置、元の現行レイヤの上にあるレイヤほど透明性が高くぼやけており、元の現行レイヤ自体はますます透過して行きそして一層ぼやけていく。その下にあるレイヤは、はっきりと見えてきてぼやけが少なくなる方向に移動する。
スタックの上方向への平行移動の他の例では、以前の現行レイヤが透明度を増して行き(この例では、見えなくなっていく)、この直前の現行レイヤに隣接するレイヤが、現時点における現行レイヤとして見ることができるようになる。加えて、スタックが上方に平行移動するに連れて、現時点における現行レイヤに隣接するレイヤが、異なる視感度で徐々に現れてくる。前述のように、スタックは、多数のデータ・フレーム(データ・フレームのデータ集合に相応しいいずれかの数)を備えており、プッシュバック・システムを用いてこれらの間であちこちに移動することができる。
レイヤ・スタックは、実世界距離(即ち、操作者の手のその初期位置からの変位を、部屋の座標(room coordinates)において測定したもの)と連続するレイヤ間における「論理的」距離との間におけるマッピングによって構成されている。レイヤ・スタックの平行移動は、勿論、近接度グラフィクスの瞬時的出現のように、このマッピングの結果である。一方、これは、表示面と現行レイヤとの間において(当初は)大きくなる距離を示す。また、これは、表示面が現在現行レイヤの下にあることも示す。
手の運動は続き、レイヤ・スタックは最終的に、現行のレイヤおよびその次の下にあるレイヤが正に表示面を跨る(即ち、表示面から等距離となる)位置を通過する。この地点を丁度通過するときに、近接度グラフィクスが変化して、表示面が今や現行のレイヤよりも高いことを示す。このとき、「現行レイヤ・ステータス」は既に次に低いレイヤに割り当てられている。一般に、現行のレイヤは、常に物理的表示面に最も近いレイヤであり、操作者がプッシュバック・システムを解除したときに、「選択される」レイヤである。
操作者が彼の手を上げ続けると、連続する各レイヤが表示面に向けて送られ、徐々に良く見えるようになり(resolved)、表示面との一時的な一致を得て、次いで次に低いレイヤを優先して、再び透明になりぼやけていく。操作者が彼の手の運動方向を逆にして、それを下げると、プロセスが逆になり、内側のグリフが時計回り方向に回転する。手が最終的にデッド・ゾーンを通過すると、元の現行レイヤが正確に表示面とy−軸と一直線になり(y-alignment)、スタックが停止する。次いで、スタックのy−進行が再開し、元の現行レイヤの上にある平面に連続的に焦点を合わせる。操作者の総合的な知覚は、彼が彼の手を用いて、レイヤのスタックを押し下げそして引き上げているという、強くそして単純なものである。
最後に、操作者が彼の手を閉じて(または、それ以外でそのポーズを変化させる)ことによってプッシュバックを解除すると、システムは、スタックを、表示面と一直線にy−軸方向に抑止するように(detented y-axis alignment)「急に変化させ」、プッシュバックを終了したときに表示面に最も近かったレイヤを、現行レイヤとする。この位置合わせ(positional alignment)の短い区間の間、他の全てのレイヤは、完全な透明状態に徐々に戻り、フィードバック・グリフは滑らかに消失する。
この例のデータ集合(ここでは、レイヤ)の離散化したエレメントは、主要プッシュバック(深度)軸に沿って分散される。以前では、これらのエレメント(データ・フレーム)は同じ平面にあり、深度軸に対して直交する次元に沿って横方向に配列されていた。この現在の配列は、透明技法の配備と共に、データが重畳されることが多く、あるレイヤは他のレイヤを通して見られることを意味する。しかしながら、この例における操作者は、(1)近隣コンテキスト(現行レイヤの上および下にあるレイヤの内容はなにか)を素早く得る装置(facility)、および(2)データ集合における平行積層エレメント間で効率的に選択し切り換える装置も享受する。操作者が(1)のみを意図する場合、デッド・ゾーンを設けることによって、操作者は元来選択されたレイヤに確実に戻ることができる。操作全体にわたって、2つの平行移動次元(translational dimensions)の抑制によって、速度および精度が可能になる(殆どの人間にとって、横方向にドリフトを生じることなく手を垂直に平行移動させることは比較的難しいが、前述したような様式は、このような横方向変位を単純に全て無視する)。
尚、ある種の目的のために、デッド・ゾーンが無限に広がるようにプッシュバック入力空間を構成することが好都合である場合もあることを注記しておく。そして、プッシュバックが関与すると直ぐに、そのアクティブなメカニズムも投入される。本明細書において紹介する第2の例では、これは、本来の現行レイヤは、一旦プッシュバック操作が開始されたなら、他のいずれとも同じように扱われることを意味する。経験的に、デッド・ゾーンの直線的な広がりは、操作者の好みの問題である。
この第2の例において説明した様式は、二次元(投影式または放射式のいずれでも構わない)および三次元(自動ステレオ式で、空中画像生成式(aerial-image-producing)等であろうとなかろうと構わない)デバイス双方を含む多種多様のディスプレイにわたって関連がある。後者、即ち、3Dの高品質な実施態様の場合、媒体のある種の特性が、プッシュバックの基礎となる知覚メカニズムを広く補助することができる。例えば、パララックス、光学被写体深度、および視覚的適応(ocular accommodation)現象の組み合わせは、多数のレイヤを同時に捕らえることを可能とし、表示面から多いレイヤを激しく褪せさせたりぼけさせる(または実際には一緒に除外する)必要性を解消する。更に、これらの様式は、ディスプレイの方位に関係なく適用される。これは、例におけるように、主に水平とするとよく、または壁上の目の高さに取り付けても同様に有用であると考えられる。
この第2の例の場面に対する拡張では、2つの手による操作の有用性を示す。ある種の用途では、レイヤ・スタック全体の平行移動、または個々のレイヤの横方向(即ち、xおよびz方向)の平行移動が必要となることがある。一実施形態では、操作者の他の、即ち、プッシュバックではない、手がこの変換を、例えば、ある様式によって行うことができる。この様式では、手を表示面に近接させると、データ集合のレイヤの内1つを「スライドさせ回す」(slide around)ことができるので、そのオフセットx−z位置が手のそれを追従するようになる。
操作者は、一般に、横方向平行移動およびプッシュバック操作を同時に着手することを、便利であり容易に御し易い(tractable)と考えることができる。連続ドメイン操作を一方の手に割り当て、離散型作業を他方の手に割り当てることにより、認識負荷(cognitive load)を最適化するように作用することができると提案することは、恐らく全面的に無意味なことではない。
データ集合に対して自然な視覚的側面がないSOEの下においてプッシュバックの更に別の例について検討することは有用である。代表的なのは、複数のオーディオ・チャネルを監視し、集合体の中から間欠的に1つを選択する問題である。プッシュバック・システムを適用すると、聴覚的出力には備えているが視覚出力には備えていない環境において、このようなタスクを可能にする。この様式は、直前の例のそれと非常に似ている。
操作者は、起立または着座して、1つのオーディオ・チャネルを聞いている。概念的に、このオーディオは、「聴覚面」と呼ばれる垂直面に存在し、この面には、幾何学的に、彼女の耳が含まれる。追加のオーディオ・チャネルは、この聴覚面に平行な追加の面内に存在するが、z−軸に沿って前方または後方に変位されている。
彼女の手を開いて、彼女の前9インチのところに保持し、掌を前方に向けて、プッシュバック・システムを投入する。数個の近接する面におけるオーディオが、差別的に徐々に現れ、各々の音量は、現行チャネルの面からのその元の距離に逆に依存する。実際には、2つまたは4つの追加チャネルを聴取可能にすることは、知覚的に非現実的である。同時に、「オーディオ・グリフ」が徐々に現れて、近接度フィードバックを与える。初期状態では、操作者の手がデッド・ゾーン内に保持されているが、グリフは辛うじて聞くことができる2音調の和音である(初期状態では、調和している)。
操作者が彼女の手を前方または後方に、デッド・ゾーンを通過するように移動させると、オーディオ・チャネルの音量は一定のままであるが、グリフの音量が増大する。手がデッド・ゾーンの前または後ろの閾値と交差すると、グリフはその「アクティブな」音量に到達する(未だ現行チャネルの音量に従う)。
一旦操作者の手が、例えば、前方方向に、アクティブ・ゾーンを通過して移動始めると、オーディオ・チャネルに期待される効果が得られる。現行のチャネル面が聴覚面から更に遠離るように押され、その音量が徐々に減少する(そして、これらのチャネルの音量はなおも更に先に進む(forward))。一方、「背後の」(dorsal)チャネル面の音量は、それが聴覚面に近づくに連れて、増大する。
一方、オーディオ・グリフはモードを切り換えている。手の前方への繰り出しには、トーンの1つの周波数上昇が伴い、「中点」において、聴覚面が1つのオーディオ・チャネル面および次のオーディオ・チャネル面に二等分すると、トーンが正確な1/5を形成する(数学的に、これは三全音間隔(triton interval)であるべきであるが、これを避けるべき理由がふんだんにある)。可変トーンの周波数は、手が更に前方に移動し続けるにしたがって、最終的に操作者が次のオーディオ面に「到達」するまで、上昇し続ける。次のオーディオ面に到達した時点で、トーンは正確に1オクターブに広がる。
種々のチャネルの試聴が続き、操作者は彼女の手を前後に平行移動させて、各々に順番にアクセスする。最後に、1つを選択するためには、単に彼女の手を閉じて、プッシュバック・セッションを終了させ、オーディオ面の集合体を整列状態(alignment)に「素早く変化させる」(spring)。他の(選択されなかった)チャネルは、グリフと同様に、徐々に消えて行き聞こえなくなる。
この例は、プッシュバック用途の異種を例示したのであり、同じ機能がこの場合も得られる。即ち、近隣コンテキストへのアクセス、および離散化したデータ・エレメント(ここでは、個々のオーディオ・ストリーム)の迅速な選択である。この場面は、聴覚フィードバック・メカニズム、特に、操作者が選択を行える程に目標チャネルに「十分近づいている」か否かについての情報を操作者に提供するために、信頼性のある人間のある種の周波数間隔を認識する能力(capacity)を利用するメカニズムに取って代わる。これは、特に、「可聴」信号が間欠的に現れるのみである音声チャネルにおいて重要である。オーディオ・フィードバック・グリフの連続性によって、それが存在したままとなり、チャネル自体が無音になっていても識別可能であり続ける。
尚、本例におけるSOEが空間化オーディオ(spatialized audio)を含む場合、前方距離(forward distance)に遠のくそして背後から近づく(またはその逆)連続オーディオ・レイヤの知覚を大幅に改善することができることを注記しておく。更に、操作者の位置において選択されたオーディオ面を一層文字どおりに(literally)「定位」する機会(opportunity)が、操作者の前にある後続レイヤおよび背後にある以前のレイヤと共に、有用に活用可能となる。
オーディオ・グリフの他のインスタンス化も可能であり、実際に、スペクトル分布を含む、種々のチャネル内容の特質が、どの種のグリフが最も明確に認識できるかを決定付ける傾向がある。一例として、他のオーディオ・グリフ・フォーマットが一定の音量を維持するが、周期的なクリックを用い、クリック間の間隔が聴覚面と最も近いオーディオ・チャネル面との近接性に比例する。最後に、ある種の状況の下では、そして操作者の鋭さに応じて、フィードバック・グリフが全くないオーディオ・プッシュバックを用いることが可能である。
プッシュバック・メカニズムを参照して、データ集合の表現において空間抑止点の数および密度が非常に大きくなる方向に増大するにつれて、空間およびそのパラメータ化が事実上連続になる。即ち、非抑止(non-detented)となる。しかしながら、このような極限においてもプッシュバックは有効であり続ける。これは、部分的に、プッシュバックの各呼び出し前におけるデータ集合の「初期状態」を、一時的抑止として扱うことができ、単純にデッド・ゾーンとして理解できるからである。
このような非抑止プッシュバックの用途は、無限に(または少なくとも実質的に)ズーム可能な図の考えと関連付けて見出すことができる。ズーム機能のプッシュバック制御は、オフセット手位置(offset hand position)をアフィン・スケール値(affine scale value)と関連付けるので、操作者は彼の手を前方または後方にズームの減少または増大(それぞれ)の度合いだけプッシュ(push)する。しかしながら、位置のズーム・パラメータへの直接マッピングによって、制御の手をデッド・ゾーンに戻しても、ズーム値をその初期状態に戻せることを保証するので、元の事前プッシュバック・ズーム状態(pre-pushback zoom state)は常に容易にアクセス可能である。
以上の例において説明した各場面では、プッシュバック・システムの突出した態様、およびSOE下におけるその使用についての説明を行った。更に、本明細書において記載した操作の各々は、効率および正確度のために、特定の種類の知覚フィードバックが人間の移動を案内することを可能にすることによって、1秒以下で高精度にそして総合的に着手する(undertake)ことができることは言うまでもない。また、他のときには、操作者は数十秒の間1つの連続プッシュバック「セッション」に留まっていることを有用と思う。調査の目標やコンテキスト取得の目標は、更に長い間隔にわたるプッシュバックによって十分に果たされる。
以上で説明した例は、物理的入力(ジェスチャ)空間の表現空間への線形マッピングを採用した。実空間においてA単位だけ制御手(control hand)を平行移動させると、A平行移動が行われた実空間の位置には係わらず、常に、表現空間におけるB単位[プライム](prime)だけの平行移動が得られる。しかしながら、他のマッピングも可能である。即ち、殆どの人間の操作者によって享受される精細モータ制御(fine motor control)によって、非線形マッピングの使用が可能となり、その場合、例えば、アクティブ閾値から遠く離れた差動ジェスチャ変換は、閾値付近におけるジェスチャ変換よりも、パラメータ化された次元に沿って大きな変位に変換することができる。
同時仮想/ディスプレイおよび物理空間
本システムは、1つ以上のディスプレイ・デバイス(「画面」)上に描かれた仮想空間を、当該システムの一人または複数の操作者によって占められる物理空間と一致するものとして扱う環境を提供することができる。このような環境の一実施形態についてここで説明する。この現実施形態は、固定位置に3つのプロジェクタ駆動画面を含み、1つのデスクトップ・コンピュータによって駆動され、本明細書に記載したジェスチャ・ボキャブラリおよびインターフェース・システムを用いて制御される。しかしながら、記載する技法は、いかなる数の画面でもサポートすること、これらの画面は移動可能であってもよいこと(固定ではなく)、画面は多くの独立したコンピュータによって同時に駆動してもよいこと、そしてシステム全体はいずれの入力デバイスまたは技法によっても制御できることを注記しておく。
本開示において記載するインターフェース・システムは、物理空間における画面の寸法、方位、および位置を決定する手段を有していなければならない。この情報を仮定して、本システムは、これらの画面が配置されている(そして、本システムの操作者が占める)物理空間を、本システム上で実行しているコンピュータ・アプリケーションの仮想空間への投影として動的にマッピングすることができる。この自動マッピングの一部として、本システムは、システムによってホストされているアプリケーションの必要性に応じて、種々の方法で2つの空間の規模、角度、深さ、寸法、およびその他の空間特性も変換する。
この物理空間と仮想空間との間における連続変換によって、既存のアプリケーション・プラットフォームでは達成が困難である、または既存のプラットフォーム上で実行するアプリケーション毎に1つ1つ実装しなければならない多数のインターフェース技法の一貫性があり普及する使用が可能となる。これらの技法は、(限定ではないが)以下を含む。
1)「リテラル・ポインティング」(literal pointing)の広く行き渡る自然なインターフェース技法としての使用。ジェスチャ・インターフェース環境において手を用いるか、あるいは物理的ポインティング・ツールまたはデバイスを用いる。
2)画面の移動または再位置決めに対する自動補償。
3)操作者の位置に応じて変化するグラフィクス・レンダリング。例えば、深度の知覚を高めるためにパララックス・シフトをシミュレーションする。
4)実世界位置、方位、状態等を考慮に入れた、画面上表示への物理的オブジェクトの含入。例えば、大きく不透明な画面の前に立っている操作者は、アプリケーションのグラフィクスと、画面の背後にある(そして、恐らく移動しているか、または方位を変えている)スケール・モデル(scale model)の真の位置の表現との双方を見ることができる。
リテラル・ポインティングは、マウスに基づくウィンドーイング・インターフェースや殆どのその他の現在のシステムにおいて用いられている絶対ポインティングとは異なることを注記するのは重要である。これらのシステムでは、操作者は仮想ポインタと物理ポインティング・デバイスとの間の変換を管理することを学習しなければならず、更にこれら2つの間で経験的知識に基づいてマッピングしなければならない。
対照的に、本開示において記載するシステムでは、アプリケーションまたはユーザの観点のいずれからでも、仮想空間と物理空間との間に差がないので(仮想空間の方が数学的操作がし易いことを除く)、操作者に経験的知識に基づく変換は必要とされない。
本明細書において記載する実施形態によって提供されるリテラル・ポインティングに最も近い類似性は、接触感応画面(例えば、多くのATMマシン上で見られる)である。接触感応画面は、画面上の二次元表示空間と画面表面の二次元入力空間との間に1対1のマッピングを規定する。同様に、本明細書において記載するシステムは、1つ以上の画面上に表示される仮想空間と、操作者によって占められる物理空間との間に柔軟なマッピング(1対1のマッピングも可能であるが、その必要性はない)を規定する。この類似性の有益さ(usefulness of the analogy)にも拘わらず、この「マッピング手法」の三次元、任意に大きなアーキテクチャ環境、および多数の画面への拡張は重要である。
本明細書において記載するコンポーネントに加えて、本システムは、環境の物理空間と各画面上の表示空間との間に連続的なシステム・レベルのマッピング(恐らく回転、平行移動、倍率調整、またはその他の幾何学的変換によって変更される)を実現するアルゴリズムも実装することができる。
レンダリング・スタックは、計算オブジェクトおよびマッピングを取り込み、仮想空間のグラフィック表現を出力する。
入力イベント処理スタックは、制御システムからイベント・データを取り込み(現実施形態では、システムおよびマウス入力からのジェスチャ・データおよびポインティング・データの双方)、入力イベントからの空間データを仮想空間における座標にマッピングする。次いで、変換されたイベントは、実行中のアプリケーションに配信される。
「グルー・レイヤ」は、システムが、ローカル・エリア・ネットワークにある数台のコンピュータに跨って実行するアプリケーションをホストすることを可能にする。
空間連続体入力システムの実施形態について、ここでは、ネットワーク系データ表現、移送、および交換を備えたものとして説明する。これは、「プラズマ」と呼ばれるシステムを含み、以下で詳細に説明するように、サブシステム「スロークス」、「プロテイン」、および「プール」を備えている。プールおよびプロテインは、本明細書において説明する、プロセス間でまたはプロセスに跨って共有されるべきデータをカプセル化するための方法およびシステムの構成要素である。また、これらのメカニズムは、プロテインおよびプールの他に、スロークス(「スロー」(slaw)の複数形)も含む。一般に、スロークスは、プロセス間交換についての最も低いレベルのデータ定義を規定し、プロテインは、中間レベルの構造を規定し、照会(querying)およびフィルタリングを担い(hook for)、プールは、高レベルの編成およびアクセス・セマンティクスを規定する。スロークスは、効率的で、プラットフォームに依存しないデータ表現およびアクセスのためのメカニズムを含む。プロテインは、スロークスをペイロードとして用いて、データ・カプセル化および輸送方式を規定する。プールは、ローカル・プロセス間での、リモート・プロセスまたは分散プロセス間にあるネットワークを跨いだ、そして「長期」(例えば、ディスク上等における)記憶を通じた、プロセス内におけるプロテインの構造化された柔軟な集計、順序付け、フィルタリング、および分散を規定する。
マルチプロセス・インタラクティブ・システムの実施形態の構成および実施態様は、様々な構造(construct)を含み、これらが一緒になって多数の能力を可能にする。例えば、本明細書において記載する実施形態は、前述のように大多数のプロセス間におけるデータの効率的な交換に備えている。また、本明細書において記載する実施形態は、柔軟なデータの「分類」 (typing)および構造にも備えているので、広範囲にわたる多様な種類のデータおよび使用をサポートする。更に、本明細書において記載する実施形態は、データ交換のための柔軟なメカニズム(例えば、ローカル・メモリ、ディスク、ネットワーク等)を含み、これらは全て実質的に同様のアプリケーション・プログラミング・インターフェース(API)によって駆動される。更に、本明細書において記載する実施形態は、異なるプログラミング言語で書かれたプロセス間におけるデータ交換を可能にする。加えて、本明細書において記載する実施形態は、データ・キャッシュおよび集計状態の自動的な保守を可能にする。
図14は、一実施形態の下において、スロークス、プロテイン、およびプールを用いたデータ表現を含む処理環境のブロック図である。本明細書において紹介する実施形態の主要な構造には、スロークス(「スロー」(slaw)の複数形)、プロテイン、およびプールが含まれる。本明細書において記載する場合、スロークスは、効率的で、プラットフォームに依存しないデータ表現およびアクセスのためのメカニズムを含む。プロテインは、本明細書において詳細に説明するように、データ・カプセル化および輸送方式を規定し、一実施形態のプロテインのペイロードはスロークスを含む。プールは、本明細書において記載する場合、プロテインの構造化されているが柔軟な集計、順序付け、フィルタ処理、および分散を規定する。プールは、プロテインのための、プロセス内部における、ローカル・プロセッサ間での、リモート・プロセスまたは分散プロセス間にあるネットワークを跨いだ、そして「長期」(例えば、ディスク上)記憶による、データへのアクセスを与える。
図15は、一実施形態の下におけるプロテインのブロック図である。プロテインは、長さヘッダ、ディスクリップ、およびインジェストを含む。以下で詳細に説明するが、ディスクリップおよびインジェストの各々は、スローまたはスロークスを含む。
図16は、一実施形態の下におけるディスクリップのブロック図である。以下で詳細に説明するが、ディスクリップは、オフセット、長さ、およびスロークスを含む。
図17は、一実施形態の下におけるインジェストのブロック図である。以下で詳細に説明するが、インジェストは、オフセット、長さ、およびスローを含む。
図18は、一実施形態の下におけるスローのブロック図である。以下で詳細に説明するが、スローは、タイプ・ヘッダ、およびタイプ特定データを含む。
図19Aは、一実施形態の下における、プールの中にあるプロテインのブロック図である。プロテインは、長さヘッダ(「プロテイン長」)、ディスクリップ・オフセット、インジェスト・オフセット、ディスクリップ、およびインジェストを含む。ディスクリップは、オフセット、長さ、およびスローを含む。インジェストは、オフセット、長さ、およびスローを含む。
プロテインは、本明細書において記載する場合、プロセッサ間で共有する、あるいはバスまたはネットワークまたはその他の処理構造を跨いで移動する必要があるデータをカプセル化するメカニズムのことである。一例として、プロテインは、ユーザ・インターフェース・イベントに対応するまたは関連するデータを含むデータの輸送および操作のための改良メカニズムを提供する。具体的には、一実施形態のユーザ・インターフェース・イベントは、前述したジェスチャ・インターフェースのそれらを含む。更に別の例として、プロテインは、限定ではく、グラフィクス・データまたはイベント、および状態情報等その他多数を含むデータの輸送および操作のための改良メカニズムを提供する。プロテインは、構造化レコード・フォーマット、およびレコードを操作するための1組の関連方法である。本明細書において用いる場合、レコードの操作は、データを構造に入力すること、構造からデータを取り出すこと、およびデータのフォーマットおよび存在を問い合わせることを含む。プロテインは、種々のコンピュータ言語で書かれたコードを通じて用いられるように構成されている。また、プロテインは、本明細書において記載するような、プールの基本的構築ブロックとなるように構成されている。更に、プロテインは、それらが含むデータを不変のまま維持しつつ、プロセッサ間そしてネットワークを跨いで自然に移動できるように構成されている。
従来のデータ輸送メカニズムとは対照的に、プロテインにはタイプが決められていない。タイプは決められていないが、プロテインは、「タイプ状」機能を実装することに加えて、強力で柔軟性のあるパターン照合装置(facility)を備えている。また、本明細書に記載するように構成されているプロテインは、本質的に多点型でもある(しかし、二点間形態も、多点伝送の部分集合として容易に実現される)。加えて、プロテインはメモリ内、ディスク上、およびワイヤ(ネットワーク)上フォーマット間で異なることがない「ユニバーサル」レコード・フォーマットを定義する(即ち、実行する任意の最適化の種類だけが異なる)。
図15および図19Aを参照すると、一実施形態のプロテインは、バイトの線形シーケンスである。これらのバイトの中には、ディスクリップ・リストと、1組のキー値対がカプセル化されている。キー値対をインジェストと呼ぶ。ディスクリップ・リストは、綿密(elaborate)であるが効率的にフィルタ可能なプロテイン毎のイベント記述を任意に含む。インジェストは、1組のキー値対を含み、これらがプロテインの実際の内容を構成する。
プロテインのキー値対との関わり、ならびにネットワークに都合がよい(network-friendly)多点データ相互交換に関する中核的観念の一部は、「タプル」の概念を特別に許可する(priviledge)もっと簡単なシステム(例えば、Linda、Jini)と共有される。プロテインは、タプル指向システムとは様々な面で大きく異なり、その相違には、標準的、最適化可能なパターン照合基盤を設けるためにディスクリップ・リストを用いることが含まれる。また、プロテインがタプル指向システムと異なるのは、種々の記憶および言語構造に適したレコード・フォーマットの厳格な仕様、そしてそのレコード・フォーマットに対する「インターフェース」の色々な特定的な実施態様である。
プロテインの説明に戻って、プロテインの最初の4バイトまたは8バイトは、プロテインの長さを指定する。一実施形態では、長さは16バイトの倍数でなければならない。この16バイトの粒度により、バイト整合およびバス整合効率が現在のハードウェアでも達成可能であることを確保する。本来「4ワード整合」型でないプロテインには、任意のバイトを詰めこんで、その長さが16バイトの倍数となるようにする。
プロテインの長さ部分は、次のフォーマットを有する。ビッグ・エンディアン・フォーマット(big-endian format)で長さを指定する32ビット。その下位4ビットはマクロ・レベルのプロテイン構造特性を示すフラグとして機能する。プロテインの長さが2^32バイトよりも大きい場合、その次に来る更に別の32ビット。
一実施形態における16バイト整合条件は、最初の4バイトの最下位ビットがフラグとして利用可能であることを意味する。そして、このため、最下位の3ビット・フラグは、プロテインの長さが最初の4バイトで表現できるのか、または8バイト必要なのかを示し、プロテインがビッグ・エンディアンまたはリトル・エンディアンの内どちらのバイト順序付けを用いるのかを示し、更に、プロテインが標準的構造または非標準的構造のどちらを採用するのかをそれぞれ示すが、プロテインはこのように限定されるのではない。4番目のフラグ・ビットは、今後の使用のために保存されている。
8バイト長フラグ・ビットがセットされている場合、プロテインの長さを計算するには、次の4バイトを読み取り、これらをビッグ・エンディアン、8バイト整数の上位バイトとして用いる(4バイトは既に読み取られ、下位部分を供給する)。リトル・エンディアン・フラグがセットされている場合、プロテインの中にある全ての二進数値データをリトル・エンディアンとして解釈する(それ以外の場合は、ビッグ・エンディアン)。非標準フラグ・ビットがセットされている場合、プロテインの残りの部分は、以下で説明する標準構造に従わない。
非標準プロテイン構造については、プロテインおよびプールを用いるシステム・プログラマには、非標準プロテイン・フォーマットを記述しこれに同期するための種々の方法が利用可能であること、そしてこれらの方法は、空間または計算サイクルが制限されているときに有用となることができることを除いて、ここではこれ以上論じない。例えば、一実施形態では、最短のプロテインは16バイトである。標準フォーマットのプロテインは、実際のペイロード・データをこれらの16バイトにはめ込むことは全くできない(その一番大きい部分は既に、プロテインのコンポーネント・パーツの位置を記述することが任されている)。しかし、非標準フォーマット・プロテインは、その16バイトの内12バイトをデータに用いることができると考えられる。2つのアプリケーションがプロテインを交換すると、これらが発信するいずれの16バイト長プロテインでも常に12バイトを含み、これらは、例えば、リアル・タイム・アナログ/ディジタル変換器からの12個の8ビット・センサ値を表すことを相互に決定することができる。
長さヘッダの直後には、プロテインの標準構造では、更に2つの可変長整数値が現れる。これらの数値は、それぞれ、ディスクリップ・リストにおける最初のエレメント、および最初のキー値対(インジェスト)に対するオフセットを指定する。これらのオフセットは、本明細書では、それぞれディスクリップ・オフセットおよびインジェスト・オフセットとも呼ぶ。これらの数値の各クアッド(quad)のバイト順序は、プロテイン・エンディアンネス・フラグ・ビット(protein endianness flag bit)によって指定される。各々について、最初の4バイトの最上位ビットは数値が4または8バイト幅のどちらであるかを決定する。最上位ビット(msb)がセットされている場合、最初の4バイトは二重ワード(8バイト)数値の最上位バイトとなる。ここでは、これを「オフセット形式」と呼ぶ。ディスクリップおよび対を指し示す別個のオフセットを用いることにより、ディスクリップおよび対を異なるコード・パスによって扱うことが可能となり、例えば、ディスクリップ・パターン照合およびプロテイン・アセンブリに関する個々の最適化を行うことができるようになる。また、これら2つのオフセットがプロテインの先頭にあるため、様々な有用な最適化に対処できる。
殆どのプロテインは8バイト長またはポインタを必要とする程大きくないので、一般に長さ(とフラグ)および2つのオフセット数値は、プロテインの最初の3バイトを占めるに過ぎない。多くのハードウェアまたはシステム・アーキテクチャでは、最初のバイトを超えるある数のバイトのフェッチ即ちリードは、「自由」である(例えば、16バイトは、セル・プロセッサ(Cell processor)の主要バスを介して引き込むには、1バイトと全く同じ数のクロック・サイクルを要する。)
多くの場合、プロテイン内部において実施態様特定またはコンテキスト特定のキャッシング(caching)またはメタデータを許容することは有用である。オフセットの使用により、プロテインの先頭付近に、任意のサイズの「孔」を作成し、その中にこのようなメタデータを割り込ませることができる。8バイトのメタデータを利用することができる実施態様では、多くのシステム・アーキテクチャ上でこれらのバイトを、長さヘッダをフェッチする毎に1つのプロテインに対して自由に得ることができる。
ディスクリップ・オフセットは、プロテインの先頭と最初のディスクリップ・エントリとの間のバイト数を指定する。各ディスクリップ・エントリは、次のディスクリップ・エントリまでのオフセット(勿論、オフセット形態で)を備えており、その後に可変幅の長さフィールド(これもオフセット・フォーマットで)が続き、更にその後にスローが続く。これ以上ディスクリップがない場合、オフセットは、規則上、0の4バイトとなる。それ以外の場合、オフセットは、当該ディスクリップ・エントリの開始と次との間のバイト数を指定する。長さフィールドは、バイト単位で、スローの長さを指定する。
殆どのプロテインでは、各ディスクリップは、スロー・ストリング様式でフォーマットしたストリングであり、4バイトの長さ/タイプ・ヘッダを有し、最上位ビットがセットされ、下位30ビットだけが長さを指定するために用いられ、その後に、ヘッダが指示する数のデータ・バイトが続く。通常通り、長さヘッダはそのエンディアンネスをプロテインから取り込む。バイトは、UTF−8キャラクタをエンコードすると仮定する(したがって、キャラクタ数は必ずしもバイト数と同じではないことを注記しておく)。
インジェスト・オフセットは、プロテインの先頭と最初のインジェスト・エントリとの間のバイト数を指定する。各インジェスト・エントリは、次のインジェスト・エントリまでのオフセット(オフセット・フォームで)を備えており、その後にこの場合も長さフィールドおよびスローが続く。インジェスト・オフセットは、次のディスクリップ・エントリの代わりに次のインジェスト・エントリを指し示すことを除いて、ディスクリップ・オフセットと機能的には同一である。
殆どのプロテインでは、各インジェストは、スロー・コンス・タイプ(slaw cons type)であり、二値リストを備えている。このリストは通常キー/値対として用いられる。スロー・コンス・レコードは、最上位から2番目のビットがセットされており、下位30ビットだけが長さを指定するために用いられる4バイトの長さ/タイプ・ヘッダと、4バイトの値(2番目)エレメントの先頭までのオフセットと、前述の4バイトのキー・エレメント長と、キー・エレメントに対するスロー・レコードと、4バイト長の値エレメントと、最後に前述の値エレメントに対するスロー・レコードとを備えている。
一般に、コンス・キーはスロー・ストリングである。数個のプロテインおよびスロー・コンス長ならびにオフセット・フィールドを跨いでデータを複製することにより、工夫(refinement)および最適化の一層多くの機会が得られる。
前述のように、類型に分けたデータをプロテイン内部に埋め込むために一実施形態において用いられる構造は、タグ付きのバイト・シーケンス指定および抽象化(abstraction)であり、「スロー」と呼ばれる(複数形は「slawx」となる)。スローは、類型に分けた(恐らくは、集計)データの一片を表すバイトの線形シーケンスであり、プログラミング言語特定APIと関連付けられている。APIは、スロークスを作成し、修正し、メモリ空間、記憶媒体、およびマシンの間で移動させることができる。スロー・タイプ方式(slaw type scheme)は、拡張可能でできるだけ軽量であり、あらゆるプログラミング言語からでも用いることができる共通基盤となることを意図している。
効率的な、大規模プロセス間通信メカニズムを構築することの要望が、スロー・コンフィギュレーションの原動力(driver)である。従来のプログラミング言語は、精巧なデータ構造およびタイプ機能を備えており、プロセス特定のメモリ・レイアウトでは申し分なく動作するが、データをプロセッサ間で移動させたり、ディスク上に格納することが必要となると、これらのデータ表現はいつでも決まって分解する。スロー・アーキテクチャは、第1に、プロセス間通信に対する、非常に効率的で、マルチ・プラットフォームに都合がよい低レベル・データ・モデルである。
しかし、更に一層重要なのは、スロークスが、プロテインと共に、今後の計算機ハードウェア(マイクロプロセッサ、メモリ・コントローラ、ディスク・コントローラ)の開発に影響を及ぼし、それを可能にするように構成されていることである。例えば、広く一般に入手可能なマイクロプロセッサの命令セットに、多少の具体的な追加を行うことにより、スロークスが、殆どのプログラミング言語において用いられている方式と同様に、単一プロセス、メモリ内データ・レイアウトに対しても効率的となることが可能になる。
各スローは、可変長のタイプ・ヘッダと、その後に続くタイプ特定データ・レイアウトとを備えている。例えば、C、C++、およびRubyにおけるスロー機能を全てサポートする実施形態の一例では、タイプは、各言語からアクセス可能なシステム・ヘッダ・ファイルにおいて定義されているユニバーサル整数(universal integer)によって示される。更に精巧化し柔軟性を高めたタイプ解明機能(type resolution functionality)、例えば、ユニバーサル・オブジェクトIDおよびネットワーク参照による間接的類型決定も可能である。
一実施形態のスロー・コンフィギュレーションは、スロー・レコードを、例えば、RubyおよびC++双方から言語に優しい様式でオブジェクトとして用いることを可能にする。C++コンパイラ外部の1組のユーティリティが、スロー・バイト・レイアウトの健全性をチェックし、個々のスロー・タイプに特定的なヘッダ・ファイルおよびマクロを作成し、Rubyに対するバインディング(binding)を自動的に発生する。その結果、正しく構成したスロー・タイプは、1つのプロセスの中から用いた場合でも、非常に効率的となる。プロセスのアクセス可能なメモリのいずれの場所におけるいずれのスローでも、コピーや「非直列化」ステップがなくても、アドレスすることができる。
一実施形態のスロー機能は、以下の内1つ以上を実行するAPI機能を含む。具体的なタイプの新たなスローを作成する。ディスク上またはメモリ内におけるバイトからのスローへの言語特定参照を作成または構築する。タイプに特定の様式でスロー内にデータを埋め込む。スローのサイズを問い合わせる。スロー内部からデータを引き出す。スローのクローンを作成する。そして、スロー内部にある全てのデータのエンディアンネスおよびその他のフォーマット属性を変換する。スローのあらゆる種(species)が以上の挙動を実施する。
図19B−1および図19B−2は、一実施形態の下におけるスロー・ヘッダのフォーマットを示す。以下にスローの詳細な説明を行う。
各スローの内部構造は、タイプ解明、カプセル化データへのアクセス、および当該スロー・インスタンスについてのサイズ情報の各々を最適化する。一実施形態では、1組のスロー・タイプ全体は、設計上、最小限の全てが揃っており、スロー・ストリング、スロー・コンス(即ち、ダイアッド(dyad))、スロー・リスト、およびスロー数値オブジェクトを含む。スロー数値オブジェクト自体は、半ダース程度の基本的な属性の組み合わせ(permutation)として理解される、広範な1組の個別数値タイプを表す。いずれのスローでも、その他の基本的プロパティはそのサイズである。一実施形態では、スロークスは、4の倍数に量子化したバイト長を有し、これらの4バイト・ワードを、ここでは「クアッド」と呼ぶ。一般に、このようなクアッドに基づくサイズ決定により、スロークスを最新のコンピュータ・ハードウェア・アーキテクチャのコンフィギュレーションと正確に整合させる。
一実施形態では、各スローの最初の4バイトは、ヘッダ構造を備えている。ヘッダ構造は、タイプ記述およびその他のメタ情報をエンコードし、特定的なタイプの意味を特定のビット・パターンに帰属させる(ascribe)。例えば、スロー・ヘッダの最初の(最上位)ビットは、そのスローのサイズ(クアッド・ワード単位の長さ)が最初の4バイトのタイプ・ヘッダに従うか否か指定するために用いることができる。このビットがセットされている場合、スローのサイズが当該スローの次の4バイト(例えば、バイト5から8まで)に明示的に記録されていることが分かる。スローのサイズが、4バイトでは表現できないような場合(即ち、サイズが2の32乗以上である場合)、スローの最初の4バイトの次の最上位ビットもセットする。これは、スローが8バイト(4バイトではなく)長を有することを意味する。その場合、検査プロセスが、序数バイト(ordinal byte)5から12までに格納されているスローの長さを発見する。他方で、スロー・タイプの数値が小さいことは、多くの場合、完全に指定した類型ビット・パターンが、4バイトのスロー・ヘッダにおける多くのビットを「未使用のまま残してある」ことを意味し、そのような場合、これらのビットは、スローの長さをエンコードするために用いてもよく、そうしなければ必要となるはずのバイト(5から8まで)を取っておくことができる。
例えば、一実施形態では、スロー・ヘッダの最上位ビット(「長さ従属」フラグ)をセットしないままにしておき、次のビットをセットして、そのスローが「微小コンス」であることを示し、この場合、スローの長さ(クアッド単位)を残りの30ビットにエンコードする。同様に、「微小ストリング」は、ヘッダにおけるパターン001によって印され、スロー・ストリングの長さを表すために、29ビットが残され、ヘッダにおける最初の0001が「微小リスト」を記述する。これは、28ビットの利用可能長表現ビットのために、サイズが2から28クアッドまでのスロー・リストとすることができる。「最大ストリング」(あるいはコンスまたはリスト)は、ヘッダに異なるビット・シグネーチャを有し、ヘッダの最上位ビットは必ずセットされる。何故なら、スロー長はバイト5から8(または、極端な場合には12)において別個にエンコードされるからである。尚、プラズマ実施態様は、スローの組立時に、これらの構造の「微小」バージョンまたは「最大」バージョンのどちらを採用すべきか「決定する」(決定は、最終的なサイズが利用可能な微小ビットに「納まるか」否かに基づく)が、最大−対−微小の詳細は、プラズマ実施態様のユーザには隠されている。ユーザは、スロー・ストリング、またはスロー・コンス、またはスロー・リストを用いていることしか知らないし、そのことしか気に留めない。
一実施形態では、数値スロークスは、最初のヘッダ・パターン00001によって示される。後続のヘッダ・ビットは、任意の順列に組み合わせることができる1組の直交プロパティを表すために用いられる。一実施形態では、数値が(1)浮動小数点、(2)複素数、(3)符号なし、(4)「広い」、(5)「太くて短い」(stumpy)であるか否かを示すために、5つのこのようなキャラクタ・ビットを用いるが、これらに限定されるのではない((4)「広い」および(5)「太くて短い」の順序を変えて、8、16、32、および64ビット数表現を示す)。2つの追加ビット(例えば、(7)および(8))は、カプセル化した数値データが、2−、3−、または4−エレメント・ベクトルであることを示す(双方のビットが0の場合、数値が「1−エレメント・ベクトル」(即ち、スカラー)であることを示唆する)。この実施形態では、4番目のヘッダ・バイトの8ビットを用いて、カプセル化した数値データのサイズを(クアッド単位ではなく、バイト単位で)エンコードする。このサイズのエンコード処理は、1から256までの間のいずれのサイズでも表すことができるように、1だけずらされる。最後に、2つのキャラクタ・ビット(例えば、(9)および(10))を用いて、数値データが個々の数値エンティティの配列をエンコードすることを示す。数値エンティティの各々は、キャラクタ・ビット(1)から(8)までによって記述されるタイプのものである。アレイの場合、個々の数値エンティティには、各々、追加のヘッダが添付されず、1つのヘッダおよび恐らくは、明示的なスロー・サイズ情報に続く連続データとしてパックされる。
この実施形態では、単純かつ効率的なスローの複製(バイト毎のコピーとして実施することができる)、および非常に単純で効率的なスローの比較が可能となる(この実施形態では、連続と見なされる構成バイトの各々に1対1の一致がある場合に限って、2つのスロークスは同一となる)。後者のプロパティは、例えば、プロテイン・アーキテクチャの効率的な実現には重要である。その重要なそして波及する(pervasive)特徴は、プロテインのディスクリップ・リスト全体を検索できること、または「リスト上で照合」できることである。
更に、本明細書における実施形態は、集計スロー形態(例えば、スロー・コンスおよびスロー・リスト)を簡単かつ効率的に作成することを可能にする。例えば、一実施形態では、スロー・コンスを、いずれのタイプでもよく、これら自体集計を含む、2つの成分スロークスから次のように構築する。(a)各成分スローのサイズを問い合わせ、(b)2つの成分スロークスのサイズ、およびヘッダ・プラス・サイズ構造に必要な1、2、または3クアッドの和に等しいサイズのメモリを割り当て、(c)最初の4、8、または12バイトにスロー・ヘッダ(およびサイズ情報)を記録し、次いで(d)成分スロークスのバイトを順番に、直後に続くメモリにコピーする。重要なのは、このような組立ルーチンは、2つの成分スロークスのタイプについて何も知る必要がなく、それらのサイズ(そして、バイトのシーケンスとしてのアクセス可能性)だけが問題であることである。同じプロセスは、スロー・リストの作成にも関与する。スロー・リストは、(恐らくは)異質なタイプの任意の多くのサブ・スロークス(sub-slawx)の順序付けしたカプセル化である。
メモリにおける連続バイトとしてのスロー・システムの基本的フォーマットの更に別の成果が、「横断」活動(traversal activities)と関連して得られる。反復使用パターンが、例えば、スロー・リストに格納されている個々のスロークスへの順次アクセスを用いる。プロテイン構造内部におけるディスクリップおよびインジェストを表す個々のスロークスも同様に横断しなければならない。このような操作は、驚く程単純かつ効率的な方法で遂行される。つまり、スロー・リストにおける次のスローに「進み」、現在のスローの長さをそのメモリ位置に追加し、結果的に得られたメモリ位置が、次のスローのヘッダと同一となる。このような簡素さが可能なのは、スローおよびプロテインの設計が「間接」を避けるからである。つまり、ポインタがなく、データは単純にその全体が本来の場所に存在する。
スロー比較の時点までに、プラズマ・システムの完全な実施態様は、異なるオペレーティング・システム、CPU、およびハードウェア・アーキテクチャに跨ってそしてこれらの間において、異なり互換性のないデータ表現方式の存在を承認しなければならない。このような相違の主要なものには、バイト順序付け方針(例えば、リトル−エンディアン対ビッグ−エンディアン)および浮動小数点表現が含まれ、その他の相違も存在する。プラズマ仕様では、スロークスによってカプセル化したデータが解釈可能である(interprable)(即ち、スローを検査している元のアーキテクチャまたはプラットフォームのネーティブ・フォーマットで現れなければならない)。この要件は、一方、プラズマ・システム自体がデータ・フォーマット変換の責任を負うことを意味する。しかしながら、仕様では、スローが、それを検査するかもしれない実行中のプロセスに対して「完全に可視」になる前に変換を行うことしか規定していない。したがって、どの時点でこのようなフォーマットc変換を実行するかを選択するのは、個々の実施態様次第となる。2つのしかるべき手法があり、それは、(1)個々のスローがパックされていたプロテインから「引き出す」際に、または(2)プロテインが入っていたプールからそのプロテインを抽出する際に、当該プロテインの中にあるスロー全てについて同時に、スロー・データ・ペイロードをローカル・アーキテクチャのデータ・フォーマットに準拠させることである。尚、変換規定は、ハードウェア補助実施態様の可能性も考慮することを注記しておく。例えば、明示的プラズマ能力によって構築したネットワーキング・チップセットは、受信システムの既知の特性に基づいて、インテリジェントにそして「送信の時点」にフォーマット変換を実行することを選択することができる。あるいは、送信のプロセスがデータ・ペイロードを基軸フォーマットに変換することもでき、受信プロセスは、対称的に基軸フォーマットから「ローカル」フォーマットに変換する。別の実施形態では、「メタル」において(at the metal)フォーマット変換を実行する。これが意味するのは、データは、ローカル・メモリの中であっても、常に基軸フォーマットで格納されており、データをメモリから引き出し隣接するCPUのレジスタに入れるときに、メモリ・コントローラ・ハードウェア自体が変換を実行する。
一実施形態の最小(そして読み取り専用)プロテインの実施態様は、プロテインを利用する1つ以上のアプリケーションまたはプログラミング言語における動作または挙動を含む。図19Cは、一実施形態の下でプロテインを用いるための流れ図650である。動作を開始すると、652においてプロテインの長さをバイト単位で問い合わせる。654において、ディスクリップ・エントリの数を問い合わせる。656において、インジェストの数を問い合わせる。658において、インデックス番号によってディスクリップ・エントリを引き出す。660において、インデックス番号によってインジェストを引き出す。
また、本明細書において記載する実施形態は、プロテインを作成してデータを充填させる基本的な方法、プログラマによって共通のタスクを容易に行えるようにするヘルパ方法、および最適化を遂行するためのフック(hook)も定める。図19Dは、一実施形態の下においてプロテインを作成する、即ち、発生するための流れ図670である。動作は、672における新たなプロテインの作成から開始する。674において、一連のディスクリップ・エントリを添付する。また、676においてインジェストも添付する。678において、一致するディスクリップの存在を問い合わせ、680において、一致するインジェスト・キーの存在を問い合わせる。インジェスト・キーが得られたなら、682において、インジェスト値を引き出す。684において、ディスクリップ全体でパターン照合を実行する。686において、プロテインの先頭付近に、非構造化メタデータを埋め込む。
前述のように、スロークスはプロセス間交換のための低レベルのデータ定義を規定し、プロテインは問い合わせおよびフィルタ処理のために中間レベルの構造およびフックを規定し、プールは高レベルの編成およびアクセス・セマンティックスについて規定する。プールは、プロテインのためのレポジトリであり、線形シーケンシング(linear sequencing)および状態キャッシング(state caching)に備えている。また、プールは、多数のプログラムまたは多数の異なる種類のアプリケーションによるマルチ・プロセス・アクセスにも備えている。更に、プールは、1組の共通な、最適化可能なフィルタ処理およびパターン照合挙動にも備えている。
一実施形態のプールは、数万ものプロテインを収容することができ、状態を維持するように機能することができるので、個々のプロセスはマルチ・プロセス・プログラム・コードに共通する厄介なブックキーピングの多くの負担を軽減することができる。プールは、利用可能な過去のプロテインの大きなバッファを維持または保持し、プラトニック・プール(Platonic pool)は明示的に無限であるので、関与するプロセスは、プールにおいて意のままに逆方向および順方向の双方に走査することができる。バッファのサイズは、実施態様に左右されるが、勿論、慣例的な仕様では、プロテインをプールの中に数時間または数日保持できることが多い。
本明細書において記載するプール使用の最も慣例的な様式では、既存のプロセス間通信フレームワークが採用する機械論的(mechanistic)二点間手法とは対照的に、生物的比喩に従う。プロテインという名称は、生物的発想を暗示する。生物組織における化学的蛋白質が、多数の細胞因子(cellular agent)によるパターン照合およびフィルタ処理に利用可能であるのと同様に、プールの中にあるデータ・プロテインは、多数の計算プロセスによる柔軟な問い合わせおよびパターン照合に利用可能である。
2つの付加的な抽象化が生物的比喩に同調し(lean)、「ハンドラ」の使用およびゴルジ・フレームワーク(Golgi framework)を含む。プールに関与するプロセスは、一般に、多数のハンドラを作成する。ハンドラは、比較的小さい1群のコードであり、照合条件をハンドル挙動と関連付ける。1つ以上のハンドラをプールに類別することにより、プロセスは、状態をカプセル化し新たなプロテインに反応する、柔軟なコール・バック・トリガ(call-back trigger)を設定する。
数個のプールに関与するプロセスは、一般に、抽象的ゴルジ・クラスから継承する。ゴルジ・フレームワークは、多数のプールおよびハンドラを管理するための多くの有用なルーチンを提供する。また、ゴルジ・クラスは、親−子関係もカプセル化し、プールを用いないローカル・プロテイン交換のためのメカニズムを提供する。
一実施形態の下で提供するプールAPIは、種々の方法でプールを実現し、システム特定の目標、ならびに所与のハードウェアおよびネットワーク・アーキテクチャの利用可能な処理能力双方を考慮に入れるように構成されている。プールが依存する2つの基礎的なシステムの常設機構(provision)は、記憶装置およびプロセス間通信手段である。本明細書において記載する、現存する(extant)システムは、共有メモリ、仮想メモリ、および記憶装置用ディスク、ならびにプロセス間通信のためのIPCクエリおよびTCP/IPソケットの柔軟な組み合わせを用いる。
一実施形態のプールの機能には、限定ではなく、以下が含まれる。プールに関与する。プロテインをプールの中に入れる。次の未見プロテインをプールから引き出す。プール内の内容(例えば、プロテイン)を逆回しまたは早送りする。加えて、プールの機能には、限定ではなく、以下も含むことができる。プロセスに対するストリーミング・プール・コール・バックを設定する。ディスクリップまたはインジェスト・キーの特定のパターンと一致するプロテインを選択的に引き出す。ディスクリップまたはインジェスト・キーの特定のパターンと一致するプロテインについて逆方向および順方向に走査する。
前述のプロテインは、他のアプリケーションとプロテイン・データ・コンテンツを共有する方法として、プールに供給される。図20は、一実施形態の下において、スロークス、プロテイン、およびプールを用いたデータ交換を含む処理環境のブロック図である。この環境例は、前述のようにスロークス、プロテイン、およびプールの使用によりデータを共有する3つのデバイス(例えば、デバイスX、デバイスY、およびデバイスZ、ここでは纏めて「デバイス」と呼ぶ)を含む。これらのデバイスの各々は、3つのプール(例えば、プール1、プール2、プール3)に結合されている。プール1は、それぞれのデバイスから当該プールに提供または転送された多数のプロテイン(例えば、プロテインX1、プロテインZ2、プロテインY2、プロテインX4、プロテインY4)を含む(例えば、プロテインZ2は、デバイスZによってプール1に転送または提供された等)。プール2は、それぞれのデバイスから当該プールに提供または転送された多数のプロテイン(例えば、プロテインZ4、プロテインY3、プロテインZ1、プロテインX3)を含む(例えば、プロテインY3は、デバイスYによってプール2に転送または提供された等)。プール3は、それぞれのデバイスから当該プールに供給または転送された多数のプロテイン(例えば、プロテインY1、プロテインZ3、プロテインX2)を含む(例えば、プロテインX2は、デバイスXによってプール3に転送または提供された等)。前述の例では、3つのプール間に結合または接続されている3つのデバイスが含まれるが、あらゆる数のデバイスを、あらゆる数のプール間に如何様にでもまたはいずれの組み合わせでも結合または接続することができ、いずれのプールも、あらゆる数または組み合わせのデバイスから提供されるあらゆる数のプロテインを含むことができる。この例のプロテインおよびプールについては、図18から図23までを参照しながら先に説明した。
図21は、多数のデバイスと、これらのデバイスの1つ以上で走る多数のプログラムを含み、一実施形態の下において、プラズマ構造(plasma construct)(例えば、プール、プロテイン、およびスロー)を用いることにより、多数の実行中のプログラムが、デバイスによって発生したイベントを共有し、集合的に応答することを可能にする処理環境のブロック図である。このシステムは、マルチ・ユーザ、マルチ・デバイス、マルチ・コンピュータ双方向処理制御状況または構成の一例に過ぎない。更に特定すれば、この例では、多数のデバイス(例えば、デバイスA、B等)およびこれらのデバイス上で走る多数のプログラム(例えば、appsAA-AX、appsBA-BX等)を備えている双方向処理システムが、プラズマ構造(例えば、プール、プロテイン、およびスロー)を用いて、実行中のプログラムが、これらの入力デバイスによって発生したイベントを共有し、集合的にこれらのイベントに応答することを可能にする。
この例では、各デバイス(例えば、デバイスA、B等)は、それぞれのデバイス上で走っているプログラム(例えば、appsAA-AX、appsBA-BX等)が発生したまたは出力された離散生データを、プラズマ・プロテインに変換し、これらのプロテインをプラズマ・プールに貯入する。例えば、プログラムAXはデータまたは出力を発生し、この出力をデバイスAに供給する。一方、デバイスAはこの生データをプロテイン(例えば、プロテイン1A、プロテイン2A等)に変換し、これらのプロテインをプールに貯入する。別の例として、プログラムBCがデータを発生し、このデータをデバイスBに供給する。一方、デバイスBはこのデータをプロテイン(例えば、プロテイン1B、プロテイン2B等)に変換し、これらのプロテインをプールに貯入する。
各プロテインは、アプリケーションが発生し、プログラム自体についての情報を特定するデータまたは出力を指定するディスクリップ・リストを収容する。可能な場合には、プロテイン・ディスクリップは出力イベントまたは行動について一般的な意味論的意味(semantic meaning)を認めることもできる。プロテインのデータ・ペイロード(例えば、インジェスト)は、プログラム・イベントについての1組の有用な状態情報全体を搬送する。
前述のように、プロテインは、プログラムまたはデバイスの種類には関係なく、プールに結合または接続されているあらゆるプログラムまたはデバイスが使用するために、プールにおいて利用可能となっている。したがって、あらゆる数のコンピュータ上で走っているあらゆる数のプログラムでも、入力プールからイベント・プロテインを抽出することができる。これらのデバイスは、プールからプロテインを抽出するためには、ローカル・メモリ・バスまたはネットワーク接続のいずれかを通じて、プールに関与することができるだけでよい。これによって即座に得られる結果は、イベントを使用または解釈するプロセスから、処理イベントを発生する役割を担うプロセスを切断できるという利点である。別の結果は、イベントのソースおよびコンシューマ(consumer)を多重化し、デバイスを一人で制御できるように、または数人(例えば、プラズマに基づく入力フレームワークは、多くの同時ユーザをサポートする)で同時に用いることができるようにしつつ、結果的に得られるイベント・ストリームは多数のイベント・コンシューマに見えるようになることである。
一例として、デバイスCは1つ以上のプロテイン(例えば、プロテイン1A、2A等)をプールから抽出することができる。プロテインの抽出に続いて、デバイスCは、ディスクリップのスローおよびプロテインのインジェストから引き出したまたは読み出したプロテインのデータを、プロテイン・データが対応する処理イベントにおいて用いることができる。別の例として、デバイスBは、プールから1つ以上のプロテイン(例えば、プロテイン1C、プロテイン2A等)を抽出することができる。プロテインの抽出に続いて、デバイスBは、プロテイン・データが対応する処理イベントにおいて、プロテインのデータを用いることができる。
プールに結合または接続されているデバイスおよび/またはプログラムは、プロテインの特定のシーケンスを求めて、プールの中を逆方向および順方向に進む(skim)こともできる。これは、例えば、ある種のパターンと一致するプロテインの出現を待ち、次いで逆方向に進み、このプロテインがある種の他のものと共に出現したか否か判断するようにプログラムを設定する際に、有用となる場合が多い。この入力プールに格納されているイベント履歴を利用する装置は、多くの場合、状態管理コードの書き込みを不要としたり、少なくともこのような望ましくない符号化パターンに対する依存を著しく低減する。
図22は、多数のデバイスと、これらのデバイスの1つ以上で走る多数のプログラムを含み、一代替実施形態の下において、プラズマ構造(plasma construct)(例えば、プール、プロテイン、およびスロー)を用いることにより、多数の実行中のプログラムが、デバイスによって発生したイベントを共有し、集合的に応答することを可能にする処理環境のブロック図である。このシステムは、マルチ・ユーザ、マルチ・デバイス、マルチ・コンピュータ双方向処理制御状況または構成の一例に過ぎない。更に特定すれば、この例では、多数のデバイス(例えば、デバイスAおよびBにそれぞれ結合されているデバイスXおよびY)および1つ以上のコンピュータ(例えば、デバイスA、デバイスB等)上で走る多数のプログラム(例えば、appsAA-AX、appsBA-BX等)を備えている双方向処理システムが、プラズマ構造(例えば、プール、プロテイン、およびスロー)を用いて、実行中のプログラムが、これらの入力デバイスによって発生したイベントを共有し、集合的にこれらのイベントに応答することを可能にする。
この例では、各デバイス(例えば、デバイスAおよびBにそれぞれ結合されているデバイスXおよびY)は、デバイス・ハードウェア(例えば、デバイスX、デバイスA、デバイスY、デバイスB等)が発生した離散生データをプラズマ・プロテインに変換し、これらのプロテインをプラズマ・プールに貯入するそれぞれのデバイス(例えば、デバイスA、デバイスB等)上にホストされている1つ以上のプログラムの下で、またはこれらと連携して動作するように管理および/または結合されている。例えば、デバイスA上にホストされているアプリケーションABと連携して動作するデバイスXは、生データを発生し、この離散生データをプロテイン(例えば、プロテイン1A、プロテイン2A等)に変換し、これらのプロテインをプールに貯入する。別の例として、デバイスA上にホストされているアプリケーションATと連携して動作するデバイスXが、離散生データをプロテイン(例えば、プロテイン1A、プロテイン2Aなど)に変換し、これらのプロテインをプールに貯入する。更に別の例として、デバイスC上にホストされているアプリケーションCDと連携して動作するデバイスZは、生データを発生し、この離散生データをプロテイン(例えば、プロテイン1C、プロテイン2C等)に変換し、これらのプロテインをプールに貯入する。
各プロテインは、入力デバイスが登録し、デバイス自体についての情報を特定する行動を指定するディスクリップ・リストを収容する。可能な場合には、プロテイン・ディスクリップはデバイスの行動について一般的な意味論的意味(semantic meaning)を認めることもできる。プロテインのデータ・ペイロード(例えば、インジェスト)は、デバイス・イベントについての1組の有用な状態情報全体を搬送する。
前述のように、プロテインは、プログラムまたはデバイスの種類には関係なく、プールに結合または接続されているあらゆるプログラムまたはデバイスが使用するために、プールにおいて利用可能となっている。したがって、あらゆる数のコンピュータ上で走っているあらゆる数のプログラムでも、入力プールからイベント・プロテインを抽出することができる。これらのデバイスは、プールからプロテインを抽出するためには、ローカル・メモリ・バスまたはネットワーク接続のいずれかを通じて、プールに関与することができるだけでよい。これによって即座に得られる結果は、イベントを使用または解釈するプロセスから、処理イベントを発生する役割を担うプロセスを切断できるという利点である。別の結果は、イベントのソースおよびコンシューマを多重化し、入力デバイスを一人で制御できるように、または数人(例えば、プラズマに基づく入力フレームワークは、多くの同時ユーザをサポートする)で同時に用いることができるようにしつつ、結果的に得られるイベント・ストリームは多数のイベント・コンシューマに順に見えるようになることである。
プールに結合または接続されているデバイスおよび/またはプログラムは、プロテインの特定のシーケンスを求めて、プールの中を逆方向および順方向に進む(skim)こともできる。これは、例えば、ある種のパターンと一致するプロテインの出現を待ち、次いで逆方向に進み、このプロテインがある種の他のものと共に出現したか否か判断するようにプログラムを設定する際に、有用となる場合が多い。この入力プールに格納されているイベント履歴を利用する装置は、多くの場合、状態管理コードの書き込みを不要としたり、少なくともこのような望ましくない符号化パターンに対する依存を著しく低減する。
図23は、多数の入力デバイスを含み、これらが当該デバイスの1つ以上で走る多数のプログラム間に結合されており、別の代替実施形態の下において、プラズマ構造(plasma construct)(例えば、プール、プロテイン、およびスロー)を用いることにより、多数の実行中のプログラムが、入力デバイスによって発生したイベントを共有し、集合的に応答することを可能にする処理環境のブロック図である。このシステムは、マルチ・ユーザ、マルチ・デバイス、マルチ・コンピュータ双方向処理制御状況または構成の一例に過ぎない。更に特定すれば、この例では、双方向処理システムは、多数の入力デバイス(例えば、入力デバイスA、B、BA、およびBB等)を備えており、1つ以上のコンピュータ(例えば、デバイスA、デバイスB等)上で走る多数のプログラム(図示せず)を備えており、プラズマ構造(例えば、プール、プロテイン、およびスロー)を用いて、実行中のプログラムが、これらの入力デバイスによって発生したイベントを共有すること、および集合的にこれらのイベントに応答することを可能にする。
この例では、各入力デバイス(例えば、入力デバイスA、B、BA、およびBB等)は、入力デバイス・ハードウェアが発生した離散生データをプラズマ・プロテインに変換し、これらのプロテインをプラズマ・プールに貯入するそれぞれのデバイス(例えば、デバイスA、デバイスB等)上にホストしたソフトウェア・ドライバ・プログラムによって管理される。例えば、入力デバイスAは生データを発生し、この生データをデバイスAに供給する。一方、デバイスAは離散生データをプロテイン(例えば、プロテイン1A、プロテイン2A等)に変換し、これらのプロテインをプールに貯入する。別の例として、入力デバイスBBは生データを発生し、この生データをデバイスBに供給する。一方、デバイスBは離散生データをプロテイン(例えば、プロテイン1B、プロテイン3B等)に変換し、これらのプロテインをプールに貯入する。
各プロテインは、入力デバイスが登録し、デバイス自体についての情報を特定する行動を指定するディスクリップ・リストを収容する。可能な場合には、プロテイン・ディスクリップはデバイスの行動について一般的な意味論的意味(semantic meaning)を認めることもできる。プロテインのデータ・ペイロード(例えば、インジェスト)は、デバイス・イベントについての1組の有用な状態情報全体を搬送する。
例示のために、ここに、このようなシステムにおける2つの典型的なイベントに対するプロテインを示す。ここでは、プロテインはテキストとして表すが、実際の実施態様では、これらのプロテインの構成部分は、類別されたデータ・バンドル(例えば、スロー)である。g-speak "one finger click" pose(「指1本によるクリック」のポーズ)(関連出願に記載されている)を記述するプロテインは、次の通りである。
別の例として、マウスのクリックを記述するプロテインは次の通りである。
以上のプロテインの見本のいずれかまたは双方は、そのコードの特定の部分を走らせるホスト・デバイスの関与プログラム(participating program)を生ずる可能性もある。これらのプログラムは、一般的なセマンティック・レベルに関係する場合がある。全ての内最も一般的なのは「point」であり、更に具体的な対は「engage, one」である。また、これらは、正確なデバイス:「one-finger-engage」または正に1つの集計オブジェクト(aggregate object)「hand-id-23」のみによってもっともらしく発生されるイベントを求めている場合もある。
前述のように、プロテインは、プログラムやデバイスの種類には関係なく、プールに結合または接続されているあらゆるプログラムまたはデバイスが用いるために、プールにおいて利用可能である。したがって、あらゆる数のコンピュータ上で走るあらゆる数のプログラムでも、入力プールからイベント・プロテインを抽出する。これらのデバイスは、プロテインをプールから抽出するためには、ローカル・メモリ・バスまたはネットワーク接続のいずれかを通じて、プールに関与することができるだけでよい。これによって即座に得られる結果は、イベントを使用または解釈するプロセスから、入力イベントを発生する役割を担うプロセスを切断できるという利点である。別の結果は、イベントのソースおよびコンシューマを多重化し、入力デバイスを一人で制御できるように、または数人(例えば、プラズマに基づく入力フレームワークは、多くの同時ユーザをサポートする)で同時に用いることができるようにしつつ、結果的に得られるイベント・ストリームは多数のイベント・コンシューマに順に見えるようになることである。
プロテイン使用の一例として、デバイスCは1つ以上のプロテイン(例えば、プロテイン1B等)をプールから抽出することができる。プロテイン抽出に続いて、デバイスCは、ディスクリップのスローおよびプロテインのインジェストから引き出したまたは読み出したプロテインのデータを、当該プロテイン・データが対応する入力デバイスCAおよびCCの入力イベントを処理する際に用いることができる。別の例として、デバイスAは、1つ以上のプロテイン(例えば、プロテイン1B等)をプールから抽出することができる。プロテインの抽出に続いて、デバイスAは、プロテイン・データが対応する入力デバイスAの入力イベントを処理する際に、当該プロテインのデータを用いることができる。
プールに結合または接続されているデバイスおよび/またはプログラムは、プロテインの特定のシーケンスを求めて、プールの中を逆方向および順方向に進む(skim)こともできる。これは、例えば、ある種のパターンと一致するプロテインの出現を待ち、次いで逆方向に進み、このプロテインがある種の他のものと共に出現したか否か判断するようにプログラムを設定する際に、有用となる場合が多い。この入力プールに格納されているイベント履歴を利用する装置は、多くの場合、状態管理コードの書き込みを不要としたり、少なくともこのような望ましくない符号化パターンに対する依存を著しく低減する。
本明細書において記載するシステムの実施形態に用いられる入力デバイスの例には、ジェスチャ入力センサ、キーボード、マウス、消費者電子機器において用いられるような赤外線リモコン装置、およびタスク指向有体媒体オブジェクト(task-oriented tangible media object)、その他にも数多く含まれる。
図24は、多数のデバイスを含み、これらが当該デバイスの1つ以上で走る多数のプログラム間に結合されており、更に別の代替実施形態の下において、プラズマ構造(plasma construct)(例えば、プール、プロテイン、およびスロー)を用いることにより、多数の実行中のプログラムが、デバイスによって発生したグラフィクス・イベントを共有し、集合的に応答することを可能にする処理環境のブロック図である。このシステムは、多数の実行中のプログラム(例えば、グラフィクスA〜E)および1つ以上のディスプレイ・デバイス(図示せず)を備えているシステムの一例に過ぎず、プログラムの一部または全部のグラフィック出力が、プラズマ構造(例えば、プール、プロテイン、およびスロー)を用いて、調整しながら他のプログラムにも利用可能とし、実行中のプログラムが、これらのデバイスによって発生したグラフィック・イベントを共有すること、および集合的にこれらのイベントに応答することを可能にする。
コンピュータ・プログラムが、別のプログラムによって発生したグラフィクスを表示することが有用な場合は多い。広く知れ渡っている様々な例には、テレビ会議アプリケーション、ネットワークを用いたスライドショーおよびデモ・プログラム、ならびにウィンドウ・マネージャが含まれる。この構成の下では、プールは、ビデオ、ネットワーク・アプリケーション共有、およびウィンドウ管理をカプセル化したフレームワークを一般化して実施するためにプラズマ・ライブラリとして用いられ、プログラマは、このようなプログラムの現バージョンでは一般には入手できない多数の特徴に追加することが可能になる。
プラズマ合成環境において走るプログラム(例えば、グラフィクスA〜E)は、プールへの結合および/または接続を通じて、調整プールに関与する。各プログラムは、種々の種類のグラフィック・ソースの可用性を示すために、そのプールにプロテインを貯入する。また、グラフィックスを表示するために利用可能なプログラムも、それらの表示処理能力、セキュリティおよびユーザ・プロファイル、ならびに物理的位置およびネットワーク位置を示すために、プロテインを貯入する。
また、グラフィクス・データをプールを通じて送信することもでき、あるいは表示プログラムに、他の種類(例えば、RTSPストリーム)のネットワーク・リソースを指し示させることもできる。「グラフィクス・データ」という用語は、本明細書において用いる場合、広義の連続体(broad continuum)に沿って存在する種々の異なる表現のことを指し、グラフィクス・データの例には、文字で表現される例(例えば、「画像」、または画素のブロック)、手順的例(例えば、典型的なopenGLパイプラインを下って行くような一連の「描画」指令)、および記述的例(例えば、幾何学的変形、クリッピング、および合成動作によって他のグラフィック構造を組み合わせる命令)が含まれるが、これらに限定されるのではない。
ローカル・マシン上では、グラフィクス・データは、プラットフォーム特定の表示ドライバ最適化を通じて配信することもできる。プールを通してグラフィクスを送信しない場合でも、多くの場合、周期的な画面キャプチャは、調整プールに格納されるので、より内部(esoteric)のソースに直接アクセスできないクライアントであっても、万一のときのグラフィクス(fall-back graphics)を表示することもできる。
本明細書において記載するマルチプロセス・インタラクティブ・システムの利点の1つは、殆どのメッセージ伝達フレームワークおよびネットワーク・プロトコルとは異なり、プールがデータの大量のバッファを維持することである。したがって、プログラムはプールの中に逆戻りして、アクセスおよび使用パターン(調整プールの場合)を見たり、以前のグラフィクス・フレーム(グラフィクス・プールの場合)を抽出することができる。
図25は、多数のデバイスを含み、これらが当該デバイスの1つ以上で走る多数のプログラム間に結合されており、更に別の代替実施形態の下において、プラズマ構造(plasma construct)(例えば、プール、プロテイン、およびスロー)を用いることにより、実行中のプログラムの状態検査、可視化、およびデバッグ処理を可能にする処理環境のブロック図である。このシステムは、多数のデバイス(例えば、デバイスA、デバイスB等)上に多数の実行プログラム(例えば、プログラムP−A、プログラムP−B等)を備えており、一部のプログラムがプールを用いてまたはプールを通じて他のプログラムの内部状態にアクセスするシステムの一例に過ぎない。
殆どの双方向処理コンピュータ・システムは、多くのプログラムを備えており、これらは、1台のマシンまたは多数のマシン上で互いに一緒に走り、ネットワークを跨いで双方向処理を行う。実行時データが各プロセス内部に隠されアクセスするのが困難なので、マルチ・プログラム・システムは、構成設定、分析、およびデバッグするのが難しい。本明細書において記載する一実施形態の一般化したフレームワークおよびプラズマ構造は、実行中のプログラムがプールを通じてそれらのデータの多くを利用可能にするので、他のプログラムがそれらの状態を検査することができる。このフレームワークによって、従来のデバッガよりも柔軟なデバッギング・ツール、精巧なシステム保守ツール、および1つまたは複数のプログラムが通過した一連の状態を、人の操作者に詳細に分析させるように構成された可視化ハーネスを可能にする。
図25を参照すると、このフレームワークにおいて走るプログラム(例えば、プログラムP−A、プログラムP−B等)は、プログラムの起動時にプロセス・プールを発生または作成する。このプールは、システム・アルマナックに登録され、セキュリティおよびアクセス制御が適用される。更に特定すると、各デバイス(例えば、デバイスA、B等)が、それぞれのデバイス上で走るプログラム(例えば、プログラムP−A、プログラムP−B等)が発生または出力した離散生データをプラズマ・プロテインに変換し、これらのプロテインをプラズマ・プールの中に貯入する。例えば、プログラムP−Aは、データまたは出力を発生し、この出力をデバイスAに供給する。一方、デバイスAは、この生データをプロテイン(例えば、プロテイン1A、プロテイン2A、プロテイン3A等)に変換し、これらのプロテインをプールの中に貯入する。別の例として、プログラムP−Bはデータを発生し、このデータをデバイスBに供給する。一方、デバイスBは、データをプロテイン(例えば、プロテイン1B〜4B等)に変換し、これらのプロテインをプールの中に貯入する。
プログラムの寿命の期間中、十分なアクセス許可を有する別のプログラムがプールに接続し(attach)、プログラムが貯入したプロテインを読み取ることもできる。これは、基本的な検査様式を表し、概念的に「一方向」即ち「読み取り専用」の提案(proposition)である。プログラムP−Aに関与するエンティティが、そのプロセス・プールの中にP−Aによって貯入されたステータス情報の流れを検査する。例えば、デバイスCの下で走る検査プログラムまたはアプリケーションが1つ以上のプロテイン(例えば、プロテイン1A、プロテイン2A等)をプールから抽出することができる。プロテインの抽出に続いて、デバイスCは、ディスクリップのスローおよびプロテインのインジェストから引き出した即ち読み出したプロテインのデータを用いて、プログラムP−Aの内部状態にアクセスし、これを解釈し、検査することができる。
しかし、プラズマ・システムは単に効率的なステートフル(stateful)伝送方式であるだけでなく、全方向メッセージング環境であることを思い起こすと、様々な追加モードがプログラム対プログラムの状態検査をサポートする。許可された検査プログラムは、それ自体でプロテインをプログラムPのプロセス・プールに貯入して、生成してそのプロセス・プールの中に入れた状態情報の特性に影響を及ぼし、これらの特性を制御することができる(結局、プログラムPはプロセス・プールに書き込むだけでなく、そこから読み取りも行う)。
図26は、多数のデバイスを含み、これらが当該デバイスの1つ以上で走る多数のプログラム間に結合されており、追加の代替実施形態の下において、プラズマ構造(plasma construct)(例えば、プール、プロテイン、およびスロー)を用いることにより、当該プロセス・プールにおいて生成し配置された状態情報の特性に影響を及ぼすまたは制御することができる処理環境のブロック図である。このシステム例では、デバイスCの検査プログラムは、例えば、プログラム(例えば、プログラムP−A、プログラムP−B等)が、1回だけまたは特定の期間にわたって、通常よりも多い状態をプールにダンプすることを要求することができる。または、デバッグ通信の次の「レベル」を予示しておくと、関与するプログラムは、プログラム(例えば、プログラムP−A、プログラムP−B等)が、デバッグ・プールを通じた双方向処理が個々に可能でありそのために利用可能な、その実行時間環境において残存するオブジェクトを一覧に纏めたプロテインを放出(emit)することを要求することができる。このように通知すると、関与するプログラムはプログラムの実行時においてオブジェクトの中の個々に「アドレス」し、特定のオブジェクトだけが専有し応答するプロセス・プールにプロテインを入れることができる。関与するプログラムは、例えば、オブジェクトが、その成分変数全ての瞬時値を記述した報告プロテインを放出することを要求することもあり得る。それよりも更に重要なのは、関与するプログラムが、他のプロテインを通じて、オブジェクトにその挙動またはその変数の値を変更するように指令できることである。
更に具体的には、この例では、デバイスCの検査アプリケーションが、プールの中に、オブジェクト・リスト(例えば、「要求−オブジェクト・リスト」)の要求を(プロテインの形態で)入れて、次いでこのプールに結合されている各デバイス(例えば、デバイスA、デバイスB等)が抽出する。要求に応答して、各デバイス(例えば、デバイスA、デバイスB等)がプールの中に、その実行時環境において残存する、デバッグ・プールを通じて個々に検査することができそのために利用可能なオブジェクトを一覧に纏めたプロテイン(例えば、プロテイン1A、プロテイン1B等)を入れる。
このようにデバイスからのリストを通じて通知され、オブジェクトのリストに応答して、デバイスCの検査アプリケーションは、プログラム実行中におけるオブジェクトの中の個々にアドレスし、特定のオブジェクトのみが専有し応答するプロセス・プールにプロテインを入れる。デバイスCの検査アプリケーションは、例えば、要求プロテイン(例えば、プロテイン「要求報告P−A−O」、「要求報告P−B−O」)を、オブジェクト(例えば、それぞれ、オブジェクトP−A−O、オブジェクトP−B−O)が、その成分変数の全ての瞬時値を記述する報告プロテイン(例えば、プロテイン2A、プロテイン2B等)を放出するプールに入れる。各オブジェクト(例えば、オブジェクトP−A−O、オブジェクトP−B−O)は、その要求(例えば、それぞれ、プロテイン「要求報告P−A−O」、「要求報告P−B−O」)を抽出し、それに応答して、要求された報告(例えば、それぞれ、プロテイン2A、プロテイン2B)を含むプールにプロテインを入れる。次いで、デバイスCは種々の報告プロテイン(例えば、プロテイン2A、プロテイン2B等)を抽出し、適宜報告の内容に合わせて続く処理行為を実行する。
このように、プラズマを相互交換媒体として用いると、デバッグ処理、プロセス制御、ならびにプログラム対プログラムの通信および調整の間にある区別を究極的に解消し易くなる。
このため、一般化したプラズマ・フレームワークは、疎結合の様式で可視化および分析プログラムを設計することを可能にする。例えば、メモリ・アクセス・パターンを表示する可視化ツールは、基本的なメモリ・リードおよびライトをプールに出力するいずれのプログラムとでも合わせて用いることができる。分析を受けるプログラムは、可視化ツールの存在や設計を知る必要がなく、その逆も成り立つ。
以上のようにプールを用いると、システム性能に不当に影響を及ぼすことはない。例えば、実施形態は、毎秒数十万個のプロテインをプールに貯入することを考慮しているので、比較的冗漫なデータ出力を可能にしても、殆どのプログラムの応答性や双方向処理特性を著しく阻害することはない。
本明細書において記載した実施形態は、入力デバイスを備えているシステムを含む。一実施形態のシステムは、プロセッサに結合され、入力デバイスの方位を検出する検出器を備えている。一実施形態の入力デバイスは、方位に対応する複数のモード方位を有する。一実施形態の複数のモード方位は、ジェスチャ制御システムの複数の入力モードに対応する。一実施形態の検出器は、ジェスチャ制御システムに結合され、方位に応答して複数の入力モードからの入力モードの選択を自動的に制御する。
本明細書において記載した実施形態は、入力デバイスと、プロセッサに結合され、入力デバイスの方位を検出する検出器とを備えているシステムを含み、入力デバイスが方位に対応する複数のモード方位を有し、複数のモード方位がジェスチャ制御システムの複数の入力モードに対応し、検出器がジェスチャ制御システムに結合され、方位に応答して、複数の入力モードからの入力モードの選択を自動的に制御する。
一実施形態の検出器は、入力デバイスの方位を解釈し、ジェスチャ制御システムの入力信号に変換する。
一実施形態の検出器は、複数のモード方位間で入力デバイスの方位遷移を解釈し、ジェスチャ制御システムの入力信号に変換する。
一実施形態の方位の検出は、ある時点および空間における入力デバイスの瞬時的状態の絶対的三空間位置を検出することを含む。
一実施形態の検出器は、複数のモード方位間で入力デバイスの方位遷移を追跡する。
一実施形態の方位遷移は、入力デバイスの軸を中心とする回転遷移である。
一実施形態の方位遷移は、入力デバイスの複数の軸を中心とする回転遷移である。
一実施形態のシステムは、方位遷移の間に、入力モードの選択にヒステリシスを適用することを含む。
一実施形態の検出器は、瞬時的方位をリアル・タイムで追跡する。
一実施形態の検出器は、入力デバイスの生の追跡データを、6度の空間方位に変換する。
一実施形態の検出器は、入力デバイスの瞬時的位置をリアル・タイムで追跡する。
一実施形態の検出器は、入力デバイスの生の追跡データを、6度の空間位置に変換する。
一実施形態のシステムは、少なくとも1つの入力センサを備えており、この入力センサが前記入力デバイス上に位置付けられている。
一実施形態の検出器は、生の入力センサ位置データを、入力センサ状態に変換する。
一実施形態の検出器は、生の入力センサ位置データを、入力センサ遷移データに変換する。
一実施形態の入力センサの位置は、複数の入力モードを制御する。
一実施形態の入力デバイスは、検出器を備えている。
一実施形態の検出器は、入力デバイスから離れている遠隔検出器である。
一実施形態の検出器は、入力デバイスによって支持されている入力デバイス検出器と、入力デバイスとは離れている遠隔検出コンポーネントとを備えている。
一実施形態の入力デバイスは、ハンドヘルド入力デバイスである。
一実施形態の検出器は、ある時点および空間における入力デバイスの瞬時的状態の絶対的三空間位置を検出する。
一実施形態の複数の入力モードは、ジェスチャ制御システムに結合されているコンポーネントのアプリケーション・エレメントの直接操作のために、瞬時的状態が用いられる、直接操作モードを含む。
一実施形態の複数の入力モードは、ジェスチャ制御システムに結合されているコンポーネントの1組のアプリケーション・エレメントの直接操作のために、瞬時的状態が用いられる、メタ操作モードを含む。
一実施形態の複数の入力モードは、ジェスチャ制御システムに結合されているコンポーネントのアプリケーション・エレメントの三次元操作のために、瞬時的状態が用いられる、三次元操作モードを含む。
一実施形態のジェスチャ制御システムは、ジェスチャ制御システムに結合されている三空間オブジェクトを制御する。
一実施形態のシステムは、3度の平行移動自由度および3度の回転自由度で三空間物体を制御することを含む。
一実施形態の制御は、入力デバイスの動きと三空間物体との間における直接結合を含む。
一実施形態の制御は、入力デバイスの動きと三空間物体との間における間接結合を含む。
一実施形態の三空間物体は、プロセッサに結合されているディスプレイ・デバイス上に提示される。
一実施形態のシステムは、入力デバイスの複数の入力モードを、三空間物体の複数の物体平行移動にマッピングすることによって、三空間オブジェクトの移動を制御することを含む。
一実施形態のマッピングは、複数の入力モードと複数の物体の平行移動との間における直接マッピングを含む。
一実施形態のマッピングは、複数の入力モードと複数の物体の平行移動との間における間接マッピングを含む。
一実施形態のマッピングは、 複数の入力モードの位置的偏倚を、三空間物体の物体平行移動の位置的偏倚に相関付けることを含む。
一実施形態のマッピングは、入力デバイスの位置的偏倚を、三空間物体の物体平行移動の平行移動速度に相関付けることを含む。
一実施形態のシステムは、入力デバイスの線形ジェスチャを三空間物体の線形平行移動にマッピングすることによって、三空間物体の移動を制御することを含む。
一実施形態のシステムは、入力デバイスの回転ジェスチャを三空間物体の回転平進にマッピングすることによって、三空間物体の移動を制御することを含む。
一実施形態のシステムは、入力デバイスの線形ジェスチャを三空間物体の回転平進にマッピングすることによって、三空間物体の移動を制御することを含む。
一実施形態のシステムは、入力デバイスの回転ジェスチャを三空間物体の線形平行移動にマッピングすることによって、三空間物体の移動を制御することを含む。
一実施形態の検出は、入力デバイスの外挿補間位置が仮想空間と交差するときを検出することを含み、仮想空間は、ジェスチャ制御システムに結合されているディスプレイ・デバイス上に図示される空間を含む。
一実施形態の検出器は、入力デバイスのイベントを検出し、イベントは、入力デバイスの三空間位置および三空間方位の内少なくとも1つに対応し、イベントが第1タイプのアプリケーションに対応する。
一実施形態のプロセッサは、イベントを指定する入力デバイス・イベント・データと、イベントの状態情報とを備えているデータ・シーケンスを発生し、入力デバイス・イベント・データおよび状態情報は、ジェスチャ制御システムの第1アプリケーションに対応するタイプを有するタイプ特定データである。
一実施形態のプロセッサは、データ・シーケンスを含むようにデータ・カプセルを形成し、データ・カプセルは、データ・シーケンスのアプリケーション独立表現を含むデータ構造を有する。
一実施形態のプロセッサは、データ・カプセルをレポジトリに入れる。
一実施形態の第2タイプのアプリケーションの下で実行する第2イベントは、レポジトリを検索し、データ・カプセルと第2イベントとの間の対応を特定する。一実施形態の第2タイプのアプリケーションは、データ・カプセルのデータ・シーケンスの内容を用いて、第2イベントに対応する動作を実行する。
一実施形態の追跡は、電磁界(EMF)追跡である。
一実施形態の入力デバイスは、回路に結合されている検出器を含み、検出器が複数のコイルを備えている。
一実施形態のシステムは、入力デバイスからは離れている電磁界発生器を備えており、電磁界発生器は、複数のコイルに信号を誘発するEMFを発生する。
一実施形態のシステムは、入力デバイスからは離れている複数の電磁界発生器を備えており、入力デバイスは、信号を誘発する電磁界発生器に近接するときに、各電磁界発生器は、入力デバイスの複数のコイルに信号を誘発する。
一実施形態の検出器は、複数のコイルに誘発されるEMF信号を用いて、入力デバイスの方位を検出する。
一実施形態の検出器は、複数のコイルに誘発される信号を用いて、入力デバイスの位置を検出する。
一実施形態の入力デバイスは、プロセッサに結合さえている送信機を備えており、送信機がワイヤレス送信機である。
一実施形態の送信機は、入力デバイスの方位をジェスチャ制御システムに伝達する。
一実施形態の送信機は、入力デバイスの位置をジェスチャ制御システムに伝達する。
一実施形態の入力デバイスは、少なくとも1つの入力センサを備えており、送信機は、少なくとも1つの入力センサの状態を、ジェスチャ制御システムに伝達する。
一実施形態の追跡は、光学的追跡である。
一実施形態のシステムは、入力デバイスに接続されている少なくとも1つのタグを備えている。
一実施形態の少なくとも1つのタグは、入力デバイスの前面領域に接続されている複数のタグを備えている。
一実施形態の追跡は、少なくとも1つのタグの位置を動的に検出することを含む。
一実施形態の追跡は、入力デバイスのある領域に結合されている1組のタグの位置を検出することを含む。
一実施形態の1組のタグにおける各タグは、パターンを含み、1組のタグにおける各タグの各パターンは、複数のタグの内いずれの残りのタグのいずれのパターンとも異なる。
一実施形態の各タグが第1パターンと第2パターンとを含み、第1パターンが1組のタグにおけるいずれのタグにも共通であり、第2パターンは、1組のタグの内少なくとも2つのタグ間で異なる。
一実施形態の1組のタグは、入力デバイス上における複数のパターンを形成する。
一実施形態の少なくも1つのタグは、1組の赤外線(IR)発光ダイオード(LED)と、1組の逆反射ドットとを備えている。
一実施形態の入力デバイスは、回路に結合されているマイクロプロセッサを含み、回路が1組のIR LEDに結合されている。
一実施形態のシステムは、回路に結合されている少なくとも1つの入力センサを備えており、少なくとも1つのセンサは、入力デバイス上に位置付けられている。
一実施形態の少なくとも1つの入力センサは、1組のIR LEDの状態を制御する。
一実施形態の各IR LEDの状態は、複数の入力モードの内少なくとも1つの入力モードに対応する。
一実施形態の少なくとも1つのタグは、入力デバイスに接続されている少なくとも1つの追跡ドットを備えている。
一実施形態の少なくとも1つの追跡ドットは、少なくとも1つの赤外線(IR)発光ダイオード(LED)を備えている。
一実施形態の少なくとも1つの追跡ドットは、少なくとも1つの逆反射ドットを備えている。
一実施形態の少なくとも1つの追跡ドットは、赤外線(IR)発光ダイオード(LED)および逆反射ドットの内少なくとも1つを備えている。
一実施形態の少なくとも1つの追跡ドットは、1組のIR LEDと1組の逆反射ドットとを備えている。
一実施形態の入力デバイスは、複数の側面を備えており、複数の側面における各側面は、複数のモード方位の内1つのモード方位に対応する。
一実施形態の複数の側面における各側面は、複数の入力モードにおける1つの入力モードに対応する。
一実施形態の複数の側面における各側面には、当該側面が対応する入力モードが割り当てられている。
一実施形態の複数の側面における各側面には、コンテキストに基づいて、入力モードが動的に割り当てられる。
一実施形態の複数の側面において少なくとも1つの側面は、入力センサを備えている。
一実施形態の複数の側面における各側面は、入力センサを備えている。
一実施形態の各側面の各入力センサには、方位に基づいて、機能が動的に割り当てられる。
一実施形態の各側面の各入力センサには、コンテキストに基づいて、機能が動的に割り当てられる。
一実施形態の複数の側面は、3つの側面を含み、入力デバイスが三角形の断面を有し、複数の側面における各側面は、複数のモード方位における1つのモード方位に対応する。
一実施形態の複数の側面における各側面は、複数の入力モードにおける1つの入力モードに対応する。
一実施形態の複数の側面における第1側面が第1入力モードに対応し、一実施形態の複数の側面における第2側面が第2入力モードに対応する。第1側面の中心に対して120度よりも大きく入力デバイスを長手方向軸を中心に回転させることを含む一実施形態の方位遷移は、第1入力モードから第2モードへの変化を生じさせる。
一実施形態の検出器は、方位遷移の間に、入力モードの選択に対して、ヒステリシス・バンドを適用する。
一実施形態のヒステリシス・バンドは、約30度に等しい、およびそれよりも大きいの内少なくとも1つである。
一実施形態のヒステリシス・バンドは、プログラム可能である。
一実施形態の複数の側面における各側面は、入力センサを備えている。
本明細書において記載した実施形態は、回路に結合されているプロセッサを含む入力デバイスを備えているシステムを含む。一実施形態のプロセッサは、ジェスチャ制御システムの複数の入力モードを制御する。一実施形態のシステムは、プロセッサに結合されており、ある時点および空間における入力デバイスの瞬時的状態の絶対三空間位置および方位の内少なくとも1つを検出する検出器を備えている。一実施形態の入力デバイスは、少なくとも方位に対応する複数のモード方位を有し、一実施形態の複数のモード方位は、ジェスチャ制御システムの複数の入力モードに対応する。一実施形態の検出器は、ジェスチャ制御システムに結合されており、方位に応答して複数の入力モードからの1つの入力モードの選択を自動的に制御する。
本明細書において記載した実施形態は、システムを含む。このシステムは、回路に結合されているプロセッサを備えている入力デバイスであって、プロセッサがジェスチャ制御システムの複数の入力モードを制御する、入力デバイスと、プロセッサに結合されており、ある時点および空間における入力デバイスの瞬時的状態の絶対三空間位置および方位の内少なくとも1つを検出する検出器とを備えている。入力デバイスは、少なくとも方位に対応する複数のモード方位を有し、複数のモード方位は、ジェスチャ制御システムの複数の入力モードに対応し、検出器は、ジェスチャ制御システムに結合されており、方位に応答して、複数の入力モードからの1つの入力モードの選択を自動的に制御する。
本明細書において記載した実施形態は、プロセッサを含む手持ちサイズの筐体を備えている入力デバイスを含む。一実施形態のプロセッサは、検出器に結合されており、この検出器が、入力デバイスが現在操作されている方位と、入力デバイスの複数の方位間における遷移とを検出して入力信号に変換する。一実施形態の入力信号は、ジェスチャ制御システムの複数の入力モードを自動的に制御する。
本明細書において記載した実施形態は、プロセッサを含む手持ちサイズの筐体を備えている入力デバイスを含む。プロセッサは、検出器に結合されており、入力デバイスが現在操作されている方位と、入力デバイスの複数の方位間における遷移とを、検出器が検出して入力信号に変換し、入力信号は、ジェスチャ制御システムの複数の入力モードを自動的に制御する。
一実施形態の検出器は、複数のコイルを含む回路を備えている。
一実施形態のデバイスは、複数のコイルに信号を誘発するEMFを発生する遠隔電磁界(EMF)発生器を備えている。
一実施形態のデバイスは、複数の遠隔EMF発生器を備えており、信号を誘発するEMF発生器に筐体が近接するときに、各EMF発生器は、複数のコイルに信号を誘発する。
一実施形態の検出器は、複数のコイルに誘発されたEMF信号を用いて、方位を検出する。
一実施形態の検出器は、複数のコイルに誘発された信号を用いて、入力デバイスの位置を検出する。
一実施形態のデバイスは、プロセッサに結合されている送信機を備えており、送信機がワイヤレス送信機である。
一実施形態の送信機は、方位を、ジェスチャ制御システムに伝達する。
一実施形態の送信機は、入力デバイスの位置を、ジェスチャ制御システムに伝達する。
一実施形態のデバイスは、プロセッサに結合されている少なくとも1つの入力センサを備えており、送信機は、少なくとも1つの入力センサの状態を、ジェスチャ制御システムに伝達する。
一実施形態の検出器が生の入力センサ位置データを入力センサ状態に変換する。
一実施形態の入力センサの位置は、ジェスチャ制御システムを制御する。
一実施形態の複数の方位は、ジェスチャ制御システムの複数の入力モードに対応する。
一実施形態の複数の入力モードは、ジェスチャ制御システムに結合されているコンポーネントのアプリケーション・エレメントを入力デバイスが直接操作する、直接操作モードを含む。
一実施形態の複数の入力モードは、ジェスチャ制御システムに結合されているコンポーネントの1組のアプリケーション・エレメントを入力デバイスが直接操作する、メタ操作モードを含む。
一実施形態の複数の入力モードは、ジェスチャ制御システムに結合されているコンポーネントのアプリケーション・エレメントの三次元操作を入力デバイスが制御する、三次元操作モードを含む。
一実施形態の入力信号は、方位に応答して、複数の入力モードからの1つの入力モードの選択を自動的に制御する。
一実施形態のデバイスは、遷移の間に入力モードの選択にヒステリシスを適用することを含む。
一実施形態の遷移は、入力デバイスの少なくとも1つの軸を中心とする回転遷移である。
一実施形態の検出器は、ある時点および空間における瞬時三空間方位をリアル・タイムで追跡する。
一実施形態の検出器は、入力デバイスの生の追跡データを、6度の空間方位に変換する。
一実施形態の検出器は、ある時点および空間における瞬時的三空間位置をリアル・タイムで追跡する。
一実施形態の検出器は、入力デバイスの生の追跡データを、6度の空間位置に変換する。
一実施形態の筐体は、複数の側面を備えており、複数の側面における各側面は、複数の方位の内1つの方位に対応する。
一実施形態の複数の側面における各側面は、複数の入力モードの内1つの入力モードに対応する。
一実施形態の複数の側面における各側面には、当該側面が対応する入力モードが割り当てられている。
一実施形態の複数の側面における各側面には、コンテキストに基づいて、入力モードが動的に割り当てられる。
一実施形態の複数の側面において少なくとも1つの側面は、入力センサを備えている。
一実施形態の複数の側面における各側面は、入力センサを備えている、
一実施形態の各側面の各入力センサには、方位に基づいて、機能が動的に割り当てられる。
一実施形態の各側面の各入力センサには、コンテキストに基づいて、機能が動的に割り当てられる。
一実施形態の複数の側面は3つの側面を含み、筐体は三角形の断面を有し、複数の側面における各側面は、複数の方位における1つの方位に対応する。
一実施形態の複数の側面における第1側面は、第1入力モードに対応し、複数の側面における第2側面は、第2入力モードに対応し、第1側面の中心に対して120度よりも大きく入力デバイスを長手方向軸を中心に回転させることを含む遷移は、第1入力モードから第2モードへの変化を生じさせる。
一実施形態の検出器は、遷移の間に、入力モードの選択に、ヒステリシス・バンドを適用する。
一実施形態のヒステリシス・バンドは、約30度に等しい、およびそれよりも大きいの内少なくとも1つである。
一実施形態のヒステリシス・バンドは、プログラム可能である。
一実施形態の検出器は、入力デバイスのイベントを検出し、このイベントは、入力デバイスの三空間位置および三空間方位の内少なくとも1つに対応し、このイベントが第1タイプのアプリケーションに対応する。
一実施形態のプロセッサは、イベントを指定する入力デバイス・イベント・データと、イベントの状態情報とを備えているデータ・シーケンスを発生し、入力デバイス・イベント・データおよび状態情報は、ジェスチャ制御システムの第1アプリケーションに対応するタイプを有するタイプ特定データである。
一実施形態のプロセッサは、データ・シーケンスを含むようにデータ・カプセルを形成し、データ・カプセルは、データ・シーケンスのアプリケーション独立表現を含むデータ構造を有する。
一実施形態のプロセッサは、データ・カプセルをレポジトリに入れる。
一実施形態の第2タイプのアプリケーションの下で実行する第2イベントは、レポジトリを検索し、データ・カプセルと第2イベントとの間の対応を特定し、第2タイプのアプリケーションは、データ・カプセルのデータ・シーケンスの内容を用いて、第2イベントに対応する動作を実行する。
一実施形態のジェスチャ制御システムは、当該ジェスチャ制御システムに結合されている三空間物体を制御する。
一実施形態のデバイスは、3度の平行移動自由度および3度の回転自由度で、当該デバイスによって、三空間物体を制御することを含む。
一実施形態の制御は、入力デバイスの動きと三空間物体との間における直接結合を含む。
一実施形態の制御は、入力デバイスの動きと三空間物体との間における間接結合を含む。
一実施形態の三空間物体は、プロセッサに結合されているディスプレイ・デバイス上に提示される。
一実施形態のデバイスは、入力デバイスの複数の入力モードを、三空間物体の複数の物体平行移動にマッピングすることによって、三空間オブジェクトの移動を制御する。
一実施形態のマッピングは、複数の入力モードと複数の物体の平行移動との間における直接マッピングを含む。
一実施形態のマッピングは、複数の入力モードと複数の物体の平行移動との間における間接マッピングを含む。
一実施形態のマッピングは、 複数の入力モードの位置的偏倚を、三空間物体の物体平行移動の位置的偏倚に相関付けることを含む。
一実施形態のマッピングは、入力デバイスの位置的偏倚を、三空間物体の物体平行移動の平行移動速度に相関付けることを含む。
一実施形態のデバイスは、入力デバイスの線形ジェスチャを三空間物体の線形平行移動にマッピングすることによって、三空間物体の移動を制御することを含む。
一実施形態のデバイスは、入力デバイスの回転ジェスチャを三空間物体の回転平進にマッピングすることによって、三空間物体の移動を制御することを含む。
一実施形態のデバイスは、入力デバイスの線形ジェスチャを三空間物体の回転平進にマッピングすることによって、三空間物体の移動を制御することを含む。
一実施形態のデバイスは、入力デバイスの回転ジェスチャを三空間物体の線形平行移動にマッピングすることによって、三空間物体の移動を制御することを含む。
一実施形態の検出は、入力デバイスの外挿補間位置が仮想空間と交差するときを検出することを含み、仮想空間は、ジェスチャ制御システムに結合されているディスプレイ・デバイス上に図示される空間を含む。
本明細書において記載した実施形態は、検出器に結合され、手持ちサイズのフォーム・ファクタを有する筐体内に収容されているプロセッサを備えている入力デバイスを含む。一実施形態の検出器は、筐体が現在操作されている方位、および筐体の位置の内少なくとも1つを検出して入力信号に変換する。一実施形態の検出器は、コイルに誘発される信号を用いて、方位および位置の内少なくとも1つを検出する。一実施形態の入力デバイスは、プロセッサに結合されている送信機を備えている。一実施形態の送信機は、入力信号をジェスチャ制御システムに伝達する。一実施形態の入力信号は、ジェスチャ制御システムの複数の入力モードを自動的に制御し、ジェスチャ制御システムに結合されている三空間物体の平行移動および回転を制御する。
本明細書において記載した実施形態は、入力デバイスを含む。この入力デバイスは、検出器に結合され、手持ちサイズのフォーム・ファクタを有する筐体内に収容されているプロセッサであって、検出器が、筐体が現在操作されている方位、および筐体の位置の内少なくとも1つを検出して入力信号に変換し、検出器が、コイルに誘発される信号を用いて、方位および位置の内少なくとも1つを検出する、プロセッサと、プロセッサに結合されている送信機であって、入力信号をジェスチャ制御システムに伝達する、送信機とを備えており、入力信号がジェスチャ制御システムの複数の入力モードを自動的に制御し、ジェスチャ制御システムに結合されている三空間物体の平行移動および回転を制御する。
本明細書において記載した実施形態は、プロセッサを含む手持ちサイズの筐体を備えている入力デバイスを含む。一実施形態のプロセッサは、検出器に結合されており、検出器は、入力デバイスが現在操作されている方位と、入力デバイスの複数の方位間における遷移とを検出して入力信号に変換する。一実施形態の入力信号は、ジェスチャ制御システムの複数の入力モードを自動的に制御し、ジェスチャ制御システムに結合されている三空間物体を制御する。一実施形態の入力信号は、3度の平行移動自由度および3度の回転自由度で、三空間物体を制御する。
本明細書において記載した実施形態は、プロセッサを含む手持ちサイズの筐体を備えている入力デバイスを含み、プロセッサは、検出器に結合されており、検出器は、入力デバイスが現在操作されている方位と、入力デバイスの複数の方位間における遷移とを検出して入力信号に変換し、入力信号は、ジェスチャ制御システムの複数の入力モードを自動的に制御し、ジェスチャ制御システムに結合されている三空間物体を制御し、入力信号は、3度の平行移動自由度および3度の回転自由度で、三空間物体を制御する。
本明細書において記載した実施形態は、入力デバイスが現在操作されている方位と、入力デバイスの複数の方位間における遷移とを検出し変換するステップを備えている方法を含む。一実施形態の入力デバイスは、プロセッサを含む手持ちサイズの筐体を備えている。一実施形態の方法は、方位および遷移に応答して、複数の入力モードからの1つの入力モードの選択を自動的に制御するステップを備えている。一実施形態の方法は、入力モードにしたがって、ジェスチャ制御システムに結合されている三空間物体を制御するステップを備えている。
本明細書において記載した実施形態は、入力デバイスが現在操作されている方位と、入力デバイスの複数の方位間における遷移とを検出し変換するステップであって、入力デバイスが、プロセッサを含む手持ちサイズの筐体を備えている、ステップと、方位および遷移に応答して、複数の入力モードからの1つの入力モードの選択を自動的に制御するステップと、入力モードにしたがって、ジェスチャ制御システムに結合されている三空間物体を制御するステップとを備えている方法を含む。
一実施形態の方位の検出は、ある時点および空間における入力デバイスの瞬時的状態の絶対三空間位置を検出するステップを含む。
一実施形態の遷移は、入力デバイスの軸を中心とする回転遷移である。
一実施形態の遷移は、入力デバイスの複数の軸を中心とする回転遷移である。
一実施形態の方法は、遷移の間に、入力モードの選択にヒステリシスを適用するステップを備えている。
一実施形態の検出するステップは、瞬時的方位をリアル・タイムで追跡するステップを含む。
一実施形態の変換するステップは、入力デバイスの生の追跡データを、6度の空間方位に変換するステップを含む。
一実施形態の検出するステップは、入力デバイスの瞬時的位置をリアル・タイムで追跡するステップを含む。
一実施形態の変換するステップは、入力デバイスの生の追跡データを、6度の空間位置に変換するステップを含む。
一実施形態の方法は、少なくとも1つの入力センサを備えており、この入力センサが入力デバイス上に位置付けられている。
一実施形態の方法は、入力デバイスの入力センサの生の入力センサ位置データを検出し、入力センサ状態に変換するステップを備えている。
一実施形態の方法は、入力センサ状態に応答して、複数の入力モードを制御するステップを備えている。
一実施形態の検出は、入力デバイス上で行われる。
一実施形態の検出は、入力デバイスから離れて行われる。
一実施形態の検出は、入力デバイス上で行われ、更に入力デバイスから離れて行われる。
一実施形態の入力デバイスは、ハンドヘルド入力デバイスである。
一実施形態の検出するステップは、ある時点および空間における入力デバイスの瞬時的状態の絶対的三空間位置を検出するステップを含む。
一実施形態の複数の入力モードは、ジェスチャ制御システムに結合されているコンポーネントのアプリケーション・エレメントの直接操作のために、瞬時的状態が用いられる、直接操作モードを含む。
一実施形態の複数の入力モードは、ジェスチャ制御システムに結合されているコンポーネントの1組のアプリケーション・エレメントの直接操作のために、瞬時的状態が用いられる、メタ操作モードを含む。
一実施形態の複数の入力モードは、ジェスチャ制御システムに結合されているコンポーネントのアプリケーション・エレメントの三次元操作のために、瞬時的状態が用いられる、三次元操作モードを含む。
一実施形態の方法は、ジェスチャ制御システムによって、ジェスチャ制御システムに結合されている三空間オブジェクトを制御するステップを備えている。
一実施形態の方法は、3度の平行移動自由度および3度の回転自由度で三空間物体を制御するステップを備えている。
一実施形態の制御は、入力デバイスの動きと三空間物体との間における直接結合を含む。
一実施形態の制御は、入力デバイスの動きと三空間物体との間における間接結合を含む。
一実施形態の方法は、三空間物体をディスプレイ・デバイス上に提示するステップを備えている。
一実施形態の方法は、入力デバイスの複数の入力モードを、三空間物体の複数の物体平行移動にマッピングすることによって、三空間オブジェクトの移動を制御するステップを備えている。
一実施形態のマッピングは、複数の入力モードと複数の物体の平行移動との間における直接マッピングを含む。
一実施形態のマッピングは、複数の入力モードと複数の物体の平行移動との間における間接マッピングを含む。
一実施形態のマッピングは、 複数の入力モードの位置的偏倚を、三空間物体の物体平行移動の位置的偏倚に相関付けることを含む。
一実施形態のマッピングは、入力デバイスの位置的偏倚を、三空間物体の物体平行移動の平行移動速度に相関付けることを含む。
一実施形態の方法は、入力デバイスの線形ジェスチャを三空間物体の線形平行移動にマッピングすることによって、三空間物体の移動を制御するステップを備えている。
一実施形態の方法は、入力デバイスの回転ジェスチャを三空間物体の回転平進にマッピングすることによって、三空間物体の移動を制御するステップを備えている。
一実施形態の方法は、入力デバイスの線形ジェスチャを三空間物体の回転平進にマッピングすることによって、三空間物体の移動を制御するステップを備えている。
一実施形態の方法は、入力デバイスの回転ジェスチャを三空間物体の線形平行移動にマッピングすることによって、三空間物体の移動を制御するステップを備えている。
一実施形態の検出するステップは、入力デバイスの外挿補間位置が仮想空間と交差するときを検出するステップを含み、仮想空間は、ジェスチャ制御システムに結合されているディスプレイ・デバイス上に図示される空間を含む。
一実施形態の検出するステップは、入力デバイスのイベントを含み、このイベントは、入力デバイスの三空間位置および三空間方位の内少なくとも1つに対応し、イベントが第1タイプのアプリケーションに対応する。
一実施形態の方法であって、イベントを指定する入力デバイス・イベント・データと、イベントの状態情報とを備えているデータ・シーケンスを発生するステップを備えており、入力デバイス・イベント・データおよび状態情報は、ジェスチャ制御システムの第1アプリケーションに対応するタイプを有するタイプ特定データである。
一実施形態の方法は、データ・シーケンスを含むようにデータ・カプセルを形成するステップを備えており、データ・カプセルは、データ・シーケンスのアプリケーション独立表現を含むデータ構造を有する。
一実施形態の方法は、データ・カプセルをレポジトリに入れるステップを備えている。
一実施形態の第2タイプのアプリケーションの下で実行する第2イベントは、レポジトリを検索し、データ・カプセルと第2イベントとの間の対応を特定し、第2タイプのアプリケーションは、データ・カプセルのデータ・シーケンスの内容を用いて、第2イベントに対応する動作を実行する。
一実施形態の検出は、電磁界(EMF)追跡を用いる。
一実施形態の方法は、入力デバイスの複数のコイルに信号を誘発するEMFを発生するステップを備えている。
一実施形態の方法は、入力デバイスからは離れている複数の電磁界発生器を用いて、EMFを発生するステップを備えており、入力デバイスが、信号を誘発する電磁界発生器に近接するときに、各電磁界発生器は、入力デバイスの複数のコイルに信号を誘発する。
一実施形態の検出するステップは、複数のコイルに誘発されるEMF信号を用いて、入力デバイスの方位を検出するステップを含む。
一実施形態の検出するステップは、複数のコイルに誘発される信号を用いて、入力デバイスの位置を検出するステップを含む。
一実施形態の方法は、入力デバイスの方位を、ジェスチャ制御システムに伝達するステップを備えている。
一実施形態の方法は、入力デバイスの位置を、ジェスチャ制御システムに伝達するステップを備えている。
一実施形態の方法は、入力デバイスの少なくとも1つの入力センサの状態を、ジェスチャ制御システムに伝達するステップを備えている。
一実施形態の検出は、光学的追跡である。
一実施形態の方法は、入力デバイスに接続されている少なくとも1つのタグを追跡するステップを備えている。
一実施形態の少なくとも1つのタグは、入力デバイスの前面領域に接続されている複数のタグを備えている。
一実施形態の追跡するステップは、少なくとも1つのタグの位置を動的に検出するステップを含む。
一実施形態の追跡するステップは、入力デバイスのある領域に結合されている1組のタグの位置を検出することを含む。
一実施形態の1組のタグにおける各タグは、パターンを含み、1組のタグにおける各タグの各パターンは、複数のタグの内いずれの残りのタグのいずれのパターンとも異なる。
一実施形態の各タグが第1パターンと第2パターンとを含み、第1パターンが1組のタグにおけるいずれのタグにも共通であり、第2パターンは、1組のタグの内少なくとも2つのタグ間で異なる。
一実施形態の1組のタグは、入力デバイス上における複数のパターンを形成する。
一実施形態の少なくも1つのタグは、1組の赤外線(IR)発光ダイオード(LED)と、1組の逆反射ドットとを備えている。
一実施形態の方法は、入力デバイスの少なくとも1つの入力センサを通じて、1組のIR LEDの状態を制御するステップを備えている。
一実施形態の各IR LEDの状態は、複数の入力モードの内少なくとも1つの入力モードに対応する。
一実施形態の少なくとも1つのタグは、入力デバイスに接続されている少なくとも1つの追跡ドットを備えている。
一実施形態の少なくとも1つの追跡ドットは、少なくとも1つの赤外線(IR)発光ダイオード(LED)を備えている。
一実施形態の少なくとも1つの追跡ドットは、少なくとも1つの逆反射ドットを備えている。
一実施形態の少なくとも1つの追跡ドットは、赤外線(IR)発光ダイオード(LED)および逆反射ドットの内少なくとも1つを備えている。
一実施形態の少なくとも1つの追跡ドットは、1組のIR LEDと1組の逆反射ドットとを備えている。
一実施形態の方法は、入力デバイスの複数の側面における各側面を、複数の方位の内1つの方位と関連付けるステップを備えている。
一実施形態の方法は、複数の側面における各側面と、複数の入力モードの内1つの入力モードとの間における対応を定義するステップを備えている。
一実施形態の方法は、複数の側面における各側面に入力モードを割り当てるステップを備えている。
一実施形態の方法は、複数の側面における各側面に、コンテキストに基づいて、入力モードを動的に割り当てるステップを備えている。
一実施形態の方法は、側面の入力センサに、方位に基づいて、機能を動的に割り当てるステップを備えている。
一実施形態の方法は、各側面の入力センサに、コンテキストに基づいて、機能を動的に割り当てるステップを備えている。
一実施形態の複数の側面は、3つの側面を含み、入力デバイスが三角形の断面を有し、複数の側面における各側面を、複数の方位における1つの方位に関連付けるステップを備えている。
一実施形態の方法は、複数の側面における各側面と複数の入力モードにおける1つの入力モードとの間における対応を定義するステップを備えている。
一実施形態の対応は、複数の側面における第1側面が第1入力モードに対応し、複数の側面における第2側面が第2入力モードに対応することを含み、第1側面の中心に対して120度よりも大きく入力デバイスを長手方向軸を中心に回転させることを含む遷移は、第1入力モードから第2モードへの変化を生じさせる。
一実施形態の方法は、遷移の間に、入力モードの選択に対して、ヒステリシス・バンドを適用するステップを備えている。
一実施形態のヒステリシス・バンドは、約30度に等しい、およびそれよりも大きいの内少なくとも1つである。
一実施形態のヒステリシス・バンドは、プログラム可能である。
本明細書において記載した実施形態は、検出器を通じて受け取ったジェスチャ・データから、入力デバイスのジェスチャを自動的に検出するステップを備えている方法を含む。一実施形態のジェスチャ・データは、ある時点および空間における入力デバイスの瞬時的状態の絶対三空間方位データである。一実施形態の方法は、ジェスチャ・データのみを用いてジェスチャを識別するステップを備えている。一実施形態の方法は、ジェスチャをジェスチャ信号に変換するステップを備えている。一実施形態の方法は、ジェスチャ信号に応答して、入力デバイスの複数の入力モードからの1つの入力モードの選択を自動的に制御するステップを備えている。
本明細書において記載した実施形態は、検出器を通じて受け取ったジェスチャ・データから、入力デバイスのジェスチャを自動的に検出し、ジェスチャ・データは、ある時点および空間における入力デバイスの瞬時的状態の絶対三空間方位データであり、ジェスチャ・データのみを用いてジェスチャを識別するステップと、ジェスチャをジェスチャ信号に変換するステップと、ジェスチャ信号に応答して、入力デバイスの複数の入力モードからの1つの入力モードの選択を自動的に制御するステップとを備えている方法を含む。
本明細書において記載した実施形態は、方位に対応する複数のモード方位を有する入力デバイスの方位を検出するステップを備えている方法を含む。一実施形態の複数のモード方位は、ジェスチャ制御システムの複数の入力モードに対応する。一実施形態の方法は、方位に応答して、複数の入力モードからの1つの入力モードの選択を自動的に制御するステップを備えている。一実施形態の方法は、入力モードにしたがって、ジェスチャ制御システムに結合されている三空間物体を制御するステップとを備えている。
本明細書において記載した実施形態は、方位に対応する複数のモード方位を有する入力デバイスの方位を検出するステップであって、複数のモード方位は、ジェスチャ制御システムの複数の入力モードに対応する、ステップと、方位に応答して、複数の入力モードからの1つの入力モードの選択を自動的に制御するステップと、入力モードにしたがって、ジェスチャ制御システムに結合されている三空間物体を制御するステップとを備えている方法を含む。
本明細書において記載したシステムおよび方法は、処理システムを含む、および/または処理システムの下で実行する、および/または処理システムと連動して実行する。処理システムは、当技術分野では周知のように、互いに動作するプロセッサ主体デバイスまたは計算デバイスのあらゆる集合体、あるいは処理システムまたはデバイスのコンポーネントを含む。例えば、処理システムは、携帯用コンピュータ、通信ネットワークにおいて動作する携帯用通信デバイス、および/またはネットワーク・サーバの1つ以上を含むことができる。携帯用コンピュータは、パーソナル・コンピュータ、セルラ電話機、パーソナル・ディジタル・アシスタント、携帯用計算デバイス、および携帯用通信デバイスの中から選択した多数のデバイスおよび/またはデバイスの組み合わせのいずれとすることもできるが、そのように限定されるのではない。処理システムは、それよりも大きなコンピュータ・システムの中にあるコンポーネントを含むことができる。
一実施形態の処理システムは、少なくとも1つのプロセッサと、少なくとも1つのメモリ・デバイスまたはサブシステムとを含む。また、処理システムは、少なくとも1つのデータベースを含むか、またはこれに結合することができる。「プロセッサ」という用語は、本明細書において一般に用いる場合、1つ以上の中央演算装置(CPU)、ディジタル信号プロセッサ(DSP)、特定用途集積回路(ASIC)等のような、あらゆる論理演算装置を指す。プロセッサおよびメモリは、1つのチップ上にモノリシックに集積することができ、多数のチップまたはホスト・システムのコンポーネント間で分散することができ、および/またはアルゴリズムの何らかの組み合わせによって提供することができる。本明細書において記載した方法は、ソフトウェア・アルゴリズム(1つまたは複数)、プログラム、ファームウェア、ハードウェア、コンポーネント、回路の1つ以上で、いずれの組み合わせでも実現することができる。
本明細書において記載したシステムおよび方法を具体化するシステム・コンポーネントは、一緒に配置すること、または別個の位置に配置することができる。したがって、本明細書において記載したシステムおよび方法を具現化するシステム・コンポーネントは、単一のシステム、多数のシステム、および/または地理的に離れたシステムのコンポーネントとすることができる。また、これらのコンポーネントは、単一のシステム、多数のシステム、および/または地理的に離れたシステムのサブコンポーネントまたはサブシステムとすることもできる。これらのコンポーネントは、ホスト・システムの1つ以上のその他のコンポーネント、またはホスト・システムに結合されているシステムに結合することができる。
通信経路は、システム・コンポーネントを結合し、コンポーネント間においてファイルを伝達または転送する媒体であればいずれでも含む。通信経路は、ワイヤレス接続、有線接続、混成ワイヤレス/有線接続を含む。また、通信経路は、ローカル・エリア・ネットワーク(LAN)、都市エリア・ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、企業固有ネットワーク、事務所間またはバックエンド・ネットワーク、およびインターネットを含むネットワークへの結合または接続も含む。更に、通信経路は、フロッピ・ディスク、ハード・ディスク・ドライブ、およびCD−ROMディスクのような、リムーバブル固定媒体、ならびにフラッシュRAM、ユニバーサル・シリアル・バス(USB)接続、RS−232接続、電話回線、バス、および電子メール・メッセージを含む。
文脈から特に明確に必要となるのではない限り、説明全体を通じて、「備える」(comprise)、「備えている」(comprising)等の単語は、排他的または網羅的な意味とは逆に、包含的意味で解釈することとする。即ち、「含むがそれに限定されない」という意味である。また、単数または複数を用いる単語は、それぞれ、複数または単数も含むこととする。加えて、「ここでは」(herein)、「以下では」(hereunder)、「以上」(above)、「以下」(below)および同様の趣旨の単語は、本願のいずれかの特定部分ではなく、本願全体を指すこととする。「または」という単語が2つ以上の項目のリストに関して用いられる場合、その単語は以下の単語の解釈全てに及ぶこととする。リストにおける項目のいずれか、リストにおける項目全て、およびリストにおける項目のあらゆる組み合わせ。
以上における実施形態の説明は、網羅的であることも、記載したシステムおよび方法を、開示した形態そのものに限定することも意図していない。具体的な実施形態およびその例は、本明細書では例示の目的で記載したが、その他のシステムおよび方法の範囲内において、種々の同等な修正も可能であることは、当業者であれば認められよう。本明細書において提案した処理環境の教示は、前述のシステムおよび方法だけでなく、他の処理システムおよび方法にも適用することができる。
以上で説明した種々の実施形態の要素および動作(act)を組み合わせて、更に別の実施形態を提案することができる。これらおよびその他の変更は、以上に詳細に記載した説明を参照すれば、処理環境に対して行うことができる。
一般に、以下の特許請求の範囲では、前述の実施形態を本明細書および特許請求の範囲に開示される特定の実施形態に限定するように、用いられる用語を解釈してはならず、特許請求の範囲の下で動作する全てのシステムを含むように解釈してしかるべきである。したがって、前述の実施形態は、本明細書における開示に限定されるのではなく、代わりに、実施形態の範囲は、特許請求の範囲によって全体的に判断されるものとする。
以上の実施形態のある種の態様が、以下にある種の請求項の形態で提示されるが、本発明者は、これら実施形態の種々の態様を、いかなる数の請求項の形態でも想定している。したがって、本発明者は、本願を出願した後に本実施形態の他の態様に対してこのような追加の請求項の形態を追求するために、追加の請求項を加える権利を保持することとする。