概要
仮想アバタは、AR/VR/MR環境内の実際または架空の人物(または創造物または擬人化されたオブジェクト)の仮想表現であってもよい。例えば、その中で2人のAR/VR/MRユーザが相互に相互作用する、テレプレゼンスセッションの間、視認者は、別のユーザのアバタを視認者の環境内で知覚し、それによって、他のユーザの存在の有形感覚を視認者の環境内に作成することができる。アバタはまた、共有仮想環境内において、ユーザが、相互に相互作用し、ともに物事を行うための方法を提供することができる。例えば、オンラインクラスに出席する生徒は、仮想教室内の他の生徒または教師のアバタを知覚し、彼らと相互作用することができる。別の実施例として、AR/VR/MR環境内でゲームをプレーしているユーザは、ゲーム内の他のプレーヤのアバタを視認し、彼らと相互作用してもよい。
開示されるシステムおよび方法の実施形態は、アバタの改良されたアニメーションおよびウェアラブルシステムのユーザとユーザの環境内のアバタとの間のより現実的相互作用を提供し得る。本開示における実施例は、概して、ヒト形状のアバタをアニメーション化することを説明するが、類似技法はまた、動物、架空の生物、オブジェクト等にも適用されることができる。
ウェアラブルデバイスは、高忠実性デジタルアバタを含む、双方向VR/AR/MR環境を提示するためのディスプレイを含むことができる。高忠実性デジタルアバタの作成は、特殊チームによる数週間または数ヶ月にわたる作業を要し得、ヒトモデルの多数の高品質のデジタル化された写真走査を利用し得る。開示される技術の実施形態は、任意のヒト、動物、キャラクタ、またはオブジェクトの高品質または高忠実性アバタ(またはデジタル表現全般)を作成する能力を有する。これを遂行するために、開示されるプロセスの実施形態は、依然として、正確な出力を維持しながら、より高速かつあまりリソース集約的ではない。
実施例として、ヒト(概して、任意の動物または衣類または髪等の変形可能オブジェクト)のデジタル表現は、骨格と、上層メッシュ(例えば、スキン、衣類等であり得る、外側表面を示すため)とを含んでもよい。ボーンは、関節において、他のボーンに接続されることができ、ボーンは、ボーンが移動すると、割り当てられた頂点が、ボーンとともに自動的に移動するように、それに割り当てられる、あるメッシュ頂点を有することができる。各頂点は、ボーンの移動の組み合わせから補間される頂点の運動を伴う、複数のボーン割当を有することができる。本初期移動は、「スキンクラスタ」と呼ばれ、概して、大まかな移動を捕捉する。(ボーンおよび骨格は、デジタル構造物であって、必ずしも、人体内の実際の骨に対応するわけではないことに留意されたい。)ヒト(時として、本明細書では、アバタとも称される、仮想表現)をモデル化する際の後続ステップが、時として、本明細書では、表面またはメッシュとも称される、スキンのより細かい移動を捕捉するために必要とされ得る。本後続ステップは、スキンのより細かい移動を捕捉するために、初期の大まかな移動からの差異を表す。
アバタをアニメーション化するために、ウェアラブルデバイスは、アバタのメッシュの頂点が、下層骨格の関節の回転および平行移動の線形加重和に基づいて変換される、線形ブレンドスキニング(LBS)技法を利用することができる。一連のアバタ姿勢のための関節の加重、回転、および平行移動(集合的に、スキニングパラメータと称される)を計算することは、困難な問題である。
ヒトアニメータは、骨毎に各頂点の対応する加重を設定することによって、メッシュ頂点をボーンに割り当てることができる。ヒトアニメータは、アニメータの一意の主観的芸術的視覚に基づいて、これらの割当を行い、アニメータの存在と同じ数の手動スキニング技法が存在する。本割当プロセスは、拡張、複合、または仮想現実等のリアルタイム用途において使用するためのスキンを作成するように良好に整えられていない、手間がかかり、時間がかかるプロセスであり得る。
本願は、標的姿勢を種々のソース(例えば、モデルの写真測量走査、専門家によって手掛けられた彫刻、シミュレーション、または生物測定的に導出されたモデル)から求め、その姿勢に関するスキニングパラメータを計算し得る、算出システムおよび方法を説明する。本システムおよび方法は、初期標的姿勢、高次骨格、およびスキンクラスタによってシードされ、ヒトによって理解可能かつ生物学的に動機付けられた制約(例えば、関節間の長さは、実世界骨がその長さを容易に変化させないため、制約され得る)に従って、スキニングパラメータを生成する、制約付き最適化技法を適用することができる。本システムおよび方法は、特に、リアルタイムコンテキストにおいて適用可能であり得、ユーザ(例えば、アニメータ)入力の必要性を低減または最小限にし得る。これらの算出システムおよび方法は、ヒトアニメータがアニメータの主観的芸術的視覚を使用してアニメーションを主観的に実施している方法と異なる方法において、スキニングパラメータを生成するようにアルゴリズム的に適用され得る、具体的、客観的、かつ非従来のルールに基づく。
故に、自動化されたアバタアニメーションのためのスキニングパラメータを計算するためのシステムおよび方法の種々の実装が、下記に提供されるであろう。
(ウェアラブルシステムの3Dディスプレイの実施例)
ウェアラブルシステム(本明細書では、拡張現実(AR)システムとも称される)は、2Dまたは3D仮想画像をユーザに提示するために構成されることができる。画像は、組み合わせまたは同等物における、静止画像、ビデオのフレーム、またはビデオであってもよい。ウェアラブルシステムの少なくとも一部は、ユーザ相互作用のために、単独で、または組み合わせて、VR、AR、またはMR環境を提示し得る、ウェアラブルデバイス上に実装されることができる。ウェアラブルデバイスは、ARデバイス(ARD)と同義的に使用されることができる。さらに、本開示の目的のために、用語「AR」は、用語「MR」と同義的に使用される。
図1は、人物によって視認される、ある仮想現実オブジェクトおよびある物理的オブジェクトを伴う、複合現実シナリオの例証を描写する。図1では、MR場面100が、描写され、MR技術のユーザには、人々、木々、背景における建物、およびコンクリートプラットフォーム120を特徴とする、実世界公園状設定110が見える。これらのアイテムに加え、MR技術のユーザはまた、実世界プラットフォーム120上に立っているロボット像130と、マルハナバチの擬人化のように見える、飛んでいる漫画のようなアバタキャラクタ140とが「見える」と知覚するが、これらの要素は、実世界には存在しない。
3Dディスプレイが、真の深度感覚、より具体的には、表面深度のシミュレートされた感覚を生成するために、ディスプレイの視野内の点毎に、その仮想深度に対応する遠近調節応答を生成することが望ましくあり得る。ディスプレイ点に対する遠近調節応答が、収束および立体視の両眼深度キューによって決定されるようなその点の仮想深度に対応しない場合、ヒトの眼は、遠近調節衝突を体験し、不安定な結像、有害な眼精疲労、頭痛、および遠近調節情報の不在下では、表面深度のほぼ完全な欠如をもたらし得る。
VR、AR、およびMR体験は、複数の深度平面に対応する画像が視認者に提供されるディスプレイを有する、ディスプレイシステムによって提供されることができる。画像は、深度平面毎に異なってもよく(例えば、場面またはオブジェクトの若干異なる提示を提供する)、視認者の眼によって別個に集束され、それによって、異なる深度平面上に位置する場面に関する異なる画像特徴に合焦させるために要求される眼の遠近調節(accommodation)に基づいて、または合焦からずれている異なる深度平面上の異なる画像特徴を観察することに基づいて、ユーザに深度キューを提供することに役立ち得る。本明細書のいずれかに議論されるように、そのような深度キューは、信用できる深度の知覚を提供する。
図2は、ウェアラブルシステム200の実施例を図示し、これは、AR/VR/MR場面を提供するように構成されることができる。ウェアラブルシステム200はまた、ARシステム200と称され得る。ウェアラブルシステム200は、ディスプレイ220と、ディスプレイ220の機能をサポートするための種々の機械的および電子的モジュールおよびシステムとを含む。ディスプレイ220は、ユーザ、装着者、または視認者210によって装着可能である、フレーム230に結合されてもよい。ディスプレイ220は、ユーザ210の眼の正面に位置付けられることができる。ディスプレイ220は、AR/VR/MRコンテンツをユーザに提示することができる。ディスプレイ220は、ユーザの頭部上に装着される、頭部搭載型ディスプレイ(HMD)を備えることができる。
いくつかの実施形態では、スピーカ240が、フレーム230に結合され、ユーザの外耳道に隣接して位置付けられる(いくつかの実施形態では、示されない別のスピーカが、ユーザの他方の外耳道に隣接して位置付けられ、ステレオ/成形可能音制御を提供する)。ディスプレイ220は、環境からオーディオストリームを検出し、周囲音を捕捉するために、オーディオセンサ(例えば、マイクロホン)232を含むことができる。いくつかの実施形態では、示されない1つ以上の他のオーディオセンサが、ステレオ音受信を提供するために位置付けられる。ステレオ音受信は、音源の場所を決定するために使用されることができる。ウェアラブルシステム200は、音声または発話認識をオーディオストリームに実施することができる。
ウェアラブルシステム200は、ユーザの周囲の環境内の世界を観察する、外向きに向いた結像システム464(図4に示される)を含むことができる。ウェアラブルシステム200はまた、ユーザの眼移動を追跡し得る、内向きに向いた結像システム462(図4に示される)を含むことができる。内向きに向いた結像システムは、一方の眼の移動または両方の眼の移動のいずれかを追跡することができる。内向きに向いた結像システム462は、フレーム230に取り付けられてもよく、内向きに向いた結像システムによって入手された画像情報を処理し、例えば、ユーザ210の眼の瞳孔直径または配向、眼の移動、または眼姿勢を決定し得る、処理モジュール260または270と電気通信してもよい。内向きに向いた結像システム462は、1つ以上のカメラを含んでもよい。例えば、少なくとも1つのカメラは、各眼を結像するために使用されてもよい。カメラによって入手された画像は、眼毎に、別個に、瞳孔サイズまたは眼姿勢を決定し、それによって、各眼への画像情報の提示がその眼に対して動的に調整されることを可能にするために使用されてもよい。
実施例として、ウェアラブルシステム200は、外向きに向いた結像システム464または内向きに向いた結像システム462を使用して、ユーザの姿勢の画像を入手することができる。画像は、静止画像、ビデオのフレーム、またはビデオであってもよい。
ディスプレイ220は、有線導線または無線接続等によって、フレーム230に固定して取り付けられる、ユーザによって装着されるヘルメットまたは帽子に固定して取り付けられる、ヘッドホンに内蔵される、または別様にユーザ210に除去可能に取り付けられる(例えば、リュック式構成において、ベルト結合式構成において)等、種々の構成において搭載され得る、ローカルデータ処理モジュール260に動作可能に結合されることができる(250)。
ローカル処理およびデータモジュール260は、ハードウェアプロセッサおよび不揮発性メモリ(例えば、フラッシュメモリ)等のデジタルメモリを備えてもよく、その両方とも、データの処理、キャッシュ、および記憶を補助するために利用され得る。データは、a)画像捕捉デバイス(例えば、内向きに向いた結像システムまたは外向きに向いた結像システム内のカメラ)、オーディオセンサ(例えば、マイクロホン)、慣性測定ユニット(IMU)、加速度計、コンパス、全地球測位システム(GPS)ユニット、無線デバイス、またはジャイロスコープ等の(例えば、フレーム230に動作可能に結合される、または別様にユーザ210に取り付けられ得る)センサから捕捉されるデータ、または、b)場合によっては処理または読出後にディスプレイ220への通過のために、遠隔処理モジュール270または遠隔データリポジトリ280を使用して入手または処理されるデータを含んでもよい。ローカル処理およびデータモジュール260は、これらの遠隔モジュールがローカル処理およびデータモジュール260へのリソースとして利用可能であるように、有線または無線通信リンク等を介して、通信リンク262または264によって遠隔処理モジュール270または遠隔データリポジトリ280に動作可能に結合されてもよい。加えて、遠隔処理モジュール280および遠隔データリポジトリ280は、相互に動作可能に結合されてもよい。
いくつかの実施形態では、遠隔処理モジュール270は、データまたは画像情報を分析および処理するように構成される、1つ以上のプロセッサを備えてもよい。いくつかの実施形態では、遠隔データリポジトリ280は、デジタルデータ記憶設備を備えてもよく、これは、インターネットまたは「クラウド」リソース構成における他のネットワーキング構成を通して利用可能であってもよい。いくつかの実施形態では、全てのデータが、記憶され、全ての算出が、ローカル処理およびデータモジュールにおいて実施され、遠隔モジュールからの完全に自律的な使用を可能にする。
(ウェアラブルシステムの例示的コンポーネント)
図3は、ウェアラブルシステムの例示的コンポーネントを図式的に図示する。図3は、ウェアラブルシステム200を示し、これは、ディスプレイ220と、フレーム230とを含むことができる。引き伸ばし図202は、ウェアラブルシステム200の種々のコンポーネントを図式的に図示する。ある実装では、図3に図示されるコンポーネントのうちの1つ以上のものは、ディスプレイ220の一部であることができる。種々のコンポーネントは、単独で、または組み合わせて、ウェアラブルシステム200のユーザまたはユーザの環境と関連付けられた種々のデータ(例えば、聴覚的または視覚的データ等)を収集することができる。他の実施形態は、ウェアラブルシステムが使用される用途に応じて、付加的またはより少ないコンポーネントを有してもよいことを理解されたい。なお、図3は、種々のコンポーネントのうちのいくつかと、ウェアラブルシステムを通して収集、分析、および記憶され得る、データのタイプの基本概念とを提供する。
図3は、例示的ウェアラブルシステム200を示し、これは、ディスプレイ220を含むことができる。ディスプレイ220は、ユーザの頭部、またはフレーム230に対応する、筐体またはフレーム230に搭載され得る、ディスプレイレンズ226を備えることができる。ディスプレイレンズ230は、筐体230によって、ユーザの眼302、304の正面に位置付けられる、1つ以上の透明ミラーを備えてもよく、投影された光338を眼302、304の中にバウンスさせ、ビーム成形を促進しながら、また、ローカル環境からの少なくとも一部の光の透過を可能にするように構成されてもよい。投影された光ビーム338の波面は、投影された光の所望の焦点距離と一致するように屈曲または集束されてもよい。図示されるように、2つの広視野マシンビジョンカメラ316(世界カメラとも称される)が、筐体230に結合され、ユーザの周囲の環境を結像することができる。これらのカメラ316は、二重捕捉式可視光/非可視(例えば、赤外線)光カメラであることができる。カメラ316は、図4に示される外向きに向いた結像システム464の一部であってもよい。世界カメラ316によって入手された画像は、姿勢プロセッサ336によって処理されることができる。例えば、姿勢プロセッサ336は、1つ以上のオブジェクト認識装置708(例えば、図7に示される)を実装し、ユーザまたはユーザの環境内の別の人物の姿勢を識別する、またはユーザの環境内の物理的オブジェクトを識別することができる。
図3を継続して参照すると、光338を眼302、304の中に投影するように構成される、ディスプレイミラーおよび光学系を伴う、一対の走査式レーザ成形波面(例えば、深度のために)光プロジェクタモジュールが、示される。描写される図はまた、ユーザの眼302、304を追跡し、レンダリングおよびユーザ入力をサポート可能であるように構成される、赤外線光(発光ダイオード「LED」等)とペアリングされる、2つの小型赤外線カメラ324を示す。カメラ324は、図4に示される、内向きに向いた結像システム462の一部であってもよい。ウェアラブルシステム200はさらに、センサアセンブリ339を特徴とすることができ、これは、X、Y、およびZ軸加速度計能力および磁気コンパスおよびX、Y、およびZ軸ジャイロスコープ能力を備え、好ましくは、200Hz等の比較的に高周波数でデータを提供し得る。センサアセンブリ339は、図2Aを参照して説明される、IMUの一部であってもよい。描写されるシステム200はまた、ASIC(特定用途向け集積回路)、FPGA(フィールドプログラマブルゲートアレイ)、またはARMプロセッサ(高度縮小命令セット機械)等の頭部姿勢プロセッサ336を備えることができ、これは、リアルタイムまたは近リアルタイムユーザ頭部姿勢を捕捉デバイス316から出力された広視野画像情報から計算するように構成されてもよい。頭部姿勢プロセッサ336は、ハードウェアプロセッサであることができ、図2Aに示されるローカル処理およびデータモジュール260の一部として実装されることができる。
ウェアラブルシステムはまた、1つ以上の深度センサ234を含むことができる。深度センサ234は、環境内のオブジェクトとウェアラブルデバイスとの間の距離を測定するように構成されることができる。深度センサ234は、レーザスキャナ(例えば、ライダ)、超音波深度センサ、または深度感知カメラを含んでもよい。カメラ316が深度感知能力を有する、ある実装では、カメラ316はまた、深度センサ234と見なされ得る。
また、示されるのは、デジタルまたはアナログ処理を実行し、姿勢をセンサアセンブリ339からのジャイロスコープ、コンパス、または加速度計データから導出するように構成される、プロセッサ332である。プロセッサ332は、図2に示される、ローカル処理およびデータモジュール260の一部であってもよい。ウェアラブルシステム200はまた、図3に示されるように、例えば、GPS337(全地球測位システム)等の測位システムを含み、姿勢および測位分析を補助することができる。加えて、GPSはさらに、ユーザの環境についての遠隔ベース(例えば、クラウドベース)の情報を提供してもよい。本情報は、ユーザの環境内のオブジェクトまたは情報を認識するために使用されてもよい。
ウェアラブルシステムは、GPS337および遠隔コンピューティングシステム(例えば、遠隔処理モジュール270、別のユーザのARD等)によって入手されたデータを組み合わせてもよく、これは、ユーザの環境についてのより多くの情報を提供することができる。一実施例として、ウェアラブルシステムは、GPSデータに基づいて、ユーザの場所を決定し、ユーザの場所と関連付けられた仮想オブジェクトを含む、世界マップを読み出すことができる(例えば、遠隔処理モジュール270と通信することによって)。別の実施例として、ウェアラブルシステム200は、世界カメラ316(図4に示される外向きに向いた結像システム464の一部であってもよい)を使用して、環境を監視することができる。世界カメラ316によって入手された画像に基づいて、ウェアラブルシステム200は、環境内のオブジェクトを検出することができる(例えば、図7に示される1つ以上のオブジェクト認識装置708を使用することによって)。ウェアラブルシステムはさらに、GPS337によって入手されたデータを使用して、キャラクタを解釈することができる。
ウェアラブルシステム200はまた、レンダリングエンジン334を備えてもよく、これは、世界のユーザのビューのために、ユーザにローカルなレンダリング情報を提供し、スキャナの動作およびユーザの眼の中への結像を促進するように構成されることができる。レンダリングエンジン334は、ハードウェアプロセッサ(例えば、中央処理ユニットまたはグラフィック処理ユニット等)によって実装されてもよい。いくつかの実施形態では、レンダリングエンジンは、ローカル処理およびデータモジュール260の一部である。レンダリングエンジン334は、ウェアラブルシステム200の他のコンポーネントに通信可能に結合されることができる(例えば、有線または無線リンクを介して)。例えば、レンダリングエンジン334は、通信リンク274を介して、眼カメラ324に結合され、通信リンク272を介して、投影サブシステム318(網膜走査ディスプレイに類似する様式において、走査レーザ配列を介して、光をユーザの眼302、304の中に投影することができる)に結合されることができる。レンダリングエンジン334はまた、それぞれ、リンク276および294を介して、例えば、センサ姿勢プロセッサ332および画像姿勢プロセッサ336等の他の処理ユニットと通信することができる。
カメラ324(例えば、小型赤外線カメラ)は、眼姿勢を追跡し、レンダリングおよびユーザ入力をサポートするために利用されてもよい。いくつかの例示的眼姿勢は、ユーザが見ている場所または合焦させている深度(眼の輻輳・開散運動(vergence)を用いて推定されてもよい)を含んでもよい。GPS337、ジャイロスコープ、コンパス、および加速度計339は、大まかなまたは高速姿勢推定を提供するために利用されてもよい。カメラ316のうちの1つ以上のものは、画像および姿勢を入手することができ、これは、関連付けられたクラウドコンピューティングリソースからのデータと併せて、ローカル環境をマッピングし、ユーザビューを他者と共有するために利用されてもよい。
図3に描写される例示的コンポーネントは、例証目的のためだけのものである。複数のセンサおよび他の機能モジュールが、例証および説明の容易性のために、ともに示される。いくつかの実施形態は、これらのセンサまたはモジュールの1つのみまたはサブセットを含んでもよい。さらに、これらのコンポーネントの場所は、図3に描写される位置に限定されない。いくつかのコンポーネントは、ベルト搭載型コンポーネント、ハンドヘルドコンポーネント、またはヘルメットコンポーネント等、他のコンポーネント内に搭載または格納されてもよい。一実施例として、画像姿勢プロセッサ336、センサ姿勢プロセッサ332、およびレンダリングエンジン334は、ベルトパック内に位置付けられ、超広帯域、Wi-Fi、Bluetooth(登録商標)等の無線通信を介して、または有線通信を介して、ウェアラブルシステムの他のコンポーネントと通信するように構成されてもよい。描写される筐体230は、好ましくは、ユーザによって頭部搭載可能かつ装着可能である。しかしながら、ウェアラブルシステム200のいくつかのコンポーネントは、ユーザの身体の他の部分に装着されてもよい。例えば、スピーカ240が、ユーザの耳の中に挿入され、音をユーザに提供してもよい。
ユーザの眼302、304の中への光338の投影に関して、いくつかの実施形態では、カメラ324は、一般に、眼の焦点の位置または「焦点深度」と一致する、ユーザの眼の中心が幾何学的に輻輳される場所を測定するために利用されてもよい。眼が輻輳する全ての点の3次元表面は、「単視軌跡」と称され得る。焦点距離は、有限数の深度をとり得る、または無限に変動し得る。輻輳・開散運動距離から投影された光は、対象の眼302、304に集束されるように現れる一方、輻輳・開散運動距離の正面または背後の光は、ぼかされる。本開示のウェアラブルデバイスおよび他のディスプレイシステムの実施例はまた、米国特許公開第2016/0270656号(参照することによってその全体として本明細書に組み込まれる)に説明される。
ヒト視覚系は、複雑であって、深度の現実的知覚を提供することは、困難である。オブジェクトの視認者は、輻輳・開散運動と遠近調節の組み合わせに起因して、オブジェクトを3次元として知覚し得る。相互に対する2つの眼の輻輳・開散運動移動(例えば、瞳孔が、相互に向かって、またはそこから離れるように移動し、眼の視線を収束させ、オブジェクトを固視するような瞳孔の回転)は、眼の水晶体の合焦(または「遠近調節」)と緊密に関連付けられる。通常条件下、焦点を1つのオブジェクトから異なる距離における別のオブジェクトに変化させるための眼のレンズの焦点の変化または眼の遠近調節は、「遠近調節-輻輳・開散運動反射」として知られる関係下、輻輳・開散運動の整合変化を自動的に同一距離に生じさせるであろう。同様に、輻輳・開散運動の変化は、通常条件下、遠近調節の整合変化を誘起するであろう。遠近調節と輻輳・開散運動との間のより良好な整合を提供するディスプレイシステムは、3次元画像のより現実的かつ快適なシミュレーションを形成し得る。
さらに、約0.7ミリメートル未満のビーム直径を伴う、空間的にコヒーレントな光は、眼が合焦している場所にかかわらず、ヒトの眼によって正しく解決されることができる。したがって、適切な焦点深度の錯覚を作成するために、眼の輻輳・開散運動が、カメラ324を用いて追跡されてもよく、レンダリングエンジン334および投影サブシステム318は、単視軌跡上またはそれに近接する全てのオブジェクトを合焦させてレンダリングし、全ての他のオブジェクトを可変程度に焦点をずらしてレンダリングするために利用されてもよい(例えば、意図的に作成されたぼけを使用して)。好ましくは、システム220は、ユーザに、約60フレーム/秒以上のフレームレートでレンダリングする。上記に説明されるように、好ましくは、カメラ324は、眼追跡のために利用されてもよく、ソフトウェアは、輻輳・開散運動幾何学形状だけではなく、また、ユーザ入力としての役割を果たすための焦点場所キューも取り上げるように構成されてもよい。好ましくは、そのようなディスプレイシステムは、昼間または夜間の使用のために好適な明度およびコントラストを用いて構成される。
いくつかの実施形態では、ディスプレイシステムは、好ましくは、視覚的オブジェクト整合のために約20ミリ秒未満の待ち時間、約0.1度未満の角度整合、および約1弧分の分解能を有し、これは、理論によって限定されるわけではないが、ヒトの眼のほぼ限界であると考えられる。ディスプレイシステム220は、位置特定システムと統合されてもよく、これは、GPS要素、光学追跡、コンパス、加速度計、または他のデータソースを伴い、位置および姿勢決定を補助し得る。位置特定情報は、関連世界のユーザのビュー内における正確なレンダリングを促進するために利用されてもよい(例えば、そのような情報は、眼鏡が実世界に対する場所を把握することを促進するであろう)。
いくつかの実施形態では、ウェアラブルシステム200は、ユーザの眼の遠近調節に基づいて、1つ以上の仮想画像を表示するように構成される。ユーザに画像が投影されている場所に合焦させるように強制する、従来の3Dディスプレイアプローチと異なり、いくつかの実施形態では、ウェアラブルシステムは、投影された仮想コンテンツの焦点を自動的に変動させ、ユーザに提示される1つ以上の画像のより快適な視認を可能にするように構成される。例えば、ユーザの眼が、1mの現在の焦点を有する場合、画像は、ユーザの焦点と一致するように投影されてもよい。ユーザが、焦点を3mに偏移させる場合、画像は、新しい焦点と一致するように投影される。したがって、ユーザに所定の焦点を強制するのではなく、いくつかの実施形態のウェアラブルシステム200は、ユーザの眼がより自然な様式において機能することを可能にする。
そのようなウェアラブルシステム200は、仮想現実デバイスに対して典型的に観察される、眼精疲労、頭痛、および他の生理学的症状の発生率を排除または低減させ得る。これを達成するために、ウェアラブルシステム200の種々の実施形態は、1つ以上の可変焦点要素(VFE)を通して、仮想画像を可変焦点距離に投影するように構成される。1つ以上の実施形態では、3D知覚は、画像をユーザから固定された焦点面に投影する、多平面焦点システムを通して達成されてもよい。他の実施形態は、可変平面焦点を採用し、焦点面は、ユーザの焦点の現在の状態と一致するように、z-方向に往復して移動される。
多平面焦点システムおよび可変平面焦点システムの両方において、ウェアラブルシステム200は、眼追跡を採用し、ユーザの眼の輻輳・開散運動を決定し、ユーザの現在の焦点を決定し、仮想画像を決定された焦点に投影してもよい。他の実施形態では、ウェアラブルシステム200は、ファイバスキャナまたは他の光生成源を通して、網膜を横断して、可変焦点の光ビームをラスタパターンで可変に投影する、光変調器を備える。したがって、画像を可変焦点距離に投影するウェアラブルシステム200のディスプレイの能力は、ユーザがオブジェクトを3Dにおいて視認するための遠近調節を容易にするだけではなく、また、米国特許公開第2016/0270656号(参照することによってその全体として本明細書に組み込まれる)にさらに説明されるように、ユーザの眼球異常を補償するために使用されてもよい。いくつかの他の実施形態では、空間光変調器は、種々の光学コンポーネントを通して、画像をユーザに投影してもよい。例えば、以下にさらに説明されるように、空間光変調器は、画像を1つ以上の導波管上に投影してもよく、これは、次いで、画像をユーザに伝送する。
(導波管スタックアセンブリ)
図4は、画像情報をユーザに出力するための導波管スタックの実施例を図示する。ウェアラブルシステム400は、複数の導波管432b、434b、436b、438b、4400bを使用して、3次元知覚を眼/脳に提供するために利用され得る、導波管のスタックまたはスタックされた導波管アセンブリ480を含む。いくつかの実施形態では、ウェアラブルシステム400は、図2のウェアラブルシステム200に対応してもよく、図4は、そのウェアラブルシステム200のいくつかの部分をより詳細に概略的に示す。例えば、いくつかの実施形態では、導波管アセンブリ480は、図2のディスプレイ220の中に統合されてもよい。
図4を継続して参照すると、導波管アセンブリ480はまた、複数の特徴458、456、454、452を導波管間に含んでもよい。いくつかの実施形態では、特徴458、456、454、452は、レンズであってもよい。他の実施形態では、特徴458、456、454、452は、レンズではなくてもよい。むしろ、それらは、単に、スペーサであってもよい(例えば、空気間隙を形成するためのクラッディング層または構造)。
導波管432b、434b、436b、438b、440bまたは複数のレンズ458、456、454、452は、種々のレベルの波面曲率または光線発散を用いて、画像情報を眼に送信するように構成されてもよい。各導波管レベルは、特定の深度平面と関連付けられてもよく、その深度平面に対応する画像情報を出力するように構成されてもよい。画像投入デバイス420、422、424、426、428は、それぞれ、眼410に向かって出力するために、各個別の導波管を横断して入射光を分散させるように構成され得る、導波管440b、438b、436b、434b、432bの中に画像情報を投入するために利用されてもよい。光は、画像投入デバイス420、422、424、426、428の出力表面から出射し、導波管440b、438b、436b、434b、432bの対応する入力縁の中に投入される。いくつかの実施形態では、光の単一ビーム(例えば、コリメートされたビーム)が、各導波管の中に投入され、特定の導波管と関連付けられた深度平面に対応する特定の角度(および発散量)において眼410に向かって指向される、クローン化されたコリメートビームの場全体を出力してもよい。
いくつかの実施形態では、画像投入デバイス420、422、424、426、428は、それぞれ、それぞれが対応する導波管440b、438b、436b、434b、432bの中への投入のための画像情報を生成する、離散ディスプレイである。いくつかの他の実施形態では、画像投入デバイス420、422、424、426、428は、例えば、画像情報を1つ以上の光学導管(光ファイバケーブル等)を介して、画像投入デバイス420、422、424、426、428のそれぞれに送り得る、単一の多重化されたディスプレイの出力端である。
コントローラ460が、スタックされた導波管アセンブリ480および画像投入デバイス420、422、424、426、428の動作を制御する。コントローラ460は、導波管440b、438b、436b、434b、432bへの画像情報のタイミングおよび提供を調整する、プログラミング(例えば、非一過性コンピュータ可読媒体内の命令)を含む。いくつかの実施形態では、コントローラ460は、単一一体型デバイスまたは有線または無線通信チャネルによって接続される分散型システムであってもよい。コントローラ460は、いくつかの実施形態では、処理モジュール260または270(図2に図示される)の一部であってもよい。
導波管440b、438b、436b、434b、432bは、全内部反射(TIR)によって各個別の導波管内で光を伝搬するように構成されてもよい。導波管440b、438b、436b、434b、432bはそれぞれ、主要上部表面および主要底部表面およびそれらの主要上部表面と主要底部表面との間に延在する縁を伴う、平面である、または別の形状(例えば、湾曲)を有してもよい。図示される構成では、導波管440b、438b、436b、434b、432bはそれぞれ、光を再指向させ、各個別の導波管内で伝搬させ、導波管から画像情報を眼410に出力することによって、光を導波管から抽出するように構成される、光抽出光学要素440a、438a、436a、434a、432aを含んでもよい。抽出された光はまた、外部結合光と称され得、光抽出光学要素はまた、外部結合光学要素と称され得る。抽出された光のビームは、導波管によって、導波管内で伝搬する光が光再指向要素に衝打する場所において出力される。光抽出光学要素(440a、438a、436a、434a、432a)は、例えば、反射または回折光学特徴であってもよい。説明を容易にし、図面を明確性にするために、導波管440b、438b、436b、434b、432bの底部主要表面に配置されて図示されるが、いくつかの実施形態では、光抽出光学要素440a、438a、436a、434a、432aは、上部主要表面または底部主要表面に配置されてもよい、または導波管440b、438b、436b、434b、432bの容積内に直接配置されてもよい。いくつかの実施形態では、光抽出光学要素440a、438a、436a、434a、432aは、透明基板に取り付けられ、導波管440b、438b、436b、434b、432bを形成する、材料の層内に形成されてもよい。いくつかの他の実施形態では、導波管440b、438b、436b、434b、432bは、モノリシック材料部品であってもよく、光抽出光学要素440a、438a、436a、434a、432aは、その材料部品の表面上および/または内部に形成されてもよい。
図4を継続して参照すると、本明細書に議論されるように、各導波管440b、438b、436b、434b、432bは、光を出力し、特定の深度平面に対応する画像を形成するように構成される。例えば、眼の最近傍の導波管432bは、そのような導波管432bの中に投入されるにつれて、コリメートされた光を眼410に送達するように構成されてもよい。コリメートされた光は、光学無限遠焦点面を表し得る。次の上方の導波管434bは、眼410に到達し得る前に、第1のレンズ452(例えば、負のレンズ)を通して通過する、コリメートされた光を送出するように構成されてもよい。第1のレンズ452は、眼/脳が、その次の上方の導波管434bから生じる光を光学無限遠から眼410に向かって内向きにより近い第1の焦点面から生じるように解釈するように、若干の凸面波面曲率を生成するように構成されてもよい。同様に、第3の上方の導波管436bは、眼410に到達する前に、その出力光を第1のレンズ452および第2のレンズ454の両方を通して通過させる。第1および第2のレンズ452および454の組み合わせられた屈折力は、眼/脳が、第3の導波管436bから生じる光が次の上方の導波管434bからの光であったよりも光学無限遠から人物に向かって内向きにさらに近い第2の焦点面から生じるように解釈するように、別の漸増量の波面曲率を生成するように構成されてもよい。
他の導波管層(例えば、導波管438b、440b)およびレンズ(例えば、レンズ456、458)も同様に構成され、スタック内の最高導波管440bを用いて、人物に最も近い焦点面を表す集約焦点力のために、その出力をそれと眼との間のレンズの全てを通して送出する。スタックされた導波管アセンブリ480の他側の世界470から生じる光を視認/解釈するとき、レンズ458、456、454、452のスタックを補償するために、補償レンズ層430が、スタックの上部に配置され、下方のレンズスタック458、456、454、452の集約力を補償してもよい。そのような構成は、利用可能な導波管/レンズ対と同じ数の知覚される焦点面を提供する。導波管の光抽出光学要素およびレンズの集束側面は両方とも、静的であってもよい(例えば、動的ではないまたは電気活性ではない)。いくつかの代替実施形態では、一方または両方とも、電気活性特徴を使用して動的であってもよい。
図4を継続して参照すると、光抽出光学要素440a、438a、436a、434a、432aは、導波管と関連付けられた特定の深度平面のために、光をその個別の導波管から再指向し、かつ本光を適切な量の発散またはコリメーションを伴って出力するように構成されてもよい。その結果、異なる関連付けられた深度平面を有する導波管は、関連付けられた深度平面に応じて、異なる量の発散を伴う光を出力する、異なる構成の光抽出光学要素を有してもよい。いくつかの実施形態では、本明細書に議論されるように、光抽出光学要素440a、438a、436a、434a、432aは、光を具体的角度で出力するように構成され得る、立体または表面特徴であってもよい。例えば、光抽出光学要素440a、438a、436a、434a、432aは、立体ホログラム、表面ホログラム、および/または回折格子であってもよい。回折格子等の光抽出光学要素は、2015年6月25日に公開された米国特許公開第2015/0178939号(参照することによってその全体として本明細書に組み込まれる)に説明される。
いくつかの実施形態では、光抽出光学要素440a、438a、436a、434a、432aは、回折パターンを形成する回折特徴または「回折光学要素」(本明細書では、「DOE」とも称される)である。好ましくは、DOEは、ビームの光の一部のみがDOEの各交差部で眼410に向かって偏向される一方、残りが、全内部反射を介して、導波管を通して移動し続けるように、比較的に低回折効率を有する。画像情報を搬送する光は、したがって、複数の場所において導波管から出射する、いくつかの関連出射ビームに分割され、その結果、導波管内でバウンスする本特定のコリメートされたビームに関して、眼304に向かって非常に均一なパターンの出射放出となることができる。
いくつかの実施形態では、1つ以上のDOEは、能動的に回折する「オン」状態と有意に回折しない「オフ」状態との間で切替可能であってもよい。例えば、切替可能なDOEは、ポリマー分散液晶の層を備えてもよく、その中で微小液滴は、ホスト媒体中に回折パターンを備え、微小液滴の屈折率は、ホスト材料の屈折率に実質的に整合するように切り替えられることができる(その場合、パターンは、入射光を著しく回折させない)、または微小液滴は、ホスト媒体のものに整合しない屈折率に切り替えられることができる(その場合、パターンは、入射光を能動的に回折させる)。
いくつかの実施形態では、深度平面または被写界深度の数および分布は、視認者の眼の瞳孔サイズまたは配向に基づいて、動的に変動されてもよい。被写界深度は、視認者の瞳孔サイズと反比例して変化してもよい。その結果、視認者の眼の瞳孔のサイズが減少するにつれて、被写界深度は、その平面の場所が眼の焦点深度を越えるため判別不能である1つの平面が、判別可能となり、瞳孔サイズの低減および被写界深度の相当する増加に伴って、より合焦して現れ得るように増加する。同様に、異なる画像を視認者に提示するために使用される、離間される深度平面の数は、減少された瞳孔サイズに伴って減少されてもよい。例えば、視認者は、1つの深度平面から他の深度平面への眼の遠近調節を調節せずに、第1の深度平面および第2の深度平面の両方の詳細を1つの瞳孔サイズにおいて明確に知覚することが可能ではない場合がある。しかしながら、これらの2つの深度平面は、同時に、遠近調節を変化させずに、別の瞳孔サイズにおいてユーザに合焦するには十分であり得る。
いくつかの実施形態では、ディスプレイシステムは、瞳孔サイズまたは配向の決定に基づいて、または特定の瞳孔サイズまたは配向を示す電気信号の受信に応じて、画像情報を受信する導波管の数を変動させてもよい。例えば、ユーザの眼が、2つの導波管と関連付けられた2つの深度平面間を区別不能である場合、コントローラ460(ローカル処理およびデータモジュール260の実施形態であり得る)は、これらの導波管のうちの1つへの画像情報の提供を停止するように構成またはプログラムされることができる。有利なこととして、これは、システムへの処理負担を低減させ、それによって、システムの応答性を増加させ得る。導波管のためのDOEがオンおよびオフ状態間で切替可能である実施形態では、DOEは、導波管が画像情報を受信するとき、オフ状態に切り替えられてもよい。
いくつかの実施形態では、出射ビームに視認者の眼の直径未満の直径を有するという条件を満たさせることが望ましくあり得る。しかしながら、本条件を満たすことは、視認者の瞳孔のサイズの変動性に照らして、困難であり得る。いくつかの実施形態では、本条件は、視認者の瞳孔のサイズの決定に応答して出射ビームのサイズを変動させることによって、広範囲の瞳孔サイズにわたって満たされる。例えば、瞳孔サイズが減少するにつれて、出射ビームのサイズもまた、減少し得る。いくつかの実施形態では、出射ビームサイズは、可変開口を使用して変動されてもよい。
ウェアラブルシステム400は、世界470の一部を結像する、外向きに向いた結像システム464(例えば、デジタルカメラ)を含むことができる。世界470の本部分は、世界カメラの視野(FOV)と称され得、結像システム464は、時として、FOVカメラとも称される。世界カメラのFOVは、視認者210のFOVと同一である場合とそうではない場合があり、これは、視認者210が所与の時間に知覚する、世界470の一部を包含する。例えば、いくつかの状況では、世界カメラのFOVは、ウェアラブルシステム400の視認者210の視野より大きくあり得る。視認者による視認または結像のために利用可能な領域全体は、動眼視野(FOR)と称され得る。FORは、装着者が、その身体、頭部、または眼を移動させ、空間内の実質的に任意の方向を知覚することができるため、ウェアラブルシステム400を囲繞する4πステラジアンの立体角を含んでもよい。他のコンテキストでは、装着者の移動は、より抑制されてもよく、それに応じて、装着者のFORは、より小さい立体角に接し得る。外向きに向いた結像システム464から得られた画像は、ユーザによって行われるジェスチャ(例えば、手または指のジェスチャ)を追跡し、ユーザの正面における世界470内のオブジェクトを検出する等のために、使用されることができる。
ウェアラブルシステム400は、オーディオセンサ232、例えば、マイクロホンを含み、周囲音を捕捉することができる。上記に説明されるように、いくつかの実施形態では、1つ以上の他のオーディオセンサが、発話源の場所の決定に有用なステレオ音受信を提供するために位置付けられることができる。オーディオセンサ232は、別の実施例として、指向性マイクロホンを備えることができ、これはまた、オーディオ源が位置する場所に関するそのような有用な指向性情報を提供することができる。ウェアラブルシステム400は、発話源を位置特定する際、または特定の瞬間におけるアクティブ話者を決定するために等、外向きに向いた結像システム464およびオーディオセンサ230の両方からの情報を使用することができる。例えば、ウェアラブルシステム400は、単独で、または話者の反射された画像(例えば、鏡に見られるように)と組み合わせて、音声認識を使用して、話者の識別を決定することができる。別の実施例として、ウェアラブルシステム400は、指向性マイクロホンから入手された音に基づいて、環境内の話者の位置を決定することができる。ウェアラブルシステム400は、発話認識アルゴリズムを用いて、話者の位置から生じる音を解析し、発話のコンテンツを決定し、音声認識技法を使用して、話者の識別(例えば、名前または他の人口統計情報)を決定することができる。
ウェアラブルシステム400はまた、眼移動および顔移動等のユーザの移動を観察する、内向きに向いた結像システム466(例えば、デジタルカメラ)を含むことができる。内向きに向いた結像システム466は、眼410の画像を捕捉し、眼304の瞳孔のサイズおよび/または配向を決定するために使用されてもよい。内向きに向いた結像システム466は、ユーザが見ている方向(例えば、眼姿勢)を決定する際に使用するため、またはユーザのバイオメトリック識別のため(例えば、虹彩識別を介して)、画像を得るために使用されることができる。いくつかの実施形態では、少なくとも1つのカメラが、眼毎に、独立して、各眼の瞳孔サイズまたは眼姿勢を別個に決定し、それによって、各眼への画像情報の提示がその眼に対して動的に調整されることを可能にするために利用されてもよい。いくつかの他の実施形態では、単一眼410のみの瞳孔直径または配向(例えば、対の眼あたり単一カメラのみを使用して)が、決定され、ユーザの両眼に関して類似すると仮定される。内向きに向いた結像システム466によって得られる画像は、ユーザに提示されるべきオーディオまたは視覚的コンテンツを決定するためにウェアラブルシステム400によって使用され得る、ユーザの眼姿勢または気分を決定するために分析されてもよい。ウェアラブルシステム400はまた、IMU、加速度計、ジャイロスコープ等のセンサを使用して、頭部姿勢(例えば、頭部位置または頭部配向)を決定してもよい。
ウェアラブルシステム400は、ユーザが、コマンドをコントローラ460に入力し、ウェアラブルシステム400と相互作用し得る、ユーザ入力デバイス466を含むことができる。例えば、ユーザ入力デバイス466は、トラックパッド、タッチスクリーン、ジョイスティック、多自由度(DOF)コントローラ、容量感知デバイス、ゲームコントローラ、キーボード、マウス、指向性パッド(Dパッド)、ワンド、触知デバイス、トーテム(例えば、仮想ユーザ入力デバイスとして機能する)等を含むことができる。マルチDOFコントローラは、コントローラの一部または全部の可能性として考えられる平行移動(例えば、左/右、前方/後方、または上/下)または回転(例えば、ヨー、ピッチ、またはロール)におけるユーザ入力を感知することができる。平行移動をサポートする、マルチDOFコントローラは、3DOFと称され得る一方、平行移動および回転をサポートする、マルチDOFコントローラは、6DOFと称され得る。ある場合には、ユーザは、指(例えば、親指)を使用して、タッチセンサ式入力デバイスを押下またはその上でスワイプし、入力をウェアラブルシステム400に提供してもよい(例えば、ユーザ入力をウェアラブルシステム400によって提供されるユーザインターフェースに提供するために)。ユーザ入力デバイス466は、ウェアラブルシステム400の使用の間、ユーザの手によって保持されてもよい。ユーザ入力デバイス466は、ウェアラブルシステム400と有線または無線通信することができる。
(ウェアラブルシステムの他のコンポーネント)
多くの実装では、ウェアラブルシステムは、上記に説明されるウェアラブルシステムのコンポーネントに加えて、またはその代替として、他のコンポーネントを含んでもよい。ウェアラブルシステムは、例えば、1つ以上の触知デバイスまたはコンポーネントを含んでもよい。触知デバイスまたはコンポーネントは、触覚をユーザに提供するように動作可能であってもよい。例えば、触知デバイスまたはコンポーネントは、仮想コンテンツ(例えば、仮想オブジェクト、仮想ツール、他の仮想構造)に触れると、圧力またはテクスチャの触覚を提供してもよい。触覚は、仮想オブジェクトが表す物理的オブジェクトの感覚を再現してもよい、または仮想コンテンツが表す想像上のオブジェクトまたはキャラクタ(例えば、ドラゴン)の感覚を再現してもよい。いくつかの実装では、触知デバイスまたはコンポーネントは、ユーザによって装着されてもよい(例えば、ユーザウェアラブルグローブ)。いくつかの実装では、触知デバイスまたはコンポーネントは、ユーザによって保持されてもよい。
ウェアラブルシステムは、例えば、ユーザによって操作可能であって、ウェアラブルシステムへの入力またはそれとの相互作用を可能にする、1つ以上の物理的オブジェクトを含んでもよい。これらの物理的オブジェクトは、本明細書では、トーテムと称され得る。いくつかのトーテムは、例えば、金属またはプラスチック片、壁、テーブルの表面等、無生物オブジェクトの形態をとってもよい。ある実装では、トーテムは、実際には、任意の物理的入力構造(例えば、キー、トリガ、ジョイスティック、トラックボール、ロッカスイッチ)を有していなくてもよい。代わりに、トーテムは、単に、物理的表面を提供してもよく、ウェアラブルシステムは、ユーザにトーテムの1つ以上の表面上にあるように見えるように、ユーザインターフェースをレンダリングしてもよい。例えば、ウェアラブルシステムは、トーテムの1つ以上の表面上に常駐するように見えるように、コンピュータキーボードおよびトラックパッドの画像をレンダリングしてもよい。例えば、ウェアラブルシステムは、トーテムとしての役割を果たし得る、アルミニウムの薄い長方形プレートの表面上に見えるように、仮想コンピュータキーボードおよび仮想トラックパッドをレンダリングしてもよい。長方形プレート自体は、任意の物理的キーまたはトラックパッドまたはセンサを有していない。しかしながら、ウェアラブルシステムは、仮想キーボードまたは仮想トラックパッドを介して行われた選択または入力として、長方形プレートを用いたユーザ操作または相互作用またはタッチを検出し得る。ユーザ入力デバイス466(図4に示される)は、トラックパッド、タッチパッド、トリガ、ジョイスティック、トラックボール、ロッカまたは仮想スイッチ、マウス、キーボード、多自由度コントローラ、または別の物理的入力デバイスを含み得る、トーテムの実施形態であってもよい。ユーザは、単独で、または姿勢と組み合わせて、トーテムを使用し、ウェアラブルシステムまたは他のユーザと相互作用してもよい。
本開示のウェアラブルデバイス、HMD、およびディスプレイシステムと使用可能な触知デバイスおよびトーテムの実施例は、米国特許公開第2015/0016777号(参照することによってその全体として本明細書に組み込まれる)に説明される。
(ウェアラブルシステムとのユーザ相互作用の例示的プロセス)
図5は、仮想ユーザインターフェースと相互作用するための方法500の実施例のプロセスフロー図である。方法500は、本明細書に説明されるウェアラブルシステムによって実施されてもよい。方法500の実施形態は、ウェアラブルシステムによって使用され、ウェアラブルシステムのFOV内の人物またはドキュメントを検出することができる。
ブロック510では、ウェアラブルシステムは、特定のUIを識別してもよい。UIのタイプは、ユーザによって事前決定されてもよい。ウェアラブルシステムは、ユーザ入力(例えば、ジェスチャ、視覚的データ、オーディオデータ、感覚データ、直接コマンド等)に基づいて、特定のUIが取り込まれる必要があることを識別してもよい。UIは、システムの装着者がドキュメントを装着者に提示するユーザを観察している(例えば、旅行者検問所において)、セキュリティシナリオに特有であることができる。ブロック520では、ウェアラブルシステムは、仮想UIのためのデータを生成してもよい。例えば、範囲、一般的構造、UIの形状等と関連付けられたデータが、生成されてもよい。加えて、ウェアラブルシステムは、ウェアラブルシステムがUIをユーザの物理的場所に関連して表示し得るように、ユーザの物理的場所のマップ座標を決定してもよい。例えば、UIが、身体中心である場合、ウェアラブルシステムは、リングUIがユーザの周囲に表示され得る、または平面UIが壁上またはユーザの正面に表示され得るように、ユーザの物理的立ち位置の座標、頭部姿勢、または眼姿勢を決定してもよい。本明細書に説明されるセキュリティコンテキストでは、UIは、装着者が、旅行者および旅行者のドキュメントを見ながら、UIを容易に視認し得るように、UIがドキュメントをシステムの装着者に提示している旅行者を囲繞しているかのように表示されてもよい。UIが、手中心である場合、ユーザの手のマップ座標が、決定されてもよい。これらのマップ点は、FOVカメラ、感覚入力を通して受信されたデータ、または任意の他のタイプの収集されたデータを通して、導出されてもよい。
ブロック530では、ウェアラブルシステムは、データをクラウドからディスプレイに送信してもよい、またはデータは、ローカルデータベースからディスプレイコンポーネントに送信されてもよい。ブロック540では、UIは、送信されたデータに基づいて、ユーザに表示される。例えば、ライトフィールドディスプレイは、仮想UIをユーザの眼の一方または両方の中に投影することができる。いったん仮想UIが作成されると、ウェアラブルシステムは、単に、ブロック550において、より多くの仮想コンテンツを仮想UI上に生成するためのユーザからのコマンドを待機してもよい。例えば、UIは、ユーザの身体またはユーザの環境内の人物(例えば、旅行者)の身体の周囲の身体中心リングであってもよい。ウェアラブルシステムは、次いで、コマンド(ジェスチャ、頭部または眼移動、音声コマンド、ユーザ入力デバイスからの入力等)を待機してもよく、それが認識される場合(ブロック560)、コマンドと関連付けられた仮想コンテンツは、ユーザに表示されてもよい(ブロック570)。
(複合現実におけるアバタレンダリングの実施例)
ウェアラブルシステムは、高被写界深度をレンダリングされたライトフィールド内で達成するために、種々のマッピング関連技法を採用してもよい。仮想世界をマッピングする際、実世界内の全ての特徴および点を把握し、仮想オブジェクトを実世界に関連して正確に描くことが有利である。この目的を達成するために、ウェアラブルシステムのユーザから捕捉されたFOV画像が、実世界の種々の点および特徴についての情報を伝達する新しい写真を含むことによって、世界モデルに追加されることができる。例えば、ウェアラブルシステムは、マップ点(2D点または3D点等)のセットを収集し、新しいマップ点を見出し、世界モデルのより正確なバージョンをレンダリングすることができる。第1のユーザの世界モデルは、第2のユーザが第1のユーザを囲繞する世界を体験し得るように、(例えば、クラウドネットワーク等のネットワークを経由して)第2のユーザに通信されることができる。
図6Aは、ウェアラブルシステムの別の実施例のブロック図であって、これは、複合現実環境内へのアバタ処理およびレンダリングシステム690を備えることができる。ウェアラブルシステム600は、図2に示されるウェアラブルシステム200の一部であってもよい。本実施例では、ウェアラブルシステム600は、マップ620を備えることができ、これは、マップデータベース710(図7に示される)内のデータの少なくとも一部を含んでもよい。マップは、部分的に、ウェアラブルシステム上にローカルで常駐してもよく、部分的に、有線または無線ネットワークによってアクセス可能なネットワーク化された記憶場所(例えば、クラウドシステム内)に常駐してもよい。姿勢プロセス610は、ウェアラブルコンピューティングアーキテクチャ(例えば、処理モジュール260またはコントローラ460)上で実行され、マップ620からのデータを利用して、ウェアラブルコンピューティングハードウェアまたはユーザの位置および配向を決定してもよい。姿勢データは、ユーザが、システムを体験し、世界内で動作するにつれてオンザフライで収集されたデータから、算出されてもよい。データは、画像、センサ(慣性測定ユニット等、これは、概して、加速度計と、ジャイロスコープコンポーネントとを備える)からのデータ、および実または仮想環境内のオブジェクトと関連する表面情報を含んでもよい。
疎点表現は、同時位置特定およびマッピング(例えば、入力が画像/視覚専用である構成を指す、SLAMまたはvSLAM)プロセスの出力であってもよい。本システムは、種々のコンポーネントが存在する世界内の場所だけではなく、世界が成る内容も見出すように構成されることができる。姿勢は、マップの取込およびマップからのデータの使用を含む、多くの目標を達成する、構築ブロックであり得る。
一実施形態では、疎点位置は、それだけでは完全に適正ではあり得ず、さらなる情報が、多焦点AR、VR、またはMR体験を生産するために必要とされ得る。概して、深度マップ情報を指す、稠密表現が、少なくとも部分的に、本間隙を充填するために利用されてもよい。そのような情報は、ステレオ640と称される、プロセスから算出されてもよく、深度情報は、三角測量または飛行時間感知等の技法を使用して決定される。画像情報およびアクティブパターン(アクティブプロジェクタを使用して作成された赤外線パターン等)、画像カメラから入手された画像、または手のジェスチャ/トーテム650が、ステレオプロセス640への入力としての役割を果たし得る。有意な量の深度マップ情報が、ともに融合され得、そのうちの一部は、表面表現とともに要約され得る。例えば、数学的に定義可能な表面は、効率的(例えば、大点群と比較して)であって、ゲームエンジンのような他の処理デバイスへの理解しやすい入力であり得る。したがって、ステレオプロセス(例えば、深度マップ)640の出力は、融合プロセス630において組み合わせられてもよい。姿勢610も同様に、本融合プロセス630への入力であってもよく、融合630の出力は、マップ取込プロセス620への入力となる。サブ表面は、トポグラフィマッピングにおけるように、相互に接続し、より大きい表面を形成し得、マップは、点および表面の大規模ハイブリッドとなる。
複合現実プロセス660における種々の側面を解決するために、種々の入力が、利用されてもよい。例えば、図6Aに描写される実施形態では、ゲームパラメータが、入力され、システムのユーザが、種々の場所における1匹以上のモンスター、種々の条件下で死にかけている、または逃げているモンスター(ユーザがモンスターを射撃する場合等)、種々の場所における壁または他のオブジェクト、および同等物を伴った状態で、モンスターバトルゲームをプレーしていることを決定し得る。世界マップは、オブジェクトの場所に関する情報またはオブジェクトの意味論情報(例えば、オブジェクトが、平坦または丸いかどうか、水平または垂直であるか、テーブルまたはランプであるかどうか等の分類)を含んでもよく、世界マップは、複合現実への別の有益な入力であり得る。世界に対する姿勢も同様に、入力となり、ほぼあらゆる双方向システムに対して重要な役割を担う。
ユーザからの制御または入力は、ウェアラブルシステム600への別の入力である。本明細書に説明されるように、ユーザ入力は、視覚的入力、ジェスチャ、トーテム、オーディオ入力、感覚入力等を含むことができる。動き回る、またはゲームをプレーするために、例えば、ユーザは、自らが所望する内容に関して、ウェアラブルシステム600に命令する必要があり得る。単に、自らを空間内で移動させる以外にも利用され得る、種々の形態のユーザ制御が存在する。一実施形態では、トーテム(例えば、ユーザ入力デバイス)または玩具銃等のオブジェクトが、ユーザによって保持され、システムによって追跡されてもよい。本システムは、好ましくは、ユーザがアイテムを保持していることを把握し、ユーザがアイテムと行っている相互作用の種類を理解するように構成されるであろう(例えば、トーテムまたはオブジェクトが、銃である場合、本システムは、場所および配向と、ユーザが、トリガまたは他の感知されるボタンまたは要素(アクティビティがカメラのいずれかの視野内にないときでも、生じている内容を決定することを補助し得る、IMU等のセンサを装備し得る)をクリックしているかどうかとを理解するように構成されてもよい)。
手のジェスチャの追跡または認識もまた、入力情報を提供し得る。ウェアラブルシステム600は、ボタン押下、左または右、停止、握持、保持のジェスチャ等に関して、手のジェスチャを追跡および解釈するように構成されてもよい。例えば、1つの構成では、ユーザは、非ゲーム用環境において電子メールまたはカレンダをフリップする、または「フィストバンプ」を別の人物またはプレーヤと行うことを所望し得る。ウェアラブルシステム600は、動的である場合とそうではない場合がある、最小量の手のジェスチャを活用するように構成されてもよい。例えば、ジェスチャは、停止のために手を開く、OKのためのサムズアップ、非OKのためのサムズダウン、または指向性コマンドのための右または左または上/下への手のフリップのような単純静的ジェスチャであってもよい。
眼追跡は、別の入力である(例えば、ユーザが見ている場所を追跡し、ディスプレイ技術を制御し、具体的深度または範囲にレンダリングする)。一実施形態では、眼の輻輳・開散運動が、三角測量を使用して、決定されてもよく、次いで、その特定の人物に関して開発された輻輳・開散運動/遠近調節モデルを使用して、遠近調節が、決定されてもよい。眼追跡は、眼カメラによって実施され、眼視線(例えば、片眼または両眼の方向または配向)を決定することができる。他の技法は、例えば、眼の近傍に設置された電極による電位の測定(例えば、電気眼球図記録)等の眼追跡のために使用されることができる。
発話追跡は、単独で、または他の入力(例えば、トーテム追跡、眼追跡、ジェスチャ追跡等)と組み合わせて使用され得る、別の入力であり得る。発話追跡は、単独で、または組み合わせて、発話認識、音声認識を含んでもよい。システム600は、オーディオストリームを環境から受信する、オーディオセンサ(例えば、マイクロホン)を含むことができる。システム600は、発話している人物(例えば、発話が、ARDの装着者または別の人物または音声(例えば、環境内のラウドスピーカによって伝送される記録された音声)からのものであるかどうか)を決定するための音声認識技術と、話されている内容を決定するための発話認識技術とを組み込むことができる。ローカルデータおよび処理モジュール260または遠隔処理モジュール270は、例えば、隠れマルコフモデル、動的時間伸縮法(DTW)ベースの発話認識、ニューラルネットワーク、ディープフィードフォワードおよび再帰ニューラルネットワーク等の深層学習アルゴリズム、エンドツーエンド自動発話認識、機械学習アルゴリズム(図7を参照して説明される)、または音響モデル化または言語モデル化を使用する、他のアルゴリズム等の種々の発話認識アルゴリズムを適用することによって、マイクロホンからのオーディオデータ(または、例えば、ユーザによって鑑賞されているビデオストリーム等の別のストリーム内のオーディオデータ)を処理し、発話のコンテンツを識別することができる。
ローカルデータおよび処理モジュール260または遠隔処理モジュール270はまた、音声認識アルゴリズムを適用することができ、これは、話者が、ウェアラブルシステム600のユーザ210またはユーザが会話している別の人物であるかどうか等、話者の識別を識別することができる。いくつかの例示的音声認識アルゴリズムは、周波数推定、隠れマルコフモデル、ガウス混合物モデル、パターンマッチングアルゴリズム、ニューラルネットワーク、行列表現、ベクトル量子化、話者ダイアライゼーション、決定ツリー、および動的時間伸縮法(DTW)技法を含むことができる。音声認識技法はまた、コホートモデルおよび世界モデル等のアンチ話者技法を含むことができる。スペクトル特徴が、話者特性を表す際に使用されてもよい。ローカルデータおよび処理モジュールまたは遠隔データ処理モジュール270は、図7を参照して説明される、種々の機械学習アルゴリズムを使用して、音声認識を実施することができる。
ウェアラブルシステムの実装は、UIを介したこれらのユーザ制御または入力を使用することができる。UI要素(例えば、制御、ポップアップウィンドウ、吹き出し、データエントリフィールド等)は、例えば、情報、例えば、オブジェクトのグラフィックまたは意味論情報のディスプレイを閉じるために使用されることができる。
カメラシステムに関して、図6Aに示される例示的ウェアラブルシステム600は、3つの対のカメラ、すなわち、ユーザの顔の側面に配列される、一対の相対的広FOVまたは受動SLAMカメラと、ステレオ結像プロセス640をハンドリングし、また、ユーザの顔の正面における手のジェスチャおよびトーテム/オブジェクト追跡を捕捉するために、ユーザの正面に配向される、異なる対のカメラとを含むことができる。FOVカメラおよびステレオプロセス640のための対のカメラは、外向きに向いた結像システム464(図4に示される)の一部であってもよい。ウェアラブルシステム600は、眼ベクトルおよび他の情報を三角測量するために、ユーザの眼に向かって配向される、眼追跡カメラ(図4に示される内向きに向いた結像システム462の一部であってもよい)を含むことができる。ウェアラブルシステム600はまた、1つ以上のテクスチャ加工された光プロジェクタ(赤外線(IR)プロジェクタ等)を備え、テクスチャを場面の中に投入してもよい。
ウェアラブルシステム600は、アバタ処理およびレンダリングシステム690を備えることができる。アバタ処理およびレンダリングシステム690は、コンテキスト情報に基づいて、アバタを生成、更新、アニメーション化、およびレンダリングするように構成されることができる。アバタ処理およびレンダリングシステム690の一部または全部は、単独で、または組み合わせて、ローカル処理およびデータモジュール260または遠隔処理モジュール262、264の一部として実装されることができる。種々の実施形態では、複数のアバタ処理およびレンダリングシステム690(例えば、異なるウェアラブルデバイス上に実装されるように)が、仮想アバタ670をレンダリングするために使用されることができる。例えば、第1のユーザのウェアラブルデバイスは、第1のユーザの意図を決定するために使用されてもよい一方、第2のユーザのウェアラブルデバイスは、アバタの特性を決定し、第1のユーザのウェアラブルデバイスから受信された意図に基づいて、第1のユーザのアバタをレンダリングすることができる。第1のユーザのウェアラブルデバイスおよび第2のユーザのウェアラブルデバイス(または他のそのようなウェアラブルデバイス)は、例えば、図9Aおよび9Bを参照して説明されるであろうように、ネットワークを介して、通信することができる。
図6Bは、例示的アバタ処理およびレンダリングシステム690を図示する。アバタ処理およびレンダリングシステム690は、図11-14Cを参照して説明されるメッシュ転写技法を実装することができる。例示的アバタ処理およびレンダリングシステム690は、単独で、または組み合わせて、3Dモデル処理システム680と、コンテキスト情報分析システム688と、アバタ自動スケーラ692と、意図マッピングシステム694と、解剖学的構造調節システム698と、刺激応答システム696とを備えることができる。システム690は、アバタ処理およびレンダリングのための機能性を図示するように意図され、限定することを意図するものではない。例えば、ある実装では、これらのシステムのうちの1つ以上のものは、別のシステムの一部であってもよい。例えば、コンテキスト情報分析システム688の一部は、個々に、または組み合わせて、アバタ自動スケーラ692、意図マッピングシステム694、刺激応答システム696、または解剖学的構造調節システム698の一部であってもよい。
コンテキスト情報分析システム688は、図2および3を参照して説明される、1つ以上のデバイスセンサに基づいて、環境およびオブジェクト情報を決定するように構成されることができる。例えば、コンテキスト情報分析システム688は、ユーザまたはユーザのアバタの視認者の外向きに向いた結像システム464によって入手された画像を使用して、環境およびユーザの環境のオブジェクト(物理的または仮想オブジェクトを含む)またはその中にユーザのアバタがレンダリングされる環境を分析することができる。コンテキスト情報分析システム688は、単独で、または場所データまたは世界マップ(例えば、マップ620、710、910)から入手されたデータと組み合わせて、そのような画像を分析し、環境内のオブジェクトの場所およびレイアウトを決定することができる。コンテキスト情報分析システム688はまた、仮想アバタ670を現実的にアニメーション化するために、ユーザまたはヒト全般の生物学的特徴にアクセスすることができる。例えば、コンテキスト情報分析システム688は、違和感曲線を生成することができ、これは、ユーザのアバタの身体の一部(例えば、頭部)がユーザの身体の他の部分に対して違和感のある(または非現実的)位置にないように(例えば、アバタの頭部は、270度方向転換されない)、アバタに適用されることができる。ある実装では、1つ以上のオブジェクト認識装置708(図7に示される)は、コンテキスト情報分析システム688の一部として実装されてもよい。
アバタ自動スケーラ692、意図マッピングシステム694、および刺激応答システム696、および解剖学的構造調節システム698は、コンテキスト情報に基づいて、アバタの特性を決定するように構成されることができる。アバタのいくつかの例示的特性は、サイズ、外観、位置、配向、移動、姿勢、表現等を含むことができる。アバタ自動スケーラ692は、ユーザがアバタを不快な姿勢で見る必要がないように、アバタを自動的にスケーリングするように構成されることができる。例えば、アバタ自動スケーラ692は、ユーザが、それぞれ、アバタを見下ろす、またはアバタを見上げる必要がないように、アバタのサイズを増加または減少させ、アバタをユーザの眼の高さに持って来ることができる。意図マッピングシステム694は、アバタがその中にレンダリングされる環境に基づいて、ユーザの相互作用の意図を決定し、(正確なユーザ相互作用ではなく)意図をアバタにマッピングすることができる。例えば、第1のユーザの意図は、テレプレゼンスセッションにおいて第2のユーザと通信することであり得る(例えば、図9B参照)。典型的には、2人が、通信するとき、相互に向かい合う。第1のユーザのウェアラブルシステムの意図マッピングシステム694は、テレプレゼンスセッションの間に存在するそのような対面意図を決定することができ、第1のユーザのウェアラブルシステムに、第2のユーザのアバタを第1のユーザに向かってレンダリングさせることができる。第2のユーザが、物理的に方向転換しようとする場合、第2のユーザのアバタを方向転換された位置にレンダリングする代わりに(第2のユーザのアバタの背面を第1のユーザに対してレンダリングさせるであろう)、第1のユーザの意図マッピングシステム694は、第2のアバタの顔を第1のユーザに対してレンダリングし続けることができ、これは、テレプレゼンスセッションの推測される意図(例えば、本実施例では、対面意図)である。
刺激応答システム696は、環境内の関心オブジェクトを識別し、関心オブジェクトに対するアバタの応答を決定することができる。例えば、刺激応答システム696は、アバタの環境内の音源を識別し、音源を見るようにアバタを自動的に方向転換させることができる。刺激応答システム696はまた、閾値終了条件を決定することができる。例えば、刺激応答システム696は、音源が消失した後またはある時間周期が経過した後、アバタをそのオリジナル姿勢に戻らせることができる。
解剖学的構造調節システム698は、生物学的特徴に基づいて、ユーザの姿勢を調節するように構成されることができる。例えば、解剖学的構造調節システム698は、違和感曲線に基づいて、ユーザの頭部とユーザの胴体との間またはユーザの上半身と下半身との間の相対的位置を調節するように構成されることができる。
3Dモデル処理システム680は、仮想アバタ670をアニメーション化し、ディスプレイ220にレンダリングさせるように構成されることができる。3Dモデル処理システム680は、仮想キャラクタ処理システム682と、移動処理システム684とを含むことができる。仮想キャラクタ処理システム682は、ユーザの3Dモデルを生成および更新するように構成されることができる(仮想アバタを作成およびアニメーション化するため)。移動処理システム684は、例えば、アバタの姿勢を変化させることによって、アバタをユーザの環境内で移動させることによって、またはアバタの顔の表情をアニメーション化することによって等、アバタをアニメーション化するように構成されることができる。本明細書にさらに説明されるであろうように、仮想アバタは、リギング技法を使用して、アニメーション化されることができる。いくつかの実施形態では、アバタは、2つの部分、すなわち、仮想アバタの外向き外観をレンダリングするために使用される表面表現(例えば、変形可能メッシュ)と、メッシュをアニメーション化するために相互接続された関節の階層セット(例えば、コア骨格)とにおいて表される。いくつかの実装では、仮想キャラクタ処理システム682は、表面表現を編集または生成するように構成されることができる一方、移動処理システム684は、アバタを移動させる、メッシュを変形させる等によって、アバタをアニメーション化するために使用されることができる。例えば、いくつかの実装では、移動処理システム684は、本明細書に説明される関節分解プロセス(例えば、図14を参照して説明されるプロセス1400)の実施形態を実施する。
(ユーザの環境をマッピングする実施例)
図7は、MR環境700の実施例のブロック図である。MR環境700は、入力(例えば、ユーザのウェアラブルシステムからの視覚的入力702、室内カメラ等の定常入力704、種々のセンサからの感覚入力706、ユーザ入力デバイス466からのジェスチャ、トーテム、眼追跡、ユーザ入力等)を、1つ以上のユーザウェアラブルシステム(例えば、ウェアラブルシステム200またはディスプレイシステム220)または定常室内システム(例えば、室内カメラ等)から受信するように構成されてもよい。ウェアラブルシステムは、種々のセンサ(例えば、加速度計、ジャイロスコープ、温度センサ、移動センサ、深度センサ、GPSセンサ、内向きに向いた結像システム、外向きに向いた結像システム等)を使用して、ユーザの環境の場所および種々の他の属性を決定することができる。本情報はさらに、異なる視点からの画像または種々のキューを提供し得る、部屋内の定常カメラからの情報で補完されてもよい。カメラ(室内カメラおよび/または外向きに向いた結像システムのカメラ等)によって入手された画像データは、マッピング点のセットに低減されてもよい。
1つ以上のオブジェクト認識装置708が、受信されたデータ(例えば、点の集合)を通してクローリングし、点を認識またはマッピングし、画像をタグ付けし、マップデータベース710を用いて、意味論情報をオブジェクトに結び付けることができる。マップデータベース710は、経時的に収集された種々の点およびその対応するオブジェクトを備えてもよい。種々のデバイスおよびマップデータベースは、ネットワーク(例えば、LAN、WAN等)を通して相互に接続され、クラウドにアクセスすることができる。
本情報およびマップデータベース内の点集合に基づいて、オブジェクト認識装置708a-708nは、環境内のオブジェクトを認識してもよい。例えば、オブジェクト認識装置は、顔、人物、窓、壁、ユーザ入力デバイス、テレビ、ドキュメント(例えば、本明細書におけるセキュリティ実施例において説明されるような旅券、運転免許証、パスポート)、ユーザの環境内の他のオブジェクト等を認識することができる。1つ以上のオブジェクト認識装置が、ある特性を伴うオブジェクトのために特殊化されてもよい。例えば、オブジェクト認識装置708aは、顔を認識するために使用されてもよい一方、別のオブジェクト認識装置は、ドキュメントを認識するために使用されてもよい。
オブジェクト認識は、種々のコンピュータビジョン技法を使用して実施されてもよい。例えば、ウェアラブルシステムは、外向きに向いた結像システム464(図4に示される)によって入手された画像を分析し、場面再構成、イベント検出、ビデオ追跡、オブジェクト認識(例えば、人物またはドキュメント)、オブジェクト姿勢推定、顔認識(例えば、環境内の人物またはドキュメント上の画像から)、学習、インデックス化、運動推定、または画像分析(例えば、写真、署名、識別情報、旅行情報等のドキュメント内の印を識別する)等を実施することができる。1つ以上のコンピュータビジョンアルゴリズムが、これらのタスクを実施するために使用されてもよい。コンピュータビジョンアルゴリズムの非限定的実施例は、スケール不変特徴変換(SIFT)、スピードアップロバスト特徴(SURF)、配向FASTおよび回転BRIEF(ORB)、バイナリロバスト不変スケーラブルキーポイント(BRISK)、高速網膜キーポイント(FREAK)、Viola-Jonesアルゴリズム、Eigenfacesアプローチ、Lucas-Kanadeアルゴリズム、Horn-Schunkアルゴリズム、Mean-shiftアルゴリズム、視覚的同時位置推定およびマッピング(vSLAM)技法、シーケンシャルベイズ推定器(例えば、カルマンフィルタ、拡張カルマンフィルタ等)、バンドル調節、適応閾値化(および他の閾値化技法)、反復最近傍点(ICP)、セミグローバルマッチング(SGM)、セミグローバルブロックマッチング(SGBM)、特徴点ヒストグラム、種々の機械学習アルゴリズム(例えば、サポートベクトルマシン、k最近傍アルゴリズム、単純ベイズ、ニューラルネットワーク(畳み込みまたは深層ニューラルネットワークを含む)、または他の教師あり/教師なしモデル等)等を含む。
オブジェクト認識は、加えて、または代替として、種々の機械学習アルゴリズムによって実施されることができる。いったん訓練されると、機械学習アルゴリズムは、HMDによって記憶されることができる。機械学習アルゴリズムのいくつかの実施例は、教師ありまたは教師なし機械学習アルゴリズムを含むことができ、回帰アルゴリズム(例えば、通常の最小2乗回帰等)、インスタンスベースのアルゴリズム(例えば、学習ベクトル量子化等)、決定ツリーアルゴリズム(例えば、分類および回帰ツリー等)、ベイズアルゴリズム(例えば、単純ベイズ等)、クラスタリングアルゴリズム(例えば、k-平均クラスタリング等)、関連付けルール学習アルゴリズム(例えば、アプリオリアルゴリズム等)、人工ニューラルネットワークアルゴリズム(例えば、Perceptron等)、深層学習アルゴリズム(例えば、Deep Boltzmann Machine、すなわち、深層ニューラルネットワーク等)、次元削減アルゴリズム(例えば、主成分分析等)、アンサンブルアルゴリズム(例えば、Stacked Gneralization等)、および/または他の機械学習アルゴリズムを含む。いくつかの実施形態では、個々のモデルは、個々のデータセットのためにカスタマイズされることができる。例えば、ウェアラブルデバイスは、ベースモデルを生成または記憶することができる。ベースモデルは、開始点として使用され、データタイプ(例えば、テレプレゼンスセッション内の特定のユーザ)、データセット(例えば、テレプレゼンスセッション内のユーザの取得される付加的画像のセット)、条件付き状況、または他の変形例に特有の付加的モデルを生成してもよい。いくつかの実施形態では、ウェアラブルHMDは、複数の技法を利用して、集約されたデータの分析のためのモデルを生成するように構成されることができる。他の技法は、事前に定義された閾値またはデータ値を使用することを含んでもよい。
マップデータベース内の本情報および点の集合に基づいて、オブジェクト認識装置708a-708nは、オブジェクトを認識し、オブジェクトを意味論情報で補完し、生命をオブジェクトに与えてもよい。例えば、オブジェクト認識装置が、点のセットがドアであることを認識する場合、システムは、いくつかの意味論情報を結び付けてもよい(例えば、ドアは、ヒンジを有し、ヒンジを中心として90度移動を有する)。オブジェクト認識装置が、点のセットが鏡であることを認識する場合、システムは、鏡が、部屋内のオブジェクトの画像を反射させ得る、反射表面を有するという意味論情報を結び付けてもよい。意味論情報は、本明細書に説明されるように、オブジェクトのアフォーダンスを含むことができる。例えば、意味論情報は、オブジェクトの法線を含んでもよい。システムは、ベクトルを割り当てることができ、その方向は、オブジェクトの法線を示す。経時的に、マップデータベースは、システム(ローカルに常駐し得る、または無線ネットワークを通してアクセス可能であり得る)が、より多くのデータを世界から蓄積するにつれて成長する。いったんオブジェクトが認識されると、情報は、1つ以上のウェアラブルシステムに伝送されてもよい。例えば、MR環境700は、Californiaで発生している場面についての情報を含んでもよい。環境700は、New Yorkにおける1人以上のユーザに伝送されてもよい。FOVカメラおよび他の入力から受信されたデータに基づいて、オブジェクト認識装置および他のソフトウェアコンポーネントは、場面が世界の異なる部分に存在し得る第2のユーザに正確に「パス」され得るように、種々の画像から収集された点をマッピングし、オブジェクトを認識すること等ができる。環境700はまた、位置特定目的のために、トポロジマップを使用してもよい。
図8は、認識されたオブジェクトに関連して仮想コンテンツをレンダリングする方法800の実施例のプロセスフロー図である。方法800は、仮想場面がウェアラブルシステムのユーザに提示され得る方法を説明する。ユーザは、その場面から地理的に遠隔に存在してもよい。例えば、ユーザは、New Yorkに存在し得るが、Californiaで現在起こっている場面を視認することを所望し得る、またはCaliforniaに存在する友人と散歩に行くことを所望し得る。
ブロック810では、ウェアラブルシステムは、ユーザの環境に関する入力をユーザおよび他のユーザから受信してもよい。これは、種々の入力デバイスおよびマップデータベース内にすでに保有されている知識を通して達成されてもよい。ユーザのFOVカメラ、センサ、GPS、眼追跡等が、ブロック810において、情報をシステムに伝達する。システムは、ブロック820において、本情報に基づいて、疎点を決定してもよい。疎点は、ユーザの周囲における種々のオブジェクトの配向および位置を表示および理解する際に使用され得る、姿勢データ(例えば、頭部姿勢、眼姿勢、身体姿勢、または手のジェスチャ)を決定する際に使用されてもよい。オブジェクト認識装置708a~708nは、ブロック830において、これらの収集された点を通してクローリングし、マップデータベースを使用して、1つ以上のオブジェクトを認識してもよい。本情報は、次いで、ブロック840において、ユーザの個々のウェアラブルシステムに伝達されてもよく、所望の仮想場面が、ブロック850において、適宜、ユーザに表示されてもよい。例えば、所望の仮想場面(例えば、CAにおけるユーザ)が、New Yorkにおけるユーザの種々のオブジェクトおよび他の周囲に関連して、適切な配向、位置等において表示されてもよい。
(複数のウェアラブルシステム間の例示的通信)
図9Aは、相互に相互作用する複数のユーザデバイスを描写する、全体的システム図を図式的に図示する。コンピューティング環境900は、ユーザデバイス930a、930b、930cを含む。ユーザデバイス930a、930b、および930cは、ネットワーク990を通して、相互に通信することができる。ユーザデバイス930a-930cはそれぞれ、ネットワークインターフェースを含み、ネットワーク990を介して、遠隔コンピューティングシステム920(また、ネットワークインターフェース971を含んでもよい)と通信することができる。ネットワーク990は、LAN、WAN、ピアツーピアネットワーク、無線、Bluetooth(登録商標)、または任意の他のネットワークであってもよい。コンピューティング環境900はまた、1つ以上の遠隔コンピューティングシステム920を含むことができる。遠隔コンピューティングシステム920は、クラスタ化され、異なる地理的場所に位置する、サーバコンピュータシステムを含んでもよい。ユーザデバイス930a、930b、および930cは、ネットワーク990を介して、遠隔コンピューティングシステム920と通信してもよい。
遠隔コンピューティングシステム920は、遠隔データリポジトリ980を含んでもよく、これは、具体的ユーザの物理および/または仮想世界についての情報を維持することができる。データ記憶装置980は、ユーザ、ユーザの環境(例えば、ユーザの環境の世界マップ)、またはユーザのアバタの構成に関連する情報を記憶することができる。遠隔データリポジトリは、図2に示される遠隔データリポジトリ280の実施形態であってもよい。遠隔コンピューティングシステム920はまた、遠隔処理モジュール970を含んでもよい。遠隔処理モジュール970は、図2に示される遠隔処理モジュール270の実施形態であってもよい。遠隔処理モジュール970は、1つ以上のプロセッサを含んでもよく、これは、ユーザデバイス(930a、930b、930c)および遠隔データリポジトリ980と通信することができる。プロセッサは、ユーザデバイスおよび他の源から取得される情報を処理することができる。いくつかの実装では、処理または記憶の少なくとも一部は、ローカル処理およびデータモジュール260(図2に示されるように)によって提供されることができる。遠隔コンピューティングシステム920は、所与のユーザが、具体的ユーザ自身の物理的および/または仮想世界についての情報を別のユーザと共有することを可能にしてもよい。
ユーザデバイスは、単独で、または組み合わせて、ウェアラブルデバイス(HMDまたはARD等)、コンピュータ、モバイルデバイス、または任意の他のデバイスであってもよい。例えば、ユーザデバイス930bおよび930cは、図2に示されるウェアラブルシステム200(または図4に示されるウェアラブルシステム400)の実施形態であってもよく、これは、AR/VR/MRコンテンツを提示するように構成されることができる。
ユーザデバイスのうちの1つ以上のものは、図4に示されるユーザ入力デバイス466と併用されることができる。ユーザデバイスは、ユーザおよびユーザの環境についての情報を取得することができる(例えば、図4に示される外向きに向いた結像システム464を使用して)。ユーザデバイスおよび/または遠隔コンピューティングシステム1220は、ユーザデバイスから取得される情報を使用して、画像、点、および他の情報の集合を構築、更新、および建造することができる。例えば、ユーザデバイスは、入手された未加工情報を処理し、さらなる処理のために、処理された情報を遠隔コンピューティングシステム1220に送信してもよい。ユーザデバイスはまた、処理のために、未加工情報を遠隔コンピューティングシステム1220に送信してもよい。ユーザデバイスは、処理された情報を遠隔コンピューティングシステム1220から受信し、ユーザに投影させる前に、最終処理を提供してもよい。ユーザデバイスはまた、取得された情報を処理し、処理された情報を他のユーザデバイスに渡してもよい。ユーザデバイスは、入手された情報を処理しながら、遠隔データリポジトリ1280と通信してもよい。複数のユーザデバイスおよび/または複数のサーバコンピュータシステムが、入手された画像の構築および/または処理に関与してもよい。
物理的世界に関する情報は、経時的に展開されてもよく、異なるユーザデバイスによって収集される情報に基づいてもよい。仮想世界のモデルはまた、経時的に展開され、異なるユーザの入力に基づいてもよい。そのような情報およびモデルは、時として、本明細書では、世界マップまたは世界モデルと称され得る。図6および7を参照して説明されるように、ユーザデバイスによって入手された情報は、世界マップ910を構築するために使用されてもよい。世界マップ910は、図6Aに説明されるマップ620の少なくとも一部を含んでもよい。種々のオブジェクト認識装置(例えば、708a、708b、708c…708n)が、オブジェクトおよびタグ画像を認識するため、および意味論情報をオブジェクトに付加するために使用されてもよい。これらのオブジェクト認識装置はまた、図7に説明される。
遠隔データリポジトリ980は、データを記憶し、世界マップ910の構造を促進するために使用されることができる。ユーザデバイスは、ユーザの環境についての情報を常に更新し、世界マップ910についての情報を受信することができる。世界マップ910は、ユーザまたは別の人物によって作成されてもよい。本明細書に議論されるように、ユーザデバイス(例えば、930a、930b、930c)および遠隔コンピューティングシステム920は、単独で、または組み合わせて、世界マップ910を構築および/または更新してもよい。例えば、ユーザデバイスは、遠隔処理モジュール970および遠隔データリポジトリ980と通信してもよい。ユーザデバイスは、ユーザおよびユーザの環境についての情報を入手または処理してもよい。遠隔処理モジュール970は、遠隔データリポジトリ980およびユーザデバイス(例えば、930a、930b、930c)と通信し、ユーザおよびユーザの環境についての情報を処理してもよい。遠隔コンピューティングシステム920は、例えば、ユーザの画像を選択的にクロッピングする、ユーザの背景を修正する、仮想オブジェクトをユーザの環境に追加する、ユーザの発話に補助情報で注釈を付ける等、ユーザデバイス(例えば、930a、930b、930c)によって入手された情報を修正することができる。遠隔コンピューティングシステム920は、処理された情報を同一または異なるユーザデバイスに送信することができる。
(テレプレゼンスセッションの実施例)
図9Bは、個別のウェアラブルシステムの2人のユーザがテレプレゼンスセッションを行っている、実施例を描写する。2人のユーザ(本実施例では、Alice912およびBob914と命名される)が、本図に示される。2人のユーザは、その個別のウェアラブルデバイス902および904を装着しており、これは、テレプレゼンスセッションにおいて他のユーザの仮想アバタを表すために、図2を参照して説明される、HMD(例えば、システム200のディスプレイデバイス220)を含むことができる。2人のユーザは、ウェアラブルデバイスを使用して、テレプレゼンスセッションを行うことができる。2人のユーザを分離する、図9Bにおける垂直線は、Alice912およびBob914が、テレプレゼンスを介して彼らが通信する間、2つの異なる場所に存在し得る(但し、その必要はない)(例えば、Aliceは、Atlantaにおけるそのオフィス内に存在し得る一方、Bobは、Bostonの屋外に存在する)ことを図示するように意図されることに留意されたい。
図9Aを参照して説明されるように、ウェアラブルデバイス902および904は、相互または他のユーザデバイスおよびコンピュータシステムと通信してもよい。例えば、Aliceのウェアラブルデバイス902は、例えば、ネットワーク990(図9Aに示される)を介して、Bobのウェアラブルデバイス904と通信してもよい。ウェアラブルデバイス902および904は、ユーザの環境および環境内の移動(例えば、個別の外向きに向いた結像システム464または1つ以上の場所センサを介して)および発話(例えば、個別のオーディオセンサ232を介して)を追跡することができる。ウェアラブルデバイス902および904はまた、内向きに向いた結像システム462によって入手されたデータに基づいて、ユーザの眼移動または視線を追跡することができる。いくつかの状況では、ウェアラブルデバイスはまた、ユーザが反射性表面の近傍に存在する場合、ユーザの顔の表情または他の身体移動(例えば、腕または脚部移動)を捕捉または追跡することができ、外向きに向いた結像システム464は、ユーザの反射された画像を取得し、ユーザの顔の表情または他の身体移動を観察することができる。
ウェアラブルデバイスは、第1のユーザおよび環境の入手された情報を使用して、第2のユーザのウェアラブルデバイスによってレンダリングされ、第2のユーザの環境内における第1のユーザの存在の有形感覚を作成するであろう、仮想アバタをアニメーション化することができる。例えば、ウェアラブルデバイス902および904および遠隔コンピューティングシステム920は、単独で、または組み合わせて、Bobのウェアラブルデバイス904による提示のために、Aliceの画像または移動を処理してもよい、またはAliceのウェアラブルデバイス902による提示のために、Bobの画像または移動を処理してもよい。本明細書にさらに説明されるように、アバタは、例えば、ユーザの意図、ユーザの環境またはその中にアバタがレンダリングされる環境、またはヒトの他の生物学的特徴等のコンテキスト情報に基づいて、レンダリングされることができる。
実施例は、2人のみのユーザを参照するが、本明細書に説明される技法は、2人のユーザに限定されるべきではない。ウェアラブルデバイス(または他のテレプレゼンスデバイス)を使用する、複数のユーザ(例えば、2人、3人、4人、5人、6人、またはそれを上回る)が、テレプレゼンスセッションに参加してもよい。特定のユーザのウェアラブルデバイスは、テレプレゼンスセッションの間、その特定のユーザに、他のユーザのアバタを提示することができる。さらに、本図における実施例は、環境内に立っているユーザを示すが、ユーザは、立っているように要求されない。ユーザのいずれかは、テレプレゼンスセッションの間、立っている、座っている、膝をついている、横になっている、歩いている、または走っていてもよい、または任意の位置または移動状態にあってもよい。ユーザはまた、本明細書の実施例に説明される以外の物理的環境内に存在してもよい。ユーザは、テレプレゼンスセッションを行っている間、別個の環境内に存在してもよい、または同一環境内に存在してもよい。全てのユーザが、テレプレゼンスセッションにおいて、その個別のHMDを装着することが要求されるわけではない。例えば、Alice912は、ウェブカメラおよびコンピュータ画面等の他の画像入手およびディスプレイデバイスを使用してもよい一方、Bob914は、ウェアラブルデバイス904を装着する。
(仮想アバタの実施例)
図10は、ウェアラブルシステムのユーザによって知覚されるようなアバタの実施例を図示する。図10に示される例示的アバタ1000は、部屋内の物理的植物の背後に立っている、Alice912(図9Bに示される)のアバタであることができる。アバタは、例えば、サイズ、外観(例えば、肌色、顔色、髪型、衣類、およびしわ、ほくろ、しみ、にきび、えくぼ等の顔特徴)、位置、配向、移動、姿勢、表情等の種々の特性を含むことができる。これらの特性は、アバタと関連付けられたユーザに基づいてもよい(例えば、Aliceのアバタ1000は、実際の人物Alice912の一部または全部の特性を有してもよい)。本明細書にさらに説明されるように、アバタ1000は、コンテキスト情報に基づいて、アニメーション化されることができ、これは、アバタ1000の特性のうちの1つ以上のものに対する調節を含むことができる。概して、人物(例えば、Alice)の物理的外観を表すように本明細書に説明されるが、これは、限定ではなく、例証のためのものである。Aliceのアバタは、Alice以外の別の実際または架空のヒト、擬人化されたオブジェクト、創造物、または任意の他の実際または架空の表現の外観を表し得る。さらに、図10における植物は、物理的である必要はなく、ウェアラブルシステムによってユーザに提示される植物の仮想表現であり得る。また、図10に示されるものの付加的または異なる仮想コンテンツも、ユーザに提示され得る。
(仮想キャラクタのためのリギングシステムの実施例)
ヒトアバタ等のアニメーション化された仮想キャラクタが、全体的または部分的に、コンピュータグラフィック内にポリゴンメッシュとして表されることができる。ポリゴンメッシュ、または略して、単に、「メッシュ」は、モデル化された3次元空間内の点の集合である。メッシュは、その表面が仮想キャラクタ(またはその一部)の身体または形状を定義する、多角形オブジェクトを形成することができる。メッシュは、任意の数の点を含むことができるが(利用可能なコンピューティングパワーによって課され得る、実践的限界内において)、より多くの点を伴うより細かいメッシュは、概して、実在の人々、動物、オブジェクト等により近似し得る、より細かい詳細を伴うより現実的仮想キャラクタを描写することが可能である。図10は、アバタ1000の眼の周囲のメッシュ1010の実施例を示す。メッシュは、任意の数の点を含むことができるが(利用可能なコンピューティングパワーによって課され得る、実践的限界内において)、より多くの点を伴うより細かいメッシュは、概して、実在の人々、動物、オブジェクト等により近似し得る、より細かい詳細を伴うより現実的仮想キャラクタを描写することが可能である。図10は、アバタ1000の眼の周囲のメッシュ1010の実施例を示す。メッシュ1010は、比較的に細かく(例えば、比較的に多数の点を有する)、眼領域内で生じる、複雑な曲線および移動の高品質シミュレーションを促進し得る。
メッシュ内の各点は、モデル化された3次元空間内の座標によって定義されることができる。モデル化された3次元空間は、例えば、(x,y,z)座標によってアドレス指定されるデカルト空間であることができる。メッシュ内の点は、ポリゴンの頂点であって、これは、多角形オブジェクトを構成する。各ポリゴンは、多角形オブジェクトの表面、すなわち、面を表し、頂点の順序付けられたセットによって定義され、各ポリゴンの辺は、頂点の順序付けられたセットを接続する、直線縁である。ある場合には、メッシュ内のポリゴン頂点は、それらが必ずしも3Dグラフィック内において同一平面にあるわけではないという点で、幾何学的ポリゴンと異なり得る。加えて、メッシュ内のポリゴンの頂点は、共線形であり得、その場合、ポリゴンは、ゼロ面積を有する(縮退ポリゴンと称される)。
いくつかの実施形態では、メッシュは、3頂点ポリゴン(すなわち、略して、三角形または「三角」)または4頂点ポリゴン(すなわち、略して、四辺形または「四角」)から成る。しかしながら、高次ポリゴンもまた、いくつかのメッシュでは使用されることができる。メッシュは、直接コンテンツ作成(DCC)アプリケーション(例えば、主に、3Dコンピュータグラフィックを作成および操作するために設計される、Maya(Autodesk, Inc.から利用可能)またはHoudini(Side Effects Software Inc.から利用可能)等のアプリケーション)では、典型的には、四角ベースである一方、メッシュは、リアルタイムアプリケーションでは、典型的には、三角ベースである。
仮想キャラクタをアニメーション化するために、そのメッシュは、その頂点の一部または全部を種々の瞬間における空間内の新しい位置に移動させることによって変形される。変形は、大規模移動(例えば、四肢の移動)および微細移動(例えば、顔移動)の両方を表すことができる。これらおよび他の変形は、実世界モデル(例えば、身体移動、関節運動、顔のゆがみ、表情等を実施する、実際のヒトの写真測量走査)、芸術指向的展開(実世界サンプリングに基づいてもよい)、それらの組み合わせ、または他の技法に基づくことができる。コンピュータグラフィックの初期の段階では、メッシュ変形は、頂点のための新しい位置を独立して設定することによって手動で遂行され得たが、現代のメッシュのサイズおよび複雑性を前提として、典型的には、自動化されたシステムおよびプロセスを使用して変形を生産することが望ましい。これらの変形を生産するための制御システム、プロセス、および技法は、リギング、または単に、「リグ」と称される。図6Bの例示的アバタ処理およびレンダリングシステム690は、3Dモデル処理システム680を含み、これは、リギングを実装することができる。
仮想キャラクタのためのリギングは、骨格系を使用して、メッシュ変形を補助することができる。骨格系は、関節の集合を含み、これは、メッシュのための関節運動の点に対応する。リギングのコンテキストでは、関節は、解剖学的意味において使用されるときのこれらの用語間の差異にもかかわらず、時として、「ボーン」とも称される。骨格系内の関節は、関節に適用され得る、変換に従って、相互に対して移動または別様に変化することができる。変換は、空間内の平行移動または回転および他の動作を含むことができる。関節は、相互に対して階層関係(例えば、親-子関係)を割り当てられることができる。これらの階層関係は、ある関節が、別の関節からの変換または他の特性を継承することを可能にすることができる。例えば、骨格系内の子関節は、子関節を親関節とともに移動させるように、その親関節に割り当てられた変換を継承することができる。
仮想キャラクタのための骨格系は、適切な位置における関節を用いて、かつ適切な局所回転軸、自由度等を用いて、定義され、所望のセットのメッシュ変形が行われることを可能にすることができる。いったん骨格系が、仮想キャラクタのために定義されると、各関節は、「スキニング」と呼ばれるプロセスにおいて、メッシュ内の種々の頂点に及ぼす影響の量を割り当てられることができる。これは、骨格系内の関節毎に、加重値を各頂点に割り当てることによって行われることができる。変換が、任意の所与の関節に適用されると、その影響下の頂点は、その個別の加重値に依存し得る量だけ、その関節変換に基づいて、自動的に移動または別様に改変されることができる。
リグは、複数の骨格系を含むことができる。1つのタイプの骨格系は、コア骨格(低次骨格とも称される)であって、これは、仮想キャラクタの大規模移動を制御するために使用され得る。図11Aは、低次コア骨格1100aの実施例を図示する。例えば、ヒトアバタの場合、コア骨格は、ヒトの解剖学的骨格に類似し得る。リギング目的のためのコア骨格は、解剖学的に正しい骨格に正確にマッピングされ得ないが、類似配向および移動性質を伴う類似場所における関節のサブセットを有し得る。より高次の関節および生体力学的リンケージが、コア骨格1100aに追加され、より多くのアニメーション機能を実施し得る、骨格を構築することができる。図11Bは、実線に示されるコア骨格と、破線に示されるより高次の関節とを伴う、骨格系1100の実施例を図示する。
上記に簡単に述べられたように、関節の骨格系は、例えば、関節間の親-子関係を伴う、階層であることができる。変換(例えば、位置および/または配向の変化)が、骨格系内の特定の関節に適用されると、同一変換が、同一階層内の全ての他のより低いレベルの関節に適用されることができる。例えば、ヒトアバタのためのリグの場合、コア骨格は、アバタの肩、肘、および手首のための別個の関節を含んでもよい。これらのうち、肩関節は、階層内で最高レベルを割り当てられてもよい一方、肘関節は、肩関節の子として割り当てられることができ、手首関節は、肘関節の子として割り当てられることができる。故に、特定の平行移動および/または回転変換が、肩関節に適用されると、同一変換がまた、肩と同一方法において平行移動および/または回転されるように、肘関節および手首関節にも適用されることができる。
その名称の含蓄にもかかわらず、リグ内の骨格系は、必ずしも、解剖学的骨格を表す必要はない。リギングでは、骨格系は、メッシュの変形を制御するために使用される、様々な階層を表すことができる。例えば、髪は、階層連鎖内の一連の関節として表され得、アバタの顔のゆがみに起因する、皮膚の動き(笑顔、眉を顰める、笑う、発話する、瞬目等の表情を表し得る)は、顔リグによって制御される一連の顔関節によって表され得、筋肉変形は、関節によってモデル化されることができ、衣類の動きは、関節のグリッドによって表され得る。
仮想キャラクタのためのリグは、複数の骨格系を含むことができ、そのうちのいくつかは、その他の移動を駆動し得る。低次骨格系は、1つ以上の高次骨格系を駆動するものである。逆に言えば、高次骨格系は、低次骨格系によって駆動または制御されるものである。例えば、キャラクタのコア骨格の移動は、アニメータによって手動で制御され得るが、コア骨格は、ひいては、高次骨格系の移動を駆動または制御することができる。例えば、高次ヘルパ関節(物理的骨格内の解剖学的類似物を有していなくてもよい)が、コア骨格の移動から生じる、メッシュ変形を改良するために提供されることができる。高次骨格系内のこれらおよび他の関節に適用される変換は、低次骨格に適用される変換からアルゴリズム的に導出されてもよい。高次骨格は、例えば、筋肉、皮膚、脂肪、衣類、髪、または任意の他の骨格系を表すことができ、これは、直接アニメーション制御を要求しない。
すでに議論されたように、変換は、メッシュ変形を行うために、骨格系内の関節に適用されることができる。リギングのコンテキストでは、変換は、3D空間内の1つ以上の所与の点を受け取り、1つ以上の新しい3D点の出力を生産する、機能を含む。例えば、変換は、関節を定義する、1つ以上の3D点を受け取ることができ、変換された関節を規定する、1つ以上の新しい3D点を出力することができる。関節変換は、例えば、平行移動成分、回転成分、およびスケール成分を含むことができる。
平行移動は、点のセットの配向またはサイズの変化を伴わずに、モデル化された3D空間内で1つ以上の規定された点のセットを規定された量だけ移動させる、変換である。回転は、規定された量だけ、モデル化された3D空間内で1つ以上の規定された点のセットを規定された軸を中心として回転させる(例えば、メッシュ内の全ての点をz-軸を中心として45度回転させる)、変換である。アフィン変換(または6自由度(DOF)変換)は、平行移動および回転のみを含むものである。アフィン変換の適用は、そのサイズを変化させずに(但し、配向は、変化することができる)、空間内の1つ以上の点のセットを移動させることであると見なされ得る。
一方、スケール変換は、その個別の座標を規定された値だけスケーリングすることによって、モデル化された3D空間内の1つ以上の規定された点を修正するものである。これは、点の変換されたセットのサイズおよび/または形状を変化させる。均一スケール変換は、同一量だけ各座標をスケーリングする一方、非均一スケール変換は、規定された点の(x,y,z)座標を独立してスケーリングすることができる。非均一スケール変換は、例えば、筋肉作用から生じ得るもの等の収縮および伸展効果を提供するために使用されることができる。さらに別のタイプの変換は、剪断変換である。剪断変換は、軸からのその座標の距離に基づいて、異なる量だけ点の座標を平行移動させることによって、モデル化された3D空間内の1つ以上の規定された点のセットを修正するものである。
変換が、関節に適用され、それを移動させると、その関節の影響下の頂点もまた、移動される。これは、メッシュの変形をもたらす。上記に議論されるように、加重を割り当て、各関節が各頂点に及ぼす影響を定量化するプロセスは、スキニング(または時として、「加重ペインティング」または「スキン加重」)と呼ばれる。加重は、典型的には、0(無影響を意味する)と1(完全影響を意味する)との間の値である。メッシュ内のいくつかの頂点は、単一関節によってのみ影響され得る。その場合、それらの頂点は、その関節のために、1の加重値を割り当てられ、その位置は、その他ではなく、その具体的関節に割り当てられた変換に基づいて変化される。メッシュ内の他の頂点は、複数の関節によって影響され得る。その場合、別個の加重が、影響を及ぼす関節の全てのために、それらの頂点に割り当てられ、頂点毎の加重の和は、1に等しい。これらの頂点の位置は、その影響を及ぼす関節の全てに割り当てられる変換に基づいて、変化される。
メッシュ内の頂点の全てのための加重割当を行うことは、特に、関節の数が増加するにつれて、極度に労働集約的となり得る。関節に適用される変換に応答して、加重を平衡し、所望のメッシュ変形を達成することは、高度に訓練された専門家にとってさえ非常に困難であり得る。リアルタイムアプリケーションの場合、タスクは、多くのリアルタイムシステムがまた、具体的頂点に加重され得る、関節の数(概して、8つまたはより少ない)に関する限界を強いるという事実によって、さらに複雑になり得る。そのような限界は、典型的には、グラフィック処理ユニット(GPU)内の効率の目的のために課される。
用語「スキニング」はまた、骨格系内の関節に適用される変換に基づいて、割り当てられた加重を使用して、メッシュを実際に変形させるプロセスを指す。例えば、一連のコア骨格関節変換が、アニメータによって、所望のキャラクタ移動(例えば、走っている動きまたはダンスステップ)を生産するように規定され得る。変換が、関節のうちの1つ以上のものに適用されると、新しい位置が、変換された関節の影響下の頂点のために計算される。任意の所与の頂点のための新しい位置は、典型的には、その特定の頂点に影響を及ぼす、全ての関節変換の加重平均として算出される。本加重平均を算出するために使用される、多くのアルゴリズムが存在するが、最も一般的であって、かつその単純性および制御の容易性に起因して、大部分のリアルタイムアプリケーションにおいて使用されるものは、線形ブレンドスキニング(LBS)である。線形ブレンドスキニングでは、頂点毎の新しい位置が、それに関してその頂点が非ゼロ加重を有する、各関節変換を使用して計算される。次いで、これらの関節変換のそれぞれから生じる、新しい頂点座標が、関節毎のその頂点に割り当てられる個別の加重に比例して総和される。実際は、LBSに対する周知の限界が存在し、高品質リグ(例えば、映画)を作成する際の作業の多くは、これらの限界を見出し、克服することに費やされる。多くのヘルパ関節システムが、本目的のために具体的に設計される。
骨格系に加え、「ブレンドシェイプ」はまた、リギングにおいて、メッシュ変形を生産するためにも使用されることができる。ブレンドシェイプ(時として、「モーフ標的」または単に「形状」とも呼ばれる)は、メッシュ内の頂点のセットに適用される変形であって、セット内の各頂点は、加重に基づいて、規定された量だけ規定された方向に移動する。セット内の各頂点は、具体的ブレンドシェイプのためのその独自のカスタム運動を有し得、セット内の頂点を同時に移動させることは、所望の形状を生成するであろう。ブレンドシェイプ内の頂点毎のカスタム運動は、「デルタ」によって規定されることができ、これは、その頂点に適用されるXYZ運動の量および方向を表す、ベクトルである。ブレンドシェイプは、例えば、顔変形を生産し、いくつかの可能性のみを挙げると、眼、唇、眉、鼻、えくぼ等を移動させるために使用されることができる。
ブレンドシェイプは、芸術指向的方法においてメッシュを変形させるために有用である。それらは、正確な形状がモデルの走査からスカルピングまたは捕捉され得るにつれて、大量の制御をもたらす。しかし、ブレンドシェイプの利点は、ブレンドシェイプ内の全ての頂点のためのデルタを記憶する必要があることを代償とする。細かいメッシュおよび多くのブレンドシェイプを伴うアニメーション化されたキャラクタに関して、デルタデータの量は、有意となり得る。
各ブレンドシェイプは、ブレンドシェイプ加重を使用することによって、規定された程度まで適用されることができる。これらの加重は、典型的には、0(ブレンドシェイプは、全く適用されない)から1(ブレンドシェイプが、完全にアクティブである)に及ぶ。例えば、キャラクタの眼を移動させるためのブレンドシェイプは、眼を小量だけ移動させるための小加重を伴って適用されることができる、またはより大きい眼移動を作成するための大加重を伴って適用されることができる。
リグは、相互に組み合わせて、所望の複雑な変形を達成するために、複数のブレンドシェイプに適用されてもよい。例えば、笑顔を生産するために、リグは、口角を引っ張り、上唇を持ち上げ、下唇を下げ、および眼、眉、鼻、およびえくぼを移動させるために、ブレンドシェイプに適用されてもよい。2つ以上のブレンドシェイプを組み合わせることからの所望の形状は、組み合わせ形状(または単に、「コンボ」)として知られる。
2つのブレンドシェイプを組み合わせて適用することから生じ得る、1つの問題は、ブレンドシェイプが、同一頂点のうちのいくつかに作用し得ることである。両ブレンドシェイプが、アクティブであるとき、結果は、二重変換または「離脱モデル」と呼ばれる。これに対するソリューションは、典型的には、補正ブレンドシェイプである。補正ブレンドシェイプは、中立点に対する所望の変形を表すのではなく、現在適用されている変形に対する所望の変形を表す、特殊ブレンドシェイプである。補正ブレンドシェイプ(または単に、「補正」)は、それらが補正するブレンドシェイプの加重に基づいて、適用されることができる。例えば、補正ブレンドシェイプのための加重は、補正ブレンドシェイプの適用をトリガする、下層ブレンドシェイプの加重に比例するように行われることができる。
補正ブレンドシェイプはまた、スキニング異常を補正する、または変形の品質を改良するために使用されることができる。例えば、関節が、具体的筋肉の運動を表し得るが、単一変換として、皮膚、脂肪、および筋肉の全ての非線形挙動を表すことができない。筋肉がアクティブ化するにつれて、補正または一連の補正を適用することは、より魅力的かつ説得力のある変形をもたらし得る。
リグは、層内に構築され、より低次かつ単純な層は、多くの場合、高次層を駆動する。これは、骨格系およびブレンドシェイプ変形の両方に適用される。例えば、すでに述べられたように、アニメーション化された仮想キャラクタのためのリギングは、低次骨格系によって制御される、高次骨格系を含んでもよい。制約、論理システム、および姿勢ベースの変形を含む、低次骨格に基づいて、高次骨格またはブレンドシェイプを制御するための多くの方法が存在する。
制約は、典型的には、特定のオブジェクトまたは関節変換が、別の関節またはオブジェクトに適用される変換の1つ以上の成分を制御する、システムである。多くの異なるタイプの制約が、存在する。例えば、照準制約は、標的変換の回転を変化させ、具体的方向または具体的オブジェクトに向ける。親制約は、対の変換間の仮想親-子関係として作用する。位置制約は、変換を具体的点または具体的オブジェクトに制約する。配向制約は、変換をオブジェクトの具体的回転に制約する。開示される関節分解の実施形態において使用され得る、制約の付加的議論は、下記に提供される。
論理システムは、入力のセットを前提として、いくつかの出力を生産する、数学的方程式のシステムである。これらは、学習されるのではなく、規定される。例えば、あるブレンドシェイプ値が、2つの他のブレンドシェイプの積として定義され得る(これは、組み合わせまたはコンボ形状として知られる補正形状の実施例である)。
姿勢ベースの変形もまた、高次骨格系またはブレンドシェイプを制御するために使用されることができる。骨格系の姿勢は、その骨格系内の全ての関節のための変換(例えば、回転および平行移動)の集合によって定義される。姿勢はまた、骨格系内の関節のサブセットのためにも定義されることができる。例えば、腕姿勢が、肩、肘、および手首関節に適用される変換によって定義され得る。姿勢空間デフォーマ(PSD)は、特定の姿勢と定義された姿勢との間の1つ以上の「距離」に基づいて、その姿勢のための変形出力を決定するために使用される、システムである。これらの距離は、姿勢のうちの1つが他のものと異なる程度を特性評価する、メトリックであることができる。PSDは、姿勢補間ノードを含むことができ、これは、例えば、関節回転(姿勢を定義する)のセットを入力パラメータとして受け取り、ひいては、正規化された姿勢毎の加重を出力し、ブレンドシェイプ等のデフォーマを駆動する。姿勢補間ノードは、放射基底関数(RBF)を用いたものを含む、種々の方法において実装されることができる。RBFは、関数の機械学習された数学的近似を実施することができる。RBFは、入力およびその関連付けられた予期される出力のセットを使用して、訓練されることができる。訓練データは、例えば、関節変換(特定の姿勢を定義する)およびそれらの姿勢に応答して適用されるべき対応するブレンドシェイプ(または線形スキン)の複数のセットであり得る。いったん関数が、学習されると、新しい入力(例えば、姿勢)が、与えられることができ、その予期される出力が、効率的に算出されることができる。RBFは、人工ニューラルネットワークの亜種である。RBFは、より低いレベルの成分の状態に基づいて、リグのより高いレベルの成分を駆動するために使用されることができる。例えば、コア骨格の姿勢は、より高いレベルにおいて、ヘルパ関節および補正を駆動することができる。
これらの制御システムは、ともに連鎖化され、複雑な挙動を実施することができる。実施例として、眼リグは、水平および垂直回転のための2つの「見回し」値を含有し得る。これらの値は、いくつかの論理を通して通過され、眼関節変換の正確な回転を決定することができ、これは、ひいては、眼瞼の形状を変化させ、眼の位置に合致させる、ブレンドシェイプを制御する、RBFへの入力として使用され得る。これらの形状のアクティブ化値は、付加的論理等を使用して、顔の表情の他の成分を駆動するために使用され得る。
リギングシステムの目標は、典型的には、単純なヒトが理解可能な制御システムに基づいて、魅力的かつ高忠実性の変形を生産するための機構を提供することである。リアルタイムアプリケーションの場合、目標は、典型的には、最終品質に対して可能な限り少ない妥協点をもたらしながら、例えば、VR/AR/MRシステム200上で、リアルタイムで起動されるために十分に単純である、リギングシステムを提供することである。いくつかの実施形態では、3Dモデル処理システム680は、(VR/AR/MRシステムのユーザと)双方向的であって、ユーザの環境内で適切なコンテキストアバタ挙動(例えば、意図ベースの挙動)を提供するように、リギングシステムを実行し、複合現実環境100内でアバタをリアルタイムでアニメーション化する。
(仮想アバタの幾何学的変形のための骨格系への導入)
本明細書に議論されるように、リギングは、アバタの身体の変形(例えば、顔のゆがみ、腕移動、脚部移動、胴体移動、頭部回転および傾斜、握持および指示を含む、手移動等)についての情報を頂点のメッシュ上に転写するための技法を含む。メッシュをアニメーション化する(例えば、アバタをアニメーション化する)ことは、メッシュを形成する頂点の一部または全部を3D空間内の新しい位置に移動させることによって、メッシュを変形させることを含み得る。図6Bの例示的アバタ処理およびレンダリングシステム690は、3Dモデル処理システム680を含み、これは、リグ(例えば、メッシュを変形させ、アバタをアニメーション化するための制御システム)を実装することができる。メッシュが、多数の頂点を含み得るにつれて、リグは、典型的には、メッシュを制御することをより容易にする、コンピュータ化されたコマンドとして、一般的な望ましい変形を提供する。
映画等の最高仕様視覚効果生産に関しては、リグが、大量の数学的算出を実施し、高度に現実的なアニメーション効果を達成するための十分な生産時間が存在し得る。言い換えると、本コンテキストは、典型的には、高速性を犠牲にして、高品質を優先させる。
しかし、リアルタイムアプリケーション(複合現実において等)に関しては、変形の速さは、非常に有利であり得、異なるリギング技法が、使用されてもよい。言い換えると、本コンテキストは、典型的には、高品質を犠牲にして、高速性を優先させる。リグは、多くの場合、骨格系、線形ブレンドスキニング、または随意に、ブレンドシェイプに依拠する、変形を利用する。リグがアバタスキニング変換のために使用し得る、パラメータを生成するための技法は、下記に説明される。
線形ブレンドスキニング(LBS)は、メッシュ(または他の幾何学的オブジェクト)が関節変換の階層から成る駆動骨格に基づいて変形される、デジタルパペットをアニメーション化するための一般的技法である。図11Bは、関節の階層順序を有する、骨格1100の実施例を図示する。メッシュ(例えば、多角形頂点を備える)は、骨格を覆うことができ、アバタのスキンまたは衣類または別の仮想オブジェクトの変形可能表面を表すために使用されることができる。
骨格関節とその骨格のベース(中立)姿勢との間の関係は、メッシュの各頂点と骨格内の関節のそれぞれとの間の関連付けを定義するために使用されることができる。骨格の新しい姿勢に関して、変形されたメッシュ(新しい姿勢を表す)が、そのベース姿勢から新しい姿勢への関節のそれぞれの相対的変換(例えば、回転および平行移動)を決定することによって計算されることができる。全ての関節が、全ての頂点に影響を及ぼすわけではない。例えば、アバタの左脚部の移動は、典型的には、アバタの右手の任意の移動を生じさせないであろう。しかしながら、アバタの右前腕の移動は、典型的には、アバタの右手の移動を生じさせるであろう。関節毎および頂点毎の加重のセットを備える、加重マップが、任意の頂点に及ぼす任意の関節の影響量を測定するために使用されることができる。関節が、頂点に影響を及ぼさない場合、関連付けられる加重は、ゼロである。
関節毎に、関節の相対的変換が、その関節のための非ゼロ加重を有する、各頂点に適用され、新しい頂点座標が、記憶される。全ての頂点に関する最終頂点位置は、関節が非ゼロ加重を有する、関節毎に変換された頂点位置の加重和である。したがって、骨格が移動すると、リグは、LBSスキニングパラメータを介して、メッシュ頂点(例えば、骨格を覆うスキンまたは衣類を表す)を移動させることができる。LBSの付加的技術的詳細は、下記に説明される。
LBSまたは任意の直接スキニング方法における1つの潜在的難点は、関節毎に加重マップを決定することである。実際は、これらは、多くの場合、加重ペイントとして知られるプロセスにおいて手動で設定される。これは、時間および労働集約的であって、ユーザエラーを受けやすい。複雑性は、メッシュの所与の領域に影響を及ぼす関節の数が増加するにつれて、増加する。加えて、リアルタイム用途では、多くの場合、幾何学形状の具体的部品に影響を及ぼし得る、最大数の関節に限定することの困難が存在し、これは、ひいては、厳密なリアルタイム限界下で高品質を達成するために、慎重な評価およびトレードオフを要求する。
ある場合には、LBSは、メッシュを変形させるために、比較的に低品質方法となる傾向にあり、したがって、ブレンドシェイプが、時として、メッシュのより高い品質変形を達成するために、LBSに加えて追加される。ブレンドシェイプは、0(例えば、中立または静置形状)と1(例えば、完全ブレンドシェイプ)との間の制御値に従って、1つ以上の頂点を移動させ、具体的訓練姿勢のための具体的ブレンドシェイプ値を有することができるが、直接、リグの骨格に結び付けられない。LBSおよびブレンドシェイプを使用することは、多くの計算(例えば、多くの頂点およびボーン移動等のために、LBS計算、ブレンドシェイプ計算)を要求し、これは、リギング制御システムのために、特に、リアルタイムで、算出上困難であり得る。
したがって、詳細に下記に説明されるスキニング技法のための1つの目標は、高品質の良好に一般化されたスキニングを提供し、姿勢のための訓練データに基づいて、リアルタイムコンテキストで作用する、システムを開発することである。部分的に、本目標を達成するために、本システムの実施形態は、高度にユーザ構成可能である。多くのリギングシステムは、最小限のユーザ入力を要求するように設計されるが、そのようなシステムは、多くの場合、それらをMRまたはリアルタイム用途にとって望ましくないものにするという、共通欠点に悩まされる。例えば、いくつかの共通不利点は、以下のうちの1つ以上のものを含む。
不利点の一実施例は、多数の関節への依存性である。多数の関節変換は、スキニング近似の誤差を低下させ得るが、リアルタイムシステムにおいて行使される限界を満たさず、新規アニメーションに対して良好に一般化せず、より多くの制御算出を要求し、概して、ヒトによって容易に理解されず、コンテキスト内でデバッグされるその能力を限定する。
不利点の第2の実施例は、過剰適合の問題点が生じ得ることであって、これは、大量の入力データを要求する、または防止するために制御統計を理解することが困難であり得る。
開示されるシステムおよび方法の実施形態は、結果として生じるシステムの特性を説明する、ヒトによって理解可能な制約を利用することによって、これらの不利点のいくつかまたは全ての尤度を低減または回避する。これらの制約は、システムが、ドメイン特有知識のヒトのより良好な理解に基づいて結果を達成するように、(随意に)ヒトユーザ入力を受信することを可能にする。
(訓練データの実施例)
スキニングシステムの関節の変換を表す、パラメータ(例えば、加重マップ、回転、および平行移動)は、一連またはシーケンスの標的姿勢(例えば、顔の表情、身体ジェスチャ、移動(例えば、着座、歩行、走行等))を表す、訓練データから抽出されることができる。スキニングパラメータは、種々の機械学習または人工知能技法(さらに下記に説明される)を使用して、訓練データから学習されることができる。スキニングパラメータを訓練データから学習するプロセスは、時として、関節分解とも称される。
訓練データは、アバタのアニメーションのために使用されるベース中立メッシュとトポロジを共有するが、アバタをスキニングするために使用される標的姿勢に変形されている、メッシュを備える。訓練データは、アバタのための姿勢またはブレンドシェイプを表すことができる。訓練データは、以下のうちの1つ以上のものを含む、任意の利用可能なソースから生じ得る。
走査グラウンドトゥルース。
機械学習モデルの結果は、訓練データセットの量、タイプ、およびフォーマットに応じて、訓練データの過少適合または過剰適合のいずれかを行うことができる。訓練データは、一連の姿勢をとる、対象(例えば、モデル)を走査することによって生成されることができる。走査されたデータは、関節運動点および変形グラウンドトゥルースに関して、姿勢シーケンスにおいて、3次元で対象を幾何学的に表す。結像走査は、例えば、対象を囲繞し、それに向けられている、複数のカメラ(例えば、2つ以上)を備える、写真測量法捕捉段に、対象を設置することによって行われることができる。カメラは、相互に同期され、姿勢をとっている対象の3D走査に変換され得る、画像を捕捉することができる。静的姿勢に関して、単一走査が、生成されることができる。しかしながら、移動し、感情を表現し得る、アバタに関して、走査は、対象が、基本表現ユニット(例えば、笑顔、眉を顰める、ジェスチャを行う、歩行等)を含む、訓練姿勢をとる間に行われることができる。これらの走査は、アクション中の対象の説得力のあるデジタルアバタを作成するために使用され得る、スキニングパラメータを構築するために使用される、訓練データセットを作成するために使用されることができる。
例えば、走査された画像は、アバタの低次コア骨格(例えば、図11Aにおける低次骨格1100aの実施例または図11Bにおける骨格1100の実線部分参照)と走査データの幾何学的空間との間の姿勢対応を生成するために使用されることができる。結果として生じる訓練データは、一般化された統計的空間内で関節分解システム(スキニングパラメータを訓練データから決定する)を訓練するために使用されることができる。例えば、改良されたスキニングパラメータは、スキニングパラメータの初期セットから決定されることができる。結果として生じる統計的空間は、アバタの任意のアニメーションまたは関節運動を表すことができ、例えば、放射基底関数(RBF)を用いて、リアルタイムで評価されることができる。
専門家によって手掛けられた彫刻。
本方法は、多くの場合、実世界画像捕捉データが、利用不可能である、非実践的である、または高価すぎて取得することができない、または不良品質である場合に使用される。また、3Dアニメーションにおいて等、より芸術指向の焦点が所望される場合にも使用される。本形態のデータは、労働集約的であって、多くの場合、不十分なリソースからヒトによって解釈され、エラーを受けやすくあり得る。
シミュレーション。
衣類および組織シミュレーションは、多くの場合、高忠実性および生きているような変形を達成するために、視覚的効果の生産において使用される。これらの実践は、多くの場合、最適結果を生産するが、それらは、算出上負担であって、リアルタイム用途のために好適ではない場合がある。関節分解システムの実装では、スキンまたは衣類等の変形は、リアルタイムグラフィックを使用してシミュレートされることができる。これらのシミュレーションをある移動範囲(ROM)を通して起動させることによって、本システムは、変形空間をブレンドシェイプおよび加重の統計的モデルに分解することができる。統計的モデルの加重は、次いで、リアルタイム実行のために、RBFを用いて補間されることができる。
生物測定的に導出されたモデル。
一般的タイプの骨および筋肉のための生体力学的なより高次の骨格は、関節およびLBSを介して、キャラクタの骨格空間内で表されることができる。筋肉は、有限ボリュームの性質を呈するが、筋肉に関する応力および歪み率は、その表現内で使用される関節のスケール行列内でモデル化されることができる。骨は、剛性空間内により集束されるが、所望の運動を達成するために、より多くの機械的性質および構造を要求する。骨および筋肉の力学が、次いで、関節分解によって捕捉されることができる。
(線形スキニングシステムおよび方法の概要)
線形スキニング(または線形ブレンドスキニング)は、関節のセットの変換に基づいて3D空間内の点のセットの位置を変換させる方法である。点は、アバタをアニメーション化するために使用されるメッシュの頂点であることができる。以下では、骨格は、j=1、2、…、Jによってインデックス化されたJ個の関節を有し、i=1、2、…、Vによってインデックス化された合計V個の着目点が存在する。各関節は、回転Rjおよび平行移動Tjを備える、それと関連付けられた変換を有する。所与の点viは、式Rjvi+Tjを使用して、関節jによって新しい点vi’に変換されることができる。
関節および点毎に、加重wijは、i番目の点に及ぼすj番目の関節の影響を表すことができる。加重は、特定の関節が特定の点に及ぼす、影響量を定量化する。全ての加重wijの集合は、時として、加重マップとも称される。加重マップの個々の加重は、いくつかの制約を満たすことができる。例えば、加重はそれぞれ、典型的には、非負値wij≧0であって、任意の点iに及ぼす全てのJ個の関節の総影響は、1に正規化されることができる、すなわち、
となる。
スキニングパラメータ(例えば、加重マップ、回転Rj、および平行移動Tj)に関する他の制約も存在することができる。例えば、任意の点に関する非ゼロ加重の数は、メッシュをアニメーション化するプロセッサにかかる算出負担を低減させ、過剰適合を低減させるための最大値に限定されてもよい。最大数Mは、例えば、4または8または12であってもよく、アニメーションのために使用されるプロセッサ(例えば、商業用グラフィック処理ユニット(GPU))のメモリモデルに基づいて選択されることができる。3D空間内の有効回転を表すために、回転Rjは、いくつかの異なる数学的方法において、例えば、直交行列として表されてもよく、これは、変換による剪断またはスケーリングを回避する。
点viに関する変換された座標vi’は、具体的関節毎に加重された変換の和である。
(例示的関節分解)
関節分解プロセスの目標は、変換された位置vi’(方程式(1)から計算される)と訓練データ(上記に説明される)内の標的姿勢におけるこれらの点の基準位置vi
TDとの間の誤差を低減または最小限にするように、スキニングパラメータwij、Rj、およびTjを計算することである。分解プロセスは、制約付き最適化問題として公式化されることができ、誤差は、変換された位置と訓練データ内の標的姿勢位置との間のユークリッドまたはL2-ノルムとして表され得る。他の誤差関数も、使用されることができる(例えば、中央値またはL1-ノルム)。制約付き最適化問題に対する解に関する種々の制約が、上記に説明されており、付加的制約は、下記に説明される。
例えば、制約付き最適化は、いくつかの実施形態では(L2-ノルムを使用する)、以下のように表され得る、誤差Eを低減または最小限にすることができる。
制約に応じて、最適化方法は、線形または二次プログラミングを含むことができる。しかしながら、複雑な制約に従って多数の回転成分が存在するときに、誤差を低減または最小限にすることは、多くの場合、高度な非線形プログラミング方法を要求する。例えば、いくつかの技法は、一次および二次導関数推定値を使用し、恣意的制約のために作用する、非線形ソルバを適用する。他の技法は、反復性であって、交互に、点毎加重または関節変換が、ロックされ、他のコンポーネントが、最適化される。種々の実装では、最適化技法は、勾配降下法、ブロック座標降下法、滑降シンプレックス法、焼きなまし法、Levenberg-Marquardt最適化、最小二乗法、非線形最適化、ヒューリスティックまたはメタヒューリスティック(例えば、Tabu)検索、加重された絶対配向ソルバ等を含む。
制約付き最適化アルゴリズムは、入力として、初期化骨格(例えば、骨格関節の初期位置)、関節へのメッシュ頂点(例えば、スキンクラスタ)のマッピング、およびアバタの標的姿勢(または複数の標的姿勢)を表すメッシュを受け取ることができる。制約付き最適化アルゴリズムは、変換された位置vi’(例えば、方程式(1)から計算される)と訓練データ内の標的姿勢におけるこれらの点の基準位置との間の誤差E(例えば、方程式(2)から計算される)が収束する(例えば、誤差Eが、誤差閾値を下回る、変換された位置vi’に対するインクリメントが、閾値を下回る、または最大数の反復に到達する)まで反復されることができる。制約付き最適化アルゴリズムの出力は、改良または最適化された適合を標的訓練姿勢に提供する、スキニングパラメータ(例えば、wij、Rj、およびTj)であることができる。いくつかの実施形態では、関節分解システムは、加えて、または代替として、標的訓練姿勢への適合を反映する関節または頂点位置を伴う、更新された骨格を出力することができる。いくつかの実施形態では、関節分解システムは、加えて、または代替として、スキニングパラメータの放射基底関数(RBF)式を出力することができる。
関節分解システムのいくつかの実施形態は、初期化のために使用される入力およびシステムが動作する制約に基づいて、従来のシステムと異なる。
例えば、多くの分解システムは、変形されたメッシュのみを入力としてとり、関節の数および場所およびそのメッシュ加重を本データから推測する。いくつかのシステムは、階層骨格を入力訓練データから生成するようにさえ試みる。そのようなシステムは、作用し得るが、実践では、制約されない性質は、過剰適合またはより大きいコンテキストでは容認不可能な極小値を見出すことのいずれかを通して、正しくない挙動(例えば、生物測定的に非合理的解)および一般化能力の欠如につながる。
(関節分解プロセスへの例示的入力)
スキン化されたメッシュは、メッシュおよびボーン階層を要求し、ボーン変換は、メッシュ上の全ての変形を駆動する。実践では、メッシュを直接変形させる、ボーン階層と直接作用することは、不利であり得る。多くの場合、アバタのより良好な変形を取得するために含まれる、多くの余剰ボーンが存在する。これらの余剰ボーンを直接アニメーション化することは、アニメーションタスクを有意に減速させ得る。加えて、これらのボーンは、多くの場合、ボリューム保存等のアバタの側面に関わり、これは、ヒトアニメータにとって、きちんと理解することは困難であるが、典型的には、コンピュータにとっては、計算が簡単である。運動捕捉等の自動化されたアニメーションタスクに関して、任意の実際の単一の物理的要素に直接対応し得ない、これらのボーンの多くを追跡することは、非実践的であり得る。さらに、より高次の層は、多くの場合、ベースアニメーションを変化させずに、既存のキャラクタ上で改変または置換され得る、髪または衣類のような随意のコンポーネントのために使用される。
代わりに、実践では、単純なより低次の骨格が、より高次の骨格の中への手順通りアニメーション化されたコンポーネントの追加によって、徐々により複雑にされ得る。図11Aは、より低次の骨格1100aの実施例を示し、図11Bは、より高次の骨格1100(破線)の実施例を示す。これらの制御系は、新しいボーンを含み、より高次の骨格および制御系を作成し、これは、入力として使用されるより低次の骨格の変換に基づいて、これらの新しいボーンをアニメーション化する。例えば、より低次の骨格は、アバタの実際の骨格に対応する、アバタの身体のボーンを表し得る。より高次の骨格は、アバタの筋肉を表す、ボーンを含み得る。これらの付加的ボーンは、より低次の骨格の位置によって駆動されることができる。例えば、二頭筋「ボーン」位置は、とりわけ、アニメーション内のその時点における肘の角度を表す、より低次の骨格内の対応する前腕骨によって制御されることができる。
これらの低から高次骨格系は、例えば、ボリューム保存、動態(例えば、筋肉/脂肪の揺れ)、および他の系を伴い、非常に複雑であり得る。多くのアニメーションリグでは、低次および高次骨格の複数の層が存在し得、1つの骨格系のより高次の出力は、次の骨格系のより低次の入力となる。実施例として、最低次骨格が、アバタの「実」骨格を表し、第2の骨格系が、筋肉を表し、第3の骨格系が、筋肉の上部に乗せられた脂肪を表す、アバタを想像されたい。付加的骨格系も、髪、衣類、またはプロップを表すために追加されることができる。
故に、いくつかの実装では、低次骨格は、アニメーション化されるべきアバタの解剖学的ボーンおよび関節(および/またはその相互接続)を表す、またはそれに類似する、ボーンおよび関節のセットを備えることができる。より高次の骨格(より低次の骨格上に追加されたコンポーネントを伴う)は、筋肉、靱帯、脂肪、髪、衣類等を表すことができる。より低次の骨格は、デジタルキャラクタの骨格を定義する、ボーンまたは関節のセットの一部を備えることができる(例えば、実際のヒト骨格内の骨に類似する、図11Aに示される低次骨格1100aに類似する)。より低次の骨格は、階層骨格構造のベースを表すことができる。より高次の骨格は、完全骨格(例えば、図11Bに示される骨格系1100)と低次骨格1100aとの間の差異と見なされ得る。
いくつかの関節分解システムは、骨格を全く伴わない状態から開始し得、全てのボーンおよびボーン関係をアニメーションから推測し得る。いくつかのそのようなシステムは、それらが本明細書に説明されるある有利な実施形態が良好に一般化することを可能にする、制約の仕様を可能にしないため、不利であり得る。
関節分解を実施するとき、本システムまたは方法は、変形の最終層、例えば、最高次骨格の加重および運動を決定することができる。本システムおよび方法は、少なくともより高次の骨格の階層を入力として受信することができ、したがって、本システムおよび方法は、最適化を実施することができる。しかしながら、ある場合には、そのより高次の骨格内の全てのボーンが初期化される必要はないであろう。例えば、本システムおよび方法は、デフォルト値に設定される付加的なより高次のボーンを伴うベース骨格姿勢で初期化されることができる。本システムおよび方法は、付加的ボーンの最良変換を決定することができる(例えば、デフォルト値から開始して)。
故に、本システムおよび方法は、より高次の骨格の構造を入力として受信し得るが、より高次の骨格の姿勢を要求しなくてもよい。
関節分解システムのある実施形態は、オプションとしての標的姿勢またはスキン加重とともに、初期骨格を与えられることができる。制約付き最適化アルゴリズムを初期化するために使用される骨格は、中立または静置姿勢(典型的には、標的姿勢に関連しない)におけるベース骨格ではなく、標的姿勢に近い関節およびメッシュ位置を表す、高次骨格であることができる。白紙状態ではなく、このように分解を開始することは、はるかに柔軟性を備え得る、誤学習の尤度を低減または防止する。また、これは、入力骨格およびスキニングパラメータがすでに所望の結果に近い(すなわち、標的姿勢に合致するために)ため、より効率的最適化につながる。実践では、初期開始骨格データは、所望の標的に対して非常に大まかな合致であることができる。例えば、メッシュは、各頂点が単一ボーンに割り当てられるようにセグメント化され得る(例えば、手セグメント化1200の実施例に関する図12参照)。そのようなスキニング解は、一般に、容認可能ではないが、初期入力として使用され、関節分解システムを所望の方向に向かわせるために十分であり得る。
(例示的線形スキニング制約)
線形スキニングのためのベース形態が、方程式(1)として公式化され得るが、最適化方程式は、非常に複雑であり得る。これは、制約によって含意される相互依存性のためである。本明細書に説明される種々の関節分解システムは、種々の制約を行使することができ、これらの制約のうちのいくつかは、ユーザ選択可能である、または関節分解の間、動的に変化することができる。関節分解システムの実施形態は、ユーザ入力を受け取り、生物測定的に合理的解を見出す際に、本システムをより良好に誘導し、最適化技法が動作することになる問題空間をより良好に定義することができる。
多くのLBS関節分解システムに共通の制約が、上記に説明されており、加重マップのための非負値性および正規化制約、回転パラメータが有効回転を表す(例えば、Rjは、直交行列である)要件、および頂点あたり非ゼロ加重の最大数Mを含む。
他の制約は、階層骨格系内の関節間の親子関係を含む。例えば、手関節は、前腕関節の子である等であり得る。そのような制約は、子関節をその親のローカル空間に対して固定位置に制限することによって、剛性骨様挙動を行使することができる(例えば、骨の剛性挙動を表すために、親関節から離れた固定距離である、位置)。本固定位置は、姿勢毎に、または全ての標的姿勢を使用して、推定されることができる。全ての標的姿勢を使用することは、骨格を捕捉されたキャラクタに適合させるために有利であり得る。多くの階層骨格では、その親に対する関節の長さは、アニメーションの間、固定され、配向のみが、変化することを可能にされる。本制約は、その長さを容易に変化させない、実世界の骨に類似する。
関節間の関係はさらに、最適化方程式を複雑にし得る。例えば、2つの関節j1とj2との間の親子関係は、関節j1に関する回転および平行移動パラメータRj1、およびTj1が、関節j2に関する回転および平行移動パラメータRj2、およびTj2に依存し(例えば、それに基づいて算出される)、これが、制約付き最適化の間、考慮されされなければならないことを意味し得る。同様に、異なる点の加重が、相互に関連される場合、最適化方程式系は、これらの関係を含むべきである。
平滑度制約は、関節または頂点階層内の近隣の点と類似する加重を行使し得る。例えば、本システムは、頂点がメッシュ上でトポロジ的に近い頂点と類似加重を使用するように制限することができる。平滑度制約は、有利なこととして、より平滑なスキン変形を作成することができる。頂点は、それらが、近傍系である、または近隣の近傍系である(例えば、メッシュ上で3、5、7、10、12未満等だけ離れた閾値数の縁内にある)場合、別の頂点にトポロジ的に近くあり得る。平滑度は、相互にトポロジ的に近い頂点の加重がある平滑係数を上回って相互に異なることを許可しないことによって制約され得る。
いくつかの実装では、関節は、関節が表す下層の解剖学的構造を表す、幾何学的モデル(例えば、長さ、側方サイズ、近隣の関節に対する運動範囲(ROM)に関する限界等)によって制約され得る。例えば、指骨を表す、関節は、手の上側表面上で後方に屈曲しないように、半径および長さおよび運動範囲を与えられることができる。分解プロセスの間に関節制約を適用することは、有利であって、より生物測定的に合理的な関節分解につながり得る。
1つ以上の他の新規制約も、加えて、または代替として、開示されるシステムの実施形態の中に組み込まれることができる。以下は、分解プロセスの間に使用され得る、種々の制約の非限定的リストを提供する。
関節位置が、制約付き最適化プロセスの間、推定される、または変化することを防止するようにロックされることができる。例えば、関節(または関節のグループまたはこれらの関節と関連付けられる頂点)は、分解プロセスが、骨格またはメッシュの他のサブセットを最適化するとき、ロックされることができる(次いで、プロセスがその関節または関節のグループを最適化するとき、ロック解除される)。例えば、手関節のためのスキニングパラメータを解法する間、脚部関節は、ロックされることができる。
上記に説明される関節の親子関係を拡張させることによって、関節位置は、親関節の特定の軸または複数の軸に沿ってのみ平行移動し、よりロバストなリグを生産するように制約され得る。例えば、関節位置は、骨長を決定するために、上記のように、特定の軸に沿ってロックまたはロック解除され得る。
関節位置をロックまたはロック解除することと同様に、関節配向、半径、長さ等も、類似方式においてロックまたはロック解除されてもよい。
関節または頂点は、幾何学的に近い、関節に対する加重のみに制限されることができる。例えば、腕上の頂点は、脚部内の関節に対してゼロ加重を有し、脚部移動および腕移動が独立するという解剖学的制約を反映させ得る。関節または頂点は、特定の関節が、別の関節が移動するときに移動する傾向にあるとき、幾何学的に近いと見なされ得る(例えば、手は、それが取り付けられる腕が移動するとき、移動する傾向にあるが、手は、他方の腕が移動するとき、移動しない)。
関節距離制約も、適用されることができる。関節幾何学的モデルを利用することによって、本システムは、関節からの頂点の距離を計算し、本距離を最適化プロシージャにおいて使用することができる。例えば、頂点は、距離が大きすぎる、例えば、閾値を上回る距離の場合、ある関節(例えば、加重が0に設定される)の使用から除外され得る。別の実施例として、加重は、関節の閾値距離内の頂点に関してのみ非ゼロであり得る。関節(または頂点)間の距離は、例えば、関節/頂点が相互接続の階層順序を表し得るため、メッシュの骨格(例えば、図11Bに示される骨格1100参照)に沿ってトラバースされる距離として計算されることができる。
頂点および関節選択制約も、適用されることができる。本システムは、種々の方法において組み合わせられ得る、頂点および関節の複数の列挙された選択を規定することができる。例えば、頂点選択は、具体的加重にロックされる、または関節の具体的選択に加重される、または最適化プロセスから完全に除外されることができる。
加重は、具体的頂点または複数の頂点のセットを具体的関節のセットと関連させる、セグメント化セットの使用を通して、関節あたり、頂点あたり、または関節-頂点ペアあたりで最適化またはロックされることができる。
前述の制約のリストは、包括的であることを意図するものではない。本システムは、ユーザ入力を受信し、適用されるべき制約または制約のために使用されるパラメータ(例えば、距離閾値、セグメント化セット等)を選択することができる。制約(または制約パラメータ)は、関節分解の間、動的に変化することができる。例えば、距離閾値は、比較的に小さい値(例えば、近傍の関節)から開始し、次いで、関節分解が進むにつれて増加してもよい。したがって、本システムは、関節分解が動作することになる、問題空間をより良好に定義するように高度に構成可能であり得る。
(リアルタイムリギングシステムへの例示的適用)
関節分解のために使用される、統計的姿勢空間は、端から端まで、熟慮され、計画される。関節分解の結果は、分解がシードされる情報に応じて、決定的となる。関節分解が、制約を伴わずに、スキニング変換を生成することを可能にされる場合、結果は、使用可能またはヒトによって解釈可能ではなくなり得る。関節分解技法の実施形態は、より高次の骨格の挙動が、訓練データ(例えば、グラウンドトゥルース走査データ)に合致するように改良または最適化する。関節分解システムに有効情報をシードすることによって、本システムは、誤対応を回避し、複合現実またはゲームのためのリアルタイムリギングシステムのドメインにおける用途において定質的かつ実践的である、結果を生産する傾向にある。
セグメント化は、具体的頂点のセットと関節のセットとの間でマッピングを作成することを指す。本マッピングは、関節分解の結果を隔離および局所化することができる。セグメント化はまた、収束結果を達成するために必要とされる計算の低減された数のため、本システムの性能を増加させることができる。例えば、上記に説明されるように、関節分解は、セグメント化セットに見出されるものを除き、全ての関節に関する加重をロックすることができ、関連付けられた頂点のみを分析し、LBSスキニングパラメータを最適化することができる。
実施例として、アニメータが、手のみを分解することを所望する場合、セグメント化セットは、個々の指毎に生成されることができる。これは、例えば、中指の関節が、薬指または人差し指に影響を及ぼすことを防止し、頂点を生体力学的に制御する関節が、最適化される一方、(例えば、セグメント化セットの外側の)そうではない関節が、ロックされるように、骨格階層内の分解の結果を局所化する。
関節分解は、(随意に)フォールオフ半径と統合されることができ、これは、特定の領域のための結果を既存のスキンクラスタまたはLBSとブレンドする。例えば、フォールオフは、あるセットの関節のために見出されるスキニングパラメータを別のセットの関節に対してフェザリングすることができる。一実施例として、フォールオフは、3つの領域、すなわち、スキニング変換が計算される、第1の領域と、分解によって修正されない(例えば、ロックされた)、第2のより離れた領域と、フォールオフパラメータがスキニングパラメータを(例えば、セグメント化セット内の)第1の領域から(例えば、セグメント化セット外の)第2の領域に平滑に遷移させる、第1の領域と第2の領域との間の中間領域とを利用してもよい。フォールオフは、加重平均を中間領域内に実装してもよい。
図12は、手変形のための関節分解の実施例を図示する。本実施例では、関節分解は、指毎に、フォールオフおよびセグメント化セットを使用した。手1200では、異なる斜交平行線模様は、頂点と特定の指関節のセットのセグメント化または結び付けを表す。手1200は、関節分解プロセスを初期化するための入力として使用されることができ、手1208は、標的手姿勢(この場合、所望の手変形のためのブレンドシェイプ)を表す。手1204は、手の関節分解からの例示的結果を示す。手1212は、標的手1208とLBS分解手1204との間の誤差が、より大きい(暗い灰色)またはより少ない(より明るい灰色)領域を示す(灰色の異なる陰影において)、ヒートマップがオーバーレイされている。LBS関節分解は、標的手1208に対する良好な合致を提供し、親指の背後の指の腹内および人差し指と中指との間にある程度の誤差を伴う。
関節分解のユーザ指示能力の別の側面は、関節のうちの1つ以上のものに関する変換限界を設定する能力である。例えば、分解プロセスの間、関節の回転および平行移動パラメータ(例えば、RjおよびTj)は、最大6DOFに更新され、メッシュ加重の制約付き最適化と併せて、標的の共形性質に合致することを可能にされ得る。制約が、最適化に課されない場合、関節は、標的訓練データに過剰適合し得る。過剰適合は、不良予測および算出性能を有し、入力訓練データ内のわずかな変動にも敏感となり得る。過剰適合からの出力の望ましくない分散は、一般に、ジャンピングまたはポッピングと称される、高周波数アーチファクトとして現れ得る。
本過剰適合は、望ましくなく、統計的空間および姿勢空間変形の用途内において使用不可能と見なされ得る。制約を適用することによって、最適化が、実践的閾値をもたらし、過剰適合から結果として生じるポッピングを低減または回避する。種々のそのような制約が、上記に説明されている(例えば、関節位置または配向のロック、関節距離制約、セグメント化セット等)。例えば、セグメント化の関節を3D空間のサブセット(例えば、x、y、またはz値の範囲、またはヨー、ピッチ、またはロール角度の範囲)内で移動するように限定する制約が、関節の挙動を実際の関節が生物測定的に移動する方法に準拠させるように適用されることができる。
関節系、例えば、骨格1100を備える、生体力学的リギングに関して、その関節に関する改良されたまたは最適位置または回転情報およびその関連スキンクラスタ加重が、関節分解において決定および適用されることができる。関節が、提供または標的化されない場合、本システム(またはユーザ入力を介して)は、スキンクラスタに追加され得る、関節を生成することができる。
図13は、顎変形のための関節分解の実施例を図示する。本実施例では、顎全体に関して単一関節とは対照的に、3つの余剰関節が、顎輪郭に追加され、制約が、余剰顎輪郭関節が移動し得る、自由度に課された。頭部1300は、関節分解を初期化するために使用される、入力スキン(メッシュ)を示し、頭部1312は、標的姿勢(例えば、本実施例では、ブレンドシェイプ)を示し、頭部1304は、関節分解の結果を示す。頭部1308は、分解結果1304と標的1312との間の誤差の実施例を示す、ヒートマップがオーバーレイされている。合致は、顔の大部分全体を通して非常に良好であって、より大きい誤差の領域を下頸部に伴う。
(関節分解システムおよび方法の付加的側面および利点)
デジタルキャラクタの高品質の良好に一般化されたリアルタイムメッシュ変形の課題は、メッシュ(例えば、スキン)加重および関節位置を訓練データから導出することによって解決されることができる。メッシュ加重および関節位置は、ヒトによって理解可能な制約を使用して、制約付き最適化エンジンに初期標的形状、高次骨格、およびスキンクラスタをシードする(例えば、誤差最小限化を利用する)ことによって決定されることができる。
改良されたまたは高品質線形ブレンドスキニング(LBS)のための関節分解システムおよび方法の実施形態が、提供される。これらのシステムおよび方法は、結果として生じるLBSが、高品質アニメーションを提供し、それによって、ブレンドシェイプの必要性を低減または排除するように、アルゴリズム的に、線形ブレンドスキニングのための加重を「ペイント」し、必要に応じて、高次骨格関節またはボーン場所を偏移させ得る。
関節分解システムの出力は、新しい線形ブレンドスキニング加重または関節またはボーン位置(その一方または両方が、最適化されることができる)を包含する、高次骨格(システムを初期化するために使用されている場合がある)への更新を含むことができる。
例えば、標準的LBSは、典型的には、目じりの小じわのような微細な詳細(例えば、眼の外角の周囲に形成される、細かいしわおよび微細な線のクラスタ)を捕捉することが不可能である一方、本システムおよび方法の実施形態は、それを行うことが可能である。目じりの小じわを取得するための標準的アニメーション技法では、ヒトアニメータが、関節を最良場所であると主観的に感じる場所に移動させ、次いで、手動で、それらの高次骨格関節のための頂点割当をペイントし、目じりの小じわの具体的形状に合致させ、実施に有意な時間がかかり、ARまたはゲーム等のリアルタイム用途のために好適ではない、反復プロセスをもたらす。
関節分解システムの実施形態は、標的ブレンドシェイプをLBS頂点マッピングに変換し、リギングシステムが、ブレンドシェイプを迅速かつ効率的にシミュレートすることを可能にすることができる(例えば、図12および13における実施例参照)。
線形ブレンドスキニング補間エンジンと併用するための効率的メッシュ加重および関節位置をアルゴリズム的に導出するための方法が、提供される。本技法の実施形態は、LBSパラメータおよびブレンドシェイプが、放射基底関数(RBF)補間エンジンの中に入力され、新しいアバタ姿勢のためのメッシュを変形させるように適用されるべきブレンドシェイプを決定する、標準的技法と異なる。標準的技法は、ブレンドシェイプを使用するときに伴われる多くの計算が存在するため、補間エンジン上では困難であり得る。標準的技法と対照的に、本明細書におけるある実施形態は、LBSパラメータ(例えば、加重マップ、回転、平行移動)をRBF補間エンジンの中に入力し、ブレンドシェイプを使用せずに、アバタのメッシュを変形させる方法を決定する。あるそのような実施形態の可能性として考えられる利点は、より少ない計算が補間エンジンによって実施される必要があることを含み、したがって、あるそのような技法は、より高速であるだけではなく、また、算出上、実装をより容易にし、これは、リアルタイム性能を有効にする。
関節分解システムの実施形態は、スキンクラスタ(例えば、関節へのメッシュ頂点のマッピング)、制約付き最適化アルゴリズムを初期化するための高次骨格、および最適化の間に合致されるべき標的形状(例えば、誤差を低減または最小限にすることによって)を入力としてとることができる。
関節分解プロセスの利点は、良好に一般化され、ARまたはゲーム等のリアルタイムアニメーション用途のために好適である、高品質LBSスキニングパラメータを出力として含むことができる。LBS出力は、出力が、RBF補間エンジン内で再使用され、かつ異なるアバタまたはキャラクタのために再使用され得るため、良好に一般化されていると見なされ得る。これは、RBFが、典型的には、既知のまたは固定された入力、出力、および訓練姿勢のセットを利用するため、可能である。本明細書に説明されるアルゴリズム加重ペイントは、全てのLBS値が、関節および頂点の同一の全体的構造およびフォーマットに基づいて計算され、それによって、RBF補間エンジン内でのLBS出力の使用を有効にするように、同一高次骨格を入力として使用して、最適化を初期化し、標的姿勢に合致させることができる。
上記に説明されるように、関節分解システムおよび方法は、最適化アルゴリズムに課される、ヒトによって理解可能な制約を利用することができる。例えば、上腕は、腕を上昇または降下させるとき、肩関節を中心として、概ね180度直線に上または下に移動することができる。本運動範囲は、制約として、制約付き最適化アルゴリズムに追加されることができ、したがって、関節分解は、解剖学的に不可能な方法において収束する代わりに、生物測定的に正しい解に収束する。
いくつかの従来的システムは、最初から、または低次骨格からのいずれかにおいて、高次骨格を作成するが、これは、算出上困難であり得る。故に、関節分解システムの実施形態は、高次骨格を入力として使用して、制約付き最適化アルゴリズムが、ブランクスレートから開始する代わりに、高次骨格を移動または調節または最適化することを可能にする。入力としての高次骨格の使用は、高次骨格が、異なるアバタを横断して使用され得、したがって、異なるアバタ毎に同一数の関節が存在する等であるため、一般化を有効にする。全てのヒトが、同一下層高次骨格を有するため、これは、行うことが容認可能な標準化である。
(関節分解のための例示的プロセス)
図14は、関節分解のための例示的プロセス1400を図示する。例示的プロセス1400は、遠隔処理モジュール270と、ローカル処理およびデータモジュール260と、図6Bのアバタ処理およびレンダリングシステム690と、図9Aの遠隔コンピューティングシステム920と、他の好適なコンピューティングデバイスと、これらおよび他のコンピューティングデバイスの組み合わせとを含む、1つ以上のコンピューティングシステムによって実施されてもよい。
ブロック1404では、プロセス1400は、アバタの標的姿勢のための標的メッシュにアクセスする。標的メッシュは、本明細書に説明される訓練データセット(例えば、走査されるグラウンドトゥルース、専門家によって手掛けられた彫刻、シミュレーション、または生物測定的に導出されたモデル)のいずれかを備えることができる。標的メッシュは、アバタのための姿勢のシーケンスのうちの1つ以上のものを備えることができる。標的メッシュは、アバタのアニメーションのために使用されるベース中立メッシュとトポロジを共有することができるが、これは、アバタをスキニングするために使用される、標的姿勢に変形されている。
ブロック1408では、プロセス1400は、制約付き最適化プロセスをシードするために使用され得る、初期化メッシュにアクセスする。初期化メッシュは、ベース骨格(例えば、中立または静置姿勢にある)またはより高次の骨格(例えば、概ね標的姿勢に近似する姿勢にある)を備えることができる。初期化メッシュは、スキンクラスタを備えることができ、これは、メッシュ頂点を骨格の関節(またはボーン)に割り当てる。本明細書に説明されるように、より高次の骨格で制約付き最適化プロセスを初期化することが有利であり得、これは、最適化のより高速および効率的収束につながり得る。初期化メッシュは、随意に、標的姿勢に近い、初期加重マップ、回転、または平行移動パラメータを含むことができ、これもまた、プロセス1400の収束を改良し得る。初期加重マップは、上記に説明されるようなLBSまたはユーザ定義方法を含む、任意の好適な方法を使用して作成されてもよい。
ブロック1412では、プロセスは、制約付き最適化プロセスに適用されるべき制約にアクセスする、またはそれを更新する。種々の制約が、上記で詳細に説明された(例えば、関節位置または配向のロック、関節距離または運動範囲制約、セグメント化セット等)。好適な制約を適用することによって、最適化は、実践的閾値をもたらし、過剰適合からのポッピングを低減または回避する。また、上記に説明されるように、制約は、解剖学的または生物測定的に動機付けられたヒトによって理解可能な制約(例えば、肩または膝の運動範囲に関する制約)を備えることができる。ヒトによって理解可能な制約は、有利なこととして、制約付き最適化プロセスが、解剖学的に不可能な方法において収束する代わりに、生物測定的に正しい解に収束することを可能にし得る。
ブロック1416では、プロセス1400は、ブロック1412においてアクセスされる制約に従って、制約付き最適化を実施し、アバタの標的姿勢のためのスキニングパラメータを決定する。制約付き最適化は、ブロック1408においてアクセスされる初期化メッシュで初期化されることができる。方程式(1)および(2)を参照して本明細書に説明されるように、制約付き最適化の出力は、例えば、骨格の全ての関節に関する加重マップwij、回転Rj、および平行移動Tj等の改良または最適化されたスキニングパラメータのセットであることができる。ブロック1412においてアクセスまたは更新された制約に応じて、制約付き最適化方法は、第1および第2の導関数推定値を使用する、線形または二次プログラミング非線形ソルバを含むことができる。他の制約付き最適化技法は、反復性であって、交互に、点毎加重または関節変換が、ロックされ、他のコンポーネントが、最適化される。種々の実装では、最適化技法は、勾配降下法、ブロック座標降下法、滑降シンプレックス法、焼きなまし法、Levenberg-Marquardt最適化、最小二乗法、非線形最適化、ヒューリスティックまたはメタヒューリスティック(例えば、Tabu)検索、加重された絶対配向ソルバ等を含む。
ブロック1420では、収束試験が、制約付き最適化プロセスに適用される。例えば、収束は、誤差Eが、誤差閾値を下回る場合、または変換された位置に対するインクリメントvi’が、閾値を下回る(例えば、メッシュ位置は、反復の間、殆ど変化しない)、または最大数の反復に到達した場合、見出され得る。収束が、生じない場合、プロセス1400は、ブロック1412に戻ることができ、制約は、更新されることができる。例えば、距離閾値またはセグメント化セットは、関節分解が進むにつれて変化し得る。いくつかの実施形態では、ユーザ入力が、ブロック1412において受信され、収束を改良することを補助することができ、ヒトによって理解可能な制約の使用は、ヒトアニメータが、収束の進行度を決定し、最適化プロセスの適切な段階において、例えば、生物測定的に好適な制約を適用し得るため、有利であり得る。したがって、本システムは、その中で関節分解が動作することになる、問題空間をより良好に定義するように高度に構成可能であることができる。
制約付き最適化が、収束した場合、プロセス1400は、ブロック1424に移動し、最適化の結果が、出力される。例えば、出力は、非一過性コンピュータ記憶装置内に記憶される、仮想アバタのアニメーションのために拡張現実ディスプレイデバイス930b、930cに通信される(例えば、図9Aを参照して説明されるネットワーク990を介して)等が行われることができる。線形ブレンドスキニングに関して、出力は、骨格の全ての関節に関する加重マップwij、回転Rj、および平行移動Tjを含むことができる。いくつかの実施形態では、スキニングパラメータの放射基底関数(RBF)式が、ブロック1424において計算され、出力されることができる。
(付加的側面)
1.システムであって、仮想アバタの姿勢を表す、標的メッシュであって、複数の標的メッシュ頂点を備える、標的メッシュと、複数の関節を備える、初期化骨格と、仮想アバタの姿勢への骨格の変形を表す、スキニングパラメータと、スキニングパラメータまたは関節と関連付けられる、制約のセットとを記憶するように構成される、非一過性コンピュータ記憶装置と、非一過性コンピュータ記憶装置と通信する、ハードウェアプロセッサであって、標的メッシュ、初期化骨格、および制約のセットにアクセスし、制約付き最適化プロセスを実施し、標的メッシュへの合致を提供する、スキニングパラメータを決定し、制約付き最適化プロセスは、制約のセットに従い、およびスキニングパラメータを出力するようにプログラムされる、ハードウェアプロセッサとを備える、システム。
2.標的メッシュは、ある姿勢をとっているヒトまたは動物対象の写真走査から決定される、側面1に記載のシステム。
3.標的メッシュは、専門家によって手掛けられた彫刻、姿勢の算出シミュレーション、または生物測定的に導出されたモデルから決定される、先行側面のいずれかに記載のシステム。
4.初期化骨格は、高次骨格を備える、先行側面のいずれかに記載のシステム。
5.初期化骨格は、ベースまたは中立姿勢における低次骨格を備える、先行側面のいずれかに記載のシステム。
6.初期化骨格はさらに、骨格の関節への頂点のスキンクラスタマッピングを備える、先行側面のいずれかに記載のシステム。
7.スキニングパラメータは、頂点に及ぼす関節の影響量を測定する、加重マップを備える、先行側面のいずれかに記載のシステム。
8.スキニングパラメータは、各関節の移動と関連付けられる、6自由度パラメータを備える、先行側面のいずれかに記載のシステム。
9.6自由度パラメータは、回転および平行移動を備える、側面8に記載のシステム。
10.ハードウェアプロセッサはさらに、スキニングパラメータと関連付けられる、放射基底関数(RBF)式を計算するようにプログラムされる、先行側面のいずれかに記載のシステム。
11.制約付き最適化プロセスは、第1の領域からの結果を第2の領域の中にブレンドするように構成される、フォールオフを実装するようにプログラムされる、先行側面のいずれかに記載のシステム。
12.制約付き最適化プロセスは、線形または二次プログラミングを備える、先行側面のいずれかに記載のシステム。
13.制約付き最適化プロセスは、一次導関数または二次導関数推定値を利用する、非線形ソルバを備える、先行側面のいずれかに記載のシステム。
14.制約のセットは、加重マップの加重に関する非負値性制約、頂点に及ぼす全ての関節の総影響に関する正規化制約、任意の頂点に関する最大数の非ゼロ加重、関節移動と関連付けられる回転パラメータが3次元回転を表す、制約、または関節移動と関連付けられる回転パラメータが直交行列を備える、制約のうちの1つ以上のものを備える、先行側面のいずれかに記載のシステム。
15.制約のセットは、子関節を親関節から固定距離にあるように制限する、制約、メッシュの近傍の頂点を加重マップ内に類似加重を有するように制限する、平滑度制約、関節の解剖学的特性を表す、幾何学的制約、関節の長さ、側方サイズ、または移動範囲(ROM)を表す、幾何学的制約、制約付き最適化プロセスの間、関節のサブセットが更新されないようにロックする、制約、関節位置が特定の軸に沿ってのみ平行移動し得る、制約、制約付き最適化プロセスの間、関節特性をロックする、制約、関節が頂点からの閾値距離を超えて位置する場合、頂点に関する加重をゼロに設定する、制約、または1つ以上の頂点のセットを1つ以上の関節のセットに関連させる、セグメント化セットを組み込む、制約のうちの1つ以上のものを備える、先行側面のいずれかに記載のシステム。
16.制約のセットは、1つ以上の頂点のセットを1つ以上の関節のセットに関連させる、セグメント化セットを組み込む、制約を備え、制約付き最適化プロセスは、セグメント化セット内の関節または頂点にのみ作用するようにプログラムされる、先行側面のいずれかに記載のシステム。
17.ハードウェアプロセッサは、制約付き最適化プロセスの間、制約のセットを動的に更新するようにプログラムされる、先行側面のいずれかに記載のシステム。
18.方法であって、非一過性記憶装置と通信する、ハードウェアプロセッサの制御下で、仮想アバタに関する標的姿勢を表す、標的メッシュにアクセスするステップと、標的メッシュに合致させる際に使用するための初期化メッシュにアクセスするステップと、制約のセットにアクセスするステップと、制約付き最適化を実施し、標的姿勢を表す、スキニングパラメータを決定するステップであって、制約付き最適化は、制約のセットに従って実施され、制約付き最適化は、初期化メッシュで初期化される、ステップと、スキニングパラメータを出力するステップとを含む、方法。
19.標的メッシュは、ある標的姿勢をとっているヒトまたは動物対象の写真走査、専門家によって手掛けられた彫刻、標的姿勢の算出シミュレーション、または標的姿勢の生物測定的に導出されたモデルから決定される、側面18に記載の方法。
20.初期化メッシュは、高次骨格を備える、側面18または側面19に記載の方法。
21.初期化メッシュは、骨格の関節へのメッシュの頂点のスキンクラスタマッピングを備える、側面18-20のいずれか1項に記載の方法。
22.スキニングパラメータは、頂点に及ぼす関節の影響量を測定する、加重マップを備える、側面18-21のいずれか1項に記載の方法。
23.スキニングパラメータは、骨格の各関節の移動と関連付けられる、6自由度パラメータを備える、側面18-22のいずれか1項に記載の方法。
24.6自由度パラメータは、回転および平行移動を備える、側面23に記載の方法。
25.スキニングパラメータと関連付けられる、放射基底関数(RBF)式を計算するステップをさらに含む、側面18-24のいずれか1項に記載の方法。
26.制約付き最適化を実施するステップは、収束まで、変換されたメッシュと標的メッシュとの間の誤差項を反復するステップを含む、側面18-25のいずれか1項に記載の方法。
27.制約付き最適化を実施しながら、制約のセットを動的に更新するステップをさらに含む、側面18-26のいずれか1項に記載の方法。
28.制約のセットを動的に更新するステップは、制約のセットに関するユーザ入力を受信するステップを含む、側面27に記載の方法。
29.制約のセットは、加重マップの加重に関する非負値性制約、頂点に及ぼす全ての関節の総影響に関する正規化制約、任意の頂点に関する最大数の非ゼロ加重、関節移動と関連付けられる回転パラメータが3次元回転を表す、制約、または関節移動と関連付けられる回転パラメータが直交行列を備える、制約のうちの1つ以上のものを備える、側面18-28のいずれか1項に記載の方法。
30.制約のセットは、子関節を親関節から固定距離にあるように制限する、制約、メッシュの近傍の頂点を加重マップ内に類似加重を有するように制限する、平滑度制約、関節の解剖学的特性を表す、幾何学的制約、関節の長さ、側方サイズ、または移動範囲(ROM)を表す、幾何学的制約、制約付き最適化を実施する間、関節のサブセットが更新されないようにロックする、制約、関節位置が特定の軸に沿ってのみ平行移動し得る、制約、制約付き最適化を実施する間、関節特性をロックする、制約、関節が頂点からの閾値距離を超えて位置する場合、頂点に関する加重をゼロに設定する、制約、または1つ以上の頂点のセットを1つ以上の関節のセットに関連させる、セグメント化セットを組み込む、制約のうちの1つ以上のものを備える、側面18-29のいずれか1項に記載の方法。
31.制約のセットは、1つ以上の頂点のセットを1つ以上の関節のセットに関連させる、セグメント化セットを組み込む、制約を備え、制約付き最適化を実施するステップは、セグメント化セット内の関節または頂点にのみ作用するステップを含む、側面18-30のいずれか1項に記載の方法。
32.自動的に、線形ブレンドスキニングのための加重をペイントし、骨場所を決定するための方法であって、非一過性記憶装置と通信する、ハードウェアプロセッサの制御下で、初期線形ブレンドスキニング加重セット、高次骨格、および標的姿勢に基づいて、誤差最小限化方程式を解法するステップを含み、方程式は、ヒトによって理解可能な制約に従う、方法。
33.第1のヒトによって理解可能な制約は、解剖学的制約に基づく、四肢回転のための制限された姿勢空間を備える、側面32に記載の方法。
34.四肢回転は、デジタルキャラクタの胴体を通して移動しないように制限される、腕を備える、側面33に記載の方法。
35.第2のヒトによって理解可能な制約は、メッシュの一部が変化することを防止することを含む、側面32-34のいずれか1項に記載の方法。
36.方法であって、非一過性記憶装置と通信する、ハードウェアプロセッサの制御下で、アルゴリズムを使用して、スキン加重および関節位置をアルゴリズム的に導出するステップを含み、アルゴリズムへの入力は、初期線形ブレンドスキニング加重セット、高次骨格、および標的姿勢であって、アルゴリズムは、1つ以上のヒトによって理解可能な制約に基づく制約のセットに従う、方法。
37.第1のヒトによって理解可能な制約は、解剖学的制約に基づく、四肢回転のための制限された姿勢空間を備える、側面36に記載の方法。
38.四肢回転は、デジタルキャラクタの胴体を通して移動しないように制限される、腕を備える、側面37に記載の方法。
39.第2のヒトによって理解可能な制約は、メッシュの一部が変化することを防止することを含む、側面36-38のいずれか1項に記載の方法。
40.非一過性記憶装置と、側面18-39のいずれか1項に記載の方法を実施するようにプログラムされる、ハードウェアプロセッサとを備える、システム。
他の考慮点
本明細書に説明される、および/または添付される図に描写されるプロセス、方法、およびアルゴリズムはそれぞれ、具体的かつ特定のコンピュータ命令を実行するように構成される、1つ以上の物理的コンピューティングシステム、ハードウェアコンピュータプロセッサ、特定用途向け回路、および/または電子ハードウェアによって実行される、コードモジュールにおいて具現化され、それによって完全または部分的に自動化され得る。例えば、コンピューティングシステムは、具体的コンピュータ命令とともにプログラムされた汎用コンピュータ(例えば、サーバ)または専用コンピュータ、専用回路等を含むことができる。コードモジュールは、実行可能プログラムにコンパイルおよびリンクされる、動的リンクライブラリ内にインストールされ得る、またはインタープリタ型プログラミング言語において書き込まれ得る。いくつかの実装では、特定の動作および方法が、所与の機能に特有の回路によって実施され得る。
さらに、本開示の機能性のある実装は、十分に数学的に、算出上、または技術的に複雑であるため、(適切な特殊化された実行可能命令を利用する)特定用途向けハードウェアまたは1つ以上の物理的コンピューティングデバイスは、例えば、関与する計算の量または複雑性に起因して、または結果を実質的にリアルタイムで提供するために、機能性を実施する必要があり得る。例えば、アニメーションまたはビデオは、多くのフレームを含み、各フレームは、数百万のピクセルを有し得、具体的にプログラムされたコンピュータハードウェアは、商業的に妥当な時間量において所望の画像処理タスクまたは用途を提供するようにビデオデータを処理する必要がある。別の実施例として、これらのパラメータのための制約付き最適化問題を解法することによる、スキニングシステムのための加重マップ、回転、および平行移動パラメータを計算することは、高度に算出上集約的である(例えば、図14を参照して説明される例示的プロセス1400参照)。
コードモジュールまたは任意のタイプのデータは、ハードドライブ、ソリッドステートメモリ、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、光学ディスク、揮発性または不揮発性記憶装置、同一物の組み合わせ、および/または同等物を含む、物理的コンピュータ記憶装置等の任意のタイプの非一過性コンピュータ可読媒体上に記憶されてもよい。本方法およびモジュール(またはデータ)はまた、無線ベースおよび有線/ケーブルベースの媒体を含む、種々のコンピュータ可読伝送媒体上で生成されたデータ信号として(例えば、搬送波または他のアナログまたはデジタル伝搬信号の一部として)伝送されてもよく、種々の形態(例えば、単一または多重化アナログ信号の一部として、または複数の離散デジタルパケットまたはフレームとして)をとってもよい。開示されるプロセスまたはプロセスステップの結果は、任意のタイプの非一過性有形コンピュータ記憶装置内に持続的または別様に記憶されてもよい、またはコンピュータ可読伝送媒体を介して通信されてもよい。
本明細書に説明される、および/または添付される図に描写されるフロー図における任意のプロセス、ブロック、状態、ステップ、または機能性は、プロセスにおいて具体的機能(例えば、論理または算術)またはステップを実装するための1つ以上の実行可能命令を含む、コードモジュール、セグメント、またはコードの一部を潜在的に表すものとして理解されたい。種々のプロセス、ブロック、状態、ステップ、または機能性は、組み合わせられる、再配列される、追加される、削除される、修正される、または別様に本明細書に提供される例証的実施例から変更されることができる。いくつかの実施形態では、付加的または異なるコンピューティングシステムまたはコードモジュールが、本明細書に説明される機能性のいくつかまたは全てを実施し得る。本明細書に説明される方法およびプロセスはまた、任意の特定のシーケンスに限定されず、それに関連するブロック、ステップ、または状態は、適切な他のシーケンスで、例えば、連続して、並行して、またはある他の様式で実施されることができる。タスクまたはイベントが、開示される例示的実施形態に追加される、またはそれから除去されてもよい。さらに、本明細書に説明される実装における種々のシステムコンポーネントの分離は、例証を目的とし、全ての実装においてそのような分離を要求するものとして理解されるべきではない。説明されるプログラムコンポーネント、方法、およびシステムは、概して、単一のコンピュータ製品においてともに統合される、または複数のコンピュータ製品にパッケージ化され得ることを理解されたい。多くの実装変形例が、可能性として考えられる。
本プロセス、方法、およびシステムは、ネットワーク(または分散)コンピューティング環境において実装され得る。ネットワーク環境は、企業全体コンピュータネットワーク、イントラネット、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、パーソナルエリアネットワーク(PAN)、クラウドコンピューティングネットワーク、クラウドソースコンピューティングネットワーク、インターネット、およびワールドワイドウェブを含む。ネットワークは、有線または無線ネットワークまたは任意の他のタイプの通信ネットワークであってもよい。
本開示のシステムおよび方法は、それぞれ、いくつかの革新的側面を有し、そのうちのいかなるものも、本明細書に開示される望ましい属性に単独で関与しない、またはそのために要求されない。上記に説明される種々の特徴およびプロセスは、相互に独立して使用され得る、または種々の方法で組み合わせられ得る。全ての可能な組み合わせおよび副次的組み合わせが、本開示の範囲内に該当することが意図される。本開示に説明される実装の種々の修正が、当業者に容易に明白であり得、本明細書に定義される一般原理は、本開示の精神または範囲から逸脱することなく、他の実装に適用され得る。したがって、請求項は、本明細書に示される実装に限定されることを意図されず、本明細書に開示される開示、原理、および新規の特徴と一貫する最も広い範囲を与えられるべきである。
別個の実装の文脈において本明細書に説明されるある特徴はまた、単一の実装における組み合わせにおいて実装されることができる。逆に、単一の実装の文脈において説明される種々の特徴もまた、複数の実装において別個に、または任意の好適な副次的組み合わせにおいて実装されることができる。さらに、特徴がある組み合わせにおいて作用するものとして上記に説明され、さらに、そのようなものとして最初に請求され得るが、請求される組み合わせからの1つ以上の特徴は、いくつかの場合では、組み合わせから削除されることができ、請求される組み合わせは、副次的組み合わせまたは副次的組み合わせの変形例を対象とし得る。いかなる単一の特徴または特徴の群も、あらゆる実施形態に必要または必須ではない。
とりわけ、「~できる(can)」、「~し得る(could)」、「~し得る(might)」、「~し得る(may)」、「例えば(e.g.)」、および同等物等、本明細書で使用される条件文は、別様に具体的に記載されない限り、または使用されるような文脈内で別様に理解されない限り、概して、ある実施形態がある特徴、要素、またはステップを含む一方、他の実施形態がそれらを含まないことを伝えることが意図される。したがって、そのような条件文は、概して、特徴、要素、および/またはステップが、1つ以上の実施形態に対していかようにも要求されること、または1つ以上の実施形態が、著者の入力または促しの有無を問わず、これらの特徴、要素、および/またはステップが任意の特定の実施形態において含まれる、または実施されるべきかどうかを決定するための論理を必然的に含むことを示唆することを意図されない。用語「~を備える(comprising)」、「~を含む(including)」、「~を有する(habing)」、および同等物は、同義語であり、非限定的方式で包括的に使用され、付加的要素、特徴、行為、動作等を除外しない。また、用語「または」は、その包括的意味において使用され(およびその排他的意味において使用されず)、したがって、例えば、要素のリストを接続するために使用されると、用語「または」は、リスト内の要素のうちの1つ、いくつか、または全てを意味する。加えて、本願および添付される請求項で使用されるような冠詞「a」、「an」、および「the」は、別様に規定されない限り、「1つ以上の」または「少なくとも1つ」を意味するように解釈されるべきである。
本明細書で使用されるように、項目のリスト「~のうちの少なくとも1つ」を指す語句は、単一の要素を含む、それらの項目の任意の組み合わせを指す。ある実施例として、「A、B、またはCのうちの少なくとも1つ」は、A、B、C、AおよびB、AおよびC、BおよびC、およびA、B、およびCを網羅することが意図される。語句「X、Y、およびZのうちの少なくとも1つ」等の接続文は、別様に具体的に記載されない限り、概して、項目、用語等がX、Y、またはZのうちの少なくとも1つであり得ることを伝えるために使用されるような文脈で別様に理解される。したがって、そのような接続文は、概して、ある実施形態が、Xのうちの少なくとも1つ、Yのうちの少なくとも1つ、およびZのうちの少なくとも1つがそれぞれ存在するように要求することを示唆することを意図されない。
同様に、動作は、特定の順序で図面に描写され得るが、これは、望ましい結果を達成するために、そのような動作が示される特定の順序で、または連続的順序で実施される、または全ての図示される動作が実施される必要はないと認識されるべきである。さらに、図面は、フローチャートの形態で1つ以上の例示的プロセスを図式的に描写し得る。しかしながら、描写されない他の動作も、図式的に図示される例示的方法およびプロセス内に組み込まれることができる。例えば、1つ以上の付加的動作が、図示される動作のいずれかの前に、その後に、それと同時に、またはその間に実施されることができる。加えて、動作は、他の実装において再配列される、または再順序付けられ得る。ある状況では、マルチタスクおよび並列処理が、有利であり得る。さらに、上記に説明される実装における種々のシステムコンポーネントの分離は、全ての実装におけるそのような分離を要求するものとして理解されるべきではなく、説明されるプログラムコンポーネントおよびシステムは、概して、単一のソフトウェア製品においてともに統合される、または複数のソフトウェア製品にパッケージ化され得ることを理解されたい。加えて、他の実装も、以下の請求項の範囲内である。いくつかの場合では、請求項に列挙されるアクションは、異なる順序で実施され、依然として、望ましい結果を達成することができる。