(57)【特許請求の範囲】
【請求項１】
入力デバイスと、
プロセッサに結合され、前記入力デバイスの方位及びジェスチャを検出する検出器と、
を備えているシステムであって、
前記入力デバイスが、複数のモード方位を有し、
前記複数のモード方位の各々が、前記入力デバイスの複数の方位の１つに対応し、かつ、ジェスチャ制御システムの複数の入力モードの1つに対応し、
前記検出器が、通信チャネルを介して前記ジェスチャ制御システムに結合され、前記入力デバイスの前記方位に応答して、前記複数の入力モードから１つの入力モードを自動的に選択して前記ジェスチャ制御システムを選択された入力モードにし、
前記入力モードの各々が、前記ジェスチャから生じる複数の操作モードの１つに対応し、
前記選択された入力モードが、前記入力デバイスによるジェスチャから生じる操作モードを制御する、システム。
【請求項２】
請求項１記載のシステムにおいて、前記検出器が、前記入力デバイスの方位を解釈して、前記ジェスチャ制御システムの入力信号に変換し、また、前記複数のモード方位間で前記入力デバイスの方位遷移を解釈して、前記ジェスチャ制御システムの入力信号に変換する、システム。
【請求項３】
請求項１記載のシステムにおいて、前記方位の検出が、ある時点および空間における前記入力デバイスの瞬時的状態の絶対三空間位置を検出することを含む、システム。
【請求項４】
請求項１記載のシステムにおいて、
前記検出器が、前記複数のモード方位間で、前記入力デバイスの方位遷移を追跡し、
前記方位遷移が、前記入力デバイスの軸を中心とする回転遷移を含む、システム。
【請求項５】
請求項１記載のシステムにおいて、前記検出器が、
瞬時的方位をリアル・タイムで追跡し、
前記入力デバイスの瞬時的位置をリアル・タイムで追跡し、
前記入力デバイスの生の追跡データを、６度の空間位置に変換する、システム。
【請求項６】
請求項１記載のシステムであって、少なくとも１つの入力センサを備え、
この入力センサが前記入力デバイス上に位置付けられており、
前記検出器が、生の入力センサ位置データを、入力センサ状態および入力センサ遷移データの内の少なくとも１つに変換し、
前記入力センサの位置が、前記複数の入力モードを制御する、システム。
【請求項７】
前記入力デバイスが、ハンドヘルド入力デバイスである、請求項１記載のシステム。
【請求項８】
請求項１記載のシステムにおいて、
前記検出器が、ある時点および空間における前記入力デバイスの瞬時的状態の絶対三空間位置を検出し、
前記複数の入力モードが、
前記ジェスチャ制御システムに結合されているコンポーネントのアプリケーション・エレメントの直接操作のために、前記瞬時的状態が用いられる、直接操作モードと、
前記ジェスチャ制御システムに結合されているコンポーネントの１組のアプリケーション・エレメントの直接操作のために、前記瞬時的状態が用いられる、メタ操作モードと、
前記ジェスチャ制御システムに結合されているコンポーネントのアプリケーション・エレメントの三次元操作のために、前記瞬時的状態が用いられる、三次元操作モードと、
の内の少なくとも１つを含む、システム。
【請求項９】
請求項８記載のシステムにおいて、前記ジェスチャ制御システムが、前記ジェスチャ制御システムに結合されている三空間物体を、３度の平行移動自由度および３度の回転自由度で制御する、システム。
【請求項１０】
請求項９記載のシステムであって、前記入力デバイスの前記複数の入力モードを、前記三空間物体の複数の物体平行移動にマッピングすることによって、前記三空間物体の移動を制御することを含む、システム。
【請求項１１】
請求項１０記載のシステムにおいて、前記マッピングが、
前記複数の入力モードと前記複数の物体平行移動との間における直接マッピングと、
前記複数の入力モードと前記複数の物体平行移動との間における間接マッピングと、
前記複数の入力モードの位置的偏倚を、前記三空間物体の物体平行移動の位置的偏倚に相関付けることと、
前記入力デバイスの位置的偏倚を、前記三空間物体の前記物体平行移動の平行移動速度に相関付けることと、
の内の少なくとも１つを含む、システム。
【請求項１２】
請求項９記載のシステムにおいて、前記検出器による検出が、前記入力デバイスの外挿補間位置が仮想空間と交差するときを検出することを含み、前記仮想空間が、前記ジェスチャ制御システムに結合されているディスプレイ・デバイス上に図示される空間を含む、システム。
【請求項１３】
請求項１記載のシステムにおいて、前記検出器が、前記入力デバイスのイベントを検出し、前記イベントが、前記入力デバイスの三空間位置および三空間方位の内少なくとも１つに対応し、前記イベントが第１タイプのアプリケーションに対応する、システム。
【請求項１４】
請求項１３記載のシステムにおいて、
前記プロセッサが、前記イベントを指定する入力デバイス・イベント・データと、前記イベントの状態情報とを備えているデータ・シーケンスを発生し、
前記入力デバイス・イベント・データおよび状態情報が、前記ジェスチャ制御システムの第１アプリケーションに対応するタイプを有するタイプ特定データである、システム。
【請求項１５】
請求項１４記載のシステムにおいて、前記プロセッサが、前記データ・シーケンスを含むようにデータ・カプセルを形成し、前記データ・カプセルが、前記データ・シーケンスのアプリケーション独立表現を含むデータ構造を有し、前記プロセッサが前記データ・カプセルをレポジトリに入れる、システム。
【請求項１６】
請求項１５記載のシステムにおいて、
第２タイプのアプリケーションの下で実行する第２イベントが、前記レポジトリを検索して、前記データ・カプセルと前記第２イベントとの間の対応を特定し、
前記第２タイプのアプリケーションが、前記データ・カプセルのデータ・シーケンスの内容を用いて、前記第２イベントに対応する動作を実行する、システム。
【請求項１７】
請求項１記載のシステムにおいて、
該システムが、前記入力デバイスからは離れている少なくとも１つの電磁界発生器を備えており、
前記入力デバイスが、回路に結合されている前記検出器を含み、
前記検出器が複数のコイルを備え、
前記少なくとも１つの電磁界発生器が、前記検出器の複数のコイルに信号を誘発する電磁界（ＥＭＦ）を発生し、
前記検出器が、前記複数のコイルに誘発される前記信号を用いて、前記入力デバイスの方位および位置の内の少なくとも１つを検出する、システム。
【請求項１８】
請求項１７記載のシステムにおいて、
前記入力デバイスが、前記プロセッサに結合されている送信機を備えており、
前記送信機がワイヤレス送信機であり、前記入力デバイスの方位および位置を、前記ジェスチャ制御システムに伝達し、
前記入力デバイスが、少なくとも１つの入力センサを備えており、
前記送信機が、前記少なくとも１つの入力センサの状態を、前記ジェスチャ制御システムに伝達する、システム。
【請求項１９】
請求項１記載のシステムにおいて、該システムが、前記入力デバイスに接続されている少なくとも１つのタグであって、光学的追跡により位置が動的に検出される少なくとも１つのタグを備えている、システム。
【請求項２０】
請求項１９記載のシステムにおいて、
前記少なくも１つのタグが、１組の赤外線（ＩＲ）発光ダイオード（ＬＥＤ）と、１組の逆反射ドットとを備え、
前記入力デバイスが、回路に結合されているマイクロプロセッサを含み、
前記回路が前記１組のＩＲ  ＬＥＤに結合され、前記回路に結合されている少なくとも１つの入力センサを備えており、
前記少なくとも１つのセンサが、前記入力デバイス上に位置付けられ、
前記少なくとも１つの入力センサが、前記１組のＩＲ  ＬＥＤの状態を制御し、
各ＩＲ  ＬＥＤの状態が、前記複数の入力モードの内少なくとも１つの入力モードに対応する、システム。
【請求項２１】
請求項１９記載のシステムにおいて、
前記少なくとも１つのタグが、前記入力デバイスに接続されている少なくとも１つの追跡ドットを備え、
前記少なくとも１つの追跡ドットが、
少なくとも１つの赤外線（ＩＲ）発光ダイオード（ＬＥＤ）と、
少なくとも１つの逆反射ドットと、
少なくとも１つの赤外線（ＩＲ）発光ダイオード（ＬＥＤ）および逆反射ドットと、
１組のＩＲ  ＬＥＤと１組の逆反射ドットと
の内の１またはそれ以上を備えている、システム。
【請求項２２】
請求項１記載のシステムにおいて、前記入力デバイスが、複数の側面を備えており、前記複数の側面における各側面が、前記複数のモード方位の内１つのモード方位、および前記複数の入力モードにおける１つの入力モードの内の少なくとも１つに対応する、システム。
【請求項２３】
前記複数の側面における各側面が、入力センサを備えている、請求項２２記載のシステム。
【請求項２４】
請求項２３記載のシステムにおいて、各側面の各入力センサには、方位およびコンテキストの内の少なくとも１つに基づいて、機能が動的に割り当てられる、システム。
【請求項２５】
請求項２２記載のシステムにおいて、
前記複数の側面が、３つの側面を含み、前記入力デバイスが三角形の断面を有し、
前記複数の側面における各側面が、前記複数のモード方位における１つのモード方位に対応する、システム。
【請求項２６】
請求項２２記載のシステムにおいて、
前記複数の側面における各側面が、前記複数の入力モードにおける１つの入力モードに対応し、前記複数の側面における第１側面が第１入力モードに対応し、前記複数の側面における第２側面が第２入力モードに対応し、
前記第１側面の中心に対して１２０度よりも大きく前記入力デバイスを長手方向軸を中心に回転させることを含む方位遷移が、前記第１入力モードから前記第２入力モードへの変化を生じさせる、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本出願は、２００９年５月２７日に出願した米国（ＵＳ）特許出願第６１／１８１，６２１号の優先権を主張する。
本願は、２００６年２月８日に出願したＵＳ特許出願第１１／３５０，６９７号の一部継続出願である。
本願は、２００８年４月２４日に出願したＵＳ特許出願第１２／１０９，２６３号の一部継続出願である。
本願は、２００９年９月３日に出願したＵＳ特許出願第１２／５５３，８４５号の一部継続出願である。
本願は、２０１０年５月４日に出願したＵＳ特許出願第１２／７７３，６０５号に関係がある。
発明の分野
計算プロセス内および計算プロセス間におけるデータの表現、操作、そして交換を含む制御システムおよびデバイスに関する実施形態について説明する。
【従来技術】
【０００２】
コンピュータ・システムのリアル・タイム制御には、ユーザの実際の行動を入力信号に変換することが必要となる。例えば、テレビジョンのリモコンは、ボタンの押下に応答して特定の信号を発生し、コンピュータのキーボードはキーの押下に応答して信号を発生し、マウスは二軸移動およびボタンの押下を表す信号を発生する。空間またはジェスチャ入力システムでは、三次元空間における手および物体の動きが、６度までの空間自由度および多数の様式(modality)またはポーズを表すことができる信号として変換される。
引用による包含
本明細書において述べる各特許、特許出願、および／または刊行物は、本願において引用することにより、個々の特許、特許出願、および／または刊行物の各々が具体的にそして個々に、引用することにより本願に含まれることを示した場合と同程度にその全体が本願にも含まれるものとする。
【発明の概要】
【課題を解決するための手段】
【０００３】
【図面の簡単な説明】
【０００４】
【図１】図１は、一実施形態の下における杖の形状をなすマルチモード入力デバイス（ＭＭＩＤ）を示す。
【図２】図２は、一実施形態の下における、磁界追跡を用いるＭＭＩＤのブロック図である。
【図３】図３は、一実施形態の下における、追跡環境の中でのＭＭＩＤのブロック図である。
【図４ａ】図４ａは、一実施形態の下における、赤外線（ＩＲ）発光ダイオード（ＬＥＤ）（ＩＲ  ＬＥＤ）を有するＭＭＩＤの入力状態を示す。
【図４ｂ】図４ｂは、一実施形態の下における、赤外線（ＩＲ）発光ダイオード（ＬＥＤ）（ＩＲ  ＬＥＤ）を有するＭＭＩＤの入力状態を示す。
【図５ａ】図５ａは、代替実施形態の下における、ＩＲ  ＬＥＤを有するＭＭＩＤの入力状態を示す。
【図５ｂ】図５ｂは、代替実施形態の下における、ＩＲ  ＬＥＤを有するＭＭＩＤの入力状態を示す。
【図６】図６は、一実施形態の下における、ジェスチャ制御システムのブロック図である。
【図７】図７は、一実施形態の下における標識タグの図である。
【図８】図８は、一実施形態の下におけるジェスチャ・ボキャブラリにおけるポーズの図である。
【図９】図９は、一実施形態の下におけるジェスチャ・ボキャブラリにおける方位の図である。
【図１０】図１０は、一実施形態の下におけるジェスチャ・ボキャブラリにおける２つの手の組み合わせの図である。
【図１１】図１１は、一実施形態におけるジェスチャ・ボキャブラリにおける方位配合の図である。
【図１２】図１２は、一実施形態の下におけるシステム動作の流れ図である。
【図１３−１】図１３−１は、一実施形態の下におけるコマンドの一例である。
【図１３−２】図１３−２は、一実施形態の下におけるコマンドの一例である。
【図１４】図１４は、一実施形態の下において、スロークス、プロテイン、およびプールを用いたデータ交換を含む処理環境のブロック図である。
【図１５】図１５は、一実施形態の下における、プロテインのブロック図である。
【図１６】図１６は、一実施形態の下における、デスクリップ(descrip)のブロック図である。
【図１７】図１７は、一実施形態の下における、インジェスト(ingest)のブロック図である。
【図１８】図１８は、一実施形態の下におけるスロー(slaw)のブロック図である。
【図１９Ａ】図１９Ａは、一実施形態の下において、プールの中にあるプロテインのブロック図である。
【図１９Ｂ−１】図１９Ｂ−１は、一実施形態の下における、スロー・ヘッダ・フォーマットを示す。
【図１９Ｂ−２】図１９Ｂ−２は、一実施形態の下における、スロー・ヘッダ・フォーマットを示す。
【図１９Ｃ】図１９Ｃは、一実施形態の下においてプロテインを用いる際の流れ図である。
【図１９Ｄ】図１９Ｄは、一実施形態の下において、プロテインを組み立てるまたは発生する際の流れ図である。
【図２０】図２０は、一実施形態の下において、スロークス、プロテイン、およびプールを用いたデータ交換を含む処理環境のブロック図である。
【図２１】図２１は、多数のデバイスと、これらのデバイスの１つ以上で走る多数のプログラムとを含み、一実施形態の下において、プラズマ構造(plasma construct)（例えば、プール、プロテイン、およびスロー）を用いることにより、多数の実行中のプログラムが、デバイスによって発生したイベントを共有し、集合的に応答することを可能にする処理環境のブロック図である。
【図２２】図２２は、多数のデバイスと、これらのデバイスの１つ以上で走る多数のプログラムとを含み、一実施形態の下において、プラズマ構造（例えば、プール、プロテイン、およびスロー）を用いることにより、多数の実行中のプログラムが、デバイスによって発生したイベントを共有し、集合的に応答することを可能にする処理環境のブロック図である。
【図２３】図２３は、多数の入力デバイスを含み、これらが当該デバイスの１つ以上で走る多数のプログラム間に結合されており、別の代替実施形態の下において、プラズマ構造（例えば、プール、プロテイン、およびスロー）を用いることにより、多数の実行中のプログラムが、入力デバイスによって発生したイベントを共有し、集合的に応答することを可能にする処理環境のブロック図である。
【図２４】図２４は、多数の入力デバイスを含み、これらが当該デバイスの１つ以上で走る多数のプログラム間に結合されており、更に別の代替実施形態の下において、プラズマ構造（例えば、プール、プロテイン、およびスロー）を用いることにより、多数の実行中のプログラムが、デバイスによって発生したグラフィクス・イベントを共有し、集合的に応答することを可能にする処理環境のブロック図である。
【図２５】図２５は、多数の入力デバイスを含み、これらが当該デバイスの１つ以上で走る多数のプログラム間に結合されており、更に別の代替実施形態の下において、更に別の代替実施形態の下において、プラズマ構造（例えば、プール、プロテイン、およびスロー）を用いることにより、実行中のプログラムの状態検査、可視化、およびデバッグ処理を可能にする処理環境のブロック図である。
【図２６】図２６は、多数の入力デバイスを含み、これらが当該デバイスの１つ以上で走る多数のプログラム間に結合されており、追加の代替実施形態の下において、プラズマ構造（例えば、プール、プロテイン、およびスロー）を用いることにより、当該プロセス・プールニおいて生成し配置された状態情報の特性に影響を及ぼすまたは制御することができる処理環境のブロック図である。
【発明を実施するための形態】
【０００５】
本明細書では、空間またはジェスチャ計算システムにマルチモード入力を供給するシステムおよび方法について記載する。本システムおよび方法の実施形態は、以下で詳細に説明する空間動作環境（ＳＯＥ）のコンテキストにおいて提示することとする。ＳＯＥは、ジェスチャ制御システム、またはジェスチャ主体制御システムを含み、空間ユーザ・インターフェース（ＳＵＩ）または空間インターフェース（ＳＩ）と代わりに呼ぶこともできる。
【０００６】
本明細書では、マルチモード入力デバイス（ＭＭＩＤ）の多数の実施形態について記載するが、ＭＭＩＤは、空間またはジェスチャ入力システムのユーザが、ある範囲の入力機能に直感的に、そして最小の労力で効率的にアクセスすることを可能にする。一実施形態のＭＭＩＤは、ハンドヘルド入力デバイスである。一実施形態のＭＭＩＤは、デバイスの位置および方位を高精度に、そしてリアル・タイムに追跡する手段を備えている。一実施形態のＭＭＩＤは、デバイスを構えて操作する人がその軸の１つ以上を中心にしてそれを容易に回転させることができるような物理的および機械的構造を備えている。一実施形態のＭＭＩＤは、１つよりも多い回転グリップ(rotation grip)でデバイスを快適に構えて操作できるような物理的および機械的構造を備えている。一実施形態のＭＭＩＤは、ユーザがデバイスを維持し操作している回転グリップ状態と、これらの動作回転状態間における遷移との双方を解釈し、ユーザ入力信号に変換することができるソフトウェア・コンポーネント（１つまたは複数）またはメカニズムを備えている。このソフトウェア・コンポーネントは、デバイスに対応する追跡データを拠り所とする。加えて、このような入力デバイスは、ボタン、ジョイスティック、スライダ、およびホイールというような、他の入力機能(capabilities)をその形態に統合することもできる。また、このデバイスは、照明、オーディオ・スピーカ、ラスター・ディスプレイ、および振動モータのような出力能力も統合することができる。
【０００７】
本明細書において示唆するように、種々の実施形態のマルチモード入力デバイスには、大多数の具体的な構成が可能である。デバイスは、物理的形状、可動部分、および使い勝手が異なることもある。また、デバイスは、物理的設計、追跡技術、およびソフトウェア処理の組み合わせによってサポートされる確実な(discreet)様式の数が異なることもある。更に、ＭＭＩＤは、補足的なオンボード入力（即ち、位置、方位、および様式以外の入力）の設計、およびオンボード出力能力が異なることもある。
【０００８】
一実施形態のＭＭＩＤは、消費者向け電子リモコンと同様のフォーム・ファクタを有する筐体を備えた杖状のデバイスを含む。図１は、一実施形態の下における、杖状ＭＭＩＤ１００を示す。ＭＭＩＤ１００は、長さが約５インチであり、幅が１／２インチで、断面が三角形であるが、そのように限定されるのではない。ＭＭＩＤ１００のハウジングの各面は、１つの入力センサを含む。一実施形態では、この入力センサは電気機械式ボタンを備えているが、代替実施形態では、これよりも多い数または少ない数のボタン、または異なるタイプのボタンを各面に有することもできる。ユーザがＭＭＩＤ１００を掴むと、三角柱の長いエッジ１０４の１つが当然ユーザの手の中で下に面し、ユーザの折り曲げた指の中で静止しており、一方角柱の逆側の面は上を向けられており、ユーザの親指の下に来る。ＭＭＩＤ１００は、指および親指の最小の動きによって、その長軸を中心にして１２０度回転させると、角柱の隣接する面を上向きにすることができる。このように、この角柱は、角柱の面に対応して、３つの別個の、容易にアクセスできるモード方位を含む。ＭＭＩＤ１００は、このデバイスを最初に体験するユーザによってでも、素早く、反復可能に、そして繰り返し回転させて、全ての（例えば、３つ）方位に向けさせることができる。
【０００９】
一実施形態のＭＭＩＤ１００の位置は、以下で説明するような、磁界追跡を用いて追跡されるが、他の追跡技術（その一部についても、本明細書において説明する）を用いて追跡することもできる。ＭＭＩＤ１００は、交流（ＡＣ）磁界、または電磁界（ＥＭＦ）に関してデバイスを追跡するための回路、マイクロプロセッサ、およびプログラム・コードを備えている。一実施形態のＥＭＦは、ＭＭＩＤに近接する、適合する基地局によって発生または放出されるが、そのように限定されるのではない。ＭＭＩＤ１００は、１つ以上の機械式ボタンを、これら１つ以上のボタンをディジタル化するための対応する電子回路と共に備えている。機械式ボタンのことを、入力センサとも呼ぶ。更に、ＭＭＩＤ１００は、追跡データ（例えば、方位データ、位置データ等）およびボタン押下生データをホスト・システムに報告するために、無線リンクを設ける回路も含む。加えて、ＭＭＩＤ１００は、バッテリおよび電源回路も含む。
【００１０】
入力処理ソフトウェアは、生の追跡データおよびボタン押下データを、６度の空間位置および方位、ボタン下方遷移、ボタン上方遷移、ならびにボタン状態の連続的報告を含むデータに変換する。一実施形態の入力処理ソフトウェアは、部分的にデバイス上で実行し、部分的にホスト・システムにおけるアプリケーション・コードとして実行するが、このように限定されるのではなく、あらゆる数／組み合わせの処理デバイスにおいて分散して実行すること、または１つのプロセッサにおいて単独で実行することもできる。このデータは、一連のプログラム「イベント」（プログラム・イベントの処理については、以下で詳細に説明する）として、ソフトウェア・アプリケーションに配信される。加えて、この入力処理レイヤは、モード遷移および連続モード状態イベントをアプリケーション・ソフトウェアに供給する。以下で詳しく説明するように、３つの状態（例えば、ｉ、ｉｉ、およびｉｉｉ）および６つの遷移（例えば、ｉ−＞ｉｉ、ｉ−＞ｉｉｉ、ｉｉ−＞ｉｉｉ、ｉｉ−＞ｉ、ｉｉｉ−＞ｉ、およびｉｉｉ−＞ｉｉ）が可能である。
【００１１】
一実施形態の処理レイヤはヒステリシスを用いることにより、ユーザが、所与のモードから離れることなく、ＭＭＩＤの長軸に沿った最大限の回転を行うことが可能となり、そしてＭＭＩＤが遷移角の端付近にあるときには、モード状態間で素早く行ったり来たり(flip-flopping)する望ましくない動作を回避することを可能にする。このヒステリシスを用いて、モード間の遷移を誘起するには、一実施形態のＭＭＩＤを、直前のモードの中心角に対して１２０度よりも多く回転させなければならない。したがって、ＭＭＩＤがモード（ｉ）にあり、その絶対角度中心(angular center)が０度である場合、いずれかの方向に、例えば、１５０度よりも多く長軸を中心とした回転が検出されるまで、ＭＭＩＤは論理的にモード（ｉ）状態に留まる。ＭＭＩＤを１５１度回転させると、モード状態（ｉｉ）に遷移する。状態（ｉｉ）の角度中心は１２０度である。状態（ｉ）への逆行を実行するためには、ＭＭＩＤを逆方向にこの角度中心を通って−１５０度回転させ、−３０（または３３０）度の絶対角度を通過させなければならない。先に３０度（１５０度から１２０度を差し引く）として示したヒステリシス・バンドは、プログラミングで設定可能であり、アプリケーション・コードまたはユーザの好みの設定によって調節することができる。前述のように、このヒステリシスの例を三方ＭＭＩＤに合わせて設ける場合、ここで記載した値に限定されるのではなく、代替実施形態では、回転角度および／またはヒステリシス・バンドは、筐体または杖のフォーム・ファクタ、および設計者／ユーザの好みにしたがって決定されることもある。
【００１２】
加えて、ある種のコードを選択的にアプリケーション・コードによってディスエーブルすることもできる。したがって、ＭＭＩＤは、アプリケーション・コードによって、一定のモード状態（ｉ）、（ｉｉ）、または（ｉｉｉ）を出力する単一モードデバイスとして扱うこともできる。または、ディスエーブルされたモードを２つの残りのモードのいずれかのみにマッピングすることによって、またはディスエーブルされたモードを、ヒステリシス・バンドの追加エリアとして扱うことによって、これらのモードの内いずれか１つをディスエーブルすることもできる。
【００１３】
更に、本システムは、ＭＭＩＤ（例えば、三角角柱）の１つの物理面を各モードと不変に関連付けるように構成することもでき、これらの面には、能動的または受動的マーキングによって、モードの関連付けについて任意に名称を付けるとよい。あるいは、本システムは、コンテキストに基づく方法でモードを面に割り当てるように構成することもできる。この後者の場合の一例として、ある期間作動させずに置かれた後にユーザによって最初にＭＭＩＤが取り上げられたときに、初期状態で上を向いている面をモード（ｉ）と関連つけるように、ＭＭＩＤを構成することができる。このような場合、アクティブ・モードのインディケータを、ＭＭＩＤ上、ユーザが見ているグラフィカル・ディスプレイ上、またはＭＭＩＤおよびグラフィカル・ディスプレイの組み合わせの上に設けることができる。
【００１４】
ＭＭＩＤの各面は、１つのボタンを含む。このボタンは、入力センサとも呼ぶ。これらのボタンは、アプリケーション・レベルのソフトウェアによって同一に扱われるが、そのように限定されるのではない。ユーザの観点からは、デバイスが、最小の労力で効率的な実用性のために、１つの論理ボタンで、３つの実際にある具体的な機能を有するものとして見なすことができる。ＭＭＩＤの回路およびソフトウェアは、異なる物理的ボタンの操作を区別しないが、本システムは、特定の組み合わせでボタンを押下すると、種々の構成およびリセット状態にデバイスを設定するように構成することもできる。
【００１５】
一実施形態のＭＭＩＤは、磁界追跡技術（例えば、米国特許第３，９８３，４７４号参照）を用いて機能する。磁界を発生および検知するための直交コイルの使用は、離れた物体を突き止めて追跡するときに既に行われている。例えば、米国特許第３，６４４，８２５号は、互いに動く発生コイルおよび検知コイルを教示する。あるいは、Kalmus, "A New Guiding and Tracking System"（新たな誘導および追跡システム）, IRE Transactions on Aerospace and Navigational Electronics, March 1962, ７〜１０ページ）に教示されているように、磁界を回転させることができる。
【００１６】
第２座標系に関する第１座標系の方位を決定するために座標変換器を用いることも、行われている。例えば、米国特許第３，４７４，２４１号および第３，６６０，６４８号は、第１座標フレームにおいて測定された角速度(angular rates)および角度誤差を、中間座標フレームの軸を中心として定められる角速度に変換する変換器を開示する。この軸を中心として、角回転(angular rotation)または角速度が定められる。次いで、積分して、オイラー角を用いることによって、第１座標フレームの第２座標フレームに関する方位を定める、角度−軸シーケンスを定める角度を決定する。
【００１７】
図２は、一実施形態の下において、磁界追跡を用いるＭＭＩＤのブロック図である。基地局２１０が、ＭＭＩＤの追跡環境に近接してまたはその中に位置し、追跡場を供給すること、およびＭＭＩＤ２１１と通信することの双方を行う。基地局では、信号発生器が、磁界発生回路２０１を用いることによって磁界を形成し、３つの直交コイル２０２に交互に波形を生成する。これらのコイルによって発生された電磁信号は、ＭＭＩＤの中にある３つの直交コイル２０３によって受け取られる。これら３つのコイルから受け取られた信号は、通例、演算増幅器２０４を用いて増幅され、そしてディジタル信号２０５に変換される。ディジタル信号２０５は、マイクロプロセッサ２０７によってサンプリングすることができる。このマイクロプロセッサは、ディジタル信号処理（ＤＳＰ）技法を用いて、３つのコイルの入力を分析する。ＤＳＰプロセスは、基地局からのＭＭＩＤの距離および方向を投影する位置ベクトル、ならびにＭＭＩＤの方位を決定する方位マトリクスを与える。
【００１８】
また、追加の情報（例えば、タイム・スタンプ、ユニバーサルＩＤ等）を、ＭＭＩＤ位置データと組み合わせることもできる。また、１つ以上のユーザ入力センサ２０６も検知して状態を求める。入力センサ２０６は、瞬間的スイッチ(momentary switch)、トグル・スイッチ、ジョイスティック型入力デバイス、および／またはタッチ・センサとすることがあり、その他にも数多くある。これらのスイッチからのサンプル・データは、１ビット（タッチ・ボタンに合わせて）、またはタッチ・センサの浮動小数点ｘ、ｙ座標のような、もっと複雑なデータ値を含む。
【００１９】
一実施形態では、マイクロプロセッサは、ＭＭＩＤからの位置データおよび方位データを含むデータを、ワイヤレスでホスト・プロセスに伝達する。ＭＭＩＤは、アクセス・ポイント２０９を通じたネットワークへのデータ伝達のために、無線周波数送信機および受信機（ＴＸ／ＲＸ）２０８を有する。この無線リンクは、いずれのワイヤレス・プロトコル（例えば、Ｂｌｕｅｔｏｏｔｈ，８０２．１１、ワイヤレスＵＳＢ、企業固有のソリューション、Nordic Semiconductor nRF24L01低電力無線ソリューション等）を用いることができる。アクセス・ポイントは、受信したデータ・ストリームを１つ以上のホスト・コンピュータに、ローカル・エリア・ネットワーク（例えば、有線インターネット１０／１００／１０００ＢａｓｅＴ、８０２．１１等）または他のインターフェース（例えば、ＵＳＢ等）を通じて伝達することができる。
【００２０】
図３は、一実施形態の下における、追跡環境の中にあるＭＭＩＤのブロック図である。ＭＭＩＤ３０４は、追跡環境３００に関して示されている。ＭＭＩＤは、前述のような基地局３０１と通信しているが、ＮＮＩＤは、追跡環境３００の中にあるいずれの数の異なるタイプおよび／または組み合わせの電子デバイスとでも通信することができる。追跡環境は、特定のサイズには限定されない。何故なら、無線周波数通信チャネルの範囲がＡＣ磁界の範囲と異なることもあるので、コイルを有する追加のＡＣ磁界発生器３０５／３０６／３０８を設けて、追加の追跡ビーコンを形成することもできるからである。これらのビーコンは、異なる周波数で動作すること、および／または異なる時点に送信することができる。ＭＭＩＤのユーザが磁界発生器３０２から遠ざかり、発生器３０５に向かって移動すると、ＭＭＩＤは、瞬時的に強い方のいずれかの信号で用いて、位置および方位を判定するが、その上アクセス・ポイント３０３を用いてこのデータをネットワークに返送する。
【００２１】
ＭＭＩＤがアクセス・ポイント３０３の範囲の外に移動し、基地局３０６に向かうと、ＭＭＩＤは無線リンクを基地局３０６におけるアクセス・ポイントと関連付ける。磁界発生器およびデータ・アクセス・ポイント間でローミングすることができると、最終的に、ＭＭＩＤを任意に広い追跡環境において用いることが可能になる。尚、アクセス・ポイントおよび磁界発生器は同じ位置３０７／３０８にある必要はないことを注記しておく。アクセス・ポイントおよび磁界発生器の双方が、ローカル・エリア・ネットワークを通じて１つ以上のホスト・デバイスと通信する手段を有しているが、周波数発生器は自律的に動作することができ（３０５）、設置を一層容易にすることができる。
【００２２】
以下に、一実施形態のＭＭＩＤを用いる人の動作例を示す。動作の間、操作者は、三連フォーマット(triptyc format)の広いアスペクト比の投射画面の前に、ある距離（例えば、１０フィート）のところに立っている。この画面は、高さがほぼ２メートル、幅が４メートルであり、１．５メートル幅のテーブルが彼女の直前に据えられている。このテーブル自体も、頭上真上の天井に取り付けられているプロジェクタによって扱われる投射面である。操作者は、断面が三角形のＭＭＩＤを、平面側「ｉ」が上を向くようにして、彼女の右手で気軽に保持する。彼女がＭＭＩＤを前方の画面に向けて画面の辺りに照準を定めると、部分的に透明なグラフィカル・カーソルが、ＭＭＩＤのポインティング・ベクトルと画面表面との交点を示す。入力システムの高いフレーム・レートおよび低いレイテンシが、因果的即時性の強い感覚に寄与する。操作者がＭＭＩＤの照準を変更すると、前方の画面上において、フラッシュライトまたはレーザ・ポインタを振っているという認識になり、カーソルの対応する動きが見かけ上遅れることはない。
【００２３】
操作者によって用いられるアプリケーションは、プレビュー・システムを同梱した製品であり、多くの同様のアプリケーションと同じようにＭＭＩＤを利用するように構成されている。つまり、ＭＭＩＤの様式は、操作者には非常に馴染みがある。モード「ｉ」は、最大の詳細レベルにおけるアプリケーション・エレメントの直接的な操作を可能にする。モード「ｉｉ」は、エレメントの擬似操作（例えば、地表面において）を行う。そして、モード「ｉｉｉ」は、三次元操作を可能にする。いずれの時点においても、カーソルの外観は、現在のモードを反映するだけでなく、ＭＭＩＤのモードを変更するために必要となる軸回転の方向を視覚的に示す。現時点では、カーソルは、ＭＭＩＤを時計回り方向に回転させると、「ｉｉ」にモードが移り、一方反時計回り方向に回転させると、「ｉｉｉ」にモードが移ることを示す。
【００２４】
前方三連画面における左側の１／３に配置されているのは、小さな物体の集合体のアレイである。操作者は、彼女の親指の下で、次の面が上に向けられるまで、ＭＭＩＤを軸方向に時計回り方向に回転させると、カーソルは、状態「ｉｉ」へのモード遷移を示すように変化する。操作者がＭＭＩＤを左に向けて、カーソルが各物体集合体上を通過するに連れて、強調境界線(highlight border)が徐々に現れ、続いて、カーソルがその集合体の凸状の外皮(convex hull)から外れると、徐々に消えていく。操作者は、カーソルを特定の集合体上に静止させ、次いで彼女の親指の直下にあるボタンを押下する。カーソルは、物体の集合体が把持されたことを示し、彼女が前方画面の中央に向けてＭＭＩＤを振ると、この集合体がカーソルを追跡するように移動する。操作者は、微小集合体を彼女の直接前の位置に持ってきたときにこのボタンを放す。この集合体は、急速に拡大し、前方画面の中央の１／３の範囲全体を埋め尽くし、様々な形状のプラスチック・ボトルの集合体、および文字による指示"Pet Energy Beverages"（ペット・エネルギ飲料）を明示する。
【００２５】
再度操作者がＭＭＩＤをその長軸を中心として時計回り方向に回転させると、カーソルは、モード「ｉｉｉ」が現在動作状態にあること、つまり、３Ｄ操作がイネーブルされたことを示すように変化する。操作者は、毛を整えたプードルの足のような形状をした、特定の膨らんだボトルにカーソルを向けると、このボトルが視覚的に強調され、次いで操作者はボタンを押下する。すると、システムは直接操作モードに入り、ＭＭＩＤの平行移動および回転が、レンダリングされている仮想空間において、選択されている物体の平行移動および回転を制御する。したがって、操作者がＭＭＩＤを彼女自身に向けて引き寄せると（直接、前方画面に垂直な幾何学的パターン (geometrics)に沿って）、ボトルは大きくなり、仮想カメラに向かって近づいてくる。同様に、ＭＭＩＤを左右に動かすと、レンダリングされているボトルの左右の移動（画面の横軸に沿った）に変換され、ＭＭＩＤを上下に平行移動させると、ボトルが垂直に平行移動する。操作者毎にカスタム化することができる倍率を用いて、適した倍率をこれらの平行移動に適用すると、ＭＭＩＤの僅かな動きによって、仮想物体の移動がもっと大きくなり、これによって、操作者の無理のない手の動きの範囲を超えることなく、グラフィカル／仮想環境の全範囲にアクセスすることが可能になる。
【００２６】
同様の拡大縮小機能を、ＭＭＩＤ方位の、レンダリングされたボトルの絶対回転位置へのマッピングにも適用する。本例では、操作者の好みによって４倍の目盛りが指示されるので、ＭＭＩＤがいずれかの軸を中心として９０度回転すると、仮想物体は３６０度１回転することになる（９０度に４を乗算すると、３６０度になる）。これによって、操作者が可能なあらゆる有利な位置からボトルを検査するときに、手首および腕を用いたＭＭＩＤの回転であっても、無理のない範囲内で行われることが確保される。したがって、例えば、彼女が、前の指示から上の指示に進むように、ＭＭＩＤを上に向けて回転させ、ローカルｘ軸を中心としてそれを９０度傾けると、ボトルは、画面のローカルｘ軸を中心として完全に１回転し、ＭＭＩＤが完全に上を向いた姿勢になった丁度そのときに、その最初の方位に戻ってくる。尚、ＭＭＩＤのボタンが押下されたままになっている限り、しかるべきモード固定効果が適用されることを注記しておく。操作者は、ＭＭＩＤの長軸に沿ってＭＭＩＤを１７０度時計回り方向に、ＭＭＩＤをモード「ｉ」に切り替えさせることなく、回転させることができる（仮想物体の５１０度の「画面内」回転を起こさせる）。
【００２７】
操作者がＭＭＩＤのボタンを放すと、レンダリングされているボトルは、直接操作から解放され、その瞬時的な位置および回転を保持する。ボタンが放されたときに、ＭＭＩＤが、「ｉｉｉ」以外のＭＭＩＤモードに通常対応する回転姿勢にある場合、モードの切り替えが実際に行われる前に、操作者には１から２秒の時間的ヒステリシスが付与される（視覚的に、画面上カーソルのグラフィカル状態の一部として示される）。操作者がＭＭＩＤを回転させて、モード「ｉｉｉ」に対応する姿勢に戻すと、直接３Ｄ操作モードが継続する。次いで、操作者は、膨らんだボトルの上にカーソルを重ね合わせて、再度ボタンを押下することによって、追加の位置および姿勢の調節を行うことができる。代わりに、異なるボトルにカーソルを向けると、その物体が操作者の操作対象となる。
【００２８】
最終的に、操作者は、モード「ｉｉ」と同一のドラッグ様式を用いて、ＭＭＩＤをモード「ｉｉ」に切り替え、これによって、ボトルの集合体を中央の画面に持って行き、カラー・パレットを右の画面から中央の画面に持って行く。彼女がボタンを放すと、パレットが拡大し、それ自体が膨らんだボトルの内側に位置する。次いで、彼女はＭＭＩＤを回転させてモード「ｉ」を選択し、カラー・パレットの選択インターフェースを操作する。彼女が望む深紅色の色相が選択されたなら、彼女はボタンを押下し、膨らんだボトルを形成する透明材料に重なり合うまで、色見本をパレットから下にそして左にドラッグする。彼女がボタンを放すと、その色が適用され、ボトルの材料は透明な深紅色を採用することになる。
【００２９】
未だモード「ｉ」にある間に、操作者はＭＭＩＤを直接膨らんだボトルに向けて指し示すと、ボトルはそれに応答して強調される。ボタンを押して、ＭＭＩＤを下に振って、ボトルの画像を、前方の画面から、彼女の直ぐ前にあるテーブルにドラッグする。操作者がボタンを放し、それによってボトルを放すと、ボトルはテーブル上の適所に置かれる。次いで、操作者は逆にモード「ｉｉ」に回転させ、他のペット・エネルギ飲料ボトルの集合体を指し示すように、ＭＭＩＤを前方に向ける。彼女は、ボタンを押下し、直ちにＭＭＩＤを左にさっと動かし、１秒未満の後にボタンを放す。ボトルの集合体は、左に向かって飛んで行き、 開始したときの位置および倍率に落ち着くまで、移動するに連れてサイズが縮小していく。次いで、操作者は、ペット介護用製品の異なる集合体を選択し、これらの品目から１つを選択し、調査し、修正するために、以前と同様にそれを中央の表示領域に持って行く。最後に、操作者は、選択した物体をテーブル・ディスプレイに追加する。操作者は、この管理(curatorial)プロセスを継続する。
【００３０】
ある時点において、操作者は、単純な外形エディタを用いて、ペット・マッサージ・オイルのキャニスタの物理的外形を変更することを選択する。この外形エディタも、前方三連画面における右側１／３上に表示されるツールの集合体から引き出される。このエディタの使用に伴う多くの操作についての説明は、ここでは、２つのＭＭＩＤの同時使用に関する説明を除いて、明確化のために省略する。この例では、操作者は、彼女の左手の中に持っている第２ＭＭＩＤを用いて、キャニスタ（本来は、矩形断面の単純な押し出し形状である）にねじれを加える。一方のＭＭＩＤを用いてキャニスタの外形の最上部を掴み、他方のＭＭＩＤを用いてキャニスタの最下部を掴む（ＭＭＩＤは双方ともモード「ｉｉｉ」になっている）。こうすることによって、最上部および最下部を別々に固定し、操作者は２つのＭＭＩＤを逆方向に回転させる。すると、キャニスタの主軸を中心とした線形なねじれが生ずる。操作者は、これらの外形変更を終了し、編集モジュールを右側のディスプレイに戻す。操作者は、変更したキャニスタをテーブルに追加し、種類が増えることになる。
【００３１】
最後に、テーブル上には１ダースの物体がレンダリングされ、前方の中央ディスプレイは再度空になる。操作者は、モード「ｉｉ」で、最後の集合体を左に（そして、カラー・パレットを右に）さっと動かす。次いで、彼女は、モード「ｉｉ」のまま、テーブルを指し示すようにＭＭＩＤを向けるが、彼女の照準は、そこの製品の完成図(rendering)を避ける。代わりに、操作者は右ボタンを押下し、表示されている物体の回りに湾曲した囲いを描くかのように、ＭＭＩＤで円形の軌道を描く。これに応答して、システムは、分類動作を、以前は別々であった製品の完成図に適用し、これらのレイアウトを編成し、それらの相対的なサイズを合わせる。最後に、操作者は、モード「ｉｉ」のドラッグを用いて、グラフィカル「配信チューブ」(delivery tube)の入力アパーチャを、右側のディスプレイから中央に柔軟に拡大する。次いで、操作者は、テーブルのカスタム化した製品集合体を取り上げ、それを中央の画面までドラッグし、それを配信チューブの口に入れる。チューブは、この集合体を消化し、再度右側のディスプレイに引っ込める。集合体は、操作者の同僚に配信される。この同僚は、操作者の作業を検討し、ペット・ショップ・アイル(pet shop aisle)のインタラクティブ可視化を構築したいと思っている。
【００３２】
代替実施形態のＭＭＩＤは、矩形のフォーム・ファクタを有する筐体を含む。この代替実施形態のポインタは、例えば、長さが５インチ、幅が１．５インチ、奥行きが１／２インチであるが、他の多くのサイズおよび／または構成も可能である。このＭＭＩＤは、以下で詳細に説明する、光学的に追跡されるタグを含む。このＭＭＩＤは、ホスト・システム環境において実行する処理ソフトウェアのようなエレクトロニクスを含まないが、実施形態はそのように限定されるのではない。
【００３３】
ユーザは、長軸がユーザ環境の中にある物体（仮想物体を含む）を指し示す役割を果たすように、ポインタを最も自然に保持する。ポインタは、長軸を中心に回転し、２つのモード方位（例えば、モードｉおよびｉｉ）間で遷移することができる。２つのモードしかないが、４つのモード遷移が可能である。何故なら、本システムは、遷移中の回転方向間で区別することができるからである。即ち、モードｉからモードｉｉへの遷移／時計回り、モードｉからモードｉｉへの遷移／反時計回り、モードｉｉからモードｉへの遷移／時計回り、モードｉｉからモードｉへの遷移／反時計回りを区別することができる。前述のＭＭＩＤと同様、これらの回転遷移を、入力処理ソフトウェアにおいて追跡し、ヒステリシス・ロッキングをかけることができる。
【００３４】
光学タグは、ポインタの「前面」部（例えば、前半分）の、例えば、ユーザの手から外側に広がるエリアに取り付けられているが、そのように限定されるのではない。ポインタの両側の各々に、２つのタグが取り付けられている。各側における前側のタグは、その位置に固定されている。各側における後ろ側のタグは、前側のタグの後ろにある距離（例えば、５センチメートル）のところに位置付けられており、同じ軸に沿って位置合わせされ、同じ軸にしたがって向きが決められている。この後ろ側のタグは、ばね装荷摺動メカニズムに固定されており（平行移動の方向が、ポインタの長軸と一直線状に合わされている）、ユーザの親指がこのメカニズム上で前方に押し進め、２つのタグの間の距離を約１センチメートルだけ短縮することができるようになっている。
【００３５】
入力処理ソフトウェアは、２つのタグ間の距離が５センチメートルあるときに、デバイスの論理ボタン状態が、状態（０）にあると解釈する。状態（１）への遷移を行うには、後ろ側のタグを前側のタグに近づけるように、ある距離だけ移動させる（例えば、前側のタグから４．２センチメートル以内に移動させる）。ボタン状態（１）に戻る遷移は、タグ間の距離が４．８センチメートルを超過したときにのみ、誘起される。これは、デバイスの主要（回転）モード遷移に適用されるヒステリシスと同様である。この場合も、ヒステリシス・バンドのサイズは、設定変更可能である。
【００３６】
光学的追跡ＭＭＩＤの実施形態では、光学追跡タグが用いられ、タグ上に、ある数のドットが整列されている。これらのドットは、例えば、逆反射器で覆われた小さな球体とすることができ、ＩＲ追跡システム（以下で説明する）が、タグが付けられた物体の位置および向きを判定することを可能にする。このタグが付けられた物体が入力ＭＭＩＤである場合、ユーザが、ボタンを押下するというような、非幾何学的、状態変化入力を与えたときを判定する手段を、追跡システムに設けることが望ましい場合もある。
【００３７】
種々の代替実施形態のＭＭＩＤは、赤外線（ＩＲ）発光ダイオード（ＬＥＤ）（ＩＲ  ＬＥＤ）を用いて、入力状態に基づいてある種の状態においてのみカメラには見ることができる追跡ドットを供給するように動作する。これらの代替実施形態のＭＭＩＤは、入力ボタンによって制御されるバッテリおよびＬＥＤ駆動回路を含む。図４ａおよび図４ｂは、一実施形態の下における、ＩＲ  ＬＥＤを有するＭＭＩＤの入力状態を示す。この実施形態のタグは、多数の逆反射ドット４０２（塗りつぶしたドットとして示されている）、ならびに２つのＩＲ  ＬＥＤ４０３および４０４を備えている。図４ａでは、タグは、ＭＭＩＤ上のボタンが押下されていない状態で示されており、ＩＲ  ＬＥＤ４０３は非照明状態になっており、一方ＩＲ  ＬＥＤ４０４は照明状態になっている。図４ｂでは、ユーザがＭＭＩＤ上のボタンを押下しており、それに応答して、ＩＲ  ＬＥＤ４０３が照明状態になり、一方ＩＲ  ＬＥＤ４０４は非照明状態になる。この光学処理システムは、２つのタグにおける相違を検出し、これら２つのタグの状態から、ユーザの意図を判断する。
【００３８】
図５ａおよび図５ｂは、他の実施形態の下における、ＩＲ  ＬＥＤを有するＭＭＩＤの入力状態を示す。この実施形態では、１つのＬＥＤだけが切り替えられる。つまり、図５ａを参照すると、ユーザがボタンを押下していないときには、ＬＥＤ５０４は非照明状態になる。図５ｂでは、ユーザがボタンを押下しており、このためＬＥＤ５０４は点灯している。
【００３９】
また、同様の手法を用いて追加の方法も可能にする。一代替実施形態では、ＬＥＤを用いて完了タグを形成し、このタグの有無がユーザの入力を与える。他の実施形態では、２つの同じタグを作成し、重ね合わせる（例えば、０．５ｃｍだけずらす）かまたは隣接させる。一方のタグまたは他方を点灯させ、そのタグの他のタグに関する位置を判定することにより、ユーザの入力状態を判定することができる。
【００４０】
他の代替実施形態のＭＭＩＤでは、タグ追跡の使用をＥＭＦ追跡と組み合わせることができる。これらの代替実施形態は、本明細書において記載するような種々のタイプのタグを用いて、ＥＭＦ追跡の態様をタグ追跡と組み合わせる。
【００４１】
他の代替実施形態のＭＭＩＤは、２つの赤外線光源と合わせて用いられるコントローラを含む。一方の赤外線光源はユーザの前に配置され、もう１つの赤外線光源はユーザの後ろに位置付けられる。これら２つの光源は、各々、３つの別個の赤外線発光体を有し、各光源の発光体は異なるパターンで構成されている。この実施形態のＭＭＩＤは、以下で説明するように、慣性追跡を利用し、２つのモードを含み、多数の機械的入力ボタンを含む。
【００４２】
この実施形態のＭＭＩＤは、NintendoのWii（登録商標）のリモコン・デバイスの変更と考えてもよく、２つのモード方位をサポートし、コントローラのその環境に対する方向方位(directional orientation)によってモードが決定される。Wii（登録商標）のコントローラは、NintendoのWii（登録商標）プラットフォーム上でビデオ・ゲームをプレーするために用いられる小さなデバイスであり、赤外線光源が付帯する。このコントローラは、１組の低精度加速度計を用いて、空間におけるその動きを慣性的に追跡する。加速度計は、数値積分の間に蓄積する誤差のために、数十分の１秒よりも長い間正しい位置および方位データを供給できるほど精度が高くないので、光学追跡システムも（光源コンポーネントと共に）用いられる。Wii（登録商標）のコントローラの光学追跡システムは、したがって、二次元画像平面において４つの明るい赤外線光源を突き止めることができる、前面を向いた内部赤外線カメラも備えている。したがって、このカメラは被追跡デバイスに埋め込まれ、光学的に突き止められる物体は、固定位置の環境指示対象となる。環境において既知の赤外線光源を知覚し、そのサイズおよび位置を測定することによって、コントローラが指し示している方向を判定し、これらの光源からのコントローラの距離を三角法によって測定することができる。この赤外線追跡技術は、本明細書において記載する追跡技術の逆と見なすことができる。何故なら、本明細書における実施形態の赤外線追跡技術は、環境内に置かれたカメラを用いて、デバイス、表面、手袋、およびその他の物体上に配された点を光学的に突き止めるからである。
【００４３】
NintendoのWii（登録商標）コンソールによる典型的な使用では、コントローラは常に表示画面を指し示している。赤外線光源が、表示画面の上または下に配置されており、画面に対する方位をコントローラに供給する。対照的に、一実施形態のコントローラは、２つの赤外線光源と合わせて用いられ、１つはユーザの前に位置付けられ、１つはユーザの後ろに位置付けられる。これら２つの光源は、各々、３つの別個の赤外線発光体を有し、各光源の発光体は異なるパターンで構成されている。
【００４４】
一実施形態のコントローラは、Bluetooth無線によって、ホスト・コンピュータ上で実行している入力処理ソフトウェアまたはコンポーネントと通信する。入力処理ソフトウェアは、どの発光体パターンが検出されたのか識別し、したがって、コントローラが前方を指しているのか、または後方を指しているのか識別する。この前方／後方判定から、２つのモード方位が得られる。モード状態（ｉ）では、コントローラが前方に向けられている。モード状態（ｉｉ）では、コントローラは後方に向けられている。各場合において、ユーザは論理的に前方を指し示している。ユーザは、コントローラを「前後」にひっくり返すことによって、モードを制御する。これは、モード制御がデバイスの長軸「回転」である、先に説明した実施形態とは対照的である。一実施形態のコントローラは、埋め込みスピーカを含むことができ、音響出力、様々な光、および振動（または「低い連続音」）出力を供給することができる。
【００４５】
本明細書において説明した実施形態には、多数の変更が、この説明の下で可能である。例えば、一実施形態のコントローラは、２つのカメラを、デバイスの各端部に１つずつ有することによって、２つの光源の必要性を回避することもできる。光源は、空間パターンの代わりに、タイミングによって区別することができる。
空間動作環境（ＳＯＥ）
本明細書では、空間動作環境（ＳＯＥ）のコンテキストで、空間連続体入力システムの実施形態について説明する。一例として、図６は、一実施形態の下における空間動作環境（ＳＯＥ）のブロック図である。ユーザは、彼の手１０１および１０２を、カメラ１０４Ａ〜１０４Ｄのアレイの視野１５０に置く。これらのカメラは、指ならびに手１０１および１０２の位置、方位、および移動を検出し、出力信号をプリプロセッサ１０５に発生する。プリプロセッサ１０５は、カメラ出力をジェスチャ信号に変換し、このジェスチャ信号をシステムのコンピュータ演算装置１０７に供給する。コンピュータ１０７は、入力情報を用いて、１つ以上の画面上カーソルを制御するコマンドを発生し、ビデオ出力をディスプレイ１０３に供給する。
【００４６】
このシステムでは、一人のユーザの手を入力として示すが、ＳＯＥ１００は、多数のユーザを用いても実施することができる。加えて、手の代わりにまたは手に加えて、本システムはユーザの身体の任意の１つ以上の部分を追跡することができ、その部分とは、頭部、足、脚部、腕、肘、膝等を含む。
【００４７】
図示の実施形態では、４台のカメラまたはセンサを用いて、視野１５０内においてユーザの手１０１および１０２の位置、方位、および移動を検出する。ＳＯＥの範囲や主旨から逸脱することなく、ＳＯＥはこれらよりも多いカメラ（例えば、６台のカメラ、８台のカメラ等）または少ないカメラ（例えば、２台のカメラ）とでも用いることができることは言うまでもない。加えて、実施形態例では、カメラまたはセンサは対称的に配置されているが、ＳＯＥ１００にはこのような対称性の要件はない。ユーザの手の位置、方位、および移動を許容するのであれば、カメラまたはセンサは、いずれの数および位置付けでも、ＳＯＥ１００において用いることができる。
【００４８】
一実施形態では、用いられるカメラは、グレー・スケール画像を取り込むことができるモーション・キャプチャ・カメラである。一実施形態では、用いられるカメラは、Vicon MX40カメラのような、Vicon社が製造するカメラである。このカメラは、カメラ内部処理を含み、毎秒１０００フレームの画像取り込みが可能である。モーション・キャプチャ・カメラは、マーカを検出し位置を突き止めることができる。
【００４９】
記載している実施形態では、カメラは光学的検出に用いられるセンサである。他の実施形態では、カメラまたは他の検出器は、電磁、静磁気、ＲＦＩＤ、またはその他の任意の適した種類の検出に用いることができる。
【００５０】
プリプロセッサ１０５は、三次元空間点再現および骨格点ラベリングを発生するために用いられる。ジェスチャ変換器１０６は、３Ｄ空間情報およびマーカ・モーション情報をコマンド言語に変換するために用いられる。コマンド言語は、コンピュータ・プロセッサによって解釈され、ディスプレイ上におけるカーソルの位置、形状、および動作(action)を更新することができる。ＳＯＥの代替実施形態では、プリプロセッサ１０５およびジェスチャ変換器１０６を組み合わせて１つのデバイスにすることもできる。
【００５１】
コンピュータ１０７は、Apple社、Dell社、または任意のその他の適した製造業者によって製造されるような、任意の汎用コンピュータとすればよい。コンピュータ１０７は、アプリケーションを実行し、表示出力を供給する。カーソル情報は、他の場合にはマウスまたはその他の先行技術の入力デバイスから得られるが、ここではジェスチャ・システムから得られる。
マーカ・タグ
ＳＯＥまたは一実施形態は、ユーザの１つ以上の指においてマーカ・タグの使用を想定し、本システムがユーザの手を突き止め、ユーザが左または右のどちらの手を見ているのか特定し、どの指が見えるか特定することができるようにする。これによって、本システムは、ユーザの手の位置、方位、および移動を検出することが可能になる。この情報によって、本システムは多数のジェスチャを認識することが可能となり、これらのジェスチャは、ユーザによってコマンドとして用いることが可能になる。
【００５２】
一実施形態では、マーカ・タグは基板（本実施形態では、人の手の上の種々の位置に装着するのに適している）と、基板の表面上に一意識別パターンで配列された離散マーカとを備えている物理的タグである。
【００５３】
マーカおよび連携する外部検知システムは、それらの三空間位置の高精度、正確、ならびに迅速および連続的捕獲が可能である任意のドメイン（光学、電磁、静磁気ドメイン等）において動作することができる。マーカ自体は、能動的（例えば、構造化した電磁パルスを放出することによって）、または受動的（例えば、本実施形態におけるように光学的に逆反射型とすることによって）のいずれでも動作することができる。
【００５４】
各捕獲フレームにおいて、検出システムは、器具を備え付けた作業空間立体（カメラまたはその他の検出器の可視範囲内）において現在タグからの全てのマーカを含む三空間位置を再現した、粒団状「クラウド」を受ける。各タグ上のマーカは、十分に多数であり、一意のパターンに配列されているので、検出システムは以下のタスクを行うことができる。（１）再現した各マーカ位置を、１つのタグを形成する点の１つのみの副集合体に割り当てるセグメント化、（２）セグメント化した点の各副集合体を特定のタグとして識別するラベリング、（３）識別したタグの三空間位置を再現する位置突き止め、および（４）識別したタグの三空間方位を再現する方位決定(orientation)。タスク（１）および（２）は、マーカ・パターンの具体的な本質によって可能となる。これについては、図７の一実施形態において以下で説明し例示する。
【００５５】
一実施形態では、タグ上のマーカは、規則的な格子位置の部分集合に装着されている。この基礎となる格子は、本実施形態のように、従来からのデカルト型であってもよいし、代わりに、他の何らかの規則的平面碁盤目状（例えば、三角形／六角形タイリング配列）であってもよい。格子のスケールおよび空間は、隣接する格子位置が混乱する可能性がないように、マーカ検知システムの既知の空間分解能に関して確定する。全てのタグについてのマーカ・パターンの選択は、次の制約を満たさなければならない。タグのパターンは、回転、平行移動、または鏡像のいずれの組み合わせによる他のいずれのタグ・パターンとも一致してはならない。更に、ある指定した数のコンポーネント・マーカの損失（または遮蔽(occlusion)が許容されるように、多数のマーカおよびその配列を選択するとよい。いずれの任意の変換後であっても、損なったモジュール(compromised module)を他のいずれとも混同させることが起こりそうにないようにしなければならない。
【００５６】
ここで図７を参照すると、多数のタグ２０１Ａ〜２０１Ｅ（左手）および２０２Ａ〜２０２Ｅ（右手）が示されている。各タグは、矩形であり、本実施形態では、５×７の格子アレイで構成されている。矩形形状が選択されたのは、タグの方位を決定し易いため、そして鏡面複製(mirror duplicate)の可能性を低減するためである。図示の実施形態では、各手の指毎にタグがある。実施形態によっては、手毎に１つ、２つ、３つ、または４つのタグを用いることが適当である場合もある。各タグは、異なるグレー・スケールまたは色調の境界を有する。この境界の内部には、３×５格子アレイがある。マーカ（図７の黒いドットで表す）は、情報を提供するために、この格子のある点に配置されている。
【００５７】
各パターンを「共通」および「一意」のサブパターンにセグメント化することにより、タグのマーカ・パターンにおいて、認定情報(qualifying information)をエンコードすることができる。例えば、本実施形態は、２つの可能な「境界パターン」、矩形境界線(boundary)を中心としたマーカの分布を指定する。つまり、タグの「ファミリー」を確立する。このため、左手を意図したタグは、タグ２０１Ａ〜２０１Ｅにおいて示されるような同じ境界パターンを全て用いることができ、一方右手の指に取り付けられているタグには、タグ２０２Ａ〜２０２Ｅに示すように異なるパターンを割り当てることができる。タグの全ての方位において、左パターンを右パターンから区別できるように、このサブパターンを選択する。図示した例では、左手パターンは、各角に１つのマーカ、そして角格子位置から２番目に１つのマーカを含む。右手パターンは、２つの角のみにマーカを有し、角でない格子位置に２つのマーカを有する。このパターンを検査することによって、４つのマーカの内いずれか３つが見ることができる限り、左手パターンを右手パターンから明確に区別することができることが明らかとなった。一実施形態では、境界の色または色調も、利き手(handedness)のインディケータとして用いることができる。
【００５８】
各タグは、勿論、一意の内部パターンを採用し続けなければならず、マーカはそのファミリーの共通境界以内に分散されている。図示の実施形態では、内部格子アレイにおける２つのマーカが、１０本の指の各々を一意に特定するのに十分であり、指の回転または方位による複製が生じないことが分かる。マーカの１つが遮蔽されたとしても、タグのパターンおよび利き手の組み合わせから、一意の識別子が得られる。
【００５９】
本実施形態では、格子の位置は、各逆反射マーカをその意図する位置に装着する（手作業の）タスクに対する補助として、視覚的に剛性基板上に存在する。これらの格子および意図するマーカ位置は、カラー・インクジェット・プリンタによって基板上にそっくりそのまま印刷される。ここでは、基板はシート状の（初期状態では）可撓性の「収縮フィルム」である。各モジュールがこのシートから切り離され、炉で焼成される。この熱処理の間に、各モジュールには正確で繰り返し可能な収縮が起こる。この手順に続く短い間隔において、冷却するタグには、例えば、指の長手方向曲線にしたがって、僅かに形状を付けることができる。その後、基板は適度に剛性となり、指示された格子点にマーカを装着することができる。
【００６０】
一実施形態では、マーカ自体は、接着剤または何らかのその他のしかるべき手段によって基板に装着された小さな反射球体のように、三次元である。このマーカが三次元であることは、二次元マーカ上における検出および位置突き止めに役立つことができる。しかしながら、いずれも、本明細書に記載するＳＯＥの主旨や範囲から逸脱することなく用いることができる。
【００６１】
現在では、タグはベルクロ(Velcro)またはその他のしかるべき手段によって、操作者が身に付けている手袋に装着されるか、あるいは、柔らかな両面テープを用いて操作者の指に直接装着される。第３実施形態では、剛性基板を全くなしで済ませ、操作者の指および手に直接個々のマーカを装着するまたは「描く」することができる。
ジェスチャ・ボキャブラリ
ＳＯＥは、手のポーズ、方位、手の組み合わせ、および方位の配合(orientation blends)で構成されるジェスチャ・ボキャブラリ(gesture vocabulary)を想定する。ＳＯＥのジェスチャ・ボキャブラリにおいてポーズおよびジェスチャを立案および伝達するために、表記言語(notation language)も実施する。ジェスチャ・ボキャブラリとは、力学的連結の瞬時的な「ポーズ状態」を簡潔な文字形態で表すシステムである。対象となる連結は、生物（例えば、人の手、または人の身体全体、あるいはバッタの足、あるいはキツネザルの関節脊柱）であってもよく、あるいは代わりに非生物であってもよい（例えば、ロボットのアーム）。いずれの場合でも、この連結は、単純（脊柱）でもまたは分岐（手）でもよい。ＳＯＥのジェスチャ・ボキャブラリ・システムは、いずれの特定的な連結についても、一定長のストリングを確立する。こうして、ストリングの「キャラクタ位置」を占める特定のＡＳＣＩＩキャラクタの集合体が、連結の瞬時的状態、即ち、「ポーズ」の一意の記述となる。
手のポーズ
図８は、ＳＯＥを用いたジェスチャ・ボキャブラリの一実施形態における手のポーズを示す。ＳＯＥは、１本の手における５本の指の各々を用いることを仮定する。これらの指には、ｐ−小指、ｒ−薬指、ｍ−中指、ｉ−人差し指、およびｔ−親指とコーディングする。指および親指の多数のポーズを、一実施形態のジェスチャ・ボキャブラリにおいて定義し、図８に示す。ジェスチャ・ボキャブラリ・ストリングは、連結（この場合指）の表現可能な自由度毎に１つのキャラクタ位置を確定する。更に、このような各自由度は、離散化（または「量子化」）されていることが分かるので、その最大運動範囲は、当該ストリング位置における有限数の標準的ＡＳＣＩＩキャラクタの内の１つの割り当てによって表現することができる。これらの自由度は、本体特定の原点および座標系（手の裏、バッタの身体の中心、ロボット・アームの底辺等）に関して表現される。したがって、連結の位置および方位を「全体的に」更に大域的な座標系において表現するために、少数の追加のジェスチャ・ボキャブラリ・キャラクタ位置が用いられる。
【００６２】
引き続き図８を参照すると、多数のポーズが定義されており、ＡＳＣＩＩキャラクタを用いて識別されている。これらのポーズの一部は、親指およびそれ以外の指の間で分けられている。この実施形態におけるＳＯＥは、ＡＳＣＩＩキャラクタ自体がポーズを示唆するようなコーディングを用いる。しかしながら、示唆的であろうがなかろうが、ポーズを表すには、いずれのキャラクタでも用いることができる。加えて、本発明では、表記ストリングにＡＳＣＩＩキャラクタを用いる必要性はない。本発明の範囲や主旨から逸脱することなく、適したシンボル、数値、またはその他の表現であればいずれでも用いることができる。例えば、望ましければ、表記は指毎に２ビットを用いることもでき、あるいは所望に応じて、他の何らかの数のビットを用いることもできる。
【００６３】
巻き込んだ指(curled finger)は、キャラクタ「＾」によって表され、一方巻き込んだ親指は「＞」で表される。真っ直ぐな指または上を向いた親指は、「ｌ」によって示され、角度をなす場合は「＼」または「／」で示される。「−」は、真っ直ぐに横を向いた親指を表し、「ｘ」は平面内に向いた親指を表す。
【００６４】
これら個々の指および親指の記述を用いると、確固不動の数(robust number)の手のポーズを、本発明の方式を用いて、定義し記述することができる。各ポーズは、５つのキャラクタによって表され、その順序は、前述したように、ｐ−ｒ−ｍ−ｉ−ｔとなる。手を平らにして地面に平行に保持する場合、「ｌｌｌｌｌ」で表される。握り拳は「＾＾＾＾＞」によって表される。「ＯＫ」の合図は、「ｌｌｌ＾＞」によって表される。
【００６５】
キャラクタ・ストリングは、示唆的キャラクタを用いる場合、単純な「人間可読性」(human readabiity)の機会を与える。各自由度を記述する１組の可能なキャラクタは、総じて、素早い認識および明白な類似性に着目して選択することができる。例えば、垂直線（「｜」）は、連結エレメントが「直線状」であることを意味するように思われ、エル（「Ｌ」）は、９０度の屈曲を意味することもでき、曲折アクセント記号（「＾」）は、鋭角の屈曲を示すことができる。先に注記したように、所望に応じて、いずれのキャラクタまたはコーディングでも用いることができる。
【００６６】
本明細書に記載するようなジェスチャ・ボキャブラリ・ストリングを採用するシステムはいずれも、ストリング比較の高い計算効率の恩恵を享受する。指定されたいずれのポーズについても、その識別または検索は、文字どおり、所望のポーズ・ストリングと瞬時的な実際のストリングとの間における「ストリングの比較」（例えば、ＵＮＩＸの「stremp()」関数）となる。更に、「ワイルドカード・キャラクタ」の使用によって、プログラマやシステム設計者には、もっと見慣れた効率(efficiency)および有効性(efficacy)が得られる。自由度の瞬時状態が一致とは関わりがない場合、疑問符（「？」）として指定することができ、追加のワイルドカードの意味を割り当てることができる。
方位
指および親指のポーズに加えて、手の方位が情報を表すことができる。大域空間(global-space)方位を記述するキャラクタも、透過的に選択することができる。キャラクタ「＜」、「＞」、「＾」、および「ｖ」は、方位キャラクタ位置において遭遇した場合、左、右、上、および下の考えを示すために用いることができる。図９は、手方位記述子、ならびにポーズおよび方位をコード化する例を示す。一実施形態では、２つのキャラクタ位置が、最初に手の平の方向を指定し、次いで指の方向を指定する（指が真っ直ぐになっている場合、指の実際の屈曲には関係なく）。これら２つの位置に可能なキャラクタは、方位の「本体中心」観念(body-centric notion)を表現し、「−」、「＋」、「ｘ」、「＊」、「＾」、および「ｖ」は、中間、横方向、前方（順方向、本体から離れる側）、後方（逆方向、本体から離れる側）、頭上（上方）、および後端（下方）を記述する。
【００６７】
本発明の表記方式および実施形態では、キャラクタを示す５本指のポーズに続いて、コロン、次いで完全なコマンド・ポーズを定義するために２つの方位キャラクタがある。一実施形態では、開始位置は「ｘｙｚ」ポーズと呼ばれ、親指は真っ直ぐ上を指し示し、人差し指は前方を指し示し、中指は人差し指に対して垂直であり、右手によってこのポーズが作られる場合、左を指し示す。これは、ストリング「＾＾ｘｌ−：−ｘ」によって表される。
【００６８】
「ＸＹＺ−手」は、視覚的に提示された三次元構造の最大６自由度のナビゲーションを可能にするために、人の手の幾何学的形状を利用する技法である。この技法は操作者の手の全体的(bulk)平行移動および回転のみに依存し、したがってその指は原則として、いずれの所望のポーズに保持することができるが、本実施形態は、人差し指が本体から離れる方向を指し、親指が天井を指し、中指が左−右を指す、静止構成(static configuration)を優先する。つまり、これら３本の指は、三空間座標系の３本の相互に直交する軸、つまり、「ＸＹＺ−手」を記述する（大まかであるが、明白な歴然とした趣旨がある）。
【００６９】
次いで、ＸＹＺ−手ナビゲーションは、操作者の身体の前において所定の「中立位置」に保持された、前述のようなポーズの手、指に進む。三空間物体（またはカメラ）の三平行移動および三回転自由度へのアクセス(access)は以下の自然な方法で行われる。手の右−左移動（身体の自然座標系に対して）により、計算的コンテキストのｘ−軸に沿った移動が生じ、手の上下移動により、被制御コンテキストのｙ−軸に沿った移動が生じ、前後の手の移動（操作者の身体に向かう方向／から離れる方向）によって、このコンテキストにおけるｚ−軸運動が生ずる。同様に、人差し指を中心とする操作者の手の回転により、計算的コンテキストの方位の「転動」(roll)変化が生じ、操作者の手の中指および親指をそれぞれ中心とする回転によって、「縦方向」および「横方向」変化が類似的に生ずる。
【００７０】
尚、「計算的コンテキスト」は、本明細書では、ＸＹＺ−手方法によって制御される全体に言及するために用いられており、合成三空間物体またはカメラのいずれかを示唆するように思われるが、この技法は実世界物体の種々の自由度を制御するため、例えば、しかるべき回転アクチュエータを装備したビデオまたはモーション・ピクチャ・カメラのパン／ティルト／ロール制御にも等しく有用であることは言うまでもないことを注記しておく。更に、ＸＹＺ−手の姿勢によって得られる物理的自由度は、仮想ドメインであっても、ありのままにマッピングされ難い場合もある。本実施形態では、ＸＹＺ−手は、大きな全景的表示画像に対してナビゲーション的アクセスを提供するためにも用いられるので、操作者の手の左−右および上−下の運動が、画像を中心とする予期された左−右または上−下「パンニング」に繋がるが、操作者の手の前−後運動は「ズーミング」制御にマッピングする。
【００７１】
あらゆる場合において、手の運動と誘発される計算的平行移動／回転との間の結合は、直接的（即ち、操作者の手の位置的または回転オフセットが、一対一で、何らかの線形または非線形関数によって、計算的コンテキストにおける物体またはカメラの位置的または回転オフセットにマッピングする）、または間接的（即ち、操作者の手の位置的または回転オフセットが、一対一で、何らかの線形または非線形関数によって、計算的コンテキストにおける位置／方位の第１導関数またはより上位の導関数にマッピングし、実行中の積分が、計算的コンテキストの実際のゼロ次位置／方位における被静的変化を生み出す）のいずれかであることができる。この後者の制御手段は、自動車の「アクセル・ペダル」の使用に類似しており、ペダルの一定のオフセットによって、ほぼ一定の車速が得られる。
【００７２】
実世界のＸＹＺ−手の局所的六自由度座標原点としての役割を果たす「中立位置」は、（１）空間における絶対位置および方位として（例えば、密閉室に対する）、（２）操作者の全体的な位置および「方向」(heading)には関係なく、操作者自身に対する固定位置および方位（例えば、身体の前方８インチ、顎の下１０インチ、横方向に肩の平面と一直線状）として、あるいは（３）操作者の故意の二次的行動によって、対話的に（例えば、操作者の「別の」手によって演じられるジェスチャ・コマンドを用いて。前記コマンドは、ＸＹＺ−手の現在の位置および方位が今後平行移動および回転の原点として用いられるべきことを示す）確立することができる。
【００７３】
更に、ＸＹＺ−手の中立位置の周囲に「抑止」(detent)領域（または「デッド・ゾーン」）を設けて、この立体空間における移動が被制御コンテキストにおける移動にマッピングしないようにすると便利である。
【００７４】
他のポーズも含むことができる。
【００７５】
[lllll:vx]は、手を平らにして（親指が他の指と平行）、掌が下を向き、指が前方に突き出している。
【００７６】
[lllll:x^]は、手を平らにして、掌が前を向き、指が天井を向いている。
【００７７】
[lllll:-x]は、手を平らにして、掌が身体の中心に向いており（左手の場合は右、右手の場合は左）、指が前方に突き出している。
【００７８】
[^^^^-:-x]は、手を１つにして親指を合わしている（親指は天井を向いている）。
【００７９】
[^^^|-:-x]は、銃を前方に構える真似である。
２つの手の組み合わせ
一実施形態のＳＯＥは、１つの手のコマンドおよびポーズだけでなく、２つの手によるコマンドおよびポーズも想定している。図１０は、一実施形態の下における、ＳＯＥのジェスチャ・ボキャブラリにおける二手組み合わせおよ対応する表記の例を示す。第１の例の表記を検討すると、「完全停止」とは２つの拳を閉じていることを示す。「スナップショット」の例では、各手の親指および人差し指が広げられ、親指が互いに向き合って、ゴール・ポストの形状の枠を定めている。「舵およびスロットル開始位置」は、指および親指が上を向いており、掌が画面に面している。
方位の配合
図１１は、一実施形態の下における方位配合の一例を示す。図示の例では、配合は、指ポーズ・ストリングの後ろにある括弧の中に囲まれた方位表記の対によって表されている。例えば、第１コマンドは、全て真っ直ぐに伸ばした指の位置を示す。方位コマンドの第１対により、掌をディスプレイに向かって平らにして、第２対によって、手を画面に向けて４５度縦に回転させる。この例では、配合の対を示したが、ＳＯＥではいずれの数の配合でも考えられる。
コマンド例
図１３−１および図１３−２は、ＳＯＥと共に用いることができる、多数の可能なコマンドを示す。本明細書における論述の一部は、ディスプレイ上におけるカーソルの制御についてであったが、ＳＯＥはその行動に限定されるのではない。実際に、ＳＯＥは、画面上における全てのデータおよびデータの一部、更にはディスプレイの状態を操作する際に、様々に応用することができる。例えば、ビデオ・メディアの再生中に、これらのコマンドをビデオ制御に代わって用いることができる。これらのコマンドは、一時停止、早送り、巻き戻しなどを行うために用いることができる。加えて、画像のズーム・インおよびズーム・アウトを行うため、画像の方位を変化させるため、いずれかの方向にパンニングするため等に実施することができる。また、ＳＯＥは、開く、閉じる、保存する等のような、メニュー・コマンドの代わりに用いることもできる。言い換えると、想像することができるいずれのコマンドまたは活動でも、手のジェスチャによって実施することができる。
動作
図１２は、一実施形態におけるＳＯＥの動作を示す流れ図である。ステップ７０１において、検出システムはマーカおよびタグを検出する。判断ブロック７０２において、タグおよびマーカが検出されたか否か判断を行う。検出されていない場合、システムはステップ７０１に戻る。ステップ７０２においてタグおよびマーカが検出された場合、システムはステップ７０３に進む。ステップ７０３において、システムは、検出されたタグおよびマーカから、手、指、およびポーズを識別する。ステップ７０４において、システムは、ポーズの方位を識別する。ステップ７０５において、システムは、検出された１つまたは双方の手の三次元空間位置を識別する。（ステップ７０３、７０４、および７０５の内いずれでも、または全てを１つの動作として組み合わせてもよいことに注意されたい）。
【００８０】
ステップ７０６において、以上の情報を、前述したジェスチャ表記に変換する。判断ブロック７０７において、ポーズが有効か否か判断を行う。これは、発生した表記ストリングを用いた単純なストリング比較によって行うことができる。ポーズが有効でない場合、システムはステップ７０１に戻る。ポーズが有効である場合、ステップ７０８において、システムは表記および位置情報をコンピュータに送る。ステップ７０９において、コンピュータは、ジェスチャに応答して、取るべきしかるべき行為を決定し、ステップ７１０においてそれに応じてディスプレイを更新する。
【００８１】
ＳＯＥの一実施形態では、動作７０１〜７０５をカメラ内蔵プロセッサによって実行する。他の実施形態では、望ましければ、この処理をシステム・コンピュータによって実行することもできる。
解析および変換
本システムは、基礎となるシステムによって再現された低レベルのジェスチャの流れを「解析」および「変換」し、これら解析し変換したジェスチャを、コマンドまたはイベント・データの流れに変換することができる。このデータは、広範囲のコンピュータ・アプリケーションおよびシステムを制御するために用いることができる。これらの技法およびアルゴリズムは、これらの技法を実現するエンジン、およびエンジンの能力を利用するコンピュータ・アプリケーションを構築するプラットフォームの双方を提供するコンピュータ・コードから成るシステムにおいて具体化することができる。
【００８２】
一実施形態は、コンピュータ・インターフェースにおいて、人の手の豊富なジェスチャの使用を可能にすることを中心に据えるが、他の身体部分によって行われるジェスチャ（限定ではなく、腕、胴体、脚部、および頭部を含む）や、手ではない種々の器具によって行われるジェスチャを認識することもできる。これらの器具は、静止および連結式(articulating)双方であり、限定ではないが、キャリパ、コンパス、可撓性曲線近似器(curve approximator)、および種々の形状のポインティング・デバイスが含まれる。マーカおよびタグは、操作者によって所望に応じて携行および使用することができる品目および器具に被着することができる。
【００８３】
本明細書において記載するシステムは、認識し反応することができるジェスチャの範囲が豊富なジェスチャ・システムを構築することを可能にしつつ、同時にアプリケーションへの容易な統合にも備えた、多数の改革を組み込む。
【００８４】
一実施形態では、ジェスチャ解析および変換システムは、以下のものを備えている。
【００８５】
１）様々な異なる集計レベルにおいて、ジェスチャを指定する（コンピュータ・プログラムにおいて用いるためのエンコード）緻密かつ効率的な方法。
【００８６】
ａ．１本の手の「ポーズ」（手の部分の外形および互いに対する方位）。三次元空間における１つの手の方位および位置。
【００８７】
ｂ．２つの手の組み合わせ。いずれかの手がポーズ、位置、または双方を考慮に入れる。
【００８８】
ｃ．多数の人物の組み合わせ。本システムは２つよりも多い手を追跡することができ、したがって、一人よりも多い事物が協同して（ゲーム・アプリケーションの場合には競合して）目標システムを制御することができる。
【００８９】
ｄ．ポーズが連続して組み合わされる順次ジェスチャ。これらを「動画」ジェスチャと呼ぶ。
【００９０】
ｅ．操作者が空間内の形状を追跡する「書記素」ジェスチャ(grapheme gesture)。
【００９１】
２）所与のアプリケーション・コンテキストに関連があるものの上で、各カテゴリから特定のジェスチャを登録するプログラム技法。
【００９２】
３）登録されているジェスチャを識別することができ、これらのジェスチャをカプセル化するイベントを関連するアプリケーション・コンテキストに配信することができるように、ジェスチャの流れを解析するアルゴリズム。
【００９３】
指定システム（１）は、構成エレメント（１ａ）から（１ｆ）と共に、本明細書に記載するシステムのジェスチャ解析および変換能力を利用するための基礎を提供する。
【００９４】
１つの手の「ポーズ」は、
ｉ）手の指と甲との間の相対的方位、
ｉｉ）少数の離散状態への量子化、
のストリングとして表される。
【００９５】
相対的接合方位を用いることにより、本明細書に記載するシステムは、手のサイズおよび外形形状が異なることに伴う問題を回避することができる。このシステムでは、「操作者較正」を必要としない。加えて、ポーズをストリングまたは相対的方位の集合体として指定することにより、ポーズ表現を更に別のフィルタおよび指定と組み合わせることによって、一層複雑なジェスチャ指定(specification)を容易に作成することが可能になる。
【００９６】
ポーズ指定に少数の離散状態を用いることによって、ポーズを簡潔に指定することができ、更に種々の基礎となる追跡技術（例えば、カメラを用いた受動的光学追跡、点灯ドットおよびカメラを用いた能動的光学追跡、電磁場追跡等）を用いて、精度の高いポーズ認識を確実に行うことができる。
【００９７】
各カテゴリ（１ａ）から（１ｆ）におけるジェスチャは、部分的に（または最小限に）指定することができるので、重大でないデータは無視される。例えば、２本の指の位置が明確であり他の指の位置は重要でないジェスチャは、２本の関連のある指の動作位置が与えられ、同じストリング内において、「ワイルド・カード」または包括的「無視」インディケータが他の指に対して掲示されている１つの指定によって表すことができる。
【００９８】
本明細書において記載するジェスチャ認識のための改革の全ては、限定ではなく、多層指定技法、相対的方位の使用、データの量子化、および各レベルにおける部分的または最小指定の許容を含み、手のジェスチャの指定を超えて、他の身体部分や「製造した」器具および物体を用いたジェスチャの指定に一般化する。
【００９９】
「ジェスチャを登録する」プログラム技法（２）は、どのジェスチャをエンジンが実行システムの他の部分に入手可能にすべきか定めることをプログラマに可能にする、定められた１組のアプリケーション・プログラミング・インターフェース・コールによって構成されている。
【０１００】
これらのＡＰＩルーチンは、アプリケーション設定時に用いることができ、実行アプリケーションの寿命の間用いることができる静止インターフェース定義を作成する。また、これらは、実行中にも用いることができ、インターフェース特性を動作中に変更することができる。このリアル・タイムでのインターフェース変更により、
ｉ）複雑なコンテキストおよび条件付き制御状態を構築すること、
ｉｉ）動的にヒステリシスを制御環境に追加すること、および
ｉｉｉ）ユーザが実行システム自体のインターフェース・ボキャブラリを変更または拡張することができるアプリケーションを作成すること、
が可能となる。
【０１０１】
ジェスチャの流れを解析するアルゴリズム（３）は、（１）におけるように指定され（２）におけるように登録されたジェスチャを、入来する低レベルのジェスチャ・データと比較する。登録されているジェスチャに対する一致が認識された場合、一致したジェスチャを表すイベント・データが積層され実行アプリケーションに配信される。
【０１０２】
このシステムの設計においては、効率的なリアル・タイムでの照合が望まれ、指定されたジェスチャは、できるだけ素早く処理される可能性のツリーとして扱われる。
【０１０３】
加えて、指定されたジェスチャを認識するために内部で使用されている原始的比較演算子は、アプリケーション・プログラマが用いるためにも露出されるので、アプリケーション・コンテキスト内部からでも、より多くの比較（例えば、複雑なジェスチャまたは複合ジェスチャにおける柔軟な状態の検査）を行うことができる。
【０１０４】
認識「ロッキング」セマンティクス(recognition locking semantics)は、本明細書に記載するシステムの改革の１つである。これらのセマンティクスは、登録ＡＰＩ（２）（および、より狭い範囲で、指定ボキャブラリ（１）内に埋め込まれる）によって暗示される(imply)。登録ＡＰＩコールは、
ｉ）「エントリ」状態通知部および「連続」状態通知部、ならびに
ｉｉ）ジェスチャ優先度指定部
を含む。
【０１０５】
ジェスチャが認識されている場合、その「連続」状態は、同じまたは低い優先度のジェスチャの全ての「エントリ」状態よりも優先される。このエントリ状態と連続状態との間の区別は、認められるシステム使用可能性に大きくプラスになる。
【０１０６】
本明細書において記載するシステムは、実世界のデータ・エラーおよび不確実性をものともせずに、ロバストな動作のためのアルゴリズムを含む。低レベル追跡システムからのデータは不完全である場合もある（光学追跡におけるマーカの遮蔽、ネットワーク・ドロップアウト、処理の遅れ等を含む、種々の理由による）。
【０１０７】
欠損データは、解析システムによって印が付けられ、その欠損データの量およびコンテキストに応じて、「最後に分かっていた」状態または「最もあり得る」状態のいずれかに組み込まれる。
【０１０８】
特定のジェスチャ・コンポーネント（例えば、特定の関節の方位）についてのデータが見つからないが、その特定のコンポーネントの「最後に分かっていた」状態を、物理的に可能であると分析することができる場合、本システムはこの最後に分かっていた状態をそのリアル・タイム照合において用いる。
【０１０９】
逆に、最後に分かっていた状態が、物理的に不可能であると分析された場合、本システムはそのコンポーネントにとって「最良のジェスチャ範囲」に後退し、この合成データをそのリアル・タイム照合において用いる。
【０１１０】
本明細書において記載する指定および解析システムは、「利き手不可知論」をサポートするように注意深く設計されているので、多数の手のジェスチャについて、いずれの手でもポーズの要件を満たすことができる。
データ空間のナビゲーション
一実施形態のＳＯＥは、グラフィック空間または他のデータ表現空間全域における線形推移または追跡運動を制御するために、「プッシュバック」(pushback)、即ち、人間の操作者の手の線形空間運動、または同質の次元活動の実行を可能にする。ＳＯＥ、およびそれによって確立される計算および認識の連携は、スケールのレベルをナビゲートする、主に線形な「深度次元」を横断する、あるいは、最も一般的には、量子化されたまたは「抑止された」(detented)パラメータ空間にアクセスするための、基本的な構造化された方法を提供する。また、ＳＯＥは、操作者が意図的に追加コンテキストを取得することができる有効な手段、空間的、概念的、または計算的のいずれであっても、近傍(vicinities)および近隣(neighborhoods)を理解するための素早い技法を提供する。
【０１１１】
ある種の実施形態では、プッシュバック技法は、従前の入力デバイス（例えば、マウス、トラックボール、一体化したスライダ、またはノブ）を用いることができ、または操作者自身の身体(person)から外部のタグ付きオブジェクトまたは追跡対象オブジェクトに依存することができる（例えば、器具を取り付けられた連鎖のリンク(instrumented kinematic linkages)、静磁気的に追跡される「入力レンガ」(input bricks)）。別の代替実施形態では、プッシュバックの実施は、制御システム全体として十分であればよい。
【０１１２】
一実施形態のＳＯＥは、それよりも大きな空間相互作用システムの一部であり、その中に統合されている。このシステムは、コンピュータの制御のための慣習的なマウス主体グラフィック・ユーザ・インターフェース（「ＷＩＭＰ」ＵＩ）方法に取って代わり、代わりに、（ａ）１つ以上のタイプの物体（例えば、人間の手、人間の手の上にある物体、静止物体等）を追跡することができる物理的センサ、（ｂ）検知された手の徐々に進展する位置、方位、およびポーズを分析して、一連のジェスチャ・イベントにする手段、（ｃ）このような空間的イベントおよびジェスチャ・イベントを表すための記述的方式、（ｄ）このようなイベントを制御プログラムにそしてその内部に配信するフレームワーク、（ｅ）ジェスチャ・イベントのストリームによってエンコードされた人間の意思（コマンド）を、イベント・ストリーム自体およびイベント解釈の用途特定結果双方のグラフィック、聴覚的、およびその他の表示様式描写(display-modal depiction)と同期させる方法を備えている。これらの全てについて、以下で詳しく説明する。このような実施形態では、プッシュバック・システムは、追加の空間およびジェスチャ入力−および−インターフェース技法と統合される。
【０１１３】
一般に、データ空間のナビゲーションは、検出器によって検出されたジェスチャ・データから、本体のジェスチャを検出することを含む。ジェスチャ・データは、ある時点および物理的空間における本体の瞬時的状態の絶対三次元位置データである。検出は、ジェスチャ・データを用いてジェスチャを識別することを含む。ナビゲーションは、ジェスチャをジェスチャ信号に変換すること、そしてこのジェスチャ信号に応答してデータ空間全体をナビゲートすることを含む。このデータ空間は、物理的空間において表されるデータ集合を含むデータ表現空間である。
【０１１４】
一実施形態の全体的な周回レイテンシ(round-trip latency)（センサに対する手の動き−ポーズ分析−プッシュバック解釈システム−ディスプレイ・デバイスへのコンピュータ・グラフィクスのレンダリング−操作者の視覚系と続く周回）が低く抑えられているとき（例えば、実施形態が約１５ミリ秒のレイテンシを呈する）、そして、システムの他のパラメータが適正に調整されているとき、プッシュバック相互作用の知覚的結果(perceptual consequence)は、物理的因果関係(causality)の格別な感覚となる。ＳＯＥは、ばね装填構造に対抗して押すことの物理的に反響する比喩(physically resonant metaphor)を文字どおりに解釈する(literalize)。知覚される因果関係は、非常に有効なフィードバックとなる。プッシュバック・システムによって供給される他のもっと抽象的なグラフィック・フィードバック様式と共に、そして操作者の移動の解釈におけるある程度の自由度の意図的な抑制によって、このようなフィードバックは、総体的および精細な人間動力活動(human motor activity)双方の、制御メカニズムとしての、安定した、信頼性のある、そして繰り返し可能な使用を可能にする。
【０１１５】
ＳＯＥのコンテキストを評価する際、多くのデータ集合は本質的に空間的である。これらは、リテラル物理空間(literal physical space)内における現象、イベント、測定、観察、または構造を表す。より抽象的な他のデータ集合、またはリテラルであるが非空間的情報をエンコードする他のデータ集合については、表現（視覚的、聴覚的、または他の表示様式を伴う）を用意することが望ましいことが多い。その基本的態様の一部は、１つのスカラー値パラメータによって制御され、そのパラメータを空間的次元と関連付けることも有益であることが多い。プッシュバック・メカニズムによる操作から利点が得られるのは、この１つのスカラー・パラメータの操作である。これについては、以下で詳しく説明する。
【０１１６】
更に、表現は、それらのパラメータに、小さな複数の離散値だけを許可することもできる。実際には、離散値は１つのこともあり、それに対してデータ集合は最適に見なされる。このような場合、「抑止されたパラメータ」、即ち、パラメータが明示的に「抑止されたパラメータ」の表現空間の一次元にマッピングされているか否か伝えることが有用である。本明細書における「抑止された」(detented)という用語の使用は、パラメータの好ましい量子化だけでなく、ラチェットの視野触覚的感覚(visuo-haptic sensation)、磁気整合メカニズム、ジョグ−シャトル・ホイール、および意図的な機械的抑止を有する他の豊かなこの世のデバイス(worldly devices)を呼び起こすことを意図している。
【０１１７】
このようなパラメータの自明であるが極めて重要な例には、限定ではなく、（１）コンピュータ・グラフィクス環境における、データ集合のレンダリング可能な表現からの合成カメラの距離、（２）データが元のデータ集合からサンプリングされ、レンダリング可能な形態に変換される密度、（３）サンプルが時間可変データ集合から引き出され、レンダリング可能な表現に変換される時間的インデックスが含まれる。これらは、普遍的な手法であり、無数のドメイン特定パラメータ化も存在する。
【０１１８】
ＳＯＥのプッシュバックは、一般に、データ集合のパラメータ−制御軸を、物理的空間におけるローカルに関連のある「深度次元」と整合させ、深度次元に沿った構造化実世界運動(real-world motion)が制御軸に沿ったデータ−空間変換を実行することを可能にする。その結果、パラメータ空間をナビゲートする非常に効率的な手段が得られる。以下に、ＳＯＥにおいて実施した場合のプッシュバックの代表的な実施形態の詳細な説明が続く。
【０１１９】
プッシュバックの一例では、操作者は、テキストおよび画像を含む１つの「データ・フレーム」が現れる大きな壁ディスプレイの前において、十分な距離のところに立つ。グラフィック・データ・エレメントは、静的でも動的でもよい。データ・フレームは、例えば、画像を含むが、そのように限定されるのではない。データ・フレーム自体は二次元構造であるが、三次元コンピュータ・グラフィクス・レンダリング環境内に存在する。その基礎となる座標系は、部屋、ならびにディスプレイおよび操作者を含む、その内容物を記述するのに都合がよい実世界座標と一致するように配置されている。
【０１２０】
操作者の手は、センサによって追跡され、センサは、彼女の指の位置および方位、ならびに恐らくは手の塊全体の位置および方位を、高い正確度および高い時間率(temporal rate)で解明する。システムは、各手の「ポーズ」、即ち、指の互いに対する、そして手の塊に対する幾何学的配置を特徴付けるために、得られた空間データを分析する。この実施形態例で追跡する物体は、人間の手（１つまたは複数である）が、代替実施形態では多くの他の物体も入力デバイスとして追跡することができる。一例には、一方側に押し返す場面(one-sided pushback scenario)があり、この場合、本体が開放位置にある操作者の手であり、掌が前方方向に面している（ｚ−軸に沿って）（例えば、操作者の前にある表示画面に向かって）。この説明に限って言えば、壁ディスプレイは、ｘおよびｙ次元を占めるように置かれ、ｚは操作者とディスプレイとの間における次元を記述する。このプッシュバック実施形態と関連のあるジェスチャ相互作用空間は、定数ｚの平面で突き合わされた２つの空間を備えている。ディスプレイから遠い（即ち、操作者に近い）抑止間隔空間(detented interval space)を「デッド・ゾーン」と呼び、近い方の半空間を「アクティブ・ゾーン」と呼ぶ。デッド・ゾーンは、逆方向（操作者に向かい、ディスプレイから離れる方向）に不定に広がるが、前方には有限距離だけ広がり、デッド・ゾーン閾値にて終端となる。アクティブ・ゾーンは、デッド・ゾーン閾値からディスプレイまで前方に広がる。ディスプレイ上にレンダリングされるデータ・フレーム（１つまたは複数）は、アクティブ・ゾーンにおける本体の移動によって、相互作用的に制御される、即ち、「押し戻される」。
【０１２１】
データ・フレームは、ディスプレイのサイズおよびアスペクト比と正確に一致するサイズおよびアスペクト比で構成され、その中心および法線ベクトルがディスプレイのこれら物理的属性と一致するように位置付けおよび方位が決められるが、実施形態はそのように限定されるのではない。シーン(scene)をレンダリングするために用いられる仮想カメラは、ディスプレイから直接前方に、大まかに操作者の距離に配置されている。このコンテキストでは、レンダリングされたフレームは、したがって、正確にディスプレイを満たすことになる。
【０１２２】
可視フレームの左右には、論理的に多数の追加の共面データ・フレームが配置されている。これらの共面データ・フレームは均一に離間され、適度のギャップがそれに直接隣接するものから互いに分離する。これらは、コンピュータ・グラフィクス・レンダリング幾何学体系の物理的／仮想レンダリング境界の外側にあるので、これらの横方向に変位した隣接データ・フレームは初期状態では見えない。データ空間は、その幾何学的構造が与えられれば、ｚ−方向において１つの自然な抑止部を、そして複数のｘ−抑止部を有することは理解されよう。
【０１２３】
操作者は、彼女の左手を軽く握ったポーズで保持して、彼女の肩まで持ち上げる。次いで、彼女は指を開いて、これらが上方を指し示し、親指が右側を指し示し、彼女の掌が画面に面するようにする（以下で詳細に説明するジェスチャ記述言語では、このポーズ遷移は、［＾＾＾＾＞：ｘ＾から｜｜｜｜＿：ｘ＾］というように表現される）。本システムは、新たなポーズを検出すると、プッシュバック相互作用を誘起し、そのポーズが最初に入力されたところである手の絶対三空間位置を直ちに記録する。この位置は、「原点」として用いられ、以降の手の運動は、この原点からの相対的オフセットとして報告される。
【０１２４】
直ちに、２つの同心円状の、部分的に透明なグリフ(glyph)がフレームの中心に（つまり、ディスプレイの中心に）重畳される。例えば、グリフは、デッド・ゾーンにおける、デッド・ゾーン閾値の点までの本体プッシュバック・ジェスチャを示すことができる。第２グリフが第１グリフよりも小さいのは、操作者の手がデッド・ゾーン内に存在し、それを貫通するプッシュバック動作が「未だ」加わっていないことを示す。操作者が彼女の手を前方に（デッド・ゾーン閾値およびディスプレイに向かって）移動させると、第２グリフが徐々に大きくなる。操作者の手がデッド・ゾーン閾値に来る地点で、第２グリフのサイズは第１グリフと同等になる。この例のグリフは、操作者の手がその開始位置から、デッド・ゾーンをアクティブ・ゾーンから分離するデッド・ゾーン閾値に向かって進行する際における、グリフの同心円エレメントの進展を示す。グリフの内部にある「歯状」部分は、手が閾値に近づくにつれて大きくなり、手が閾値の位置に達したときに、内側グリフおよび（静止）外側グリフの半径が、正確に一致するように配置されている。
【０１２５】
第２グリフは、操作者が彼女の手をデッド・ゾーン閾値から遠離るように、そしてディスプレイから遠離るように移動させると、第１グリフの内側でサイズが小さくなるが、常に第１グリフと同心状にあり、ディスプレイの中心に位置することに変わりはない。極めて重要なのは、操作者の手の運動のｚ−成分のみがグリフのスケーリングにマッピングされており、手の運動の副次的なｘ−およびｙ−成分は何の寄与もなさないことである。
【０１２６】
操作者の手がデッド・ゾーンの閾値を順方向に横断し、アクティブ・ゾーンに入ると、プッシュバック・メカニズムが関与する(engage)。手の相対的なｚ−位置（閾値から測定する）は、スケーリング関数の対象となり(subject)、その結果得られる値は、データ・フレームおよびその横方向の近隣のｚ−軸変位を行うために用いられるので、そのフレームのレンダリング画像はディスプレイから後退するように見え、そして近隣データ・フレームも見えてきて、表示空間の縁から「埋まっていく」。合成カメラの一定角度範囲(constant angular subtent)は、平面がカメラから離れるように移動するに連れて、フレームが位置する平面のより多くを幾何学的に「取り込む」。ｚ−変位は連続的に更新されるので、操作者は、彼女の手をディスプレイに向けて押し込んだり、彼女自身に向かって引いたりすると、彼女の動きに直接応答して、横方向に後退および近接するフレームの集合体(lateral collections)を知覚する。
【０１２７】
対応するプッシュバックから得られるデータ・フレームの第１の相対的ｚ−軸変位の一例として、レンダリングされたデータ・フレームの画像は、ディスプレイから後退するように見え、隣接するデータ・フレームが見えるようになり、ディスプレイ空間の縁から「埋まっていく」。隣接するデータ・フレームは、多数の追加の共面データ・フレームを含み、可視フレームの左右に論理的に配置され、均一に離間され、適度なギャップが各々をその直接隣接するものから分離する。対応するプッシュバックから生ずるデータ・フレームの第２の相対的ｚ−軸変位の一例として、そして第１の相対的ｚ−軸変位について検討する。第１の相対的ｚ−軸変位が生じたプッシング(pushing)から、操作者の手を更にプッシングした（ｚ−軸に沿ってディスプレイに向かい操作者から離れる更なるプッシング）と仮定すると、レンダリングされたフレームの画像は、更にディスプレイから後退するように見えるので、より多くの隣接データ・フレームが見えるようになり、更に表示空間の縁から「埋まっていく」。
【０１２８】
一方、対をなす同心円状グリフは、ここでフィードバックの変更を示す。操作者の手はアクティブ・ゾーン内にあり、第２グリフは、スケーリングに基づく反応から、回転反応に切り替わり、手の閾値からの物理的なｚ−軸オフセットが、正の（平面内）角度オフセットにマッピングされる。デッド・ゾーンにおいてデッド・ゾーン閾値の点を超えた本体のプッシュバック・ジェスチャ（ｚ−軸に沿って、ディスプレイに向かって、そして操作者から遠離る）をグリフが示す例では、これらのグリフは、一旦操作者の手がデッド・ゾーン閾値を交差した際における、即ち、プッシュバック・メカニズムが能動的に関与するときの、グリフの進展を示す。つまり、操作者の手のディスプレイに向かう移動およびディスプレイから離れる移動が、第２グリフの時計回りおよび反時計回り方向の回転によって視覚的に示され（第１グリフは、以前と同様、静止基準状態を示す）、グリフの「歯状」エレメントが、手の閾値からのオフセットの線形関数として回転し、線形運動を回転表現に変える。
【０１２９】
したがって、この例では、ディスプレイに向かうｚ−軸に沿った手の移動が第１増分だけ加わると、第２グリフの増分時計回り方向回転によって視覚的に示され（第１グリフは、以前と同様、静止基準状態を示す）、グリフの「歯状」エレメントは、手の閾値からのオフセットの線形関数に対応する第１の量だけ回転する。ディスプレイに向かうｚ−軸に沿った手の移動が第２増分だけ加わると、第２グリフの増分時計回り方向回転によって視覚的に示され（第１グリフは、以前と同様、静止基準状態を示す）、グリフの「歯状」エレメントは、手の閾値からのオフセットの線形関数に対応する第２の量だけ回転する。更に、ディスプレイに向かうｚ−軸に沿った手の移動の第３の増分は、第２グリフの増分時計回り方向回転によって視覚的に示され（第１グリフは、以前と同様、静止基準状態を示す）、グリフの「歯状」エレメントは、手の閾値からのオフセットの線形関数に対応する第３の量だけ回転する。
【０１３０】
この見本とした用途では、操作者の手がアクティブ・ゾーン内にあるとき、副次的な次元感度が関与する。手の横方向（ｘ−軸）運動が、この場合も可能なスケーリング関数によって、水平フレーム・シーケンスのｘ−変位にマッピングされる。スケーリング関数が正である場合、その効果は操作者の手の位置的「追従」(positional following)の１つであり、操作者はフレームを左右にスライドさせていることを知覚する。本体の横方向運動から生ずるデータ・フレームの横方向ｘ−軸変位の一例として、データ・フレームは左から右にスライドし、特定のデータ・フレームが、表示空間の左縁端を通って視野から消えるまたは部分的に消えていき、一方追加のデータ・フレームが表示空間の右縁端から埋まっていくようになっている。
【０１３１】
最後に、操作者が彼女の手の掌を前方に向けたポーズを終了させると（例えば、手を閉じて拳を作ることによって）、プッシュバック相互作用が終了し、フレームの集合体は素早くその元のｚ−抑制（即ち、ディスプレイと同一平面上）に戻される。同時に、フレーム集合体は、１つのフレームのディスプレイとのｘ−一致を達成するために、横方向に調節させられる。終了するフレーム、つまり、「ディスプレイの中心に来る」フレームは、プッシュバック終了の時点において同心円状グリフの中心に最も近かった、即ち、最も近いｘ−抑止点(nearest x-detent)にあった、いずれかのフレームである。ここでは、グリフ構造は、選択レティクルとして第２の機能を果たすように見えるが、実施形態はそのように限定されるのではない。フレーム集合体のｚ−およびｘ−位置は、通例、「ばね装填戻り」(spring-loaded return)の視覚的感覚を与えるために、短い時間感覚でそれらの最終的なディスプレイ−一致値まで進行することが許される。
【０１３２】
この例において配備されるプッシュバック・システムは、（１）直接視覚視線−−深度次元−−に沿って総計したデータ集合を可変的に変位させることによって、認識的に貴重な「近隣コンテキスト」を取得することによって、視野に入れるデータ集合を増やす（データ集合のいずれの所与の部分についても、その角度範囲を縮小することと交換に）、（２）横方向に配列されたデータ集合をその自然水平次元に沿って可変的に変位させることによって、近隣コンテンツを取得し、データのいずれの所与の区間についてもその角度範囲を維持するが、馴染みのある「スクローリング」という感覚で、古いデータの見える範囲(visibility)を新しいデータのそれと交換する、（３）素早く次元的に制約されたナビゲーションによって、データ集合の離散化エレメントを選択するための効率的な制御様式を提供する。
【０１３３】
一実施形態のプッシュバックの他の例では、操作者がウェスト・レベル・ディスプレイ・デバイスの直ぐ隣に起立する。ディスプレイ・デバイスのアクティブ面は、床面と平行な水平面にある。ここでは、座標系は、以前の例のそれと矛盾しないように設定される。表示面はｘ−ｚ面内にあるので、表面に対して法線を表すｙ−軸は、物理的重力ベクトルに対して反対に位置合わせされる。
【０１３４】
本体をテーブル状表示面の上で水平に保持した、物理的場面の一例では、本体は操作者の手であるが、実施形態はそのように限定されるのではない。プッシュバック相互作用は両面型であるので、上側デッド・ゾーン閾位値および下側デッド・ゾーン閾値１がある。加えて、プッシュバック操作によってアクセスされる線形空間には、離散空間抑止点（例えば、「第１抑止点」、「第２抑止点」、「第３抑止点」、「第４抑止点」）が上側アクティブ・ゾーンの中に設けられており、離散空間抑止点（例えば、「第１抑止点」、「第２抑止点」、「第３抑止点」、「第４抑止点」）が下側アクティブ・ゾーンの中に設けられている。一実施形態の相互作用空間は、上側デッド・ゾーンおよび下側デッド・ゾーンを備えている比較的小さなデッド・ゾーンが、プッシュバックが関与する垂直（ｙ−軸）位置を中心に配され、アクティブ・ゾーンがこのデッド・ゾーンの上となり、アクティブ・ゾーンがこのデッド・ゾーンの下になるように構成されている。
【０１３５】
操作者は、データ集合の一例を用いて作業しており、このデータ集合は離散平行面のスタックに分析されており、これらの離散平行面がデータ・フレームとなる。このデータ集合は、このようにして、それが表す物理的現実の自然な結末（例えば、断層写真走査からの離散スライス、三次元集積回路の多数のレイヤ等）として構成することができ、またはこれは、データ（例えば、多数のスペクトル帯域において取得した衛星画像、１０年毎のデータが別個のレイヤに入っている、地理的に組織された人口調査データ等）を分離および離散化するように論理的または有益であるので、そのように構成することができる。更に、データの視覚表現は、静的であってもよく、または動的エレメントを含んでもよい。
【０１３６】
プッシュバック機能が関与していない区間では、１つのレイヤが「現行」と見なされ、表示によって視覚的に目立って表され、物理的にディスプレイと一致すると知覚される。現行のレイヤの上および下にあるレイヤは、この例では、視覚的に一目瞭然ではない（その存在を示すためにこじんまりした図象が用いられているが）。
【０１３７】
操作者は、ディスプレイ上で彼の閉じた右手を広げる。手を広げると、指が前方に広がり、親指が左に広がり、掌は下方を指し示し（遷移：［＾＾＾＾＞：ｖｘから｜｜｜｜−：ｖｘ］）、このときにプッシュバック・システムが関与する。短い間隔（例えば、２００ミリ秒）の間、現行のレイヤに隣接するある数のレイヤが、異なる視感度で現れる。各々は、ぼやけフィルタおよび透明性で、上下に合成される。その「程度」(severities)はそれぞれのレイヤの現行レイヤからの通常距離(ordinal distance)に依存する。
【０１３８】
例えば、プッシュバック・システムを起動させると、現行のレイヤ（例えば、データ・フレーム）に隣接するレイヤ（例えば、データ・フレーム）が、異なる視感度で、徐々に現れる。この例では、スタックが多数のデータ・フレーム（データ・フレームのデータ集合に相応しいいずれかの数）を備えており、プッシュバック・システムを用いてこれらの間であちこちに移動する(traverse)ことができる。
【０１３９】
同時に、以前の例から馴染みのある同心円状フィードバック・グリフが現れる。この場合、小さなデッド・ゾーンが、プッシュバックが関与する垂直（ｙ−軸）位置を中心として配置され、アクティブ・ゾーンがデッド・ゾーンの上下双方に来るように、相互作用が構成されている。この配置によって、元のレイヤに「帰り着く」際において補助が与えられる。この場合、グリフは、連続レイヤに対する接近指示(directed proximity)を示す追加の単純なグラフィックによって作成される。
【０１４０】
操作者の手がデッド・ゾーン内に残っている間、レイヤ・スタックの変位は発生しない。グリフは、直前の例における場合と同じ「予備的」行動を表し、手がゾーンのいずれかの境界に近づくに連れて、内側のグリフが大きくなる（勿論、ここでは、行動は両面で対称的である。内側のグリフは、手の開始ｙ−位置では最小スケールにあり、手が上または下に動いても、外側のグリフと一致する方向に大きくなる）。
【０１４１】
操作者の手がデッド・ゾーンの上平面を超えて上方に移動すると、内側のグリフは外側のグリフと重なり合い、以前と同様に、その方向に手が更に移動すると、内側グリフの反時計回り方向の回転運動が生ずる。同時に、レイヤ・スタックは「上方に平行移動」し始める。これらのレイヤの位置、元の現行レイヤの上にあるレイヤほど透明性が高くぼやけており、元の現行レイヤ自体はますます透過して行きそして一層ぼやけていく。その下にあるレイヤは、はっきりと見えてきてぼやけが少なくなる方向に移動する。
【０１４２】
スタックの上方向への平行移動の他の例では、以前の現行レイヤが透明度を増して行き（この例では、見えなくなっていく）、この直前の現行レイヤに隣接するレイヤが、現時点における現行レイヤとして見ることができるようになる。加えて、スタックが上方に平行移動するに連れて、現時点における現行レイヤに隣接するレイヤが、異なる視感度で徐々に現れてくる。前述のように、スタックは、多数のデータ・フレーム（データ・フレームのデータ集合に相応しいいずれかの数）を備えており、プッシュバック・システムを用いてこれらの間であちこちに移動することができる。
【０１４３】
レイヤ・スタックは、実世界距離（即ち、操作者の手のその初期位置からの変位を、部屋の座標(room coordinates)において測定したもの）と連続するレイヤ間における「論理的」距離との間におけるマッピングによって構成されている。レイヤ・スタックの平行移動は、勿論、近接度グラフィクスの瞬時的出現のように、このマッピングの結果である。一方、これは、表示面と現行レイヤとの間において（当初は）大きくなる距離を示す。また、これは、表示面が現在現行レイヤの下にあることも示す。
【０１４４】
手の運動は続き、レイヤ・スタックは最終的に、現行のレイヤおよびその次の下にあるレイヤが正に表示面を跨る（即ち、表示面から等距離となる）位置を通過する。この地点を丁度通過するときに、近接度グラフィクスが変化して、表示面が今や現行のレイヤよりも高いことを示す。このとき、「現行レイヤ・ステータス」は既に次に低いレイヤに割り当てられている。一般に、現行のレイヤは、常に物理的表示面に最も近いレイヤであり、操作者がプッシュバック・システムを解除したときに、「選択される」レイヤである。
【０１４５】
操作者が彼の手を上げ続けると、連続する各レイヤが表示面に向けて送られ、徐々に良く見えるようになり(resolved)、表示面との一時的な一致を得て、次いで次に低いレイヤを優先して、再び透明になりぼやけていく。操作者が彼の手の運動方向を逆にして、それを下げると、プロセスが逆になり、内側のグリフが時計回り方向に回転する。手が最終的にデッド・ゾーンを通過すると、元の現行レイヤが正確に表示面とｙ−軸と一直線になり(y-alignment)、スタックが停止する。次いで、スタックのｙ−進行が再開し、元の現行レイヤの上にある平面に連続的に焦点を合わせる。操作者の総合的な知覚は、彼が彼の手を用いて、レイヤのスタックを押し下げそして引き上げているという、強くそして単純なものである。
【０１４６】
最後に、操作者が彼の手を閉じて（または、それ以外でそのポーズを変化させる）ことによってプッシュバックを解除すると、システムは、スタックを、表示面と一直線にｙ−軸方向に抑止するように(detented y-axis alignment)「急に変化させ」、プッシュバックを終了したときに表示面に最も近かったレイヤを、現行レイヤとする。この位置合わせ(positional alignment)の短い区間の間、他の全てのレイヤは、完全な透明状態に徐々に戻り、フィードバック・グリフは滑らかに消失する。
【０１４７】
この例のデータ集合（ここでは、レイヤ）の離散化したエレメントは、主要プッシュバック（深度）軸に沿って分散される。以前では、これらのエレメント（データ・フレーム）は同じ平面にあり、深度軸に対して直交する次元に沿って横方向に配列されていた。この現在の配列は、透明技法の配備と共に、データが重畳されることが多く、あるレイヤは他のレイヤを通して見られることを意味する。しかしながら、この例における操作者は、（１）近隣コンテキスト（現行レイヤの上および下にあるレイヤの内容はなにか）を素早く得る装置(facility)、および（２）データ集合における平行積層エレメント間で効率的に選択し切り換える装置も享受する。操作者が（１）のみを意図する場合、デッド・ゾーンを設けることによって、操作者は元来選択されたレイヤに確実に戻ることができる。操作全体にわたって、２つの平行移動次元(translational dimensions)の抑制によって、速度および精度が可能になる（殆どの人間にとって、横方向にドリフトを生じることなく手を垂直に平行移動させることは比較的難しいが、前述したような様式は、このような横方向変位を単純に全て無視する）。
【０１４８】
尚、ある種の目的のために、デッド・ゾーンが無限に広がるようにプッシュバック入力空間を構成することが好都合である場合もあることを注記しておく。そして、プッシュバックが関与すると直ぐに、そのアクティブなメカニズムも投入される。本明細書において紹介する第２の例では、これは、本来の現行レイヤは、一旦プッシュバック操作が開始されたなら、他のいずれとも同じように扱われることを意味する。経験的に、デッド・ゾーンの直線的な広がりは、操作者の好みの問題である。
【０１４９】
この第２の例において説明した様式は、二次元（投影式または放射式のいずれでも構わない）および三次元（自動ステレオ式で、空中画像生成式(aerial-image-producing)等であろうとなかろうと構わない）デバイス双方を含む多種多様のディスプレイにわたって関連がある。後者、即ち、３Ｄの高品質な実施態様の場合、媒体のある種の特性が、プッシュバックの基礎となる知覚メカニズムを広く補助することができる。例えば、パララックス、光学被写体深度、および視覚的適応(ocular accommodation)現象の組み合わせは、多数のレイヤを同時に捕らえることを可能とし、表示面から多いレイヤを激しく褪せさせたりぼけさせる（または実際には一緒に除外する）必要性を解消する。更に、これらの様式は、ディスプレイの方位に関係なく適用される。これは、例におけるように、主に水平とするとよく、または壁上の目の高さに取り付けても同様に有用であると考えられる。
【０１５０】
この第２の例の場面に対する拡張では、２つの手による操作の有用性を示す。ある種の用途では、レイヤ・スタック全体の平行移動、または個々のレイヤの横方向（即ち、ｘおよびｚ方向）の平行移動が必要となることがある。一実施形態では、操作者の他の、即ち、プッシュバックではない、手がこの変換を、例えば、ある様式によって行うことができる。この様式では、手を表示面に近接させると、データ集合のレイヤの内１つを「スライドさせ回す」(slide around)ことができるので、そのオフセットｘ−ｚ位置が手のそれを追従するようになる。
【０１５１】
操作者は、一般に、横方向平行移動およびプッシュバック操作を同時に着手することを、便利であり容易に御し易い(tractable)と考えることができる。連続ドメイン操作を一方の手に割り当て、離散型作業を他方の手に割り当てることにより、認識負荷(cognitive load)を最適化するように作用することができると提案することは、恐らく全面的に無意味なことではない。
【０１５２】
データ集合に対して自然な視覚的側面がないＳＯＥの下においてプッシュバックの更に別の例について検討することは有用である。代表的なのは、複数のオーディオ・チャネルを監視し、集合体の中から間欠的に１つを選択する問題である。プッシュバック・システムを適用すると、聴覚的出力には備えているが視覚出力には備えていない環境において、このようなタスクを可能にする。この様式は、直前の例のそれと非常に似ている。
【０１５３】
操作者は、起立または着座して、１つのオーディオ・チャネルを聞いている。概念的に、このオーディオは、「聴覚面」と呼ばれる垂直面に存在し、この面には、幾何学的に、彼女の耳が含まれる。追加のオーディオ・チャネルは、この聴覚面に平行な追加の面内に存在するが、ｚ−軸に沿って前方または後方に変位されている。
【０１５４】
彼女の手を開いて、彼女の前９インチのところに保持し、掌を前方に向けて、プッシュバック・システムを投入する。数個の近接する面におけるオーディオが、差別的に徐々に現れ、各々の音量は、現行チャネルの面からのその元の距離に逆に依存する。実際には、２つまたは４つの追加チャネルを聴取可能にすることは、知覚的に非現実的である。同時に、「オーディオ・グリフ」が徐々に現れて、近接度フィードバックを与える。初期状態では、操作者の手がデッド・ゾーン内に保持されているが、グリフは辛うじて聞くことができる２音調の和音である（初期状態では、調和している）。
【０１５５】
操作者が彼女の手を前方または後方に、デッド・ゾーンを通過するように移動させると、オーディオ・チャネルの音量は一定のままであるが、グリフの音量が増大する。手がデッド・ゾーンの前または後ろの閾値と交差すると、グリフはその「アクティブな」音量に到達する（未だ現行チャネルの音量に従う）。
【０１５６】
一旦操作者の手が、例えば、前方方向に、アクティブ・ゾーンを通過して移動始めると、オーディオ・チャネルに期待される効果が得られる。現行のチャネル面が聴覚面から更に遠離るように押され、その音量が徐々に減少する（そして、これらのチャネルの音量はなおも更に先に進む(forward)）。一方、「背後の」(dorsal)チャネル面の音量は、それが聴覚面に近づくに連れて、増大する。
【０１５７】
一方、オーディオ・グリフはモードを切り換えている。手の前方への繰り出しには、トーンの１つの周波数上昇が伴い、「中点」において、聴覚面が１つのオーディオ・チャネル面および次のオーディオ・チャネル面に二等分すると、トーンが正確な１／５を形成する（数学的に、これは三全音間隔(triton interval)であるべきであるが、これを避けるべき理由がふんだんにある）。可変トーンの周波数は、手が更に前方に移動し続けるにしたがって、最終的に操作者が次のオーディオ面に「到達」するまで、上昇し続ける。次のオーディオ面に到達した時点で、トーンは正確に１オクターブに広がる。
【０１５８】
種々のチャネルの試聴が続き、操作者は彼女の手を前後に平行移動させて、各々に順番にアクセスする。最後に、１つを選択するためには、単に彼女の手を閉じて、プッシュバック・セッションを終了させ、オーディオ面の集合体を整列状態(alignment)に「素早く変化させる」(spring)。他の（選択されなかった）チャネルは、グリフと同様に、徐々に消えて行き聞こえなくなる。
【０１５９】
この例は、プッシュバック用途の異種を例示したのであり、同じ機能がこの場合も得られる。即ち、近隣コンテキストへのアクセス、および離散化したデータ・エレメント（ここでは、個々のオーディオ・ストリーム）の迅速な選択である。この場面は、聴覚フィードバック・メカニズム、特に、操作者が選択を行える程に目標チャネルに「十分近づいている」か否かについての情報を操作者に提供するために、信頼性のある人間のある種の周波数間隔を認識する能力(capacity)を利用するメカニズムに取って代わる。これは、特に、「可聴」信号が間欠的に現れるのみである音声チャネルにおいて重要である。オーディオ・フィードバック・グリフの連続性によって、それが存在したままとなり、チャネル自体が無音になっていても識別可能であり続ける。
【０１６０】
尚、本例におけるＳＯＥが空間化オーディオ(spatialized audio)を含む場合、前方距離(forward distance)に遠のくそして背後から近づく（またはその逆）連続オーディオ・レイヤの知覚を大幅に改善することができることを注記しておく。更に、操作者の位置において選択されたオーディオ面を一層文字どおりに(literally)「定位」する機会(opportunity)が、操作者の前にある後続レイヤおよび背後にある以前のレイヤと共に、有用に活用可能となる。
【０１６１】
オーディオ・グリフの他のインスタンス化も可能であり、実際に、スペクトル分布を含む、種々のチャネル内容の特質が、どの種のグリフが最も明確に認識できるかを決定付ける傾向がある。一例として、他のオーディオ・グリフ・フォーマットが一定の音量を維持するが、周期的なクリックを用い、クリック間の間隔が聴覚面と最も近いオーディオ・チャネル面との近接性に比例する。最後に、ある種の状況の下では、そして操作者の鋭さに応じて、フィードバック・グリフが全くないオーディオ・プッシュバックを用いることが可能である。
【０１６２】
プッシュバック・メカニズムを参照して、データ集合の表現において空間抑止点の数および密度が非常に大きくなる方向に増大するにつれて、空間およびそのパラメータ化が事実上連続になる。即ち、非抑止(non-detented)となる。しかしながら、このような極限においてもプッシュバックは有効であり続ける。これは、部分的に、プッシュバックの各呼び出し前におけるデータ集合の「初期状態」を、一時的抑止として扱うことができ、単純にデッド・ゾーンとして理解できるからである。
【０１６３】
このような非抑止プッシュバックの用途は、無限に（または少なくとも実質的に）ズーム可能な図の考えと関連付けて見出すことができる。ズーム機能のプッシュバック制御は、オフセット手位置(offset hand position)をアフィン・スケール値(affine scale value)と関連付けるので、操作者は彼の手を前方または後方にズームの減少または増大（それぞれ）の度合いだけプッシュ(push)する。しかしながら、位置のズーム・パラメータへの直接マッピングによって、制御の手をデッド・ゾーンに戻しても、ズーム値をその初期状態に戻せることを保証するので、元の事前プッシュバック・ズーム状態(pre-pushback zoom state)は常に容易にアクセス可能である。
【０１６４】
以上の例において説明した各場面では、プッシュバック・システムの突出した態様、およびＳＯＥ下におけるその使用についての説明を行った。更に、本明細書において記載した操作の各々は、効率および正確度のために、特定の種類の知覚フィードバックが人間の移動を案内することを可能にすることによって、１秒以下で高精度にそして総合的に着手する(undertake)ことができることは言うまでもない。また、他のときには、操作者は数十秒の間１つの連続プッシュバック「セッション」に留まっていることを有用と思う。調査の目標やコンテキスト取得の目標は、更に長い間隔にわたるプッシュバックによって十分に果たされる。
【０１６５】
以上で説明した例は、物理的入力（ジェスチャ）空間の表現空間への線形マッピングを採用した。実空間においてＡ単位だけ制御手(control hand)を平行移動させると、Ａ平行移動が行われた実空間の位置には係わらず、常に、表現空間におけるＢ単位［プライム］(prime)だけの平行移動が得られる。しかしながら、他のマッピングも可能である。即ち、殆どの人間の操作者によって享受される精細モータ制御(fine motor control)によって、非線形マッピングの使用が可能となり、その場合、例えば、アクティブ閾値から遠く離れた差動ジェスチャ変換は、閾値付近におけるジェスチャ変換よりも、パラメータ化された次元に沿って大きな変位に変換することができる。
同時仮想／ディスプレイおよび物理空間
本システムは、１つ以上のディスプレイ・デバイス（「画面」）上に描かれた仮想空間を、当該システムの一人または複数の操作者によって占められる物理空間と一致するものとして扱う環境を提供することができる。このような環境の一実施形態についてここで説明する。この現実施形態は、固定位置に３つのプロジェクタ駆動画面を含み、１つのデスクトップ・コンピュータによって駆動され、本明細書に記載したジェスチャ・ボキャブラリおよびインターフェース・システムを用いて制御される。しかしながら、記載する技法は、いかなる数の画面でもサポートすること、これらの画面は移動可能であってもよいこと（固定ではなく）、画面は多くの独立したコンピュータによって同時に駆動してもよいこと、そしてシステム全体はいずれの入力デバイスまたは技法によっても制御できることを注記しておく。
【０１６６】
本開示において記載するインターフェース・システムは、物理空間における画面の寸法、方位、および位置を決定する手段を有していなければならない。この情報を仮定して、本システムは、これらの画面が配置されている（そして、本システムの操作者が占める）物理空間を、本システム上で実行しているコンピュータ・アプリケーションの仮想空間への投影として動的にマッピングすることができる。この自動マッピングの一部として、本システムは、システムによってホストされているアプリケーションの必要性に応じて、種々の方法で２つの空間の規模、角度、深さ、寸法、およびその他の空間特性も変換する。
【０１６７】
この物理空間と仮想空間との間における連続変換によって、既存のアプリケーション・プラットフォームでは達成が困難である、または既存のプラットフォーム上で実行するアプリケーション毎に１つ１つ実装しなければならない多数のインターフェース技法の一貫性があり普及する使用が可能となる。これらの技法は、（限定ではないが）以下を含む。
【０１６８】
１）「リテラル・ポインティング」(literal pointing)の広く行き渡る自然なインターフェース技法としての使用。ジェスチャ・インターフェース環境において手を用いるか、あるいは物理的ポインティング・ツールまたはデバイスを用いる。
【０１６９】
２）画面の移動または再位置決めに対する自動補償。
【０１７０】
３）操作者の位置に応じて変化するグラフィクス・レンダリング。例えば、深度の知覚を高めるためにパララックス・シフトをシミュレーションする。
【０１７１】
４）実世界位置、方位、状態等を考慮に入れた、画面上表示への物理的オブジェクトの含入。例えば、大きく不透明な画面の前に立っている操作者は、アプリケーションのグラフィクスと、画面の背後にある（そして、恐らく移動しているか、または方位を変えている）スケール・モデル(scale model)の真の位置の表現との双方を見ることができる。
【０１７２】
リテラル・ポインティングは、マウスに基づくウィンドーイング・インターフェースや殆どのその他の現在のシステムにおいて用いられている絶対ポインティングとは異なることを注記するのは重要である。これらのシステムでは、操作者は仮想ポインタと物理ポインティング・デバイスとの間の変換を管理することを学習しなければならず、更にこれら２つの間で経験的知識に基づいてマッピングしなければならない。
【０１７３】
対照的に、本開示において記載するシステムでは、アプリケーションまたはユーザの観点のいずれからでも、仮想空間と物理空間との間に差がないので（仮想空間の方が数学的操作がし易いことを除く）、操作者に経験的知識に基づく変換は必要とされない。
【０１７４】
本明細書において記載する実施形態によって提供されるリテラル・ポインティングに最も近い類似性は、接触感応画面（例えば、多くのＡＴＭマシン上で見られる）である。接触感応画面は、画面上の二次元表示空間と画面表面の二次元入力空間との間に１対１のマッピングを規定する。同様に、本明細書において記載するシステムは、１つ以上の画面上に表示される仮想空間と、操作者によって占められる物理空間との間に柔軟なマッピング（１対１のマッピングも可能であるが、その必要性はない）を規定する。この類似性の有益さ(usefulness of the analogy)にも拘わらず、この「マッピング手法」の三次元、任意に大きなアーキテクチャ環境、および多数の画面への拡張は重要である。
【０１７５】
本明細書において記載するコンポーネントに加えて、本システムは、環境の物理空間と各画面上の表示空間との間に連続的なシステム・レベルのマッピング（恐らく回転、平行移動、倍率調整、またはその他の幾何学的変換によって変更される）を実現するアルゴリズムも実装することができる。
【０１７６】
レンダリング・スタックは、計算オブジェクトおよびマッピングを取り込み、仮想空間のグラフィック表現を出力する。
【０１７７】
入力イベント処理スタックは、制御システムからイベント・データを取り込み（現実施形態では、システムおよびマウス入力からのジェスチャ・データおよびポインティング・データの双方）、入力イベントからの空間データを仮想空間における座標にマッピングする。次いで、変換されたイベントは、実行中のアプリケーションに配信される。
【０１７８】
「グルー・レイヤ」は、システムが、ローカル・エリア・ネットワークにある数台のコンピュータに跨って実行するアプリケーションをホストすることを可能にする。
【０１７９】
空間連続体入力システムの実施形態について、ここでは、ネットワーク系データ表現、移送、および交換を備えたものとして説明する。これは、「プラズマ」と呼ばれるシステムを含み、以下で詳細に説明するように、サブシステム「スロークス」、「プロテイン」、および「プール」を備えている。プールおよびプロテインは、本明細書において説明する、プロセス間でまたはプロセスに跨って共有されるべきデータをカプセル化するための方法およびシステムの構成要素である。また、これらのメカニズムは、プロテインおよびプールの他に、スロークス（「スロー」(slaw)の複数形）も含む。一般に、スロークスは、プロセス間交換についての最も低いレベルのデータ定義を規定し、プロテインは、中間レベルの構造を規定し、照会(querying)およびフィルタリングを担い(hook for)、プールは、高レベルの編成およびアクセス・セマンティクスを規定する。スロークスは、効率的で、プラットフォームに依存しないデータ表現およびアクセスのためのメカニズムを含む。プロテインは、スロークスをペイロードとして用いて、データ・カプセル化および輸送方式を規定する。プールは、ローカル・プロセス間での、リモート・プロセスまたは分散プロセス間にあるネットワークを跨いだ、そして「長期」（例えば、ディスク上等における）記憶を通じた、プロセス内におけるプロテインの構造化された柔軟な集計、順序付け、フィルタリング、および分散を規定する。
【０１８０】
マルチプロセス・インタラクティブ・システムの実施形態の構成および実施態様は、様々な構造(construct)を含み、これらが一緒になって多数の能力を可能にする。例えば、本明細書において記載する実施形態は、前述のように大多数のプロセス間におけるデータの効率的な交換に備えている。また、本明細書において記載する実施形態は、柔軟なデータの「分類」 (typing)および構造にも備えているので、広範囲にわたる多様な種類のデータおよび使用をサポートする。更に、本明細書において記載する実施形態は、データ交換のための柔軟なメカニズム（例えば、ローカル・メモリ、ディスク、ネットワーク等）を含み、これらは全て実質的に同様のアプリケーション・プログラミング・インターフェース（ＡＰＩ）によって駆動される。更に、本明細書において記載する実施形態は、異なるプログラミング言語で書かれたプロセス間におけるデータ交換を可能にする。加えて、本明細書において記載する実施形態は、データ・キャッシュおよび集計状態の自動的な保守を可能にする。
【０１８１】
図１４は、一実施形態の下において、スロークス、プロテイン、およびプールを用いたデータ表現を含む処理環境のブロック図である。本明細書において紹介する実施形態の主要な構造には、スロークス（「スロー」(slaw)の複数形）、プロテイン、およびプールが含まれる。本明細書において記載する場合、スロークスは、効率的で、プラットフォームに依存しないデータ表現およびアクセスのためのメカニズムを含む。プロテインは、本明細書において詳細に説明するように、データ・カプセル化および輸送方式を規定し、一実施形態のプロテインのペイロードはスロークスを含む。プールは、本明細書において記載する場合、プロテインの構造化されているが柔軟な集計、順序付け、フィルタ処理、および分散を規定する。プールは、プロテインのための、プロセス内部における、ローカル・プロセッサ間での、リモート・プロセスまたは分散プロセス間にあるネットワークを跨いだ、そして「長期」（例えば、ディスク上）記憶による、データへのアクセスを与える。
【０１８２】
図１５は、一実施形態の下におけるプロテインのブロック図である。プロテインは、長さヘッダ、ディスクリップ、およびインジェストを含む。以下で詳細に説明するが、ディスクリップおよびインジェストの各々は、スローまたはスロークスを含む。
【０１８３】
図１６は、一実施形態の下におけるディスクリップのブロック図である。以下で詳細に説明するが、ディスクリップは、オフセット、長さ、およびスロークスを含む。
【０１８４】
図１７は、一実施形態の下におけるインジェストのブロック図である。以下で詳細に説明するが、インジェストは、オフセット、長さ、およびスローを含む。
【０１８５】
図１８は、一実施形態の下におけるスローのブロック図である。以下で詳細に説明するが、スローは、タイプ・ヘッダ、およびタイプ特定データを含む。
【０１８６】
図１９Ａは、一実施形態の下における、プールの中にあるプロテインのブロック図である。プロテインは、長さヘッダ（「プロテイン長」）、ディスクリップ・オフセット、インジェスト・オフセット、ディスクリップ、およびインジェストを含む。ディスクリップは、オフセット、長さ、およびスローを含む。インジェストは、オフセット、長さ、およびスローを含む。
【０１８７】
プロテインは、本明細書において記載する場合、プロセッサ間で共有する、あるいはバスまたはネットワークまたはその他の処理構造を跨いで移動する必要があるデータをカプセル化するメカニズムのことである。一例として、プロテインは、ユーザ・インターフェース・イベントに対応するまたは関連するデータを含むデータの輸送および操作のための改良メカニズムを提供する。具体的には、一実施形態のユーザ・インターフェース・イベントは、前述したジェスチャ・インターフェースのそれらを含む。更に別の例として、プロテインは、限定ではく、グラフィクス・データまたはイベント、および状態情報等その他多数を含むデータの輸送および操作のための改良メカニズムを提供する。プロテインは、構造化レコード・フォーマット、およびレコードを操作するための１組の関連方法である。本明細書において用いる場合、レコードの操作は、データを構造に入力すること、構造からデータを取り出すこと、およびデータのフォーマットおよび存在を問い合わせることを含む。プロテインは、種々のコンピュータ言語で書かれたコードを通じて用いられるように構成されている。また、プロテインは、本明細書において記載するような、プールの基本的構築ブロックとなるように構成されている。更に、プロテインは、それらが含むデータを不変のまま維持しつつ、プロセッサ間そしてネットワークを跨いで自然に移動できるように構成されている。
【０１８８】
従来のデータ輸送メカニズムとは対照的に、プロテインにはタイプが決められていない。タイプは決められていないが、プロテインは、「タイプ状」機能を実装することに加えて、強力で柔軟性のあるパターン照合装置(facility)を備えている。また、本明細書に記載するように構成されているプロテインは、本質的に多点型でもある（しかし、二点間形態も、多点伝送の部分集合として容易に実現される）。加えて、プロテインはメモリ内、ディスク上、およびワイヤ（ネットワーク）上フォーマット間で異なることがない「ユニバーサル」レコード・フォーマットを定義する（即ち、実行する任意の最適化の種類だけが異なる）。
【０１８９】
図１５および図１９Ａを参照すると、一実施形態のプロテインは、バイトの線形シーケンスである。これらのバイトの中には、ディスクリップ・リストと、１組のキー値対がカプセル化されている。キー値対をインジェストと呼ぶ。ディスクリップ・リストは、綿密(elaborate)であるが効率的にフィルタ可能なプロテイン毎のイベント記述を任意に含む。インジェストは、１組のキー値対を含み、これらがプロテインの実際の内容を構成する。
【０１９０】
プロテインのキー値対との関わり、ならびにネットワークに都合がよい(network-friendly)多点データ相互交換に関する中核的観念の一部は、「タプル」の概念を特別に許可する(priviledge)もっと簡単なシステム（例えば、Linda、Jini）と共有される。プロテインは、タプル指向システムとは様々な面で大きく異なり、その相違には、標準的、最適化可能なパターン照合基盤を設けるためにディスクリップ・リストを用いることが含まれる。また、プロテインがタプル指向システムと異なるのは、種々の記憶および言語構造に適したレコード・フォーマットの厳格な仕様、そしてそのレコード・フォーマットに対する「インターフェース」の色々な特定的な実施態様である。
【０１９１】
プロテインの説明に戻って、プロテインの最初の４バイトまたは８バイトは、プロテインの長さを指定する。一実施形態では、長さは１６バイトの倍数でなければならない。この１６バイトの粒度により、バイト整合およびバス整合効率が現在のハードウェアでも達成可能であることを確保する。本来「４ワード整合」型でないプロテインには、任意のバイトを詰めこんで、その長さが１６バイトの倍数となるようにする。
【０１９２】
プロテインの長さ部分は、次のフォーマットを有する。ビッグ・エンディアン・フォーマット(big-endian format)で長さを指定する３２ビット。その下位４ビットはマクロ・レベルのプロテイン構造特性を示すフラグとして機能する。プロテインの長さが２＾３２バイトよりも大きい場合、その次に来る更に別の３２ビット。
【０１９３】
一実施形態における１６バイト整合条件は、最初の４バイトの最下位ビットがフラグとして利用可能であることを意味する。そして、このため、最下位の３ビット・フラグは、プロテインの長さが最初の４バイトで表現できるのか、または８バイト必要なのかを示し、プロテインがビッグ・エンディアンまたはリトル・エンディアンの内どちらのバイト順序付けを用いるのかを示し、更に、プロテインが標準的構造または非標準的構造のどちらを採用するのかをそれぞれ示すが、プロテインはこのように限定されるのではない。４番目のフラグ・ビットは、今後の使用のために保存されている。
【０１９４】
８バイト長フラグ・ビットがセットされている場合、プロテインの長さを計算するには、次の４バイトを読み取り、これらをビッグ・エンディアン、８バイト整数の上位バイトとして用いる（４バイトは既に読み取られ、下位部分を供給する）。リトル・エンディアン・フラグがセットされている場合、プロテインの中にある全ての二進数値データをリトル・エンディアンとして解釈する（それ以外の場合は、ビッグ・エンディアン）。非標準フラグ・ビットがセットされている場合、プロテインの残りの部分は、以下で説明する標準構造に従わない。
【０１９５】
非標準プロテイン構造については、プロテインおよびプールを用いるシステム・プログラマには、非標準プロテイン・フォーマットを記述しこれに同期するための種々の方法が利用可能であること、そしてこれらの方法は、空間または計算サイクルが制限されているときに有用となることができることを除いて、ここではこれ以上論じない。例えば、一実施形態では、最短のプロテインは１６バイトである。標準フォーマットのプロテインは、実際のペイロード・データをこれらの１６バイトにはめ込むことは全くできない（その一番大きい部分は既に、プロテインのコンポーネント・パーツの位置を記述することが任されている）。しかし、非標準フォーマット・プロテインは、その１６バイトの内１２バイトをデータに用いることができると考えられる。２つのアプリケーションがプロテインを交換すると、これらが発信するいずれの１６バイト長プロテインでも常に１２バイトを含み、これらは、例えば、リアル・タイム・アナログ／ディジタル変換器からの１２個の８ビット・センサ値を表すことを相互に決定することができる。
【０１９６】
長さヘッダの直後には、プロテインの標準構造では、更に２つの可変長整数値が現れる。これらの数値は、それぞれ、ディスクリップ・リストにおける最初のエレメント、および最初のキー値対（インジェスト）に対するオフセットを指定する。これらのオフセットは、本明細書では、それぞれディスクリップ・オフセットおよびインジェスト・オフセットとも呼ぶ。これらの数値の各クアッド(quad)のバイト順序は、プロテイン・エンディアンネス・フラグ・ビット(protein endianness flag bit)によって指定される。各々について、最初の４バイトの最上位ビットは数値が４または８バイト幅のどちらであるかを決定する。最上位ビット（ｍｓｂ）がセットされている場合、最初の４バイトは二重ワード（８バイト）数値の最上位バイトとなる。ここでは、これを「オフセット形式」と呼ぶ。ディスクリップおよび対を指し示す別個のオフセットを用いることにより、ディスクリップおよび対を異なるコード・パスによって扱うことが可能となり、例えば、ディスクリップ・パターン照合およびプロテイン・アセンブリに関する個々の最適化を行うことができるようになる。また、これら２つのオフセットがプロテインの先頭にあるため、様々な有用な最適化に対処できる。
【０１９７】
殆どのプロテインは８バイト長またはポインタを必要とする程大きくないので、一般に長さ（とフラグ）および２つのオフセット数値は、プロテインの最初の３バイトを占めるに過ぎない。多くのハードウェアまたはシステム・アーキテクチャでは、最初のバイトを超えるある数のバイトのフェッチ即ちリードは、「自由」である（例えば、１６バイトは、セル・プロセッサ(Cell processor)の主要バスを介して引き込むには、１バイトと全く同じ数のクロック・サイクルを要する。）
多くの場合、プロテイン内部において実施態様特定またはコンテキスト特定のキャッシング(caching)またはメタデータを許容することは有用である。オフセットの使用により、プロテインの先頭付近に、任意のサイズの「孔」を作成し、その中にこのようなメタデータを割り込ませることができる。８バイトのメタデータを利用することができる実施態様では、多くのシステム・アーキテクチャ上でこれらのバイトを、長さヘッダをフェッチする毎に１つのプロテインに対して自由に得ることができる。
【０１９８】
ディスクリップ・オフセットは、プロテインの先頭と最初のディスクリップ・エントリとの間のバイト数を指定する。各ディスクリップ・エントリは、次のディスクリップ・エントリまでのオフセット（勿論、オフセット形態で）を備えており、その後に可変幅の長さフィールド（これもオフセット・フォーマットで）が続き、更にその後にスローが続く。これ以上ディスクリップがない場合、オフセットは、規則上、０の４バイトとなる。それ以外の場合、オフセットは、当該ディスクリップ・エントリの開始と次との間のバイト数を指定する。長さフィールドは、バイト単位で、スローの長さを指定する。
【０１９９】
殆どのプロテインでは、各ディスクリップは、スロー・ストリング様式でフォーマットしたストリングであり、４バイトの長さ／タイプ・ヘッダを有し、最上位ビットがセットされ、下位３０ビットだけが長さを指定するために用いられ、その後に、ヘッダが指示する数のデータ・バイトが続く。通常通り、長さヘッダはそのエンディアンネスをプロテインから取り込む。バイトは、ＵＴＦ−８キャラクタをエンコードすると仮定する（したがって、キャラクタ数は必ずしもバイト数と同じではないことを注記しておく）。  
【０２００】
インジェスト・オフセットは、プロテインの先頭と最初のインジェスト・エントリとの間のバイト数を指定する。各インジェスト・エントリは、次のインジェスト・エントリまでのオフセット（オフセット・フォームで）を備えており、その後にこの場合も長さフィールドおよびスローが続く。インジェスト・オフセットは、次のディスクリップ・エントリの代わりに次のインジェスト・エントリを指し示すことを除いて、ディスクリップ・オフセットと機能的には同一である。
【０２０１】
殆どのプロテインでは、各インジェストは、スロー・コンス・タイプ(slaw cons type)であり、二値リストを備えている。このリストは通常キー／値対として用いられる。スロー・コンス・レコードは、最上位から２番目のビットがセットされており、下位３０ビットだけが長さを指定するために用いられる４バイトの長さ／タイプ・ヘッダと、４バイトの値（２番目）エレメントの先頭までのオフセットと、前述の４バイトのキー・エレメント長と、キー・エレメントに対するスロー・レコードと、４バイト長の値エレメントと、最後に前述の値エレメントに対するスロー・レコードとを備えている。
【０２０２】
一般に、コンス・キーはスロー・ストリングである。数個のプロテインおよびスロー・コンス長ならびにオフセット・フィールドを跨いでデータを複製することにより、工夫(refinement)および最適化の一層多くの機会が得られる。
【０２０３】
前述のように、類型に分けたデータをプロテイン内部に埋め込むために一実施形態において用いられる構造は、タグ付きのバイト・シーケンス指定および抽象化(abstraction)であり、「スロー」と呼ばれる（複数形は「slawx」となる）。スローは、類型に分けた（恐らくは、集計）データの一片を表すバイトの線形シーケンスであり、プログラミング言語特定ＡＰＩと関連付けられている。ＡＰＩは、スロークスを作成し、修正し、メモリ空間、記憶媒体、およびマシンの間で移動させることができる。スロー・タイプ方式(slaw type scheme)は、拡張可能でできるだけ軽量であり、あらゆるプログラミング言語からでも用いることができる共通基盤となることを意図している。
【０２０４】
効率的な、大規模プロセス間通信メカニズムを構築することの要望が、スロー・コンフィギュレーションの原動力(driver)である。従来のプログラミング言語は、精巧なデータ構造およびタイプ機能を備えており、プロセス特定のメモリ・レイアウトでは申し分なく動作するが、データをプロセッサ間で移動させたり、ディスク上に格納することが必要となると、これらのデータ表現はいつでも決まって分解する。スロー・アーキテクチャは、第１に、プロセス間通信に対する、非常に効率的で、マルチ・プラットフォームに都合がよい低レベル・データ・モデルである。
【０２０５】
しかし、更に一層重要なのは、スロークスが、プロテインと共に、今後の計算機ハードウェア（マイクロプロセッサ、メモリ・コントローラ、ディスク・コントローラ）の開発に影響を及ぼし、それを可能にするように構成されていることである。例えば、広く一般に入手可能なマイクロプロセッサの命令セットに、多少の具体的な追加を行うことにより、スロークスが、殆どのプログラミング言語において用いられている方式と同様に、単一プロセス、メモリ内データ・レイアウトに対しても効率的となることが可能になる。
【０２０６】
各スローは、可変長のタイプ・ヘッダと、その後に続くタイプ特定データ・レイアウトとを備えている。例えば、Ｃ、Ｃ＋＋、およびRubyにおけるスロー機能を全てサポートする実施形態の一例では、タイプは、各言語からアクセス可能なシステム・ヘッダ・ファイルにおいて定義されているユニバーサル整数(universal integer)によって示される。更に精巧化し柔軟性を高めたタイプ解明機能(type resolution functionality)、例えば、ユニバーサル・オブジェクトＩＤおよびネットワーク参照による間接的類型決定も可能である。
【０２０７】
一実施形態のスロー・コンフィギュレーションは、スロー・レコードを、例えば、RubyおよびＣ＋＋双方から言語に優しい様式でオブジェクトとして用いることを可能にする。Ｃ＋＋コンパイラ外部の１組のユーティリティが、スロー・バイト・レイアウトの健全性をチェックし、個々のスロー・タイプに特定的なヘッダ・ファイルおよびマクロを作成し、Rubyに対するバインディング(binding)を自動的に発生する。その結果、正しく構成したスロー・タイプは、１つのプロセスの中から用いた場合でも、非常に効率的となる。プロセスのアクセス可能なメモリのいずれの場所におけるいずれのスローでも、コピーや「非直列化」ステップがなくても、アドレスすることができる。
【０２０８】
一実施形態のスロー機能は、以下の内１つ以上を実行するＡＰＩ機能を含む。具体的なタイプの新たなスローを作成する。ディスク上またはメモリ内におけるバイトからのスローへの言語特定参照を作成または構築する。タイプに特定の様式でスロー内にデータを埋め込む。スローのサイズを問い合わせる。スロー内部からデータを引き出す。スローのクローンを作成する。そして、スロー内部にある全てのデータのエンディアンネスおよびその他のフォーマット属性を変換する。スローのあらゆる種(species)が以上の挙動を実施する。
【０２０９】
図１９Ｂ−１および図１９Ｂ−２は、一実施形態の下におけるスロー・ヘッダのフォーマットを示す。以下にスローの詳細な説明を行う。
【０２１０】
各スローの内部構造は、タイプ解明、カプセル化データへのアクセス、および当該スロー・インスタンスについてのサイズ情報の各々を最適化する。一実施形態では、１組のスロー・タイプ全体は、設計上、最小限の全てが揃っており、スロー・ストリング、スロー・コンス（即ち、ダイアッド(dyad)）、スロー・リスト、およびスロー数値オブジェクトを含む。スロー数値オブジェクト自体は、半ダース程度の基本的な属性の組み合わせ(permutation)として理解される、広範な１組の個別数値タイプを表す。いずれのスローでも、その他の基本的プロパティはそのサイズである。一実施形態では、スロークスは、４の倍数に量子化したバイト長を有し、これらの４バイト・ワードを、ここでは「クアッド」と呼ぶ。一般に、このようなクアッドに基づくサイズ決定により、スロークスを最新のコンピュータ・ハードウェア・アーキテクチャのコンフィギュレーションと正確に整合させる。
【０２１１】
一実施形態では、各スローの最初の４バイトは、ヘッダ構造を備えている。ヘッダ構造は、タイプ記述およびその他のメタ情報をエンコードし、特定的なタイプの意味を特定のビット・パターンに帰属させる(ascribe)。例えば、スロー・ヘッダの最初の（最上位）ビットは、そのスローのサイズ（クアッド・ワード単位の長さ）が最初の４バイトのタイプ・ヘッダに従うか否か指定するために用いることができる。このビットがセットされている場合、スローのサイズが当該スローの次の４バイト（例えば、バイト５から８まで）に明示的に記録されていることが分かる。スローのサイズが、４バイトでは表現できないような場合（即ち、サイズが２の３２乗以上である場合）、スローの最初の４バイトの次の最上位ビットもセットする。これは、スローが８バイト（４バイトではなく）長を有することを意味する。その場合、検査プロセスが、序数バイト(ordinal byte)５から１２までに格納されているスローの長さを発見する。他方で、スロー・タイプの数値が小さいことは、多くの場合、完全に指定した類型ビット・パターンが、４バイトのスロー・ヘッダにおける多くのビットを「未使用のまま残してある」ことを意味し、そのような場合、これらのビットは、スローの長さをエンコードするために用いてもよく、そうしなければ必要となるはずのバイト（５から８まで）を取っておくことができる。
【０２１２】
例えば、一実施形態では、スロー・ヘッダの最上位ビット（「長さ従属」フラグ）をセットしないままにしておき、次のビットをセットして、そのスローが「微小コンス」であることを示し、この場合、スローの長さ（クアッド単位）を残りの３０ビットにエンコードする。同様に、「微小ストリング」は、ヘッダにおけるパターン００１によって印され、スロー・ストリングの長さを表すために、２９ビットが残され、ヘッダにおける最初の０００１が「微小リスト」を記述する。これは、２８ビットの利用可能長表現ビットのために、サイズが２から２８クアッドまでのスロー・リストとすることができる。「最大ストリング」（あるいはコンスまたはリスト）は、ヘッダに異なるビット・シグネーチャを有し、ヘッダの最上位ビットは必ずセットされる。何故なら、スロー長はバイト５から８（または、極端な場合には１２）において別個にエンコードされるからである。尚、プラズマ実施態様は、スローの組立時に、これらの構造の「微小」バージョンまたは「最大」バージョンのどちらを採用すべきか「決定する」（決定は、最終的なサイズが利用可能な微小ビットに「納まるか」否かに基づく）が、最大−対−微小の詳細は、プラズマ実施態様のユーザには隠されている。ユーザは、スロー・ストリング、またはスロー・コンス、またはスロー・リストを用いていることしか知らないし、そのことしか気に留めない。
【０２１３】
一実施形態では、数値スロークスは、最初のヘッダ・パターン００００１によって示される。後続のヘッダ・ビットは、任意の順列に組み合わせることができる１組の直交プロパティを表すために用いられる。一実施形態では、数値が（１）浮動小数点、（２）複素数、（３）符号なし、（４）「広い」、（５）「太くて短い」(stumpy)であるか否かを示すために、５つのこのようなキャラクタ・ビットを用いるが、これらに限定されるのではない（（４）「広い」および（５）「太くて短い」の順序を変えて、８、１６、３２、および６４ビット数表現を示す）。２つの追加ビット（例えば、（７）および（８））は、カプセル化した数値データが、２−、３−、または４−エレメント・ベクトルであることを示す（双方のビットが０の場合、数値が「１−エレメント・ベクトル」（即ち、スカラー）であることを示唆する）。この実施形態では、４番目のヘッダ・バイトの８ビットを用いて、カプセル化した数値データのサイズを（クアッド単位ではなく、バイト単位で）エンコードする。このサイズのエンコード処理は、１から２５６までの間のいずれのサイズでも表すことができるように、１だけずらされる。最後に、２つのキャラクタ・ビット（例えば、（９）および（１０））を用いて、数値データが個々の数値エンティティの配列をエンコードすることを示す。数値エンティティの各々は、キャラクタ・ビット（１）から（８）までによって記述されるタイプのものである。アレイの場合、個々の数値エンティティには、各々、追加のヘッダが添付されず、１つのヘッダおよび恐らくは、明示的なスロー・サイズ情報に続く連続データとしてパックされる。  
【０２１４】
この実施形態では、単純かつ効率的なスローの複製（バイト毎のコピーとして実施することができる）、および非常に単純で効率的なスローの比較が可能となる（この実施形態では、連続と見なされる構成バイトの各々に１対１の一致がある場合に限って、２つのスロークスは同一となる）。後者のプロパティは、例えば、プロテイン・アーキテクチャの効率的な実現には重要である。その重要なそして波及する(pervasive)特徴は、プロテインのディスクリップ・リスト全体を検索できること、または「リスト上で照合」できることである。
【０２１５】
更に、本明細書における実施形態は、集計スロー形態（例えば、スロー・コンスおよびスロー・リスト）を簡単かつ効率的に作成することを可能にする。例えば、一実施形態では、スロー・コンスを、いずれのタイプでもよく、これら自体集計を含む、２つの成分スロークスから次のように構築する。（ａ）各成分スローのサイズを問い合わせ、（ｂ）２つの成分スロークスのサイズ、およびヘッダ・プラス・サイズ構造に必要な１、２、または３クアッドの和に等しいサイズのメモリを割り当て、（ｃ）最初の４、８、または１２バイトにスロー・ヘッダ（およびサイズ情報）を記録し、次いで（ｄ）成分スロークスのバイトを順番に、直後に続くメモリにコピーする。重要なのは、このような組立ルーチンは、２つの成分スロークスのタイプについて何も知る必要がなく、それらのサイズ（そして、バイトのシーケンスとしてのアクセス可能性）だけが問題であることである。同じプロセスは、スロー・リストの作成にも関与する。スロー・リストは、（恐らくは）異質なタイプの任意の多くのサブ・スロークス(sub-slawx)の順序付けしたカプセル化である。
【０２１６】
メモリにおける連続バイトとしてのスロー・システムの基本的フォーマットの更に別の成果が、「横断」活動(traversal activities)と関連して得られる。反復使用パターンが、例えば、スロー・リストに格納されている個々のスロークスへの順次アクセスを用いる。プロテイン構造内部におけるディスクリップおよびインジェストを表す個々のスロークスも同様に横断しなければならない。このような操作は、驚く程単純かつ効率的な方法で遂行される。つまり、スロー・リストにおける次のスローに「進み」、現在のスローの長さをそのメモリ位置に追加し、結果的に得られたメモリ位置が、次のスローのヘッダと同一となる。このような簡素さが可能なのは、スローおよびプロテインの設計が「間接」を避けるからである。つまり、ポインタがなく、データは単純にその全体が本来の場所に存在する。
【０２１７】
スロー比較の時点までに、プラズマ・システムの完全な実施態様は、異なるオペレーティング・システム、ＣＰＵ、およびハードウェア・アーキテクチャに跨ってそしてこれらの間において、異なり互換性のないデータ表現方式の存在を承認しなければならない。このような相違の主要なものには、バイト順序付け方針（例えば、リトル−エンディアン対ビッグ−エンディアン）および浮動小数点表現が含まれ、その他の相違も存在する。プラズマ仕様では、スロークスによってカプセル化したデータが解釈可能である(interprable)（即ち、スローを検査している元のアーキテクチャまたはプラットフォームのネーティブ・フォーマットで現れなければならない）。この要件は、一方、プラズマ・システム自体がデータ・フォーマット変換の責任を負うことを意味する。しかしながら、仕様では、スローが、それを検査するかもしれない実行中のプロセスに対して「完全に可視」になる前に変換を行うことしか規定していない。したがって、どの時点でこのようなフォーマットｃ変換を実行するかを選択するのは、個々の実施態様次第となる。２つのしかるべき手法があり、それは、（１）個々のスローがパックされていたプロテインから「引き出す」際に、または（２）プロテインが入っていたプールからそのプロテインを抽出する際に、当該プロテインの中にあるスロー全てについて同時に、スロー・データ・ペイロードをローカル・アーキテクチャのデータ・フォーマットに準拠させることである。尚、変換規定は、ハードウェア補助実施態様の可能性も考慮することを注記しておく。例えば、明示的プラズマ能力によって構築したネットワーキング・チップセットは、受信システムの既知の特性に基づいて、インテリジェントにそして「送信の時点」にフォーマット変換を実行することを選択することができる。あるいは、送信のプロセスがデータ・ペイロードを基軸フォーマットに変換することもでき、受信プロセスは、対称的に基軸フォーマットから「ローカル」フォーマットに変換する。別の実施形態では、「メタル」において(at the metal)フォーマット変換を実行する。これが意味するのは、データは、ローカル・メモリの中であっても、常に基軸フォーマットで格納されており、データをメモリから引き出し隣接するＣＰＵのレジスタに入れるときに、メモリ・コントローラ・ハードウェア自体が変換を実行する。
【０２１８】
一実施形態の最小（そして読み取り専用）プロテインの実施態様は、プロテインを利用する１つ以上のアプリケーションまたはプログラミング言語における動作または挙動を含む。図１９Ｃは、一実施形態の下でプロテインを用いるための流れ図６５０である。動作を開始すると、６５２においてプロテインの長さをバイト単位で問い合わせる。６５４において、ディスクリップ・エントリの数を問い合わせる。６５６において、インジェストの数を問い合わせる。６５８において、インデックス番号によってディスクリップ・エントリを引き出す。６６０において、インデックス番号によってインジェストを引き出す。
【０２１９】
また、本明細書において記載する実施形態は、プロテインを作成してデータを充填させる基本的な方法、プログラマによって共通のタスクを容易に行えるようにするヘルパ方法、および最適化を遂行するためのフック(hook)も定める。図１９Ｄは、一実施形態の下においてプロテインを作成する、即ち、発生するための流れ図６７０である。動作は、６７２における新たなプロテインの作成から開始する。６７４において、一連のディスクリップ・エントリを添付する。また、６７６においてインジェストも添付する。６７８において、一致するディスクリップの存在を問い合わせ、６８０において、一致するインジェスト・キーの存在を問い合わせる。インジェスト・キーが得られたなら、６８２において、インジェスト値を引き出す。６８４において、ディスクリップ全体でパターン照合を実行する。６８６において、プロテインの先頭付近に、非構造化メタデータを埋め込む。
【０２２０】
前述のように、スロークスはプロセス間交換のための低レベルのデータ定義を規定し、プロテインは問い合わせおよびフィルタ処理のために中間レベルの構造およびフックを規定し、プールは高レベルの編成およびアクセス・セマンティックスについて規定する。プールは、プロテインのためのレポジトリであり、線形シーケンシング(linear sequencing)および状態キャッシング(state caching)に備えている。また、プールは、多数のプログラムまたは多数の異なる種類のアプリケーションによるマルチ・プロセス・アクセスにも備えている。更に、プールは、１組の共通な、最適化可能なフィルタ処理およびパターン照合挙動にも備えている。
【０２２１】
一実施形態のプールは、数万ものプロテインを収容することができ、状態を維持するように機能することができるので、個々のプロセスはマルチ・プロセス・プログラム・コードに共通する厄介なブックキーピングの多くの負担を軽減することができる。プールは、利用可能な過去のプロテインの大きなバッファを維持または保持し、プラトニック・プール(Platonic pool)は明示的に無限であるので、関与するプロセスは、プールにおいて意のままに逆方向および順方向の双方に走査することができる。バッファのサイズは、実施態様に左右されるが、勿論、慣例的な仕様では、プロテインをプールの中に数時間または数日保持できることが多い。
【０２２２】
本明細書において記載するプール使用の最も慣例的な様式では、既存のプロセス間通信フレームワークが採用する機械論的(mechanistic)二点間手法とは対照的に、生物的比喩に従う。プロテインという名称は、生物的発想を暗示する。生物組織における化学的蛋白質が、多数の細胞因子(cellular agent)によるパターン照合およびフィルタ処理に利用可能であるのと同様に、プールの中にあるデータ・プロテインは、多数の計算プロセスによる柔軟な問い合わせおよびパターン照合に利用可能である。
【０２２３】
２つの付加的な抽象化が生物的比喩に同調し(lean)、「ハンドラ」の使用およびゴルジ・フレームワーク(Golgi framework)を含む。プールに関与するプロセスは、一般に、多数のハンドラを作成する。ハンドラは、比較的小さい１群のコードであり、照合条件をハンドル挙動と関連付ける。１つ以上のハンドラをプールに類別することにより、プロセスは、状態をカプセル化し新たなプロテインに反応する、柔軟なコール・バック・トリガ(call-back trigger)を設定する。
【０２２４】
数個のプールに関与するプロセスは、一般に、抽象的ゴルジ・クラスから継承する。ゴルジ・フレームワークは、多数のプールおよびハンドラを管理するための多くの有用なルーチンを提供する。また、ゴルジ・クラスは、親−子関係もカプセル化し、プールを用いないローカル・プロテイン交換のためのメカニズムを提供する。
【０２２５】
一実施形態の下で提供するプールＡＰＩは、種々の方法でプールを実現し、システム特定の目標、ならびに所与のハードウェアおよびネットワーク・アーキテクチャの利用可能な処理能力双方を考慮に入れるように構成されている。プールが依存する２つの基礎的なシステムの常設機構(provision)は、記憶装置およびプロセス間通信手段である。本明細書において記載する、現存する(extant)システムは、共有メモリ、仮想メモリ、および記憶装置用ディスク、ならびにプロセス間通信のためのＩＰＣクエリおよびＴＣＰ／ＩＰソケットの柔軟な組み合わせを用いる。
【０２２６】
一実施形態のプールの機能には、限定ではなく、以下が含まれる。プールに関与する。プロテインをプールの中に入れる。次の未見プロテインをプールから引き出す。プール内の内容（例えば、プロテイン）を逆回しまたは早送りする。加えて、プールの機能には、限定ではなく、以下も含むことができる。プロセスに対するストリーミング・プール・コール・バックを設定する。ディスクリップまたはインジェスト・キーの特定のパターンと一致するプロテインを選択的に引き出す。ディスクリップまたはインジェスト・キーの特定のパターンと一致するプロテインについて逆方向および順方向に走査する。
【０２２７】
前述のプロテインは、他のアプリケーションとプロテイン・データ・コンテンツを共有する方法として、プールに供給される。図２０は、一実施形態の下において、スロークス、プロテイン、およびプールを用いたデータ交換を含む処理環境のブロック図である。この環境例は、前述のようにスロークス、プロテイン、およびプールの使用によりデータを共有する３つのデバイス（例えば、デバイスＸ、デバイスＹ、およびデバイスＺ、ここでは纏めて「デバイス」と呼ぶ）を含む。これらのデバイスの各々は、３つのプール（例えば、プール１、プール２、プール３）に結合されている。プール１は、それぞれのデバイスから当該プールに提供または転送された多数のプロテイン（例えば、プロテインＸ１、プロテインＺ２、プロテインＹ２、プロテインＸ４、プロテインＹ４）を含む（例えば、プロテインＺ２は、デバイスＺによってプール１に転送または提供された等）。プール２は、それぞれのデバイスから当該プールに提供または転送された多数のプロテイン（例えば、プロテインＺ４、プロテインＹ３、プロテインＺ１、プロテインＸ３）を含む（例えば、プロテインＹ３は、デバイスＹによってプール２に転送または提供された等）。プール３は、それぞれのデバイスから当該プールに供給または転送された多数のプロテイン（例えば、プロテインＹ１、プロテインＺ３、プロテインＸ２）を含む（例えば、プロテインＸ２は、デバイスＸによってプール３に転送または提供された等）。前述の例では、３つのプール間に結合または接続されている３つのデバイスが含まれるが、あらゆる数のデバイスを、あらゆる数のプール間に如何様にでもまたはいずれの組み合わせでも結合または接続することができ、いずれのプールも、あらゆる数または組み合わせのデバイスから提供されるあらゆる数のプロテインを含むことができる。この例のプロテインおよびプールについては、図１８から図２３までを参照しながら先に説明した。
【０２２８】
図２１は、多数のデバイスと、これらのデバイスの１つ以上で走る多数のプログラムを含み、一実施形態の下において、プラズマ構造(plasma construct)（例えば、プール、プロテイン、およびスロー）を用いることにより、多数の実行中のプログラムが、デバイスによって発生したイベントを共有し、集合的に応答することを可能にする処理環境のブロック図である。このシステムは、マルチ・ユーザ、マルチ・デバイス、マルチ・コンピュータ双方向処理制御状況または構成の一例に過ぎない。更に特定すれば、この例では、多数のデバイス（例えば、デバイスＡ、Ｂ等）およびこれらのデバイス上で走る多数のプログラム（例えば、appsAA-AX、appsBA-ＢＸ等）を備えている双方向処理システムが、プラズマ構造（例えば、プール、プロテイン、およびスロー）を用いて、実行中のプログラムが、これらの入力デバイスによって発生したイベントを共有し、集合的にこれらのイベントに応答することを可能にする。
【０２２９】
この例では、各デバイス（例えば、デバイスＡ、Ｂ等）は、それぞれのデバイス上で走っているプログラム（例えば、appsAA-AX、appsBA-BX等）が発生したまたは出力された離散生データを、プラズマ・プロテインに変換し、これらのプロテインをプラズマ・プールに貯入する。例えば、プログラムＡＸはデータまたは出力を発生し、この出力をデバイスＡに供給する。一方、デバイスＡはこの生データをプロテイン（例えば、プロテイン１Ａ、プロテイン２Ａ等）に変換し、これらのプロテインをプールに貯入する。別の例として、プログラムＢＣがデータを発生し、このデータをデバイスＢに供給する。一方、デバイスＢはこのデータをプロテイン（例えば、プロテイン１Ｂ、プロテイン２Ｂ等）に変換し、これらのプロテインをプールに貯入する。
【０２３０】
各プロテインは、アプリケーションが発生し、プログラム自体についての情報を特定するデータまたは出力を指定するディスクリップ・リストを収容する。可能な場合には、プロテイン・ディスクリップは出力イベントまたは行動について一般的な意味論的意味(semantic meaning)を認めることもできる。プロテインのデータ・ペイロード（例えば、インジェスト）は、プログラム・イベントについての１組の有用な状態情報全体を搬送する。
【０２３１】
前述のように、プロテインは、プログラムまたはデバイスの種類には関係なく、プールに結合または接続されているあらゆるプログラムまたはデバイスが使用するために、プールにおいて利用可能となっている。したがって、あらゆる数のコンピュータ上で走っているあらゆる数のプログラムでも、入力プールからイベント・プロテインを抽出することができる。これらのデバイスは、プールからプロテインを抽出するためには、ローカル・メモリ・バスまたはネットワーク接続のいずれかを通じて、プールに関与することができるだけでよい。これによって即座に得られる結果は、イベントを使用または解釈するプロセスから、処理イベントを発生する役割を担うプロセスを切断できるという利点である。別の結果は、イベントのソースおよびコンシューマ(consumer)を多重化し、デバイスを一人で制御できるように、または数人（例えば、プラズマに基づく入力フレームワークは、多くの同時ユーザをサポートする）で同時に用いることができるようにしつつ、結果的に得られるイベント・ストリームは多数のイベント・コンシューマに見えるようになることである。
【０２３２】
一例として、デバイスＣは１つ以上のプロテイン（例えば、プロテイン１Ａ、２Ａ等）をプールから抽出することができる。プロテインの抽出に続いて、デバイスＣは、ディスクリップのスローおよびプロテインのインジェストから引き出したまたは読み出したプロテインのデータを、プロテイン・データが対応する処理イベントにおいて用いることができる。別の例として、デバイスＢは、プールから１つ以上のプロテイン（例えば、プロテイン１Ｃ、プロテイン２Ａ等）を抽出することができる。プロテインの抽出に続いて、デバイスＢは、プロテイン・データが対応する処理イベントにおいて、プロテインのデータを用いることができる。
【０２３３】
プールに結合または接続されているデバイスおよび／またはプログラムは、プロテインの特定のシーケンスを求めて、プールの中を逆方向および順方向に進む(skim)こともできる。これは、例えば、ある種のパターンと一致するプロテインの出現を待ち、次いで逆方向に進み、このプロテインがある種の他のものと共に出現したか否か判断するようにプログラムを設定する際に、有用となる場合が多い。この入力プールに格納されているイベント履歴を利用する装置は、多くの場合、状態管理コードの書き込みを不要としたり、少なくともこのような望ましくない符号化パターンに対する依存を著しく低減する。
【０２３４】
図２２は、多数のデバイスと、これらのデバイスの１つ以上で走る多数のプログラムを含み、一代替実施形態の下において、プラズマ構造(plasma construct)（例えば、プール、プロテイン、およびスロー）を用いることにより、多数の実行中のプログラムが、デバイスによって発生したイベントを共有し、集合的に応答することを可能にする処理環境のブロック図である。このシステムは、マルチ・ユーザ、マルチ・デバイス、マルチ・コンピュータ双方向処理制御状況または構成の一例に過ぎない。更に特定すれば、この例では、多数のデバイス（例えば、デバイスＡおよびＢにそれぞれ結合されているデバイスＸおよびＹ）および１つ以上のコンピュータ（例えば、デバイスＡ、デバイスＢ等）上で走る多数のプログラム（例えば、appsAA-AX、appsBA-ＢＸ等）を備えている双方向処理システムが、プラズマ構造（例えば、プール、プロテイン、およびスロー）を用いて、実行中のプログラムが、これらの入力デバイスによって発生したイベントを共有し、集合的にこれらのイベントに応答することを可能にする。
【０２３５】
この例では、各デバイス（例えば、デバイスＡおよびＢにそれぞれ結合されているデバイスＸおよびＹ）は、デバイス・ハードウェア（例えば、デバイスＸ、デバイスＡ、デバイスＹ、デバイスＢ等）が発生した離散生データをプラズマ・プロテインに変換し、これらのプロテインをプラズマ・プールに貯入するそれぞれのデバイス（例えば、デバイスＡ、デバイスＢ等）上にホストされている１つ以上のプログラムの下で、またはこれらと連携して動作するように管理および／または結合されている。例えば、デバイスＡ上にホストされているアプリケーションＡＢと連携して動作するデバイスＸは、生データを発生し、この離散生データをプロテイン（例えば、プロテイン１Ａ、プロテイン２Ａ等）に変換し、これらのプロテインをプールに貯入する。別の例として、デバイスＡ上にホストされているアプリケーションＡＴと連携して動作するデバイスＸが、離散生データをプロテイン（例えば、プロテイン１Ａ、プロテイン２Ａなど）に変換し、これらのプロテインをプールに貯入する。更に別の例として、デバイスＣ上にホストされているアプリケーションＣＤと連携して動作するデバイスＺは、生データを発生し、この離散生データをプロテイン（例えば、プロテイン１Ｃ、プロテイン２Ｃ等）に変換し、これらのプロテインをプールに貯入する。
【０２３６】
各プロテインは、入力デバイスが登録し、デバイス自体についての情報を特定する行動を指定するディスクリップ・リストを収容する。可能な場合には、プロテイン・ディスクリップはデバイスの行動について一般的な意味論的意味(semantic meaning)を認めることもできる。プロテインのデータ・ペイロード（例えば、インジェスト）は、デバイス・イベントについての１組の有用な状態情報全体を搬送する。
【０２３７】
前述のように、プロテインは、プログラムまたはデバイスの種類には関係なく、プールに結合または接続されているあらゆるプログラムまたはデバイスが使用するために、プールにおいて利用可能となっている。したがって、あらゆる数のコンピュータ上で走っているあらゆる数のプログラムでも、入力プールからイベント・プロテインを抽出することができる。これらのデバイスは、プールからプロテインを抽出するためには、ローカル・メモリ・バスまたはネットワーク接続のいずれかを通じて、プールに関与することができるだけでよい。これによって即座に得られる結果は、イベントを使用または解釈するプロセスから、処理イベントを発生する役割を担うプロセスを切断できるという利点である。別の結果は、イベントのソースおよびコンシューマを多重化し、入力デバイスを一人で制御できるように、または数人（例えば、プラズマに基づく入力フレームワークは、多くの同時ユーザをサポートする）で同時に用いることができるようにしつつ、結果的に得られるイベント・ストリームは多数のイベント・コンシューマに順に見えるようになることである。
【０２３８】
プールに結合または接続されているデバイスおよび／またはプログラムは、プロテインの特定のシーケンスを求めて、プールの中を逆方向および順方向に進む(skim)こともできる。これは、例えば、ある種のパターンと一致するプロテインの出現を待ち、次いで逆方向に進み、このプロテインがある種の他のものと共に出現したか否か判断するようにプログラムを設定する際に、有用となる場合が多い。この入力プールに格納されているイベント履歴を利用する装置は、多くの場合、状態管理コードの書き込みを不要としたり、少なくともこのような望ましくない符号化パターンに対する依存を著しく低減する。
【０２３９】
図２３は、多数の入力デバイスを含み、これらが当該デバイスの１つ以上で走る多数のプログラム間に結合されており、別の代替実施形態の下において、プラズマ構造(plasma construct)（例えば、プール、プロテイン、およびスロー）を用いることにより、多数の実行中のプログラムが、入力デバイスによって発生したイベントを共有し、集合的に応答することを可能にする処理環境のブロック図である。このシステムは、マルチ・ユーザ、マルチ・デバイス、マルチ・コンピュータ双方向処理制御状況または構成の一例に過ぎない。更に特定すれば、この例では、双方向処理システムは、多数の入力デバイス（例えば、入力デバイスＡ、Ｂ、ＢＡ、およびＢＢ等）を備えており、１つ以上のコンピュータ（例えば、デバイスＡ、デバイスＢ等）上で走る多数のプログラム（図示せず）を備えており、プラズマ構造（例えば、プール、プロテイン、およびスロー）を用いて、実行中のプログラムが、これらの入力デバイスによって発生したイベントを共有すること、および集合的にこれらのイベントに応答することを可能にする。
【０２４０】
この例では、各入力デバイス（例えば、入力デバイスＡ、Ｂ、ＢＡ、およびＢＢ等）は、入力デバイス・ハードウェアが発生した離散生データをプラズマ・プロテインに変換し、これらのプロテインをプラズマ・プールに貯入するそれぞれのデバイス（例えば、デバイスＡ、デバイスＢ等）上にホストしたソフトウェア・ドライバ・プログラムによって管理される。例えば、入力デバイスＡは生データを発生し、この生データをデバイスＡに供給する。一方、デバイスＡは離散生データをプロテイン（例えば、プロテイン１Ａ、プロテイン２Ａ等）に変換し、これらのプロテインをプールに貯入する。別の例として、入力デバイスＢＢは生データを発生し、この生データをデバイスＢに供給する。一方、デバイスＢは離散生データをプロテイン（例えば、プロテイン１Ｂ、プロテイン３Ｂ等）に変換し、これらのプロテインをプールに貯入する。
【０２４１】
各プロテインは、入力デバイスが登録し、デバイス自体についての情報を特定する行動を指定するディスクリップ・リストを収容する。可能な場合には、プロテイン・ディスクリップはデバイスの行動について一般的な意味論的意味(semantic meaning)を認めることもできる。プロテインのデータ・ペイロード（例えば、インジェスト）は、デバイス・イベントについての１組の有用な状態情報全体を搬送する。
【０２４２】
例示のために、ここに、このようなシステムにおける２つの典型的なイベントに対するプロテインを示す。ここでは、プロテインはテキストとして表すが、実際の実施態様では、これらのプロテインの構成部分は、類別されたデータ・バンドル（例えば、スロー）である。g-speak "one finger click" pose（「指１本によるクリック」のポーズ）（関連出願に記載されている）を記述するプロテインは、次の通りである。
【０２４３】
【表１】
0005782431.tif 000002
【０２４４】
別の例として、マウスのクリックを記述するプロテインは次の通りである。
【０２４５】
【表２】
0005782431.tif 000003
【０２４６】
以上のプロテインの見本のいずれかまたは双方は、そのコードの特定の部分を走らせるホスト・デバイスの関与プログラム(participating program)を生ずる可能性もある。これらのプログラムは、一般的なセマンティック・レベルに関係する場合がある。全ての内最も一般的なのは「point」であり、更に具体的な対は「engage, one」である。また、これらは、正確なデバイス：「one-finger-engage」または正に１つの集計オブジェクト(aggregate object)「hand-id-23」のみによってもっともらしく発生されるイベントを求めている場合もある。
【０２４７】
前述のように、プロテインは、プログラムやデバイスの種類には関係なく、プールに結合または接続されているあらゆるプログラムまたはデバイスが用いるために、プールにおいて利用可能である。したがって、あらゆる数のコンピュータ上で走るあらゆる数のプログラムでも、入力プールからイベント・プロテインを抽出する。これらのデバイスは、プロテインをプールから抽出するためには、ローカル・メモリ・バスまたはネットワーク接続のいずれかを通じて、プールに関与することができるだけでよい。これによって即座に得られる結果は、イベントを使用または解釈するプロセスから、入力イベントを発生する役割を担うプロセスを切断できるという利点である。別の結果は、イベントのソースおよびコンシューマを多重化し、入力デバイスを一人で制御できるように、または数人（例えば、プラズマに基づく入力フレームワークは、多くの同時ユーザをサポートする）で同時に用いることができるようにしつつ、結果的に得られるイベント・ストリームは多数のイベント・コンシューマに順に見えるようになることである。
【０２４８】
プロテイン使用の一例として、デバイスＣは１つ以上のプロテイン（例えば、プロテイン１Ｂ等）をプールから抽出することができる。プロテイン抽出に続いて、デバイスＣは、ディスクリップのスローおよびプロテインのインジェストから引き出したまたは読み出したプロテインのデータを、当該プロテイン・データが対応する入力デバイスＣＡおよびＣＣの入力イベントを処理する際に用いることができる。別の例として、デバイスＡは、１つ以上のプロテイン（例えば、プロテイン１Ｂ等）をプールから抽出することができる。プロテインの抽出に続いて、デバイスＡは、プロテイン・データが対応する入力デバイスＡの入力イベントを処理する際に、当該プロテインのデータを用いることができる。
【０２４９】
プールに結合または接続されているデバイスおよび／またはプログラムは、プロテインの特定のシーケンスを求めて、プールの中を逆方向および順方向に進む(skim)こともできる。これは、例えば、ある種のパターンと一致するプロテインの出現を待ち、次いで逆方向に進み、このプロテインがある種の他のものと共に出現したか否か判断するようにプログラムを設定する際に、有用となる場合が多い。この入力プールに格納されているイベント履歴を利用する装置は、多くの場合、状態管理コードの書き込みを不要としたり、少なくともこのような望ましくない符号化パターンに対する依存を著しく低減する。
【０２５０】
本明細書において記載するシステムの実施形態に用いられる入力デバイスの例には、ジェスチャ入力センサ、キーボード、マウス、消費者電子機器において用いられるような赤外線リモコン装置、およびタスク指向有体媒体オブジェクト(task-oriented tangible media object)、その他にも数多く含まれる。
【０２５１】
図２４は、多数のデバイスを含み、これらが当該デバイスの１つ以上で走る多数のプログラム間に結合されており、更に別の代替実施形態の下において、プラズマ構造(plasma construct)（例えば、プール、プロテイン、およびスロー）を用いることにより、多数の実行中のプログラムが、デバイスによって発生したグラフィクス・イベントを共有し、集合的に応答することを可能にする処理環境のブロック図である。このシステムは、多数の実行中のプログラム（例えば、グラフィクスＡ〜Ｅ）および１つ以上のディスプレイ・デバイス（図示せず）を備えているシステムの一例に過ぎず、プログラムの一部または全部のグラフィック出力が、プラズマ構造（例えば、プール、プロテイン、およびスロー）を用いて、調整しながら他のプログラムにも利用可能とし、実行中のプログラムが、これらのデバイスによって発生したグラフィック・イベントを共有すること、および集合的にこれらのイベントに応答することを可能にする。
【０２５２】
コンピュータ・プログラムが、別のプログラムによって発生したグラフィクスを表示することが有用な場合は多い。広く知れ渡っている様々な例には、テレビ会議アプリケーション、ネットワークを用いたスライドショーおよびデモ・プログラム、ならびにウィンドウ・マネージャが含まれる。この構成の下では、プールは、ビデオ、ネットワーク・アプリケーション共有、およびウィンドウ管理をカプセル化したフレームワークを一般化して実施するためにプラズマ・ライブラリとして用いられ、プログラマは、このようなプログラムの現バージョンでは一般には入手できない多数の特徴に追加することが可能になる。
【０２５３】
プラズマ合成環境において走るプログラム（例えば、グラフィクスＡ〜Ｅ）は、プールへの結合および／または接続を通じて、調整プールに関与する。各プログラムは、種々の種類のグラフィック・ソースの可用性を示すために、そのプールにプロテインを貯入する。また、グラフィックスを表示するために利用可能なプログラムも、それらの表示処理能力、セキュリティおよびユーザ・プロファイル、ならびに物理的位置およびネットワーク位置を示すために、プロテインを貯入する。
【０２５４】
また、グラフィクス・データをプールを通じて送信することもでき、あるいは表示プログラムに、他の種類（例えば、ＲＴＳＰストリーム）のネットワーク・リソースを指し示させることもできる。「グラフィクス・データ」という用語は、本明細書において用いる場合、広義の連続体(broad continuum)に沿って存在する種々の異なる表現のことを指し、グラフィクス・データの例には、文字で表現される例（例えば、「画像」、または画素のブロック）、手順的例（例えば、典型的なopenGLパイプラインを下って行くような一連の「描画」指令）、および記述的例（例えば、幾何学的変形、クリッピング、および合成動作によって他のグラフィック構造を組み合わせる命令）が含まれるが、これらに限定されるのではない。
【０２５５】
ローカル・マシン上では、グラフィクス・データは、プラットフォーム特定の表示ドライバ最適化を通じて配信することもできる。プールを通してグラフィクスを送信しない場合でも、多くの場合、周期的な画面キャプチャは、調整プールに格納されるので、より内部(esoteric)のソースに直接アクセスできないクライアントであっても、万一のときのグラフィクス(fall-back graphics)を表示することもできる。
【０２５６】
本明細書において記載するマルチプロセス・インタラクティブ・システムの利点の１つは、殆どのメッセージ伝達フレームワークおよびネットワーク・プロトコルとは異なり、プールがデータの大量のバッファを維持することである。したがって、プログラムはプールの中に逆戻りして、アクセスおよび使用パターン（調整プールの場合）を見たり、以前のグラフィクス・フレーム（グラフィクス・プールの場合）を抽出することができる。
【０２５７】
図２５は、多数のデバイスを含み、これらが当該デバイスの１つ以上で走る多数のプログラム間に結合されており、更に別の代替実施形態の下において、プラズマ構造(plasma construct)（例えば、プール、プロテイン、およびスロー）を用いることにより、実行中のプログラムの状態検査、可視化、およびデバッグ処理を可能にする処理環境のブロック図である。このシステムは、多数のデバイス（例えば、デバイスＡ、デバイスＢ等）上に多数の実行プログラム（例えば、プログラムＰ−Ａ、プログラムＰ−Ｂ等）を備えており、一部のプログラムがプールを用いてまたはプールを通じて他のプログラムの内部状態にアクセスするシステムの一例に過ぎない。
【０２５８】
殆どの双方向処理コンピュータ・システムは、多くのプログラムを備えており、これらは、１台のマシンまたは多数のマシン上で互いに一緒に走り、ネットワークを跨いで双方向処理を行う。実行時データが各プロセス内部に隠されアクセスするのが困難なので、マルチ・プログラム・システムは、構成設定、分析、およびデバッグするのが難しい。本明細書において記載する一実施形態の一般化したフレームワークおよびプラズマ構造は、実行中のプログラムがプールを通じてそれらのデータの多くを利用可能にするので、他のプログラムがそれらの状態を検査することができる。このフレームワークによって、従来のデバッガよりも柔軟なデバッギング・ツール、精巧なシステム保守ツール、および１つまたは複数のプログラムが通過した一連の状態を、人の操作者に詳細に分析させるように構成された可視化ハーネスを可能にする。
【０２５９】
図２５を参照すると、このフレームワークにおいて走るプログラム（例えば、プログラムＰ−Ａ、プログラムＰ−Ｂ等）は、プログラムの起動時にプロセス・プールを発生または作成する。このプールは、システム・アルマナックに登録され、セキュリティおよびアクセス制御が適用される。更に特定すると、各デバイス（例えば、デバイスＡ、Ｂ等）が、それぞれのデバイス上で走るプログラム（例えば、プログラムＰ−Ａ、プログラムＰ−Ｂ等）が発生または出力した離散生データをプラズマ・プロテインに変換し、これらのプロテインをプラズマ・プールの中に貯入する。例えば、プログラムＰ−Ａは、データまたは出力を発生し、この出力をデバイスＡに供給する。一方、デバイスＡは、この生データをプロテイン（例えば、プロテイン１Ａ、プロテイン２Ａ、プロテイン３Ａ等）に変換し、これらのプロテインをプールの中に貯入する。別の例として、プログラムＰ−Ｂはデータを発生し、このデータをデバイスＢに供給する。一方、デバイスＢは、データをプロテイン（例えば、プロテイン１Ｂ〜４Ｂ等）に変換し、これらのプロテインをプールの中に貯入する。
【０２６０】
プログラムの寿命の期間中、十分なアクセス許可を有する別のプログラムがプールに接続し(attach)、プログラムが貯入したプロテインを読み取ることもできる。これは、基本的な検査様式を表し、概念的に「一方向」即ち「読み取り専用」の提案(proposition)である。プログラムＰ−Ａに関与するエンティティが、そのプロセス・プールの中にＰ−Ａによって貯入されたステータス情報の流れを検査する。例えば、デバイスＣの下で走る検査プログラムまたはアプリケーションが１つ以上のプロテイン（例えば、プロテイン１Ａ、プロテイン２Ａ等）をプールから抽出することができる。プロテインの抽出に続いて、デバイスＣは、ディスクリップのスローおよびプロテインのインジェストから引き出した即ち読み出したプロテインのデータを用いて、プログラムＰ−Ａの内部状態にアクセスし、これを解釈し、検査することができる。
【０２６１】
しかし、プラズマ・システムは単に効率的なステートフル(stateful)伝送方式であるだけでなく、全方向メッセージング環境であることを思い起こすと、様々な追加モードがプログラム対プログラムの状態検査をサポートする。許可された検査プログラムは、それ自体でプロテインをプログラムＰのプロセス・プールに貯入して、生成してそのプロセス・プールの中に入れた状態情報の特性に影響を及ぼし、これらの特性を制御することができる（結局、プログラムＰはプロセス・プールに書き込むだけでなく、そこから読み取りも行う）。
【０２６２】
図２６は、多数のデバイスを含み、これらが当該デバイスの１つ以上で走る多数のプログラム間に結合されており、追加の代替実施形態の下において、プラズマ構造(plasma construct)（例えば、プール、プロテイン、およびスロー）を用いることにより、当該プロセス・プールにおいて生成し配置された状態情報の特性に影響を及ぼすまたは制御することができる処理環境のブロック図である。このシステム例では、デバイスＣの検査プログラムは、例えば、プログラム（例えば、プログラムＰ−Ａ、プログラムＰ−Ｂ等）が、１回だけまたは特定の期間にわたって、通常よりも多い状態をプールにダンプすることを要求することができる。または、デバッグ通信の次の「レベル」を予示しておくと、関与するプログラムは、プログラム（例えば、プログラムＰ−Ａ、プログラムＰ−Ｂ等）が、デバッグ・プールを通じた双方向処理が個々に可能でありそのために利用可能な、その実行時間環境において残存するオブジェクトを一覧に纏めたプロテインを放出(emit)することを要求することができる。このように通知すると、関与するプログラムはプログラムの実行時においてオブジェクトの中の個々に「アドレス」し、特定のオブジェクトだけが専有し応答するプロセス・プールにプロテインを入れることができる。関与するプログラムは、例えば、オブジェクトが、その成分変数全ての瞬時値を記述した報告プロテインを放出することを要求することもあり得る。それよりも更に重要なのは、関与するプログラムが、他のプロテインを通じて、オブジェクトにその挙動またはその変数の値を変更するように指令できることである。
【０２６３】
更に具体的には、この例では、デバイスＣの検査アプリケーションが、プールの中に、オブジェクト・リスト（例えば、「要求−オブジェクト・リスト」）の要求を（プロテインの形態で）入れて、次いでこのプールに結合されている各デバイス（例えば、デバイスＡ、デバイスＢ等）が抽出する。要求に応答して、各デバイス（例えば、デバイスＡ、デバイスＢ等）がプールの中に、その実行時環境において残存する、デバッグ・プールを通じて個々に検査することができそのために利用可能なオブジェクトを一覧に纏めたプロテイン（例えば、プロテイン１Ａ、プロテイン１Ｂ等）を入れる。
【０２６４】
このようにデバイスからのリストを通じて通知され、オブジェクトのリストに応答して、デバイスＣの検査アプリケーションは、プログラム実行中におけるオブジェクトの中の個々にアドレスし、特定のオブジェクトのみが専有し応答するプロセス・プールにプロテインを入れる。デバイスＣの検査アプリケーションは、例えば、要求プロテイン（例えば、プロテイン「要求報告Ｐ−Ａ−Ｏ」、「要求報告Ｐ−Ｂ−Ｏ」）を、オブジェクト（例えば、それぞれ、オブジェクトＰ−Ａ−Ｏ、オブジェクトＰ−Ｂ−Ｏ）が、その成分変数の全ての瞬時値を記述する報告プロテイン（例えば、プロテイン２Ａ、プロテイン２Ｂ等）を放出するプールに入れる。各オブジェクト（例えば、オブジェクトＰ−Ａ−Ｏ、オブジェクトＰ−Ｂ−Ｏ）は、その要求（例えば、それぞれ、プロテイン「要求報告Ｐ−Ａ−Ｏ」、「要求報告Ｐ−Ｂ−Ｏ」）を抽出し、それに応答して、要求された報告（例えば、それぞれ、プロテイン２Ａ、プロテイン２Ｂ）を含むプールにプロテインを入れる。次いで、デバイスＣは種々の報告プロテイン（例えば、プロテイン２Ａ、プロテイン２Ｂ等）を抽出し、適宜報告の内容に合わせて続く処理行為を実行する。
【０２６５】
このように、プラズマを相互交換媒体として用いると、デバッグ処理、プロセス制御、ならびにプログラム対プログラムの通信および調整の間にある区別を究極的に解消し易くなる。
【０２６６】
このため、一般化したプラズマ・フレームワークは、疎結合の様式で可視化および分析プログラムを設計することを可能にする。例えば、メモリ・アクセス・パターンを表示する可視化ツールは、基本的なメモリ・リードおよびライトをプールに出力するいずれのプログラムとでも合わせて用いることができる。分析を受けるプログラムは、可視化ツールの存在や設計を知る必要がなく、その逆も成り立つ。
【０２６７】
以上のようにプールを用いると、システム性能に不当に影響を及ぼすことはない。例えば、実施形態は、毎秒数十万個のプロテインをプールに貯入することを考慮しているので、比較的冗漫なデータ出力を可能にしても、殆どのプログラムの応答性や双方向処理特性を著しく阻害することはない。
【０２６８】
本明細書において記載した実施形態は、入力デバイスを備えているシステムを含む。一実施形態のシステムは、プロセッサに結合され、入力デバイスの方位を検出する検出器を備えている。一実施形態の入力デバイスは、方位に対応する複数のモード方位を有する。一実施形態の複数のモード方位は、ジェスチャ制御システムの複数の入力モードに対応する。一実施形態の検出器は、ジェスチャ制御システムに結合され、方位に応答して複数の入力モードからの入力モードの選択を自動的に制御する。
【０２６９】
本明細書において記載した実施形態は、入力デバイスと、プロセッサに結合され、入力デバイスの方位を検出する検出器とを備えているシステムを含み、入力デバイスが方位に対応する複数のモード方位を有し、複数のモード方位がジェスチャ制御システムの複数の入力モードに対応し、検出器がジェスチャ制御システムに結合され、方位に応答して、複数の入力モードからの入力モードの選択を自動的に制御する。
【０２７０】
一実施形態の検出器は、入力デバイスの方位を解釈し、ジェスチャ制御システムの入力信号に変換する。
【０２７１】
一実施形態の検出器は、複数のモード方位間で入力デバイスの方位遷移を解釈し、ジェスチャ制御システムの入力信号に変換する。
【０２７２】
一実施形態の方位の検出は、ある時点および空間における入力デバイスの瞬時的状態の絶対的三空間位置を検出することを含む。
【０２７３】
一実施形態の検出器は、複数のモード方位間で入力デバイスの方位遷移を追跡する。
【０２７４】
一実施形態の方位遷移は、入力デバイスの軸を中心とする回転遷移である。
【０２７５】
一実施形態の方位遷移は、入力デバイスの複数の軸を中心とする回転遷移である。
【０２７６】
一実施形態のシステムは、方位遷移の間に、入力モードの選択にヒステリシスを適用することを含む。
【０２７７】
一実施形態の検出器は、瞬時的方位をリアル・タイムで追跡する。
【０２７８】
一実施形態の検出器は、入力デバイスの生の追跡データを、６度の空間方位に変換する。
【０２７９】
一実施形態の検出器は、入力デバイスの瞬時的位置をリアル・タイムで追跡する。
【０２８０】
一実施形態の検出器は、入力デバイスの生の追跡データを、６度の空間位置に変換する。
【０２８１】
一実施形態のシステムは、少なくとも１つの入力センサを備えており、この入力センサが前記入力デバイス上に位置付けられている。
【０２８２】
一実施形態の検出器は、生の入力センサ位置データを、入力センサ状態に変換する。
【０２８３】
一実施形態の検出器は、生の入力センサ位置データを、入力センサ遷移データに変換する。
【０２８４】
一実施形態の入力センサの位置は、複数の入力モードを制御する。
【０２８５】
一実施形態の入力デバイスは、検出器を備えている。
【０２８６】
一実施形態の検出器は、入力デバイスから離れている遠隔検出器である。
【０２８７】
一実施形態の検出器は、入力デバイスによって支持されている入力デバイス検出器と、入力デバイスとは離れている遠隔検出コンポーネントとを備えている。
【０２８８】
一実施形態の入力デバイスは、ハンドヘルド入力デバイスである。
【０２８９】
一実施形態の検出器は、ある時点および空間における入力デバイスの瞬時的状態の絶対的三空間位置を検出する。
【０２９０】
一実施形態の複数の入力モードは、ジェスチャ制御システムに結合されているコンポーネントのアプリケーション・エレメントの直接操作のために、瞬時的状態が用いられる、直接操作モードを含む。
【０２９１】
一実施形態の複数の入力モードは、ジェスチャ制御システムに結合されているコンポーネントの１組のアプリケーション・エレメントの直接操作のために、瞬時的状態が用いられる、メタ操作モードを含む。
【０２９２】
一実施形態の複数の入力モードは、ジェスチャ制御システムに結合されているコンポーネントのアプリケーション・エレメントの三次元操作のために、瞬時的状態が用いられる、三次元操作モードを含む。
【０２９３】
一実施形態のジェスチャ制御システムは、ジェスチャ制御システムに結合されている三空間オブジェクトを制御する。
【０２９４】
一実施形態のシステムは、３度の平行移動自由度および３度の回転自由度で三空間物体を制御することを含む。
【０２９５】
一実施形態の制御は、入力デバイスの動きと三空間物体との間における直接結合を含む。
【０２９６】
一実施形態の制御は、入力デバイスの動きと三空間物体との間における間接結合を含む。
【０２９７】
一実施形態の三空間物体は、プロセッサに結合されているディスプレイ・デバイス上に提示される。
【０２９８】
一実施形態のシステムは、入力デバイスの複数の入力モードを、三空間物体の複数の物体平行移動にマッピングすることによって、三空間オブジェクトの移動を制御することを含む。
【０２９９】
一実施形態のマッピングは、複数の入力モードと複数の物体の平行移動との間における直接マッピングを含む。
【０３００】
一実施形態のマッピングは、複数の入力モードと複数の物体の平行移動との間における間接マッピングを含む。
【０３０１】
一実施形態のマッピングは、 複数の入力モードの位置的偏倚を、三空間物体の物体平行移動の位置的偏倚に相関付けることを含む。
【０３０２】
一実施形態のマッピングは、入力デバイスの位置的偏倚を、三空間物体の物体平行移動の平行移動速度に相関付けることを含む。
【０３０３】
一実施形態のシステムは、入力デバイスの線形ジェスチャを三空間物体の線形平行移動にマッピングすることによって、三空間物体の移動を制御することを含む。
【０３０４】
一実施形態のシステムは、入力デバイスの回転ジェスチャを三空間物体の回転平進にマッピングすることによって、三空間物体の移動を制御することを含む。
【０３０５】
一実施形態のシステムは、入力デバイスの線形ジェスチャを三空間物体の回転平進にマッピングすることによって、三空間物体の移動を制御することを含む。
【０３０６】
一実施形態のシステムは、入力デバイスの回転ジェスチャを三空間物体の線形平行移動にマッピングすることによって、三空間物体の移動を制御することを含む。
【０３０７】
一実施形態の検出は、入力デバイスの外挿補間位置が仮想空間と交差するときを検出することを含み、仮想空間は、ジェスチャ制御システムに結合されているディスプレイ・デバイス上に図示される空間を含む。
【０３０８】
一実施形態の検出器は、入力デバイスのイベントを検出し、イベントは、入力デバイスの三空間位置および三空間方位の内少なくとも１つに対応し、イベントが第１タイプのアプリケーションに対応する。
【０３０９】
一実施形態のプロセッサは、イベントを指定する入力デバイス・イベント・データと、イベントの状態情報とを備えているデータ・シーケンスを発生し、入力デバイス・イベント・データおよび状態情報は、ジェスチャ制御システムの第１アプリケーションに対応するタイプを有するタイプ特定データである。
【０３１０】
一実施形態のプロセッサは、データ・シーケンスを含むようにデータ・カプセルを形成し、データ・カプセルは、データ・シーケンスのアプリケーション独立表現を含むデータ構造を有する。
【０３１１】
一実施形態のプロセッサは、データ・カプセルをレポジトリに入れる。
【０３１２】
一実施形態の第２タイプのアプリケーションの下で実行する第２イベントは、レポジトリを検索し、データ・カプセルと第２イベントとの間の対応を特定する。一実施形態の第２タイプのアプリケーションは、データ・カプセルのデータ・シーケンスの内容を用いて、第２イベントに対応する動作を実行する。
【０３１３】
一実施形態の追跡は、電磁界（ＥＭＦ）追跡である。
【０３１４】
一実施形態の入力デバイスは、回路に結合されている検出器を含み、検出器が複数のコイルを備えている。
【０３１５】
一実施形態のシステムは、入力デバイスからは離れている電磁界発生器を備えており、電磁界発生器は、複数のコイルに信号を誘発するＥＭＦを発生する。
【０３１６】
一実施形態のシステムは、入力デバイスからは離れている複数の電磁界発生器を備えており、入力デバイスは、信号を誘発する電磁界発生器に近接するときに、各電磁界発生器は、入力デバイスの複数のコイルに信号を誘発する。
【０３１７】
一実施形態の検出器は、複数のコイルに誘発されるＥＭＦ信号を用いて、入力デバイスの方位を検出する。
【０３１８】
一実施形態の検出器は、複数のコイルに誘発される信号を用いて、入力デバイスの位置を検出する。
【０３１９】
一実施形態の入力デバイスは、プロセッサに結合さえている送信機を備えており、送信機がワイヤレス送信機である。
【０３２０】
一実施形態の送信機は、入力デバイスの方位をジェスチャ制御システムに伝達する。
【０３２１】
一実施形態の送信機は、入力デバイスの位置をジェスチャ制御システムに伝達する。
【０３２２】
一実施形態の入力デバイスは、少なくとも１つの入力センサを備えており、送信機は、少なくとも１つの入力センサの状態を、ジェスチャ制御システムに伝達する。
【０３２３】
一実施形態の追跡は、光学的追跡である。
【０３２４】
一実施形態のシステムは、入力デバイスに接続されている少なくとも１つのタグを備えている。
【０３２５】
一実施形態の少なくとも１つのタグは、入力デバイスの前面領域に接続されている複数のタグを備えている。
【０３２６】
一実施形態の追跡は、少なくとも１つのタグの位置を動的に検出することを含む。
【０３２７】
一実施形態の追跡は、入力デバイスのある領域に結合されている１組のタグの位置を検出することを含む。
【０３２８】
一実施形態の１組のタグにおける各タグは、パターンを含み、１組のタグにおける各タグの各パターンは、複数のタグの内いずれの残りのタグのいずれのパターンとも異なる。
【０３２９】
一実施形態の各タグが第１パターンと第２パターンとを含み、第１パターンが１組のタグにおけるいずれのタグにも共通であり、第２パターンは、１組のタグの内少なくとも２つのタグ間で異なる。
【０３３０】
一実施形態の１組のタグは、入力デバイス上における複数のパターンを形成する。
【０３３１】
一実施形態の少なくも１つのタグは、１組の赤外線（ＩＲ）発光ダイオード（ＬＥＤ）と、１組の逆反射ドットとを備えている。
【０３３２】
一実施形態の入力デバイスは、回路に結合されているマイクロプロセッサを含み、回路が１組のＩＲ  ＬＥＤに結合されている。
【０３３３】
一実施形態のシステムは、回路に結合されている少なくとも１つの入力センサを備えており、少なくとも１つのセンサは、入力デバイス上に位置付けられている。
【０３３４】
一実施形態の少なくとも１つの入力センサは、１組のＩＲ  ＬＥＤの状態を制御する。
【０３３５】
一実施形態の各ＩＲ  ＬＥＤの状態は、複数の入力モードの内少なくとも１つの入力モードに対応する。
【０３３６】
一実施形態の少なくとも１つのタグは、入力デバイスに接続されている少なくとも１つの追跡ドットを備えている。
【０３３７】
一実施形態の少なくとも１つの追跡ドットは、少なくとも１つの赤外線（ＩＲ）発光ダイオード（ＬＥＤ）を備えている。
【０３３８】
一実施形態の少なくとも１つの追跡ドットは、少なくとも１つの逆反射ドットを備えている。
【０３３９】
一実施形態の少なくとも１つの追跡ドットは、赤外線（ＩＲ）発光ダイオード（ＬＥＤ）および逆反射ドットの内少なくとも１つを備えている。
【０３４０】
一実施形態の少なくとも１つの追跡ドットは、１組のＩＲ  ＬＥＤと１組の逆反射ドットとを備えている。
【０３４１】
一実施形態の入力デバイスは、複数の側面を備えており、複数の側面における各側面は、複数のモード方位の内１つのモード方位に対応する。
【０３４２】
一実施形態の複数の側面における各側面は、複数の入力モードにおける１つの入力モードに対応する。
【０３４３】
一実施形態の複数の側面における各側面には、当該側面が対応する入力モードが割り当てられている。
【０３４４】
一実施形態の複数の側面における各側面には、コンテキストに基づいて、入力モードが動的に割り当てられる。
【０３４５】
一実施形態の複数の側面において少なくとも１つの側面は、入力センサを備えている。
【０３４６】
一実施形態の複数の側面における各側面は、入力センサを備えている。
【０３４７】
一実施形態の各側面の各入力センサには、方位に基づいて、機能が動的に割り当てられる。
【０３４８】
一実施形態の各側面の各入力センサには、コンテキストに基づいて、機能が動的に割り当てられる。
【０３４９】
一実施形態の複数の側面は、３つの側面を含み、入力デバイスが三角形の断面を有し、複数の側面における各側面は、複数のモード方位における１つのモード方位に対応する。
【０３５０】
一実施形態の複数の側面における各側面は、複数の入力モードにおける１つの入力モードに対応する。
【０３５１】
一実施形態の複数の側面における第１側面が第１入力モードに対応し、一実施形態の複数の側面における第２側面が第２入力モードに対応する。第１側面の中心に対して１２０度よりも大きく入力デバイスを長手方向軸を中心に回転させることを含む一実施形態の方位遷移は、第１入力モードから第２モードへの変化を生じさせる。
【０３５２】
一実施形態の検出器は、方位遷移の間に、入力モードの選択に対して、ヒステリシス・バンドを適用する。
【０３５３】
一実施形態のヒステリシス・バンドは、約３０度に等しい、およびそれよりも大きいの内少なくとも１つである。
【０３５４】
一実施形態のヒステリシス・バンドは、プログラム可能である。
【０３５５】
一実施形態の複数の側面における各側面は、入力センサを備えている。
【０３５６】
本明細書において記載した実施形態は、回路に結合されているプロセッサを含む入力デバイスを備えているシステムを含む。一実施形態のプロセッサは、ジェスチャ制御システムの複数の入力モードを制御する。一実施形態のシステムは、プロセッサに結合されており、ある時点および空間における入力デバイスの瞬時的状態の絶対三空間位置および方位の内少なくとも１つを検出する検出器を備えている。一実施形態の入力デバイスは、少なくとも方位に対応する複数のモード方位を有し、一実施形態の複数のモード方位は、ジェスチャ制御システムの複数の入力モードに対応する。一実施形態の検出器は、ジェスチャ制御システムに結合されており、方位に応答して複数の入力モードからの１つの入力モードの選択を自動的に制御する。
【０３５７】
本明細書において記載した実施形態は、システムを含む。このシステムは、回路に結合されているプロセッサを備えている入力デバイスであって、プロセッサがジェスチャ制御システムの複数の入力モードを制御する、入力デバイスと、プロセッサに結合されており、ある時点および空間における入力デバイスの瞬時的状態の絶対三空間位置および方位の内少なくとも１つを検出する検出器とを備えている。入力デバイスは、少なくとも方位に対応する複数のモード方位を有し、複数のモード方位は、ジェスチャ制御システムの複数の入力モードに対応し、検出器は、ジェスチャ制御システムに結合されており、方位に応答して、複数の入力モードからの１つの入力モードの選択を自動的に制御する。
【０３５８】
本明細書において記載した実施形態は、プロセッサを含む手持ちサイズの筐体を備えている入力デバイスを含む。一実施形態のプロセッサは、検出器に結合されており、この検出器が、入力デバイスが現在操作されている方位と、入力デバイスの複数の方位間における遷移とを検出して入力信号に変換する。一実施形態の入力信号は、ジェスチャ制御システムの複数の入力モードを自動的に制御する。
【０３５９】
本明細書において記載した実施形態は、プロセッサを含む手持ちサイズの筐体を備えている入力デバイスを含む。プロセッサは、検出器に結合されており、入力デバイスが現在操作されている方位と、入力デバイスの複数の方位間における遷移とを、検出器が検出して入力信号に変換し、入力信号は、ジェスチャ制御システムの複数の入力モードを自動的に制御する。
【０３６０】
一実施形態の検出器は、複数のコイルを含む回路を備えている。
【０３６１】
一実施形態のデバイスは、複数のコイルに信号を誘発するＥＭＦを発生する遠隔電磁界（ＥＭＦ）発生器を備えている。
【０３６２】
一実施形態のデバイスは、複数の遠隔ＥＭＦ発生器を備えており、信号を誘発するＥＭＦ発生器に筐体が近接するときに、各ＥＭＦ発生器は、複数のコイルに信号を誘発する。
【０３６３】
一実施形態の検出器は、複数のコイルに誘発されたＥＭＦ信号を用いて、方位を検出する。
【０３６４】
一実施形態の検出器は、複数のコイルに誘発された信号を用いて、入力デバイスの位置を検出する。
【０３６５】
一実施形態のデバイスは、プロセッサに結合されている送信機を備えており、送信機がワイヤレス送信機である。
【０３６６】
一実施形態の送信機は、方位を、ジェスチャ制御システムに伝達する。
【０３６７】
一実施形態の送信機は、入力デバイスの位置を、ジェスチャ制御システムに伝達する。
【０３６８】
一実施形態のデバイスは、プロセッサに結合されている少なくとも１つの入力センサを備えており、送信機は、少なくとも１つの入力センサの状態を、ジェスチャ制御システムに伝達する。
【０３６９】
一実施形態の検出器が生の入力センサ位置データを入力センサ状態に変換する。
【０３７０】
一実施形態の入力センサの位置は、ジェスチャ制御システムを制御する。
【０３７１】
一実施形態の複数の方位は、ジェスチャ制御システムの複数の入力モードに対応する。
【０３７２】
一実施形態の複数の入力モードは、ジェスチャ制御システムに結合されているコンポーネントのアプリケーション・エレメントを入力デバイスが直接操作する、直接操作モードを含む。
【０３７３】
一実施形態の複数の入力モードは、ジェスチャ制御システムに結合されているコンポーネントの１組のアプリケーション・エレメントを入力デバイスが直接操作する、メタ操作モードを含む。
【０３７４】
一実施形態の複数の入力モードは、ジェスチャ制御システムに結合されているコンポーネントのアプリケーション・エレメントの三次元操作を入力デバイスが制御する、三次元操作モードを含む。
【０３７５】
一実施形態の入力信号は、方位に応答して、複数の入力モードからの１つの入力モードの選択を自動的に制御する。
【０３７６】
一実施形態のデバイスは、遷移の間に入力モードの選択にヒステリシスを適用することを含む。
【０３７７】
一実施形態の遷移は、入力デバイスの少なくとも１つの軸を中心とする回転遷移である。
【０３７８】
一実施形態の検出器は、ある時点および空間における瞬時三空間方位をリアル・タイムで追跡する。
【０３７９】
一実施形態の検出器は、入力デバイスの生の追跡データを、６度の空間方位に変換する。
【０３８０】
一実施形態の検出器は、ある時点および空間における瞬時的三空間位置をリアル・タイムで追跡する。
【０３８１】
一実施形態の検出器は、入力デバイスの生の追跡データを、６度の空間位置に変換する。
【０３８２】
一実施形態の筐体は、複数の側面を備えており、複数の側面における各側面は、複数の方位の内１つの方位に対応する。
【０３８３】
一実施形態の複数の側面における各側面は、複数の入力モードの内１つの入力モードに対応する。
一実施形態の複数の側面における各側面には、当該側面が対応する入力モードが割り当てられている。
【０３８４】
一実施形態の複数の側面における各側面には、コンテキストに基づいて、入力モードが動的に割り当てられる。
【０３８５】
一実施形態の複数の側面において少なくとも１つの側面は、入力センサを備えている。
【０３８６】
一実施形態の複数の側面における各側面は、入力センサを備えている、
一実施形態の各側面の各入力センサには、方位に基づいて、機能が動的に割り当てられる。
【０３８７】
一実施形態の各側面の各入力センサには、コンテキストに基づいて、機能が動的に割り当てられる。
【０３８８】
一実施形態の複数の側面は３つの側面を含み、筐体は三角形の断面を有し、複数の側面における各側面は、複数の方位における１つの方位に対応する。
【０３８９】
一実施形態の複数の側面における第１側面は、第１入力モードに対応し、複数の側面における第２側面は、第２入力モードに対応し、第１側面の中心に対して１２０度よりも大きく入力デバイスを長手方向軸を中心に回転させることを含む遷移は、第１入力モードから第２モードへの変化を生じさせる。
【０３９０】
一実施形態の検出器は、遷移の間に、入力モードの選択に、ヒステリシス・バンドを適用する。
【０３９１】
一実施形態のヒステリシス・バンドは、約３０度に等しい、およびそれよりも大きいの内少なくとも１つである。
【０３９２】
一実施形態のヒステリシス・バンドは、プログラム可能である。
【０３９３】
一実施形態の検出器は、入力デバイスのイベントを検出し、このイベントは、入力デバイスの三空間位置および三空間方位の内少なくとも１つに対応し、このイベントが第１タイプのアプリケーションに対応する。
【０３９４】
一実施形態のプロセッサは、イベントを指定する入力デバイス・イベント・データと、イベントの状態情報とを備えているデータ・シーケンスを発生し、入力デバイス・イベント・データおよび状態情報は、ジェスチャ制御システムの第１アプリケーションに対応するタイプを有するタイプ特定データである。
【０３９５】
一実施形態のプロセッサは、データ・シーケンスを含むようにデータ・カプセルを形成し、データ・カプセルは、データ・シーケンスのアプリケーション独立表現を含むデータ構造を有する。
【０３９６】
一実施形態のプロセッサは、データ・カプセルをレポジトリに入れる。
【０３９７】
一実施形態の第２タイプのアプリケーションの下で実行する第２イベントは、レポジトリを検索し、データ・カプセルと第２イベントとの間の対応を特定し、第２タイプのアプリケーションは、データ・カプセルのデータ・シーケンスの内容を用いて、第２イベントに対応する動作を実行する。
【０３９８】
一実施形態のジェスチャ制御システムは、当該ジェスチャ制御システムに結合されている三空間物体を制御する。
【０３９９】
一実施形態のデバイスは、３度の平行移動自由度および３度の回転自由度で、当該デバイスによって、三空間物体を制御することを含む。
【０４００】
一実施形態の制御は、入力デバイスの動きと三空間物体との間における直接結合を含む。
【０４０１】
一実施形態の制御は、入力デバイスの動きと三空間物体との間における間接結合を含む。
【０４０２】
一実施形態の三空間物体は、プロセッサに結合されているディスプレイ・デバイス上に提示される。
【０４０３】
一実施形態のデバイスは、入力デバイスの複数の入力モードを、三空間物体の複数の物体平行移動にマッピングすることによって、三空間オブジェクトの移動を制御する。
【０４０４】
一実施形態のマッピングは、複数の入力モードと複数の物体の平行移動との間における直接マッピングを含む。
【０４０５】
一実施形態のマッピングは、複数の入力モードと複数の物体の平行移動との間における間接マッピングを含む。
【０４０６】
一実施形態のマッピングは、 複数の入力モードの位置的偏倚を、三空間物体の物体平行移動の位置的偏倚に相関付けることを含む。
【０４０７】
一実施形態のマッピングは、入力デバイスの位置的偏倚を、三空間物体の物体平行移動の平行移動速度に相関付けることを含む。
【０４０８】
一実施形態のデバイスは、入力デバイスの線形ジェスチャを三空間物体の線形平行移動にマッピングすることによって、三空間物体の移動を制御することを含む。
【０４０９】
一実施形態のデバイスは、入力デバイスの回転ジェスチャを三空間物体の回転平進にマッピングすることによって、三空間物体の移動を制御することを含む。
【０４１０】
一実施形態のデバイスは、入力デバイスの線形ジェスチャを三空間物体の回転平進にマッピングすることによって、三空間物体の移動を制御することを含む。
【０４１１】
一実施形態のデバイスは、入力デバイスの回転ジェスチャを三空間物体の線形平行移動にマッピングすることによって、三空間物体の移動を制御することを含む。
【０４１２】
一実施形態の検出は、入力デバイスの外挿補間位置が仮想空間と交差するときを検出することを含み、仮想空間は、ジェスチャ制御システムに結合されているディスプレイ・デバイス上に図示される空間を含む。
【０４１３】
本明細書において記載した実施形態は、検出器に結合され、手持ちサイズのフォーム・ファクタを有する筐体内に収容されているプロセッサを備えている入力デバイスを含む。一実施形態の検出器は、筐体が現在操作されている方位、および筐体の位置の内少なくとも１つを検出して入力信号に変換する。一実施形態の検出器は、コイルに誘発される信号を用いて、方位および位置の内少なくとも１つを検出する。一実施形態の入力デバイスは、プロセッサに結合されている送信機を備えている。一実施形態の送信機は、入力信号をジェスチャ制御システムに伝達する。一実施形態の入力信号は、ジェスチャ制御システムの複数の入力モードを自動的に制御し、ジェスチャ制御システムに結合されている三空間物体の平行移動および回転を制御する。  
【０４１４】
本明細書において記載した実施形態は、入力デバイスを含む。この入力デバイスは、検出器に結合され、手持ちサイズのフォーム・ファクタを有する筐体内に収容されているプロセッサであって、検出器が、筐体が現在操作されている方位、および筐体の位置の内少なくとも１つを検出して入力信号に変換し、検出器が、コイルに誘発される信号を用いて、方位および位置の内少なくとも１つを検出する、プロセッサと、プロセッサに結合されている送信機であって、入力信号をジェスチャ制御システムに伝達する、送信機とを備えており、入力信号がジェスチャ制御システムの複数の入力モードを自動的に制御し、ジェスチャ制御システムに結合されている三空間物体の平行移動および回転を制御する。  
【０４１５】
本明細書において記載した実施形態は、プロセッサを含む手持ちサイズの筐体を備えている入力デバイスを含む。一実施形態のプロセッサは、検出器に結合されており、検出器は、入力デバイスが現在操作されている方位と、入力デバイスの複数の方位間における遷移とを検出して入力信号に変換する。一実施形態の入力信号は、ジェスチャ制御システムの複数の入力モードを自動的に制御し、ジェスチャ制御システムに結合されている三空間物体を制御する。一実施形態の入力信号は、３度の平行移動自由度および３度の回転自由度で、三空間物体を制御する。
【０４１６】
本明細書において記載した実施形態は、プロセッサを含む手持ちサイズの筐体を備えている入力デバイスを含み、プロセッサは、検出器に結合されており、検出器は、入力デバイスが現在操作されている方位と、入力デバイスの複数の方位間における遷移とを検出して入力信号に変換し、入力信号は、ジェスチャ制御システムの複数の入力モードを自動的に制御し、ジェスチャ制御システムに結合されている三空間物体を制御し、入力信号は、３度の平行移動自由度および３度の回転自由度で、三空間物体を制御する。
【０４１７】
本明細書において記載した実施形態は、入力デバイスが現在操作されている方位と、入力デバイスの複数の方位間における遷移とを検出し変換するステップを備えている方法を含む。一実施形態の入力デバイスは、プロセッサを含む手持ちサイズの筐体を備えている。一実施形態の方法は、方位および遷移に応答して、複数の入力モードからの１つの入力モードの選択を自動的に制御するステップを備えている。一実施形態の方法は、入力モードにしたがって、ジェスチャ制御システムに結合されている三空間物体を制御するステップを備えている。
【０４１８】
本明細書において記載した実施形態は、入力デバイスが現在操作されている方位と、入力デバイスの複数の方位間における遷移とを検出し変換するステップであって、入力デバイスが、プロセッサを含む手持ちサイズの筐体を備えている、ステップと、方位および遷移に応答して、複数の入力モードからの１つの入力モードの選択を自動的に制御するステップと、入力モードにしたがって、ジェスチャ制御システムに結合されている三空間物体を制御するステップとを備えている方法を含む。
【０４１９】
一実施形態の方位の検出は、ある時点および空間における入力デバイスの瞬時的状態の絶対三空間位置を検出するステップを含む。
【０４２０】
一実施形態の遷移は、入力デバイスの軸を中心とする回転遷移である。
【０４２１】
一実施形態の遷移は、入力デバイスの複数の軸を中心とする回転遷移である。
【０４２２】
一実施形態の方法は、遷移の間に、入力モードの選択にヒステリシスを適用するステップを備えている。
【０４２３】
一実施形態の検出するステップは、瞬時的方位をリアル・タイムで追跡するステップを含む。
【０４２４】
一実施形態の変換するステップは、入力デバイスの生の追跡データを、６度の空間方位に変換するステップを含む。
【０４２５】
一実施形態の検出するステップは、入力デバイスの瞬時的位置をリアル・タイムで追跡するステップを含む。
【０４２６】
一実施形態の変換するステップは、入力デバイスの生の追跡データを、６度の空間位置に変換するステップを含む。
【０４２７】
一実施形態の方法は、少なくとも１つの入力センサを備えており、この入力センサが入力デバイス上に位置付けられている。
【０４２８】
一実施形態の方法は、入力デバイスの入力センサの生の入力センサ位置データを検出し、入力センサ状態に変換するステップを備えている。
【０４２９】
一実施形態の方法は、入力センサ状態に応答して、複数の入力モードを制御するステップを備えている。
【０４３０】
一実施形態の検出は、入力デバイス上で行われる。
【０４３１】
一実施形態の検出は、入力デバイスから離れて行われる。
【０４３２】
一実施形態の検出は、入力デバイス上で行われ、更に入力デバイスから離れて行われる。
【０４３３】
一実施形態の入力デバイスは、ハンドヘルド入力デバイスである。
【０４３４】
一実施形態の検出するステップは、ある時点および空間における入力デバイスの瞬時的状態の絶対的三空間位置を検出するステップを含む。
【０４３５】
一実施形態の複数の入力モードは、ジェスチャ制御システムに結合されているコンポーネントのアプリケーション・エレメントの直接操作のために、瞬時的状態が用いられる、直接操作モードを含む。
【０４３６】
一実施形態の複数の入力モードは、ジェスチャ制御システムに結合されているコンポーネントの１組のアプリケーション・エレメントの直接操作のために、瞬時的状態が用いられる、メタ操作モードを含む。
【０４３７】
一実施形態の複数の入力モードは、ジェスチャ制御システムに結合されているコンポーネントのアプリケーション・エレメントの三次元操作のために、瞬時的状態が用いられる、三次元操作モードを含む。
【０４３８】
一実施形態の方法は、ジェスチャ制御システムによって、ジェスチャ制御システムに結合されている三空間オブジェクトを制御するステップを備えている。
【０４３９】
一実施形態の方法は、３度の平行移動自由度および３度の回転自由度で三空間物体を制御するステップを備えている。
【０４４０】
一実施形態の制御は、入力デバイスの動きと三空間物体との間における直接結合を含む。
【０４４１】
一実施形態の制御は、入力デバイスの動きと三空間物体との間における間接結合を含む。
【０４４２】
一実施形態の方法は、三空間物体をディスプレイ・デバイス上に提示するステップを備えている。
【０４４３】
一実施形態の方法は、入力デバイスの複数の入力モードを、三空間物体の複数の物体平行移動にマッピングすることによって、三空間オブジェクトの移動を制御するステップを備えている。
【０４４４】
一実施形態のマッピングは、複数の入力モードと複数の物体の平行移動との間における直接マッピングを含む。
【０４４５】
一実施形態のマッピングは、複数の入力モードと複数の物体の平行移動との間における間接マッピングを含む。
【０４４６】
一実施形態のマッピングは、 複数の入力モードの位置的偏倚を、三空間物体の物体平行移動の位置的偏倚に相関付けることを含む。
【０４４７】
一実施形態のマッピングは、入力デバイスの位置的偏倚を、三空間物体の物体平行移動の平行移動速度に相関付けることを含む。
【０４４８】
一実施形態の方法は、入力デバイスの線形ジェスチャを三空間物体の線形平行移動にマッピングすることによって、三空間物体の移動を制御するステップを備えている。
【０４４９】
一実施形態の方法は、入力デバイスの回転ジェスチャを三空間物体の回転平進にマッピングすることによって、三空間物体の移動を制御するステップを備えている。
【０４５０】
一実施形態の方法は、入力デバイスの線形ジェスチャを三空間物体の回転平進にマッピングすることによって、三空間物体の移動を制御するステップを備えている。
【０４５１】
一実施形態の方法は、入力デバイスの回転ジェスチャを三空間物体の線形平行移動にマッピングすることによって、三空間物体の移動を制御するステップを備えている。
【０４５２】
一実施形態の検出するステップは、入力デバイスの外挿補間位置が仮想空間と交差するときを検出するステップを含み、仮想空間は、ジェスチャ制御システムに結合されているディスプレイ・デバイス上に図示される空間を含む。
【０４５３】
一実施形態の検出するステップは、入力デバイスのイベントを含み、このイベントは、入力デバイスの三空間位置および三空間方位の内少なくとも１つに対応し、イベントが第１タイプのアプリケーションに対応する。
【０４５４】
一実施形態の方法であって、イベントを指定する入力デバイス・イベント・データと、イベントの状態情報とを備えているデータ・シーケンスを発生するステップを備えており、入力デバイス・イベント・データおよび状態情報は、ジェスチャ制御システムの第１アプリケーションに対応するタイプを有するタイプ特定データである。
【０４５５】
一実施形態の方法は、データ・シーケンスを含むようにデータ・カプセルを形成するステップを備えており、データ・カプセルは、データ・シーケンスのアプリケーション独立表現を含むデータ構造を有する。
【０４５６】
一実施形態の方法は、データ・カプセルをレポジトリに入れるステップを備えている。
【０４５７】
一実施形態の第２タイプのアプリケーションの下で実行する第２イベントは、レポジトリを検索し、データ・カプセルと第２イベントとの間の対応を特定し、第２タイプのアプリケーションは、データ・カプセルのデータ・シーケンスの内容を用いて、第２イベントに対応する動作を実行する。
【０４５８】
一実施形態の検出は、電磁界（ＥＭＦ）追跡を用いる。
【０４５９】
一実施形態の方法は、入力デバイスの複数のコイルに信号を誘発するＥＭＦを発生するステップを備えている。
【０４６０】
一実施形態の方法は、入力デバイスからは離れている複数の電磁界発生器を用いて、ＥＭＦを発生するステップを備えており、入力デバイスが、信号を誘発する電磁界発生器に近接するときに、各電磁界発生器は、入力デバイスの複数のコイルに信号を誘発する。
【０４６１】
一実施形態の検出するステップは、複数のコイルに誘発されるＥＭＦ信号を用いて、入力デバイスの方位を検出するステップを含む。
【０４６２】
一実施形態の検出するステップは、複数のコイルに誘発される信号を用いて、入力デバイスの位置を検出するステップを含む。
【０４６３】
一実施形態の方法は、入力デバイスの方位を、ジェスチャ制御システムに伝達するステップを備えている。
【０４６４】
一実施形態の方法は、入力デバイスの位置を、ジェスチャ制御システムに伝達するステップを備えている。
【０４６５】
一実施形態の方法は、入力デバイスの少なくとも１つの入力センサの状態を、ジェスチャ制御システムに伝達するステップを備えている。
【０４６６】
一実施形態の検出は、光学的追跡である。
【０４６７】
一実施形態の方法は、入力デバイスに接続されている少なくとも１つのタグを追跡するステップを備えている。
【０４６８】
一実施形態の少なくとも１つのタグは、入力デバイスの前面領域に接続されている複数のタグを備えている。
【０４６９】
一実施形態の追跡するステップは、少なくとも１つのタグの位置を動的に検出するステップを含む。
【０４７０】
一実施形態の追跡するステップは、入力デバイスのある領域に結合されている１組のタグの位置を検出することを含む。
【０４７１】
一実施形態の１組のタグにおける各タグは、パターンを含み、１組のタグにおける各タグの各パターンは、複数のタグの内いずれの残りのタグのいずれのパターンとも異なる。
【０４７２】
一実施形態の各タグが第１パターンと第２パターンとを含み、第１パターンが１組のタグにおけるいずれのタグにも共通であり、第２パターンは、１組のタグの内少なくとも２つのタグ間で異なる。
【０４７３】
一実施形態の１組のタグは、入力デバイス上における複数のパターンを形成する。
【０４７４】
一実施形態の少なくも１つのタグは、１組の赤外線（ＩＲ）発光ダイオード（ＬＥＤ）と、１組の逆反射ドットとを備えている。
【０４７５】
一実施形態の方法は、入力デバイスの少なくとも１つの入力センサを通じて、１組のＩＲ  ＬＥＤの状態を制御するステップを備えている。
【０４７６】
一実施形態の各ＩＲ  ＬＥＤの状態は、複数の入力モードの内少なくとも１つの入力モードに対応する。
【０４７７】
一実施形態の少なくとも１つのタグは、入力デバイスに接続されている少なくとも１つの追跡ドットを備えている。
【０４７８】
一実施形態の少なくとも１つの追跡ドットは、少なくとも１つの赤外線（ＩＲ）発光ダイオード（ＬＥＤ）を備えている。
【０４７９】
一実施形態の少なくとも１つの追跡ドットは、少なくとも１つの逆反射ドットを備えている。
【０４８０】
一実施形態の少なくとも１つの追跡ドットは、赤外線（ＩＲ）発光ダイオード（ＬＥＤ）および逆反射ドットの内少なくとも１つを備えている。
【０４８１】
一実施形態の少なくとも１つの追跡ドットは、１組のＩＲ  ＬＥＤと１組の逆反射ドットとを備えている。
【０４８２】
一実施形態の方法は、入力デバイスの複数の側面における各側面を、複数の方位の内１つの方位と関連付けるステップを備えている。
【０４８３】
一実施形態の方法は、複数の側面における各側面と、複数の入力モードの内１つの入力モードとの間における対応を定義するステップを備えている。
【０４８４】
一実施形態の方法は、複数の側面における各側面に入力モードを割り当てるステップを備えている。
【０４８５】
一実施形態の方法は、複数の側面における各側面に、コンテキストに基づいて、入力モードを動的に割り当てるステップを備えている。
【０４８６】
一実施形態の方法は、側面の入力センサに、方位に基づいて、機能を動的に割り当てるステップを備えている。
【０４８７】
一実施形態の方法は、各側面の入力センサに、コンテキストに基づいて、機能を動的に割り当てるステップを備えている。
【０４８８】
一実施形態の複数の側面は、３つの側面を含み、入力デバイスが三角形の断面を有し、複数の側面における各側面を、複数の方位における１つの方位に関連付けるステップを備えている。
【０４８９】
一実施形態の方法は、複数の側面における各側面と複数の入力モードにおける１つの入力モードとの間における対応を定義するステップを備えている。
【０４９０】
一実施形態の対応は、複数の側面における第１側面が第１入力モードに対応し、複数の側面における第２側面が第２入力モードに対応することを含み、第１側面の中心に対して１２０度よりも大きく入力デバイスを長手方向軸を中心に回転させることを含む遷移は、第１入力モードから第２モードへの変化を生じさせる。
【０４９１】
一実施形態の方法は、遷移の間に、入力モードの選択に対して、ヒステリシス・バンドを適用するステップを備えている。
【０４９２】
一実施形態のヒステリシス・バンドは、約３０度に等しい、およびそれよりも大きいの内少なくとも１つである。
【０４９３】
一実施形態のヒステリシス・バンドは、プログラム可能である。
【０４９４】
本明細書において記載した実施形態は、検出器を通じて受け取ったジェスチャ・データから、入力デバイスのジェスチャを自動的に検出するステップを備えている方法を含む。一実施形態のジェスチャ・データは、ある時点および空間における入力デバイスの瞬時的状態の絶対三空間方位データである。一実施形態の方法は、ジェスチャ・データのみを用いてジェスチャを識別するステップを備えている。一実施形態の方法は、ジェスチャをジェスチャ信号に変換するステップを備えている。一実施形態の方法は、ジェスチャ信号に応答して、入力デバイスの複数の入力モードからの１つの入力モードの選択を自動的に制御するステップを備えている。
【０４９５】
本明細書において記載した実施形態は、検出器を通じて受け取ったジェスチャ・データから、入力デバイスのジェスチャを自動的に検出し、ジェスチャ・データは、ある時点および空間における入力デバイスの瞬時的状態の絶対三空間方位データであり、ジェスチャ・データのみを用いてジェスチャを識別するステップと、ジェスチャをジェスチャ信号に変換するステップと、ジェスチャ信号に応答して、入力デバイスの複数の入力モードからの１つの入力モードの選択を自動的に制御するステップとを備えている方法を含む。
【０４９６】
本明細書において記載した実施形態は、方位に対応する複数のモード方位を有する入力デバイスの方位を検出するステップを備えている方法を含む。一実施形態の複数のモード方位は、ジェスチャ制御システムの複数の入力モードに対応する。一実施形態の方法は、方位に応答して、複数の入力モードからの１つの入力モードの選択を自動的に制御するステップを備えている。一実施形態の方法は、入力モードにしたがって、ジェスチャ制御システムに結合されている三空間物体を制御するステップとを備えている。
【０４９７】
本明細書において記載した実施形態は、方位に対応する複数のモード方位を有する入力デバイスの方位を検出するステップであって、複数のモード方位は、ジェスチャ制御システムの複数の入力モードに対応する、ステップと、方位に応答して、複数の入力モードからの１つの入力モードの選択を自動的に制御するステップと、入力モードにしたがって、ジェスチャ制御システムに結合されている三空間物体を制御するステップとを備えている方法を含む。
【０４９８】
本明細書において記載したシステムおよび方法は、処理システムを含む、および／または処理システムの下で実行する、および／または処理システムと連動して実行する。処理システムは、当技術分野では周知のように、互いに動作するプロセッサ主体デバイスまたは計算デバイスのあらゆる集合体、あるいは処理システムまたはデバイスのコンポーネントを含む。例えば、処理システムは、携帯用コンピュータ、通信ネットワークにおいて動作する携帯用通信デバイス、および／またはネットワーク・サーバの１つ以上を含むことができる。携帯用コンピュータは、パーソナル・コンピュータ、セルラ電話機、パーソナル・ディジタル・アシスタント、携帯用計算デバイス、および携帯用通信デバイスの中から選択した多数のデバイスおよび／またはデバイスの組み合わせのいずれとすることもできるが、そのように限定されるのではない。処理システムは、それよりも大きなコンピュータ・システムの中にあるコンポーネントを含むことができる。
【０４９９】
一実施形態の処理システムは、少なくとも１つのプロセッサと、少なくとも１つのメモリ・デバイスまたはサブシステムとを含む。また、処理システムは、少なくとも１つのデータベースを含むか、またはこれに結合することができる。「プロセッサ」という用語は、本明細書において一般に用いる場合、１つ以上の中央演算装置（ＣＰＵ）、ディジタル信号プロセッサ（ＤＳＰ）、特定用途集積回路（ＡＳＩＣ）等のような、あらゆる論理演算装置を指す。プロセッサおよびメモリは、１つのチップ上にモノリシックに集積することができ、多数のチップまたはホスト・システムのコンポーネント間で分散することができ、および／またはアルゴリズムの何らかの組み合わせによって提供することができる。本明細書において記載した方法は、ソフトウェア・アルゴリズム（１つまたは複数）、プログラム、ファームウェア、ハードウェア、コンポーネント、回路の１つ以上で、いずれの組み合わせでも実現することができる。
【０５００】
本明細書において記載したシステムおよび方法を具体化するシステム・コンポーネントは、一緒に配置すること、または別個の位置に配置することができる。したがって、本明細書において記載したシステムおよび方法を具現化するシステム・コンポーネントは、単一のシステム、多数のシステム、および／または地理的に離れたシステムのコンポーネントとすることができる。また、これらのコンポーネントは、単一のシステム、多数のシステム、および／または地理的に離れたシステムのサブコンポーネントまたはサブシステムとすることもできる。これらのコンポーネントは、ホスト・システムの１つ以上のその他のコンポーネント、またはホスト・システムに結合されているシステムに結合することができる。
【０５０１】
通信経路は、システム・コンポーネントを結合し、コンポーネント間においてファイルを伝達または転送する媒体であればいずれでも含む。通信経路は、ワイヤレス接続、有線接続、混成ワイヤレス／有線接続を含む。また、通信経路は、ローカル・エリア・ネットワーク（ＬＡＮ）、都市エリア・ネットワーク（ＭＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、企業固有ネットワーク、事務所間またはバックエンド・ネットワーク、およびインターネットを含むネットワークへの結合または接続も含む。更に、通信経路は、フロッピ・ディスク、ハード・ディスク・ドライブ、およびＣＤ−ＲＯＭディスクのような、リムーバブル固定媒体、ならびにフラッシュＲＡＭ、ユニバーサル・シリアル・バス（ＵＳＢ）接続、ＲＳ−２３２接続、電話回線、バス、および電子メール・メッセージを含む。
【０５０２】
文脈から特に明確に必要となるのではない限り、説明全体を通じて、「備える」(comprise)、「備えている」(comprising)等の単語は、排他的または網羅的な意味とは逆に、包含的意味で解釈することとする。即ち、「含むがそれに限定されない」という意味である。また、単数または複数を用いる単語は、それぞれ、複数または単数も含むこととする。加えて、「ここでは」(herein)、「以下では」(hereunder)、「以上」(above)、「以下」(below)および同様の趣旨の単語は、本願のいずれかの特定部分ではなく、本願全体を指すこととする。「または」という単語が２つ以上の項目のリストに関して用いられる場合、その単語は以下の単語の解釈全てに及ぶこととする。リストにおける項目のいずれか、リストにおける項目全て、およびリストにおける項目のあらゆる組み合わせ。
【０５０３】
以上における実施形態の説明は、網羅的であることも、記載したシステムおよび方法を、開示した形態そのものに限定することも意図していない。具体的な実施形態およびその例は、本明細書では例示の目的で記載したが、その他のシステムおよび方法の範囲内において、種々の同等な修正も可能であることは、当業者であれば認められよう。本明細書において提案した処理環境の教示は、前述のシステムおよび方法だけでなく、他の処理システムおよび方法にも適用することができる。
【０５０４】
以上で説明した種々の実施形態の要素および動作(act)を組み合わせて、更に別の実施形態を提案することができる。これらおよびその他の変更は、以上に詳細に記載した説明を参照すれば、処理環境に対して行うことができる。
【０５０５】
一般に、以下の特許請求の範囲では、前述の実施形態を本明細書および特許請求の範囲に開示される特定の実施形態に限定するように、用いられる用語を解釈してはならず、特許請求の範囲の下で動作する全てのシステムを含むように解釈してしかるべきである。したがって、前述の実施形態は、本明細書における開示に限定されるのではなく、代わりに、実施形態の範囲は、特許請求の範囲によって全体的に判断されるものとする。
【０５０６】
以上の実施形態のある種の態様が、以下にある種の請求項の形態で提示されるが、本発明者は、これら実施形態の種々の態様を、いかなる数の請求項の形態でも想定している。したがって、本発明者は、本願を出願した後に本実施形態の他の態様に対してこのような追加の請求項の形態を追求するために、追加の請求項を加える権利を保持することとする。
【図１】
0005782431.tif 000004
【図２】
0005782431.tif 000005
【図３】
0005782431.tif 000006
【図４ａ】
0005782431.tif 000007
【図４ｂ】
0005782431.tif 000008
【図５ａ】
0005782431.tif 000009
【図５ｂ】
0005782431.tif 000010
【図６】
0005782431.tif 000011
【図７】
0005782431.tif 000012
【図８】
0005782431.tif 000013
【図９】
0005782431.tif 000014
【図１０】
0005782431.tif 000015
【図１１】
0005782431.tif 000016
【図１２】
0005782431.tif 000017
【図１３−１】
0005782431.tif 000018
【図１３−２】
0005782431.tif 000019
【図１４】
0005782431.tif 000020
【図１５】
0005782431.tif 000021
【図１６】
0005782431.tif 000022
【図１７】
0005782431.tif 000023
【図１８】
0005782431.tif 000024
【図１９Ａ】
0005782431.tif 000025
【図１９Ｂ−１】
0005782431.tif 000026
【図１９Ｂ−２】
0005782431.tif 000027
【図１９Ｃ】
0005782431.tif 000028
【図１９Ｄ】
0005782431.tif 000029
【図２０】
0005782431.tif 000030
【図２１】
0005782431.tif 000031
【図２２】
0005782431.tif 000032
【図２３】
0005782431.tif 000033
【図２４】
0005782431.tif 000034
【図２５】
0005782431.tif 000035
【図２６】
0005782431.tif 000036