概要
仮想アバタは、AR/VR/MR環境内の実際または架空の人物(または創造物または擬人化されたオブジェクト)の仮想表現であってもよい。例えば、その中で2人のAR/VR/MRユーザが相互に相互作用する、テレプレゼンスセッションの間、視認者は、別のユーザのアバタを視認者の環境内で知覚し、それによって、他のユーザの存在の有形感覚を視認者の環境内に作成することができる。アバタはまた、共有仮想環境内において、ユーザが、相互に相互作用し、ともに物事を行うための方法を提供することができる。例えば、オンラインクラスに出席する生徒は、仮想教室内の他の生徒または教師のアバタを知覚し、彼らと相互作用することができる。別の実施例として、AR/VR/MR環境内でゲームをプレーしているユーザは、ゲーム内の他のプレーヤのアバタを視認し、彼らと相互作用してもよい。
開示されるシステムおよび方法の実施形態は、改良されたアバタおよびウェアラブルシステムのユーザとユーザの環境内のアバタとの間のより現実的相互作用を提供し得る。本開示における実施例は、ヒト形状のアバタをアニメーション化することを説明するが、類似技法はまた、動物、架空の生物、オブジェクト等の他のデジタルキャラクタにも適用されることができる。故に、本明細書に説明される画像走査および整合または安定化技法の対象は、ヒト人物、動物、または他の変形可能オブジェクトまたはキャラクタであることができる。本明細書に説明される実施例の多くでは、対象は、人物(例えば、ヒトのように見えるアバタまたはデジタルキャラクタを作成するため)であるが、これは、例証のためのものであって、開示される方法およびシステムに関する限定ではない。さらに、本明細書に説明される技法の多くは、特に、動物が、動物がとり得る潜在的姿勢の数と比較して、比較的に少数の姿勢のみが、姿勢空間全体を表すために捕捉され得る、限定された注意持続時間を有し得るため、動物対象のために有利であり得る。
人物の説得力のあるデジタルアバタを作成することは、人物の3次元(3D)肖像を走査し、デジタル幾何学形状を作成することを要求し得る。画像走査は、例えば、対象を、対象を囲繞し、それに向けられている、複数のカメラ(例えば、2つ以上の)を備える、写真測量法捕捉ステージ内に設置することによって行われることができる。カメラは、相互に同期され、ある姿勢をとっている対象の3D走査に変換され得る、画像を捕捉することができる。
静的バースト(実質的に同時に捕捉された複数の画像)から、単一3D走査が、生成され得る。しかしながら、移動し、感情を表現し得る、アバタに関して、走査は、基本表現ユニット(例えば、笑顔、眉を顰める等)および事前に定義された静的姿勢を含む、対象が訓練姿勢をとっている間に行われることができ、そのうちのいくつかは、アニメーションシーケンス内の静的姿勢を表し得る(例えば、5つの静的姿勢、すなわち、腕を真っ直ぐに下ろす、腕を45度挙げる、腕を90度に真っ直ぐ伸ばす、腕を135度挙げる、腕を180度挙げる姿勢によって表される、挙腕)。これらの走査は、動いている人物の説得力のあるデジタルアバタを作成するために使用され得る、アニメーションリグ(下記に説明される)を構築するために使用される、訓練セットを作成するために使用されることができる。
本プロセスにおいて遭遇され得る、1つの難点は、デジタルキャラクタの姿勢空間全体を正確に説明するために要求される大量のデータの問題である。大量のデータは、実践可能時間量内に(例えば、いくつかのアプリケーションに関してはリアルタイムで)データを分析するために、実質的コンピューティングリソースを要求し得る。本問題は、いくつかの実施形態では、姿勢空間全体に及ぶが、代表的姿勢を含み、次いで、デジタルキャラクタが中間姿勢をとる必要があるとき、代表的訓練姿勢間を補間する、より小さい姿勢のサブセット(例えば、訓練姿勢またはサンプル姿勢)を利用することによって、解決され得る。FFNNまたはRBFNN等のニューラルネットワークが、補間を実行するために利用されてもよい。したがって、種々のそのような実施形態は、有利なこととして、コンピューティング速度を改良する、またはより少ないコンピューティングリソースを利用して、デジタルキャラクタの姿勢を算出し得る。
放射基底関数ニューラルネットワーク(RBFNN)は、補間するための一般的方法である。RBFNNは、多くの学問分野(地質学、海洋学等)を横断して広く使用されており、したがって、深く理解されており、多くの最適化が、それらをさらにより高速かつより正確に実施させるように開発されている。RBFNNは、高次デジタルキャラクタ姿勢等の複雑系を解決する、比較的に単純な方法である。
しかしながら、RBFNN等の1つ以上のNNを利用して、デジタルキャラクタに関する新しい姿勢を補間することは、その独自の課題のセットを提示する。例えば、RBFNNが、デジタルキャラクタの姿勢を補間するために使用されるとき、RBFNNは、周期的に、姿勢を正しくなく計算するであろう。例えば、RBFNNは、ジッタ(例えば、デジタルキャラクタメッシュ内の単一頂点または頂点のセットの場所または位置のわずかかつ頻繁な変化)、誤った設置における身体部分のポッピング(例えば、デジタルキャラクタメッシュ内の単一頂点または頂点のセットの場所または位置の突然の大変化)、急速にオン/オフするブレンドシェイプ等を導入し得る。言い換えると、RBFNNは、大抵の場合、良好に機能するが、周期的かつ非常に顕著に、正しくない姿勢を出力し、不安定かつ予測不能なシステムの外観を与えるであろう。これらの周期的誤差を修復することは、ヒト介入を要求し、したがって、システムの全体的効率を減少させる。
これらの周期的誤差は、少なくとも部分的に、3つの主要な理由に起因する。第1に、RBFNNは、典型的には、距離をユークリッド距離として計算する。しかしながら、デジタルキャラクタをアニメーション化することは、主として、骨の回転、すなわち、デジタルキャラクタの骨格を平行移動および回転させ、骨格を被覆するメッシュの正しい対応する変形および他の高次パラメータを決定することについてのものである。第2に、RBFNNからの出力は、単一値である。しかしながら、骨格移動からの角度値は、4つの要素(例えば、x、y、z、w)によって表される必要があり得る。第3に、RBFNNは、全ての入力を同一に処理し得る。入力データは、単一デジタルキャラクタを表すが、デジタルキャラクタリグに対していくつかの異なるタイプのデータが存在し得る。開示されるシステムおよび技法の実施形態は、これらの問題に対処することによって、デジタルキャラクタに関する安定しかつ予測可能な中間姿勢を自動的に決定するために使用されることができる。
第1の問題である、線形空間内の角度値の処理は、角度値が線形分析の関数として定義されるであろうため、正しくないRBFNN距離計算につながり得る。ジンバルロック、高速フリップ、符号の変化、および/または単一角回転が複数の方法で現れ得る面積等の挙動が、生じ得る。これは、場所/位置だけではなく、配向も重要であるためである。以下の実施例を検討する。アバタが、その腕がその側面にある状態から開始し、その腕をその正面に真っ直ぐ伸ばすことで終了するという目標を有する。アバタは、その右腕をその側面に下ろし、その掌を平坦にその腰部に付けた状態で、立っている位置から開始する。アバタは、その腕を側面に真っ直ぐに伸ばすように挙げ、次いで、掌を下にして(例えば、掌は、回転全体にわたって地面に向いている)、腕全体をその身体の正面に回転させる。ここで、依然として立っている状態で、アバタは、その左腕をその側面に下ろし、その掌を平坦にその腰部に付けた状態(例えば、同一開始位置)から開始する。アバタは、その腕をその正面に真っ直ぐ挙げる。アバタの両腕が、その正面に真っ直ぐ伸びている(例えば、同一標的終了姿勢を有する)が、アバタの右手は、掌が下に向いているのに対し、アバタの左手は、掌が右に向いていることに気付かれたい。線形空間内の回転(上記に説明されるような腕回転等)を説明する、デジタルキャラクタリグは、角度空間に説明される2つの腕配向対回転のいずれかが1つの配向のみを有し得ることになり得る。
回転は、多くの異なる方法において適切に(例えば、完全に)説明され得る。例えば、オイラー、3次元における特殊直交群(SO(3)、回転群SO3としても知られる)、回転行列、軸角度、およびクォータニオン表現は、角度空間のいくつかの実施例である。説明を容易にするために、回転の後続議論は、SO(3)空間において説明されるが、任意の好適な方法が、使用されてもよい。SO(3)空間は、4つの値、すなわち、x、y、およびzによって定義された軸と、軸を中心とする回転wとによって定義される。軸は、軸を中心とする回転(例えば、「w」)を伴って、空間内の任意の場所に位置し、したがって、SO(3)空間内のデジタルキャラクタの全ての変換または操作に関する一意または単一の値の解を可能にし得る。
第2の問題である、角度値に関する単一値出力は、明確に定義されておらず、単一所望の最終姿勢に関して計算される、いくつかの解/出力/配向を有し得る。本問題を解決するために、4つの独立値が、デジタルキャラクタリグを移動させるために必要とされる出力回転毎に計算され得る。4つの独立出力値は、次いで、組み合わせ値(x、y、z、w)に組み合わせられ、これは、直接、デジタルキャラクタリグに回転としてフィードされることができる。
第3の問題である、異なるタイプの回転パラメータの組み合わせは、より大きい運動と比較して、より小さい運動が無視可能となる結果をもたらし得る。異なるタイプの回転パラメータは、鎖骨タイプ、肩関節タイプ、指骨タイプ、中足骨タイプ等であり得る。例示的パラメータタイプのリストは、単に、例証のためのものであって、他のタイプまたは群も、使用され得る。各群は、1つのリギング骨または1つを上回るリギング骨を備え得る。各群は、デジタルキャラクタの全体的移動へのその相対的寄与を表す、加重を割り当てられ、個々のパラメータの重要性の平衡を可能にする。例えば、鎖骨は、その小移動が肩の比較的に大移動と比較して小さく見えないように、より加重され得る。回転間の加重の平衡は、デジタルキャラクタの移動への比較的により小さい影響を有する場合でも、リグの全ての部分が検討されることを確実にすることによって、平滑補間のために必要とされるサンプルの全体的数を低減させることができる。これらの加重は、ユーザ定義される、または少なくとも部分的に、ユーザ定義されてもよい。加重は、いくつかの異なるリグを横断して再使用される、またはリグが使用されるであろう方法またはキャラクタのタイプに応じて、必要に応じて変化されてもよい。例えば、加重の正確に同一のセットが、全てのヒトアバタのために使用されてもよいが、種々の動物または擬人化されたオブジェクトのために若干調節されてもよい。
本明細書に説明されるシステムおよび方法の付加的利点は、複雑系を、オーサリング(例えば、直接コンテンツ作成(DCC))アプリケーションからリアルタイムエンジンの中に転送され得る、直列化可能データに抽象化することである。NNの訓練段階の間、特定のパラメータのセットが、デジタルキャラクタの姿勢を説明するために使用される。線形出力は、単一値によって定義され、回転出力は、4つの値(例えば、SO(3)空間)のセットによって定義される。同一リグ設定が、全てのキャラクタを横断して使用され、したがって、広範囲のデジタルキャラクタを駆動するために使用され得る、標準化された出力セットを作成し得る。典型的リギングシステムが、デジタルキャラクタリグを構築するために使用される、その独自の一意のプログラムおよびシステムのセットを備える、オーサリングアプリケーションにおいて構築される。リグが、例えば、リアルタイムランエンジンに転送される必要がある場合、DCCアプリケーション機能性のうちのいくつかは、変換中に失われ、転送されたリグは、元々のものと正確に同一ではなく実施される。
ウェアラブルシステムの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体験は、複数の深度平面に対応する画像が視認者に提供されるディスプレイを有する、ディスプレイシステムによって提供されることができる。画像は、深度平面毎に異なってもよく(例えば、場面またはオブジェクトの若干異なる提示を提供する)、視認者の眼によって別個に集束され、それによって、異なる深度平面上に位置する場面に関する異なる画像特徴に合焦させるために要求される眼の遠近調節に基づいて、または合焦からずれている異なる深度平面上の異なる画像特徴を観察することに基づいて、ユーザに深度キューを提供することに役立ち得る。本明細書のいずれかに議論されるように、そのような深度キューは、信用できる深度の知覚を提供する。
図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を備えることができる。ディスプレイレンズ226は、筐体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号(参照することによってその全体として本明細書に組み込まれる)に説明される。
ヒト視覚系は、複雑であって、深度の現実的知覚を提供することは、困難である。オブジェクトの視認者は、輻輳・開散運動移動と遠近調節(accommodation)の組み合わせに起因して、オブジェクトを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が、ディスプレイおよび画像投入デバイス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はそれぞれ、光を回折または別様に再指向させ、各個別の導波管内で伝搬させることによって、光を導波管から外部結合するように構成される、光学要素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の深度平面および第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は、単独で、または組み合わせて、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は、アバタを移動させる、メッシュを変形させる等によって、アバタをアニメーション化するために使用されることができる。
アバタ処理およびレンダリングシステム690は、本明細書に説明されるニューラルネットワーク(例えば、RBFNNまたはFFNN)によって生成されたデジタルキャラクタリグパラメータを受信することができ、これらのパラメータを使用して、少なくとも部分的に、アバタをアニメーション化することができる。例えば、アバタ処理およびレンダリングシステム690は、図11を参照して説明されるプロセス1100、図18を参照して説明されるプロセス1800、または図21を参照して説明されるプロセス2100を実施することができる。
ユーザの環境をマッピングする実施例
図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と通信してもよい。複数のユーザデバイスおよび/または複数のサーバコンピュータシステムが、入手された画像の構築および/または処理に関与してもよい。
物理的世界に関する情報は、経時的に展開されてもよく、異なるユーザデバイスによって収集される情報に基づいてもよい。仮想世界のモデルはまた、経時的に展開され、異なるユーザの入力に基づいてもよい。そのような情報およびモデルは、時として、本明細書では、世界マップまたは世界モデルと称され得る。図7および9を参照して説明されるように、ユーザデバイスによって入手された情報は、世界マップ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の実施例を示す。
メッシュ内の各点は、モデル化された3次元空間内の座標によって定義されることができる。モデル化された3次元空間は、例えば、(x、y、z)座標によってアドレス指定されるデカルト空間であることができる。メッシュ内の点は、ポリゴンの頂点であって、これは、多角形オブジェクトを構成する。各ポリゴンは、多角形オブジェクトの表面、すなわち、面を表し、頂点の順序付けられたセットによって定義され、各ポリゴンの辺は、頂点の順序付けられたセットを接続する、直線縁である。ある場合には、メッシュ内のポリゴン頂点は、それらが必ずしも3Dグラフィック内において同一平面にあるわけではないという点で、幾何学的ポリゴンと異なり得る。加えて、メッシュ内のポリゴンの頂点は、共線形であり得、その場合、ポリゴンは、ゼロ面積を有する(縮退ポリゴンと称される)。
いくつかの実施形態では、メッシュは、3頂点ポリゴン(例えば、略して、三角形または「三角」)または4頂点ポリゴン(例えば、略して、四辺形または「四角」)から成る。しかしながら、高次ポリゴンもまた、いくつかのメッシュでは使用されることができる。メッシュは、直接コンテンツ作成(DCC)アプリケーション(例えば、主に、3Dコンピュータグラフィックを作成および操作するために設計される、Maya(Autodesk, Inc.から利用可能)またはHoudini(Side Effects Software Inc.から利用可能)等のアプリケーション)では、典型的には、四角ベースである一方、メッシュは、リアルタイムアプリケーションでは、典型的には、三角ベースである。
仮想キャラクタをアニメーション化するために、そのメッシュは、その頂点の一部または全部を種々の瞬間における空間内の新しい位置に移動させることによって変形されることができる。変形は、大規模移動(例えば、四肢の移動)および微細移動(例えば、顔移動)の両方を表すことができる。これらおよび他の変形は、実世界モデル(例えば、身体移動、関節運動、顔のゆがみ、表情等を実施する、実際のヒトの写真測量走査)、芸術指向的展開(実世界サンプリングに基づいてもよい)、それらの組み合わせ、または他の技法に基づくことができる。コンピュータグラフィックの初期の段階では、メッシュ変形は、頂点のための新しい位置を独立して設定することによって手動で遂行され得たが、現代のメッシュのサイズおよび複雑性を前提として、典型的には、自動化されたシステムおよびプロセスを使用して変形を生産することが望ましい。これらの変形を生産するための制御システム、プロセス、および技法は、リギング、または単に、「リグ」と称される。図6Bの例示的アバタ処理およびレンダリングシステム690は、3Dモデル処理システム680を含み、これは、リギングを実装することができる。
仮想キャラクタのためのリギングは、骨格系を使用して、メッシュ変形を補助することができる。骨格系は、関節の集合を含み、これは、メッシュの少なくとも一部の関節運動に対応する。リギングのコンテキストでは、関節は、解剖学的意味において使用されるときのこれらの用語間の差異にもかかわらず、時として、「ボーン」とも称される。骨格系内の関節は、関節に適用され得る、変換に従って、相互に対して移動または別様に変化することができる。変換は、空間内の平行移動または回転および他の動作を含むことができる。関節は、相互に対して階層関係(例えば、親-子関係)を割り当てられることができる。これらの階層関係は、ある関節が、別の関節からの変換または他の特性を継承することを可能にすることができる。例えば、骨格系内の子関節は、親関節内の移動に対応する子関節における移動を生じさせるように、その親関節に割り当てられた変換を継承することができる。
仮想キャラクタのための骨格系は、適切な位置(例えば、解剖学的基準)における関節を用いて、かつ適切な局所回転軸、自由度等を用いて、定義され、所望のセットのメッシュ変形が行われることを可能にすることができる。いったん骨格系が、仮想キャラクタのために定義されると、各関節は、「スキニング」と呼ばれるプロセスにおいて、メッシュ内の種々の頂点に及ぼす影響の量を割り当てられることができる。これは、骨格系内の関節毎に、加重値を各頂点に割り当てることによって行われることができる。変換が、任意の所与の関節に適用されると、その影響下の頂点は、その個別の加重値に依存し得る量だけ、その関節変換に基づいて、自動的に移動または別様に改変されることができる。
リグは、複数の骨格系を含むことができる。1つのタイプの骨格系は、コア骨格(低次骨格とも称される)であって、これは、仮想キャラクタの大規模移動を制御するために使用され得る。例えば、ヒトアバタの場合、コア骨格は、ヒトの解剖学的骨格に類似し得る。リギング目的のためのコア骨格は、解剖学的に正しい骨格に正確にマッピングされ得ないが、類似配向および移動性質を伴う類似場所における関節のサブセットを有し得る。
上記に簡単に述べられたように、関節の骨格系は、例えば、関節間の親-子関係を伴う、階層であることができる。変換(例えば、位置および/または配向の変化)が、骨格系内の特定の関節に適用されると、同一変換が、同一階層内の全ての他のより低いレベルの関節に適用されることができる。例えば、ヒトアバタのためのリグの場合、コア骨格は、アバタの肩、肘、および手首のための別個の関節を含んでもよい。これらのうち、肩関節は、階層内で最高レベルを割り当てられてもよい一方、肘関節は、肩関節の子として割り当てられることができ、手首関節は、肘関節の子として割り当てられることができる。故に、特定の平行移動および/または回転変換が、肩関節に適用されると、同一変換がまた、肩と同一方法において平行移動および/または回転されるように、肘関節および手首関節にも適用されることができる。
その名称の含蓄にもかかわらず、リグ内の骨格系は、必ずしも、解剖学的骨格を表す必要はない。リギングでは、骨格系は、メッシュの変形を制御するために使用される、様々な階層を表すことができる。例えば、髪は、階層連鎖内の一連の関節として表され得、アバタの顔のゆがみに起因する、皮膚の動き(笑顔、眉を顰める、笑う、発話する、瞬目等の表情を表し得る)は、顔リグによって制御される一連の顔関節によって表され得、筋肉変形は、関節によってモデル化されることができ、衣類の動きは、関節のグリッドによって表され得る。
仮想キャラクタのためのリグは、複数の骨格系を含むことができ、そのうちのいくつかは、その他の移動を駆動し得る。低次骨格系は、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の加重値を割り当てられ、その位置は、その他ではなく、その具体的関節に割り当てられた変換に基づいて変化される。メッシュ内の他の頂点は、複数の関節によって影響され得る。その場合、0~1の別個の加重が、影響を及ぼす関節毎に、それらの頂点に割り当てられ、頂点毎の加重の和は、1に等しい。これらの頂点の位置は、その影響を及ぼす関節の全てに割り当てられる変換に基づいて、変化される。例えば、デジタルキャラクタが、その腕を挙げる場合、その合計50個のより低次の骨/関節(足、脚部、指関節等)のうちの2つ(鎖骨および肩関節)のみが、非ゼロ加重を有し得る。鎖骨は、肩加重(例えば、0.3)より大きい加重(例えば、0.7)を有し、比較的に小鎖骨移動が、鎖骨および肩の両方に割り当てられる、頂点を変形させるために十分であることを確実にし得る。
メッシュ内の頂点の全てのための加重割当を行うことは、特に、関節の数が増加するにつれて、極度に労働集約的となり得る。関節に適用される変換に応答して、加重を平衡し、所望のメッシュ変形を達成することは、高度に訓練された専門家にとってさえ非常に困難であり得る。リアルタイムアプリケーションの場合、タスクは、多くのリアルタイムシステムがまた、具体的頂点に加重され得る、関節の数(概して、8つまたはより少ない)に関する限界を強いるという事実によって、さらに複雑になり得る。そのような限界は、典型的には、グラフィック処理ユニット(GPU)内の効率の目的のために課される。
用語「スキニング」はまた、骨格系内の関節に適用される変換に基づいて、割り当てられた加重を使用して、メッシュを実際に変形させるプロセスを指す。例えば、一連のコア骨格関節変換が、アニメータによって、所望のキャラクタ移動(例えば、走っている動きまたはダンスステップ)を生産するように規定され得る。変換が、関節のうちの1つ以上のものに適用されると、新しい位置が、変換された関節の影響下の頂点のために計算される。任意の所与の頂点のための新しい位置は、典型的には、その特定の頂点に影響を及ぼす、全ての関節変換の加重平均として算出される。本加重平均を算出するために使用される、多くのアルゴリズムが存在するが、最も一般的であって、かつその単純性および制御の容易性に起因して、大部分のリアルタイムアプリケーションにおいて使用されるものは、線形ブレンドスキニング(LBS)である。線形ブレンドスキニングでは、頂点毎の新しい位置が、それに関してその頂点が非ゼロ加重を有する、各関節変換を使用して計算される。次いで、これらの関節変換のそれぞれから生じる、新しい頂点座標が、関節毎のその頂点に割り当てられる個別の加重に比例して平均される。実際は、LBSに対する周知の限界が存在し、高品質リグを作成する際の作業の多くは、これらの限界を見出し、克服することに費やされる。多くのヘルパ関節システムが、本目的のために具体的に設計される。
スキニングに加え、「ブレンドシェイプ」はまた、リギングにおいて、メッシュ変形を生産するためにも使用されることができる。ブレンドシェイプ(時として、「モーフ標的」または単に「形状」とも呼ばれる)は、メッシュ内の頂点のセットに適用される変形であって、セット内の各頂点は、加重に基づいて、規定された量だけ規定された方向に移動する。セット内の各頂点は、具体的ブレンドシェイプのためのその独自のカスタム運動を有し得、セット内の頂点を同時に移動させることは、所望の形状を生成するであろう。ブレンドシェイプ内の頂点毎のカスタム運動は、「デルタ」によって規定されることができ、これは、その頂点に適用されるXYZ運動の量および方向を表す、ベクトルである。ブレンドシェイプは、例えば、顔変形を生産し、いくつかの可能性のみを挙げると、眼、唇、眉、鼻、えくぼ等を移動させるために使用されることができる。ブレンドシェイプは、頂点のセットに関して、中立姿勢をゼロとして、標的姿勢を1として定義するステップを含む、任意の方法によって作成されてもよく、ブレンドシェイプ加重は、頂点のセット、加重、または割合、すなわち、中立姿勢と標的姿勢との間の量を移動させる。スキニングおよびブレンドシェイプは両方とも、加重を要求し、それらは両方とも、メッシュを変形させるが、スキニングおよびブレンドシェイプはそれぞれ、その独自の別個の加重を有する。概して、ブレンドシェイプは、付加的メッシュ変形のために、スキニングの上に構築されてもよい。
ブレンドシェイプは、芸術指向的方法においてメッシュを変形させるために有用である。それらは、正確な形状がモデルの走査からスカルピングまたは捕捉され得るにつれて、大量の制御をもたらす。しかし、ブレンドシェイプの利点は、ブレンドシェイプ内の全ての頂点のためのデルタを記憶する必要があることを代償とする。細かいメッシュおよび多くのブレンドシェイプを伴うアニメーション化されたキャラクタに関して、デルタデータの量は、有意となり得る。
各ブレンドシェイプは、ブレンドシェイプ加重を使用することによって、規定された程度まで適用されることができる。これらの加重は、典型的には、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内でアバタをリアルタイムでアニメーション化する。
NN方法の概要
図11は、本明細書に説明されるシステムおよび方法を使用してデジタルキャラクタリグを駆動するプロセス1100の例示的概要を図示する。プロセス1100は、例えば、ローカル処理およびデータモジュール260、遠隔処理モジュール270、遠隔コンピューティングシステム920、またはそれらの組み合わせ等のウェアラブルシステム200と関連付けられるハードウェアプロセッサによって実施されることができる。
上記に説明されるように、デジタルキャラクタは、デジタルキャラクタリグによって表される。いくつかの実施形態では、アバタは、低次デジタルキャラクタリグによって表される。アバタは、図9Bに説明される902または904等のウェアラブルデバイスを装着しているユーザのアバタであり得る。ユーザは、ウェアラブルデバイスの別のユーザとアバタチャット中であり得、例えば、第1のユーザである、Aliceには、例えば、第2のユーザである、Bobの仮想デジタルアバタが見える。一実施例では、AliceおよびBobは、仮想ダンスパーティを開催し得、アバタは、YMCAの曲に合わせてダンスしている。アバタは、図9Bに示されるものに類似する、中立、すなわち、A-姿勢において、ダンスセッションを開始し、次いで、文字Yをその腕で形成するように移動し、したがって、新しいリグ姿勢を要求し得る。
システムは、デジタルキャラクタの姿勢(例えば、新しいダンス姿勢)の変化に関するインジケーションを受信する(1102)。ダンス姿勢と関連付けられる、低次デジタルキャラクタリグパラメータが、NNの中にフィードされる(1104)。NNプロセスが、NNを実行するように構成されるシステム上で実行され(1106)、次いで、新しいダンス姿勢を表す、高次デジタルキャラクタリグパラメータを出力する(1108)。出力は、次いで、高次デジタルキャラクタリグを駆動するために使用され得(1110)、これは、本実施例では、AliceおよびBobのアバタが文字Yを形成することを可能にし得る。例えば、ウェアラブルディスプレイシステム200は、デジタルキャラクタリグパラメータを使用して、ディスプレイ220によって、システム200のユーザ210にアバタをレンダリングすることができる。
入力および出力
図12Aは、図11における1104での入力のためのパラメータを提供するであろう、例示的低次デジタルキャラクタリグを図示し、図12Bは、図11における1110で説明されるような例示的高次デジタルキャラクタリグを図示する。上記に説明されるように、低次骨格1200Aは、解剖学的骨格に類似して見える、骨格の簡略化されたバージョンを表し得る。骨および関節は、概ね、解剖学的骨格と類似位置に位置する。例えば、cとbとの間の線1202は、鎖骨を表し得、e1204は、肩関節を表し得る。
図12Aにおける低次骨格は、a-jとして標識された9つの関節/骨によって表される、9つの入力パラメータを有する。9つの入力パラメータは、例証目的のためだけに示され、本発明の範囲を限定すべきではない。実践では、1、2、5、10、100、1,000、またはそれを上回る、より少ないまたはより多い入力パラメータが、使用され得、他の身体部分から少なくとも半独立的に、移動する必要がある、身体部分の数に依存し得る(故に、操作されている特定のデジタルキャラクタに依存し得る)。入力パラメータは、関節、骨、ブレンドシェイプ、および/または低次骨格を表す任意の他の方法であり得る。
高次骨格1200Bは、上記に説明されるように、低次骨格上に追加され得る、靱帯、腱、および/または付加的骨を表してもよい。これは、変形が、より良好な筋緊張および全体的形状を伴って、より現実的かつ生きているように現れることを可能にする。図12Bにおける高次骨格は、6つの高次出力パラメータk-pを有する。6つの高次出力パラメータは、例証目的のためだけに使用され、本発明の範囲を限定すべきではない。実践では、1、5、10、100~1,000、またはそれを上回る、より少ないまたはより多い入力パラメータが、使用され得る。出力パラメータは、関節、骨、高次補正、および/または高次骨格を表す任意の他の方法であり得る。
代替実施形態では、入力および出力は両方とも、高次骨格表現を表し得る、またはそれらは両方とも、低次骨格表現を表し得る。いくつかの例示的実施形態では、本明細書における方法およびシステムは、既知の訓練またはサンプル姿勢間を補間する方法として機能する。
実践では、所与の骨は、複数の線形成分(x、y、zにおける平行移動、骨長、スケール、および他のもの)を有することができるが、例証を容易にするために、開示される実施形態は、単一値によって表される線形成分を用いて説明される。加えて、各要求されるデジタルキャラクタ姿勢1104は、コンテキストに応じて、パラメータ毎に角度および/または線形成分を有していなくてもよい。例えば、要求されるデジタルキャラクタ姿勢1104が、中立姿勢と実質的に同一である場合、値の大部分は、ゼロであって、中立からの関節オフセットのセットのみが、非ゼロ値を有するであろう。
いくつかの実施形態では、入力は、低次デジタルキャラクタリグパラメータであって、出力は、高次デジタルキャラクタリグパラメータである。低次入力から開始することは、その中に本発明が存在する、より広範なシステムに有益であり得る。典型的には、低次リグパラメータは、高次リグパラメータが低次リグパラメータから計算されるため、高次リグパラメータと比較して、生成がより容易かつより高速である。本明細書に説明される実施形態は、入力または出力が高または低次であるかどうかにかかわらず機能する。低次入力から開始するが、高次出力を有することは、より高速の処理速度の付加的利点を提供し得、したがって、いくつかの実施形態では、リアルタイム性能を可能にする。
図13A-13Bはさらに、デジタルキャラクタリグに関する姿勢を図示および定義する。入力姿勢は、所与の姿勢に関する関節、ブレンドシェイプ、および/または骨のセットの値を表すが、いくつかの実施形態では、姿勢は、中立位置に関して説明され得ることが、依然として当てはまる。中立位置は、任意の姿勢であることができるが、A-姿勢(図12A-12Bに示されるように)またはT-姿勢が、一般に、使用される。実践では、NNの中にフィードされる入力姿勢は、姿勢1300Aと選定された中立姿勢1300Bとの間の差異であり得る。入力姿勢1300Aは、図11に関して参照されるように、アバタがYMCAに合わせてダンスしている、したがって、文字Yを形成するものであってもよい。したがって、入力姿勢は、中立姿勢に対する姿勢の相対的平行移動および回転を表し得る。
いくつかの実施形態では、低次キャラクタリグ1300Aは、9つの入力パラメータによって表されてもよい。それらの9つの入力パラメータはそれぞれ、角度および線形成分を有し、入力姿勢を説明する合計18パラメータを与え得る。角度パラメータは、SO(3)角度空間内で4つの値(x、y、z、w)を含むベクトルとして表され得る。線形パラメータは、線形成分が1つの値によって表され得る、簡略化仮定を使用してもよい。これは、いくつかの実施形態では、中立姿勢に対するデジタルキャラクタの入力姿勢を表す、9つの線形入力パラメータ+9つの角度パラメータ*4(x、y、z、w)=45個のパラメータが存在し得ることを意味する。
いくつかの実施形態では、入力姿勢は、中立位置に対するものではなく、代わりに、固定座標系または任意の他の好適な基準系に対するものであり得る。
RBFNNコンテンツ
1つ以上のデジタルキャラクタ姿勢を補間するように構成される、ニューラルネットワークの第1の例示的実施形態は、下記にさらに詳細に説明されるように、線形および角度成分を分離するように構成される、RBFNNである。
図14は、RBFNN1604(図16を参照して説明される)内の各サンプルノード1400内に含有される、種々の成分を図示する。4つの主要な成分、すなわち、訓練姿勢のセット1402、放射基底関数1404、距離加重γのセット1406、および基底加重wのセット1408が、説明されるであろうが、いくつかの実施形態は、より多いまたはより少ない成分を含有してもよい。
いくつかの実施形態では、各サンプルノードは、訓練姿勢のセット1402を含有してもよい。これらの訓練姿勢は、任意のタイプのNNのために使用されてもよく、RBFNNに限定されない。これらの訓練姿勢は、姿勢空間を横断したデジタルキャラクタの姿勢のセットを表す。訓練姿勢は、所望のアニメーションシーケンスから得られた静的姿勢のセットとして編成されてもよい、またはそれらは、個々の姿勢であってもよい。例えば、訓練姿勢のうちのいくつかは、挙足を表してもよい。第1の姿勢は、左および右脚部の両方をともに真っ直ぐ下ろすことであり得る。第2、第3、および第4の姿勢は、右脚部を20度、次いで、60度、次いで、90度挙げることであり得る。脚部を真っ直ぐにした状態で、それらの角度を通して脚部を移動させる、1つの一連の訓練姿勢と、膝を曲げた状態で、脚部を以前に述べられた角度で挙げる、異なる一連の訓練姿勢とが、存在し得る。プロセスは、左脚部に関しても同様に繰り返され得る。任意の数の訓練姿勢が、選択および使用されてもよく、本発明の範囲を限定するものではない。上記に述べられたように、理想的には、要求される訓練姿勢が少ないほど、より良好であって、入力を集め、NNを訓練および起動するために要求される、時間量および労力を低減させる。システムがリアルタイムで起動する必要がある、コンテキストでは、訓練姿勢の数を最小限にすることが重要である。しかしながら、これは、少なすぎる訓練姿勢が使用される場合、システムは、姿勢をそれほど正確に補間し得ないことの認識と平衡される必要がある。
図15A-15Cは、使用され得る、3つの潜在的訓練姿勢を図示する。図15A-15Cは、人物がその腕を曲げている、姿勢のシーケンス内の種々の姿勢を表し得る。
いくつかの実施形態では、各サンプルノードは、放射基底関数1404を含有してもよい。本関数は、全てのサンプルノードに関して同一である(1つのサンプルノードが、RBF毎に訓練姿勢あたりで作成される)。これは、距離関数と、距離関数の出力に適用される、基底関数とから成る。本関数の合成は、標準RBF式である。しかしながら、RBFにおける距離関数は、典型的には、ユークリッドノルム等の単純関数である。これは、入力が典型的には同一タイプであるため、可能である。しかしながら、デジタルキャラクタリグのための入力は、複数のタイプを有し、線形および角度空間の両方におけるパラメータを含む。
いくつかの実施形態では、各サンプルノードは、距離加重γのセット1406を含有してもよい。n個の入力(低次関節、骨、ブレンドシェイプ等)に関してn個の線形およびn個の角距離加重、合計2*n個の距離加重が、存在する。これらの距離加重は、下記に議論されるように、RBF距離関数において使用され、ユーザによって割り当てられる、部分的にユーザによって割り当てられる、および/または訓練の間に計算される。これらの距離加重は、複数の入力タイプおよび異なるタイプの入力をともに構成する必要性に起因して、必要とされる。一例示的入力タイプは、足首関節タイプであって、第2の入力タイプは、膝関節である。膝関節は、足首関節より大きい移動範囲を有する。デジタルキャラクタが、例えば、ボールを蹴るために、その下半身を移動させる必要がある場合、本距離加重のセットは、より小さい足首移動が、より大きい膝関節移動と比較して、丸め誤差として包摂されないことを確実にすることに役立つであろう。より多いまたはより少ない加重が、入力の形態に合致するために使用されてもよい。前述のように、1つの簡略化仮定は、線形パラメータが1つのみの値を有する(4つの値を有する角度パラメータとは対照的に)と仮定するものである。代替実施形態では、システムが、代わりに、3つの値から成る線形パラメータで設定される場合、入力パラメータ値あたり1つの等数の距離加重が、要求されるであろう。代替実施形態は、各線形入力および各角度入力を表す、任意の数の値を有してもよく、各入力パラメータ値に対応する等数の距離加重を有してもよい。
いくつかの実施形態では、各サンプルノードは、基底加重wのセット1408を含有してもよい。m個の出力(高次関節、骨、高次補正等)に関して、m個の線形および4*m個の角度基底加重値が存在し得る。本発明のシステムおよび方法のいくつかの実施形態では、4つの値が、角度出力毎に算出され得、したがって、デジタルキャラクタリグを駆動する角度出力毎に、複数の基底加重が存在する。これらの基底加重は、ネットワークの訓練相の間に計算され、評価(例えば、訓練相とは対照的に、RBFNNの使用相)の間、固定される。基底加重計算は、RBFNNの標準的技法を使用して行われる。典型的RBFNNを用いることで、各出力は、独立していると見なされ、出力と同数の基底加重が存在する。我々の出力のうちのいくつかは、角度であって、単一の実数を上回る数(例えば、x、y、z、wを表し得る、4つの値)を要求するため、出力毎に複数の基底加重を有し、下記でさらに説明されるように、余剰ステップを実施し、これらの値を角度出力の中に構成する。任意の数の出力が、計算されてもよい。いくつかの実施形態では、1、5、10、100、または1,000、またはそれを上回る出力パラメータが、計算されてもよい。RBFNNシステムによって提供される出力の数にかかわらず、出力あたり1つの基底加重wが存在してもよい。
RBFNNからのデジタルキャラクタの出力姿勢を補間するためのシステムの略図
図16は、RBFNNからのデジタルキャラクタの出力姿勢をシステム内で通信される例示的データで補間するためのシステムの略図である。略図1600は、1602から開始し、そこで、デジタルキャラクタリグに関する新しい姿勢が、n個の入力パラメータによって表される。新しい姿勢は、アバタがYMCAダンスシーケンスにおいてYを作ることであってもよい。いくつかの実施形態では、入力姿勢は、中立基準姿勢との間の線形および角度差として表され得る。いくつかの実施形態では、線形パラメータは、単一実数によって表されてもよく、角度パラメータは、オイラー角等の任意の好適な角度数量、回転行列、軸角度、クォータニオン等によって表されてもよい。入力は、RBFNNの中にフィードされるデータが線形および角度群に分離される限り、システムによって受信されることに先立って、またはシステム内のステップとしてのいずれかにおいて、線形および角度成分のセットに分離されてもよい。n個の入力に関して、姿勢を表す合計2*n個の入力パラメータのためのn個の線形およびn個の角度パラメータが、存在する。各パラメータは、4つの値を含む各角度パラメータおよび1つの値を含む各線形パラメータ等、1つ以上の値から成ってもよい。各パラメータは、ここに提供される実施例より多くまたはより少なく含んでもよく、本発明の範囲を限定するものとして解釈されるべきではない。分離された線形および角度入力パラメータは、RBFNN1604に渡され、サンプルノード1606のそれぞれに入力される。訓練姿勢あたり1つのサンプルノードが、存在する。ここまでの新規な点の1つは、角度を線形パラメータから分離することである。入力パラメータ(線形および角度パラメータに分離される)は全て、サンプルノードの全てに渡される。
各サンプルノード1606は、図14を参照して説明されるノード1400内に規定された4つの成分1402、1404、1406、1408を含有してもよいが、より多いまたはより少ない成分を含有してもよい。
サンプルノード1606はそれぞれ、入力値毎に1つずつ、距離のセットを算出してもよい。線形入力に関して、距離は、入力値とRBFNN内に含有される各訓練(例えば、サンプル)姿勢からの対応する値との間のユークリッド距離である。代替実施形態では、任意の他の好適な線形距離方程式が、使用されてもよい。角度入力に関して、距離は、SO(3)空間内で計算される角距離であってもよい。典型的には、RBFNNは、線形入力のみを有し、ユークリッドノルムのみを使用する。
サンプルノード1606はまたそれぞれ、異なるタイプのデータを考慮する、最終距離を計算してもよい。単一実数である、最終距離は、上記に説明されるように、加重γ1406を使用して、加重されたユークリッドノルムとして算出される。本加重は、新規な点であって、典型的RBFNNに見出されないものである。
サンプルノード1606はそれぞれ、基底値を計算してもよい。少なくとも部分的に、最終距離から計算される、本値は、基底関数の出力であって、全てのRBFNNに標準である。概して、放射基底関数は、放射関数のネットワークである。本関数のクラスは、距離および放射関数の適切な選択肢を用いて一般的な未知の関数を近似させる際に有用であることが示されている。放射関数は、原点からのその距離に基づいて、その値が定義される、関数であるが、原点以外の基準点が、使用されてもよく、距離は、典型的には、ユークリッド距離に対して定義される。放射基底関数は、複数の放射関数にわたる和であり得る。
サンプルノード1606はまたそれぞれ、wによって加重された基底値を計算してもよい。これは、サンプルノード1606の出力である。基底値は、wの基底加重のそれぞれによって乗算され、対応する累積ノード1608または1610に渡されてもよい。1つは、線形出力1608のためのもであって、1つは、角度出力1610のためのものである、2つの累積ノードが、存在してもよい。線形出力は、各サンプルから渡された加重された値の和として計算されてもよい。各サンプルノードは、4つの値を各角度累積ノードに渡す(単一実数値は、図16では、円形によって表される)。これらの値は、線形出力と同一方法で累積され、4つの和をもたらし得る。最初の3つの和は、回転軸ベクトルのx、y、z成分として使用されてもよい。本回転軸ベクトルは、単位長にスケーリングされてもよい。第4および最終値は、回転軸の周囲の角回転値として使用され、3D回転の共通角度軸表現を提供し得、これは、対応する関節、骨、高次補正、または他の高次リグ表現に角度出力として出力されてもよい。最後に、全ての出力1612は、外部システムに渡され、デジタルキャラクタを駆動する。
RBFNNの例示的訓練
図17は、本明細書に開示されるRBFNNを訓練するための例示的プロセスを図示する。プロセス1700は、デジタルキャラクタリグのコンテキストにおいてRBFNNを訓練するためのプロセスを図示するが、しかしながら、他のコンテキストも、可能性として考えられることを理解されたい。本明細書に開示される本発明から最も利点を享受する、コンテキストは、下記でさらに開示されるであろうように、2つ以上の異なるタイプのデータから成る、および/または角度入力を含むものである。プロセス1700は、NNを訓練するために好適なハードウェアプロセッサによって実施されることができる。いくつかの実施形態では、訓練は、遠隔処理モジュール270または遠隔コンピューティングシステム920によって実施されることができる。訓練されたRBFNNは、ネットワーク990を介して、ウェアラブルシステム200に通信されることができる。いくつかの実施形態では、ウェアラブルシステム200は、付加的訓練データを入手することができ、RBFNNはさらに、例えば、ローカル処理およびデータモジュール260、遠隔処理モジュール270、または遠隔コンピューティングシステム920によって訓練されることができ、これは、具体的姿勢またはウェアラブルシステム200のユーザ210によって視認されるデジタルキャラクタに対してRBFNNを個人化することに役立ち得る。
ブロック1702では、デジタルキャラクタ姿勢の訓練セットが、受信され、入力は、低次デジタルキャラクタリグ姿勢パラメータを表し得、出力は、高次デジタルリグ姿勢パラメータを表し得る。上記に述べられたように、代替実施形態は、両方とも高次デジタルキャラクタリグを表す入力および出力または両方とも低次デジタルキャラクタリグを表す入力および出力等、他の入力/出力訓練データセットを使用してもよい。代替実施形態では、入力データは、デジタルキャラクタリグを表さない場合があるが、依然として、1つを上回るタイプから成る、および/または角度データを含む、入力を有し得る。
ブロック1704では、訓練データが、角度および線形パラメータに分離される。上記に述べられたように、角度および線形パラメータは、補間結果を改良するために分離される。角度パラメータが、線形方程式または処理を使用して補間されるとき、ジンバルロック、高速フリップ、および/または符号の変化または単一角回転が複数の方法で表され得る面積等、望ましくない出力が、生じ得る。代替実施形態では、訓練データは、例えば、下記に説明されるであろうように、サブセット毎に一意の距離計算を用いて、データのサブセットが後続特殊処理から利点を享受し得る限り、データの2つ以上のサブセットに分離されてもよい。角度および線形データは、任意の好適な方法を使用して分離されてもよい。例えば、スクリプト、コンピュータプログラム、または他の一連のコードが、角度データの形態(例えば、4つの要素を含有する、ベクトル)および線形データの形態(例えば、単一値)を認識し、入力データのフォーマット別にデータを自動的にグループ化し得るように作成されてもよい。代替として、入力データは、入力データソースから事前にタグ付けされてもよく、したがって、システムは、単に、タグを読み取り、事前に定義された方法に従って、入力データを操作することができる。いくつかの実施形態では、入力データのフォーマットは、出力データの所望のフォーマットを定義し、任意の数の前または後処理ステップが、データを操作し、所望のデータフォーマットに合致させるために追加されてもよい。
ブロック1708および1710では、RBFNNの距離関数が、定義され得る。ブロック1710は、線形パラメータのための距離関数を定義し得る。これは、概して、ユークリッドノルムとして定義されるが、他の距離関数も、可能性として考えられ、Δ(q1,q2)=||q1-q2||として記述され得る、または代替として(より一般には)、Ψ(x)=Ψ(||x||)として記述され得る(式中、Ψは、距離が原点に対して定義されるときの放射関数である)、または代替として、距離が原点以外の点に対して定義されるとき、Ψ(x)=Ψ(||x-c||)として記述され得る。線形距離関数は、代替として、Ψ(x)=Ψ(Δ(x,c))として任意の距離関数Δを使用して一般化されてもよい。ブロック1708は、角度パラメータのための距離関数を定義し得る。2つの回転間の角距離は、0~180度または0~πラジアンの範囲内であってもよい。2つの角度間の距離は、Δ(q1,q2)=acos(2<q1,q2>2-1)によって定義されてもよく、式中、q1およびq2は、クォータニオンとして表される角度であり得、<q1,q2>は、対応するクォータニオンの内積を示し、例えば、q1=[x1,y1,z1,w1]およびq2=[x2,y2,z2,w2]および<q1,q2>=x1x2+y1y2+z1z2+w1w2である。本実施形態では、距離メトリックは、対称であって、Δ(q1,q2)+Δ(q2,q3)≠Δ(q1,q3)であって、これは、平行移動/回転の異なるセットが各腕上で行われたため、両腕が、ユーザの正面に挙げられた状態で標的位置にあるが、手が、異なるように配向される状態を実証する、前述に説明される挙腕実施例の数学的表現であり得る。ブロック1708および1710は、角度および線形距離関数を規定するが、代替実施形態は、操作されているデータのタイプにより良好な好適な他の関数を利用してもよい。
ブロック1712および1714は、プロセス1700における随意のステップであって、線形および角度パラメータに関する距離加重γを割り当てるステップを図示する。図14の1406を参照して上記に述べられたように、n個の入力(低次関節、骨、ブレンドシェイプ等)に関して、n個の線形およびn個の角距離加重γ、合計2*n個の距離加重が存在する。これらの距離加重は、RBF距離関数において使用され、最終距離関数を計算し、ユーザによって割り当てられる、部分的にユーザによって割り当てられる、および/または訓練の間に計算される。これらの距離加重は、複数の入力タイプおよび異なるタイプの入力をともに構成する必要性に起因して必要とされる。一例示的入力タイプは、鎖骨タイプであって、第2の入力タイプは、肩関節タイプである。肩関節は、鎖骨より大きい移動範囲を有し、したがって、γの距離加重のセットは、より小さい鎖骨移動がより大きい肩関節移動と比較して無視可能ではないことを確実にすることに役立ち得る。
ブロック1716では、最終距離関数が、ブロック1708および1710において定義された方程式から出力されるであろう、各距離の加重されたγユークリッドノルムとして定義され得る。
ブロック1718では、訓練入力/出力セットが、RBFNNの中に入力される。
ブロック1720では、RBFNNが、対応する入力が使用されるとき、RBFNNから計算された出力を訓練セットからの既知の出力に合致するために、基底加重のセットwを調節する。基底加重wは、RBFNNによって自動的に計算され、訓練相の間のみ調節される。1408に関して上記に述べられたように、m個の出力(高次関節、骨、高次補正等)に関して、m個の線形および4*m個の角度加重値が存在し得る。本発明のいくつかのシステムおよび方法では、角度出力毎に4つの値が、算出され、したがって、デジタルキャラクタリグを駆動する角度出力毎に、複数の基底加重が存在する。基底加重計算は、RBFNNの標準的技法を使用して行われる。
ブロック1720後、RBFNNは、固定される(例えば、訓練セット内の訓練入力/出力対の全てが、RBFNNの中に入力された後)。これは、基底加重wが、もはや変動することを可能にされず、ここでは、付加的訓練データが提供されない限り、固定値と見なされることを意味する。RBFNNは、ここで、新しい入力からの新しい出力を補間する準備ができる。いくつかの実施形態では、これは、アバタが、YMCAの曲に合わせてダンスしている間、Yを形成するとき等、デジタルキャラクタに関する新しい高次姿勢が、低次デジタルキャラクタ入力姿勢に基づいて補間され得ることを意味し得る。
訓練されたRBFNNの使用の例示的プロセス
図18は、訓練されたRBFNNを使用してデジタルキャラクタに関する新しい姿勢を補間する例示的プロセス1800を図示する。プロセス1800は、例えば、ローカル処理およびデータモジュール260、遠隔処理モジュール270、遠隔コンピューティングシステム920、またはそれらの組み合わせ等のウェアラブルシステム200と関連付けられるハードウェアプロセッサによって実施されることができる。
ブロック1802では、RBFNNシステムが、関節、骨、ブレンドシェイプ、またはデジタルキャラクタリグを説明する他の方法によって定義されたデジタルキャラクタリグによって表される、デジタルキャラクタに関する低次姿勢を受信する。図13に関して上記に述べられたように、これらの入力は、角度パラメータと、線形パラメータとを有し得、各角度または線形パラメータは、1つ以上の値を含有し得る。図11に関して上記に述べられたように、現在の低次姿勢は、人物が、YMCAの曲に合わせてダンスしている間、その腕で文字Yを形成することであってもよい。
ブロック1804では、現在の姿勢が、角度および線形パラメータに分離される。ブロック1806では、入力パラメータは全て、RBFNNの中に渡され、これは、ブロック1808において、入力をサンプルノードのそれぞれの中に渡す。
ブロック1810では、各サンプルノードが、入力姿勢とサンプル姿勢との間の距離を決定する。これは、合計(n+n*4)*S個の値が計算され得ることを意味し、その2つは、2つのタイプの計算(例えば、1つは、線形のため、1つは、角度のため)が存在するためであって、nは、入力(関節、骨、ブレンドシェイプ等)の数であって、Sは、RBFNN内に含有されるサンプルの数である。図13A-13Bおよび図16の具体的実施例に関して、これは、(9+9*4)*3=135個の距離値がブロック1810において計算されることを意味するであろう。
ブロック1812では、最終距離は、距離加重γを利用して、上記1716に議論されるように、加重されたユークリッドノルムを行うことによって計算される。これは、全ての訓練姿勢(例えば、サンプルノード)を横断した単一関節に関する全ての対応する距離が、単一距離メトリックに組み合わせられることを意味する。図13の実施例に関して、これは、関節a-jあたり1つの線形および1つの角度値の9つの線形および9つの角度値を有し得ることを意味する。
ブロック1814では、標準的基底関数が、ブロック1812からの出力に適用される。本ステップは、値をnに関する入力値からmに関する出力値に遷移させる。標準的基底関数は、ガウス基底関数、立方基底関数、多重二乗基底関数、または逆多重二乗基底関数等の多くのオプションのうちの1つであり得る。図13の実施例に関するプロセスにおける本段階では、6個の線形および4*6=24個の角度独立出力が存在し得る。より広義には、出力パラメータ(関節、骨、高次補正等)毎に5*m個の独立値が存在し得る。
ブロック1816では、RBFNN訓練相の間に学習された基底加重wが、ブロック1814からの出力に適用され得る。
ブロック1818では、値が、出力タイプおよび関節に従ってグループ化される。例えば、角度値は、ベクトルが4つの値=[x,y,z,w]を含む、SO(3)空間を表すベクトルに組み合わせられてもよい。随意に、単一関節に関する線形および角度出力は、対合されてもよい。
ブロック1820では、補間された高次デジタルキャラクタ姿勢が、高次キャラクタリグに送信され、キャラクタ変形を駆動する。図11からの実施例では、これは、デジタルキャラクタが、YMCAの曲に合わせてダンスしている際のY形状の腕の姿勢にレンダリングされることを意味する。本プロセスは、繰り返し繰り返され、デジタルキャラクタのためのアニメーションを作成する。プロセス1800の後続ループは、Yの形状における腕から、Mの形状における腕、Cの形状における腕、次いで、Aの形状における腕に遷移する、デジタルキャラクタを示し得る。
FFNNからデジタルキャラクタの出力姿勢を補間するためのシステムの略図
1つ以上のデジタルキャラクタ姿勢を補間するように構成される、ニューラルネットワークの第2の例示的実施形態は、下記にさらに詳細に説明されるような線形および角度成分を分離するように構成される、フィードフォワードニューラルネットワーク(FFNN)である。
図19は、本発明のいくつかの実施形態による、デジタルキャラクタの出力姿勢を補間するためのFFNNアーキテクチャ1900の一部を図示する。上記に述べられたように、ドライバ関節(例えば、低次骨格)とヘルパ関節(例えば、高次骨格)との間の関係は、複雑であり得るが、NNを利用することによって解決され得る。いくつかの実施形態では、多層FFNNが、使用され得、1つ以上の出力を解決するために有意により少ないパラメータを要求し得る。これは、RBFNN実施形態に関するフレームあたり4.5msからFFNN実施形態に関するフレームあたり0.9ms等、低減された算出時間につながり得、これは、特に、算出が限定されたデバイス上において、有意な性能改良をもたらし得る。いくつかの実施形態では、FFNNは、運動の成分毎に別個に訓練されてもよい。運動の3つの例示的成分は、回転、平行移動、およびスケールであってもよい。いくつかの実施形態では、FFNNへの入力データは、位置パラメータ(例えば、平行移動、スケール)が単位範囲(例えば、0~1)にスケーリングされ得るように前処理されてもよい。いくつかの実施形態では、回転パラメータは、アニメーションオーサリングシステム(例えば、DCCシステム)において使用されるオイラー角から単位クォータニオンに変換されてもよい。
いくつかの実施形態では、FFNNは、正規化線形ユニット(ReLU)活性化関数を使用する、単一隠れ層を伴う全結合ネットワークであってもよい。いくつかの実施形態では、隠れ層は、resnetブロックとして組み込まれてもよい。いくつかの実施形態では、使用すべき隠れ次元数は、ハイパーパラメータ調整によって最良に発見され得る。いくつかの実施形態では、使用すべき隠れ次元数は、以下の方程式を使用して決定されてもよい。
実施例として、デジタルキャラクタのリグの脹脛系は、膝および足関節を含み得、これはともに、脹脛中央に位置付けられる単一関節を駆動する。脹脛関節は、デジタルキャラクタの脚部が移動するにつれて、デジタルキャラクタの脹脛を変形させ得る。本実施例では、膝および足関節は、ドライバ関節(代替として、ドライバと呼ばれる)であって、脹脛中央関節は、ヘルパ関節(代替として、ヘルパと呼ばれる)である。各ドライバは、3つの平行移動パラメータX、Y、ZをNNに提供し得、単一ヘルパ関節のための3つの平行移動を必要とし得る。したがって、脹脛実施例に関して、入力層は、6つのニューロン(3つのパラメータ×2つのドライバ関節)を有し、隠れ層は、20ニューロン(10×2つのドライバ)を有し、出力層は、3つのニューロン(3つのパラメータ×1つのヘルパ関節)を有するであろう。いくつかの実施形態では、スケールネットワークアーキテクチャは、スケールもまた、3つのパラメータ、X、Y、Zを有し得るため、同じであり得る。いくつかの実施形態では、クォータニオン回転であり得る、各回転は、4つの要素を有し得、したがって、回転ネットワークアーキテクチャ1900の入力層1902は、8個のニューロンを有し得る、隠れ層1904は、20個のニューロンを有し得、出力層1906は、4個のニューロンを有し得る。
いくつかの実施形態では、FFNNシステムは、はるかに大きいRBFNNシステムと同一結果を達成することが可能であり得る。RBFNNと同様に、FFNNは、制御パラメータをドライバ関節から受け取り得る、入力層1902を有し得る。出力層は、ヘルパ関節が設定され得る値を生産し得る。
NNの例示的訓練
図20は、本明細書に開示されるNNを訓練するための例示的プロセスを図示する。プロセス2000は、デジタルキャラクタリグのコンテキストにおいてNNを訓練するためのプロセスを図示するが、しかしながら、他のコンテキストも、可能性として考えられることを理解されたい。本明細書に開示される本発明から最も利点を享受する、コンテキストは、上記に議論されるように、2つ以上の異なるタイプのデータから成る、および/または角度入力を含むものである。プロセス2000は、NNを訓練するために好適なハードウェアプロセッサによって実施されることができる。いくつかの実施形態では、訓練は、遠隔処理モジュール270または遠隔コンピューティングシステム920によって実施されることができる。訓練されたNNは、ネットワーク990を介して、ウェアラブルシステム200に通信されることができる。いくつかの実施形態では、ウェアラブルシステム200は、付加的訓練データを入手することができ、NNはさらに、例えば、ローカル処理およびデータモジュール260、遠隔処理モジュール270、または遠隔コンピューティングシステム920によって訓練されることができ、これは、NNを具体的姿勢またはウェアラブルシステム200のユーザ210によって視認されるデジタルキャラクタに対して個人化することに役立ち得る。
ブロック2002では、デジタルキャラクタ姿勢の訓練セットが、受信され、入力は、低次デジタルキャラクタリグ姿勢パラメータを表し得、出力は、高次デジタルリグ姿勢パラメータを表し得る。上記に述べられたように、代替実施形態は、両方とも高次デジタルキャラクタリグを表す入力および出力または両方とも低次デジタルキャラクタリグを表す入力および出力等、他の入力/出力訓練データセットを使用してもよい。代替実施形態では、入力データは、デジタルキャラクタリグを表さない場合があるが、依然として、1つを上回るタイプから成る、および/または角度データを含む、入力を有し得る。
ブロック2004では、訓練データが、運動の各成分に分離される。いくつかの実施形態では、分離は、角度および線形パラメータに対して行われてもよい。いくつかの実施形態では、分離は、回転、平行移動、および/またはスケール成分に対して行われてもよい。上記に述べられたように、パラメータ/成分は、補間結果を改良するために分離される。角度パラメータが、線形方程式または処理を使用して補間されるとき、ジンバルロック、高速フリップ、および/または符号の変化または単一角回転が複数の方法で表され得る面積等の望ましくない出力が、生じ得る。代替実施形態では、訓練データは、下記に説明されるであろうように、例えば、サブセット毎に一意の距離計算を用いて、データのサブセットが後続特殊処理から利点を享受し得る限り、データの2つ以上のサブセットに分離されてもよい。パラメータ/成分は、任意の好適な方法を使用して分離されてもよい。例えば、スクリプト、コンピュータプログラム、または他の一連のコードが、角度データの形態(例えば、4つの要素を含有する、ベクトル)および線形データの形態(例えば、単一値)を認識し、入力データのフォーマット別にデータを自動的にグループ化し得るように作成されてもよい。代替として、入力データは、入力データソースから事前にタグ付けされてもよく、したがって、システムは、単に、タグを読み取り、事前に定義された方法に従って、入力データを操作することができる。いくつかの実施形態では、入力データのフォーマットは、出力データの所望のフォーマットを定義し、任意の数の前または後処理ステップが、データを操作し、所望のデータフォーマットに合致させるために追加されてもよい。
ブロック2018では、訓練入力/出力セットが、NNの中に入力される。
ブロック2018後、NNは、固定され(例えば、訓練セット内の訓練入力/出力対の全てが、NNの中に入力された後)、訓練相は、完了され得る。NNは、ここで、新しい入力からの新しい出力を補間する準備ができる。いくつかの実施形態では、これは、アバタが、YMCAの曲に合わせてダンスしている間、Yを形成するとき等、デジタルキャラクタに関する新しい高次姿勢が、低次デジタルキャラクタ入力姿勢に基づいて補間され得ることを意味し得る。
訓練されたNNの使用の例示的プロセス
図21は、訓練されたNNを使用してデジタルキャラクタに関する新しい姿勢を補間する例示的プロセス2100を図示する。いくつかの実施形態では、NNは、FFNNまたはRBFNNであってもよい。プロセス2100は、例えば、ローカル処理およびデータモジュール260、遠隔処理モジュール270、遠隔コンピューティングシステム920、またはそれらの組み合わせ等のウェアラブルシステム200と関連付けられるハードウェアプロセッサによって実施されることができる。
ブロック2102では、NNシステムが、関節、骨、ブレンドシェイプ、またはデジタルキャラクタリグを説明する他の方法によって定義されたデジタルキャラクタリグによって表される、デジタルキャラクタに関する低次姿勢を受信する。図13に関して上記に述べられたように、これらの入力は、角度パラメータと、線形パラメータとを有し得、各角度または線形パラメータは、1つ以上の値を含有し得る。図11に関して上記に述べられたように、現在の低次姿勢は、人物が、YMCAの曲に合わせてダンスしている間、その腕で文字Yを形成することであってもよい。
ステップ2104では、現在の姿勢が、角度および線形パラメータ、運動の成分、または任意の他の好適な分離方法に分離され得る。ブロック2106では、入力パラメータは全て、NNの中に渡され得、NNは、次いで、ステップ2108において実行され得る。
ステップ2018では、値が、出力タイプおよび関節に従ってグループ化され得る。いくつかの実施形態では、角度および線形出力は、組み合わせられ、単一関節のための運動を表してもよい。いくつかの実施形態では、運動の成分は、組み合わせられ、単一関節の回転、平行移動、および/またはスケール運動を表してもよい。
ステップ2020では、補間された高次デジタルキャラクタ姿勢が、高次キャラクタリグに送信され、キャラクタ変形を駆動し得る。図11からの実施例では、これは、デジタルキャラクタが、YMCAの曲に合わせてダンスする間、Y形状の腕の姿勢にレンダリングされることを意味する。本プロセスは、繰り返し繰り返され、デジタルキャラクタのためのアニメーションを作成し得る。プロセス2000の後続ループは、デジタルキャラクタが、Yの形状における腕から、Mの形状における腕、Cの形状における腕、次いで、Aの形状における腕に遷移させることを示し得る。
リアルタイムポータビリティ
仮想キャラクタのためのリギングは、種々の入力に基づくリギング要素(例えば、より高次のリギング要素)の自動化された制御のための制御システムを伴うことができ、RBFNN、FFNN、または他のNNシステムを備えてもよい。いくつかの実施形態では、特定の仮想キャラクタのためのリギングにおいて、制御システムの複数のインターリーブされた層が存在する。本開示のコンテキストでは、リギング制御システムは、1つ以上のルール(例えば、論理ルール、数学的ルール等)のセットを含み、これは、低次リギング要素または他のソースと関連付けられる入力に基づいて、高次骨格系または高次ブレンドシェイプ等のリギング要素を制御する(例えば、調整する、調節する、規定する、選択する、呼び出す、または別様に影響を及ぼす)ための出力を決定する。リギング制御システムは、非常に複雑であり得るため、種々のツールが、それらをオーサリングおよび実装するために作成されている。これらのツールは、典型的には、特定用途向けリギング制御プロトコルを利用する。特定のリギング制御プロトコルは、データフォーマットの特定用途向けセット、データ構造、関数、算出ユニット(例えば、ノード、クラス等)、および/またはプログラミング言語を含んでもよい。異なるアプリケーションが、異なるリギング制御プロトコルを使用するとき、1つのアプリケーションにおいてオーソライズされている、リギング制御システムを直接転送し、次いで、それを別のアプリケーションにおいて実行することは、不可能である。
デジタルコンテンツ作成(DCC)アプリケーションは、多くの場合仮想キャラクタのための、リギング制御システムを含む、リギングを開発するために使用される。そのようなDCCアプリケーションの一実施例は、Autodesk Maya(R)である。DCCアプリケーションは、ポリゴンメッシュ、骨格系、ブレンドシェイプ等のリギング要素を定義するため、およびこれらのリギング要素の自動化された制御を実施するための制御システムを定義するため種々のツールを提供することができる。リギング制御システムは、その特定用途向けリギング制御プロトコルを使用して、DCCアプリケーション内に構築される。
DCCアプリケーションは、仮想キャラクタおよびその関連付けられるリギングを作成するために非常に好適であるが、それらは、典型的には、例えば、ゲーム内の仮想キャラクタのリアルタイム表示(関連付けられるキャラクタリギングのリアルタイム実行を含む)またはVR/AR/MRアプリケーションのためにはあまり好適ではない。代わりに、リアルタイムエンジンが、本目的のために開発されている。そのようなリアルタイムエンジンの一実施例は、Epic Gamesから利用可能なUnreal(R)エンジンである。リアルタイムエンジンは、主に、完成されたリギングアセットを表示するように設計されており、高度なリギングアセットをオーサリングするためにはあまり好適ではない。リアルタイムエンジンは、リギング要素および/またはリギング制御システムを作成するためのツールを含むことができるが、それらは、通常、DCCアプリケーション内に存在するものほどロバストではない。DCCアプリケーション内で、リギング制御システムを含む、新しいリギングアセットを規定する、構築する、および試験することの方が有意に容易である。したがって、リアルタイムエンジンは、典型的には、仮想キャラクタおよびその関連付けられるリギングを提供するために、DCCアプリケーションに依拠する。これは、リギングアセットがDCCアプリケーションからリアルタイムエンジンに転送されることを要求する。
Filmbox(FBX(R))フォーマット等のツールが、メッシュ、ブレンドシェイプ、骨格系、およびアニメーションをアプリケーション間で転送するために存在する。しかしながら、リギング制御システムをアプリケーション間で転送するための類似ツールは、存在しない。メッシュ、ブレンドシェイプ、骨格系、およびアニメーションは、アプリケーション間でより容易にポートされ得る、明確に定義されたフォーマットであり得るが、リギング制御システムは、典型的には、具体的アプリケーションのデータ構造および慣例(例えば、オーサリングアプリケーションによって使用されるリギング制御プロトコル)に緊密に結び付けられる。リギング制御システムをオーサリングアプリケーションからリアルタイムアプリケーションに転送することは、したがって、ソフトウェア開発者が複数のアプリケーション内および/または複数のコンピューティングプラットフォーム上で起動させるためにアルゴリズムを複数のソフトウェア言語において再実装し得る場合と同一方法において、制御システムをリアルタイムアプリケーション環境内に再実装することを要求する。しかしながら、仮想キャラクタのためのリギング制御システムを再実装することは、アプリケーション間の当事者を検証するその複雑性および難点に起因して、非常に困難であって、時間がかかり、高価な命題であり得る。
上記に説明されるNNシステムおよび方法は、通常、オフラインレンダリングのために留保される、高忠実性生体力学的アニメーションおよび変形を保存しながら、第1のアプリケーションから第2のアプリケーションに転送する本課題を克服することが可能である。いくつかの実施形態では、いったんNNが、設計され、Maya等のDCCアプリケーションにおいて使用されると、加重および他のパラメータは、任意の便宜的データフォーマット(例えば、さらに別のマークアップ言語(YAML)、JavaScript(登録商標)オブジェクト表記(JSON)、拡張マークアップ言語(XML)、フィルムボックス(FBX)等)に直列化されることができ、したがって、システムは、リアルタイムエンジン等の他のアプリケーションの中に読み込まれることができる。NNが、典型的には基礎とし、次いで、上記に説明される転送問題に直面する、複雑なリギングシステム全体をポートする従来的方法と対照的に、RBFノードおよびインポート論理のみが、標的アプリケーション内に実装される必要がある。言い換えると、本明細書に説明されるプロセスは、NNを作成する訓練相が、図17および20に説明されるように、複雑なリギング論理をNNの中に統合したため、複雑なリギングシステムを転送することが可能である。言い換えると、NNを転送することによって、プロセスは、複雑なリギングシステムを転送する。リグカプセル化およびポータビリティはまた、米国特許出願第62/658,415号(参照することによってその全体として本明細書に組み込まれる)に説明される。
NNシステムおよび方法は、アプリケーション間のポータビリティを可能にする。いくつかの実施形態では、これは、複雑な層化階層の特定用途向けリギング制御システムを数学的構造体(例えば、NN)の中に移動させ、したがって、特定用途向け構造体を排除することによって遂行され得る(言い換えると、数学は、任意のシステムが理解するためにプログラムされ得る、汎用言語である)。
付加的側面
(側面1)方法であって、少なくとも1つの角度成分および少なくとも1つの線形成分を備える、入力データを受信するステップと、入力データを、入力として、少なくとも1つの線形成分と異なるように少なくとも1つの角度成分を評価するように訓練されている、少なくとも1つのニューラルネットワーク(NN)に提供するステップと、少なくとも1つの角度成分および少なくとも1つの線形成分の異なる評価に基づいて少なくとも1つのNNによって生成される、出力データを受信するステップとを含む、方法。
(側面2)少なくとも1つの角度成分は、3次元空間内の特殊直交群(SO(3))内にある、側面1に記載の方法。
(側面3)ニューラルネットワークのうちの少なくとも1つは、フィードフォワードニューラルネットワーク(FFNN)を備える、側面1または側面2に記載の方法。
(側面4)少なくとも1つのFFNNは、全結合ネットワークである、側面3に記載の方法。
(側面5)フィードフォワードニューラルネットワークは、単一隠れ層を備える、側面3または側面4に記載の方法。
(側面6)FFNNは、正規化線形ユニット活性化関数を備える、側面4または側面5に記載の方法。
(側面7)隠れ層は、残差NNブロックである、側面5または側面6に記載の方法。
(側面8)NNのうちの少なくとも1つは、放射基底関数ニューラルネットワーク(RBFNN)を備える、側面1-7のいずれか1項に記載の方法。
(側面9)入力データは、デジタルキャラクタの姿勢を説明する、側面1-8のいずれか1項に記載の方法。
(側面10)入力データは、デジタルキャラクタの低次骨格を表し、出力データは、デジタルキャラクタの高次骨格を表す、側面1-9のいずれか1項に記載の方法。
(側面11)出力データは、デジタルキャラクタの姿勢を説明する、側面1-10のいずれか1項に記載の方法。
(側面12)入力データおよび出力データのうちの1つ以上のものはさらに、第3の成分を含む、側面1-11のいずれか1項に記載の方法。
(側面13)角度成分、線形成分、および第3の成分はそれぞれ、運動の異なる成分である、側面12に記載の方法。
(側面14)少なくとも1つの角度成分は、回転運動を説明し、少なくとも1つの線形成分は、平行移動運動を説明し、第3の成分は、スケールを説明する、側面12または側面13に記載の方法。
(側面15)少なくとも1つのNNは、少なくとも1つの角度成分を評価する、第1のFFNNと、少なくとも1つの線形成分を評価する、第2のFFNNとを備える、側面12-14のいずれか1項に記載の方法。
(側面16)少なくとも1つのNNは、第3の成分を評価する、第3のFFNNを備える、側面15に記載の方法。
(側面17)少なくとも1つのNNは、複数のサンプルノードを備え、各サンプルノードは、訓練姿勢に対応し、訓練姿勢のうちの少なくとも1つは、少なくとも1つの角度および線形成分を含む、側面1-16のいずれか1項に記載の方法。
(側面18)少なくとも1つのNNは、SO(3)空間内の少なくとも1つの角度成分を評価することによって、かつユークリッド距離式を利用して、少なくとも1つの線形成分を評価することによって、少なくとも1つの線形成分と異なるように少なくとも1つの角度成分を評価する、側面1-17のいずれか1項に記載の方法。
(側面19)1つ以上のNNを訓練するステップであって、訓練は、訓練入力データおよび訓練出力データを含む、訓練データを受信するステップであって、訓練入力データおよび訓練出力データは、1つ以上の訓練姿勢を表し、1つ以上の訓練姿勢のうちの少なくとも1つは、入力角度成分、入力線形成分、出力角度成分、および出力線形成分を含む、ステップと、1つ以上の姿勢のそれぞれからの入力角度成分を入力角度成分群にグループ化するステップと、1つ以上の姿勢のそれぞれからの入力線形成分を入力線形成分群にグループ化するステップと、訓練入力データを入力として提供し、少なくとも1つのNNを訓練するステップであって、入力角度成分群は、入力線形成分群と異なるように評価され、評価は、出力角度成分および出力線形成分をもたらす、ステップとを含む、ステップをさらに含む、側面1-18のいずれか1項に記載の方法。
(側面20)入力角度成分および出力角度成分は、SO(3)またはクォータニオン空間内にある、側面19に記載の方法。
(側面21)ニューラルネットワークは、フィードフォワードニューラルネットワーク(FFNN)である、側面19または側面20に記載の方法。
(側面22)FFNNは、全結合ネットワークである、側面21に記載の方法。
(側面23)FFNNは、単一隠れ層を備える、側面21または側面22に記載の方法。
(側面24)FFNNは、正規化線形ユニット活性化関数を備える、側面21-23のいずれか1項に記載の方法。
(側面25)隠れ層は、残差NNブロックである、側面23または側面24に記載の方法。
(側面26)NNは、放射基底関数ニューラルネットワーク(RBFNN)である、側面19-25のいずれか1項に記載の方法。
(側面27)訓練データは、デジタルキャラクタの姿勢である、側面19-26のいずれか1項に記載の方法。
(側面28)訓練データは、デジタルキャラクタの低次姿勢と、デジタルキャラクタの高次姿勢とを含む、側面19-27のいずれか1項に記載の方法。
(側面29)出力角度成分および出力線形成分は、デジタルキャラクタの姿勢を表す、側面19-28のいずれか1項に記載の方法。
(側面30)1つ以上の訓練姿勢のうちの少なくとも1つは、第3の入力成分と、第3の出力成分とを含む、側面19-29のいずれか1項に記載の方法。
(側面31)第3の入力成分および第3の出力成分は、スケールである、側面30に記載の方法。
(側面32)入力角度データおよび出力角度データは、デジタルキャラクタに関する運動の回転成分を表す、側面19-31のいずれか1項に記載の方法。
(側面33)入力線形データおよび出力線形データは、デジタルキャラクタに関する運動の平行移動成分を表す、側面19-32のいずれか1項に記載の方法。
(側面34)システムであって、少なくとも1つのニューラルネットワーク(NN)を実行する、少なくとも1つのプロセッサと、少なくとも1つのプロセッサに通信可能に結合される、メモリであって、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、少なくとも1つの角度成分および少なくとも1つの線形成分を備える、入力データを受信するステップと、入力データを、入力として、少なくとも1つの線形成分と異なるように少なくとも1つの角度成分を評価するように訓練されている、少なくとも1つのニューラルネットワーク(NN)に提供するステップと、少なくとも1つの角度成分および少なくとも1つの線形成分の異なる評価に基づいて少なくとも1つのNNによって生成される、出力データを受信するステップとを含む、動作を実施させる、命令を記憶する、メモリとを備える、システム。
(側面35)少なくとも1つの角度成分は、3次元空間内の特殊直交群(SO(3))内にある、側面34に記載のシステム。
(側面36)ニューラルネットワークのうちの少なくとも1つは、フィードフォワードニューラルネットワーク(FFNN)である、側面34または側面35に記載のシステム。
(側面37)少なくとも1つのFFNNは、全結合ネットワークである、側面36に記載のシステム。
(側面38)FFNNは、単一隠れ層を備える、側面36または側面37に記載のシステム。
(側面39)FFNNは、正規化線形ユニット活性化関数を備える、側面36-38のいずれか1項に記載のシステム。
(側面40)隠れ層は、残差NNブロックである、側面38または側面39に記載のシステム。
(側面41)NNのうちの少なくとも1つは、放射基底関数ニューラルネットワーク(RBFNN)である、側面34-40のいずれか1項に記載のシステム。
(側面42)入力データは、デジタルキャラクタの姿勢を説明する、側面34-41のいずれか1項に記載のシステム。
(側面43)入力データは、デジタルキャラクタの低次骨格を表し、出力データは、デジタルキャラクタの高次骨格を表す、側面34-42のいずれか1項に記載のシステム。
(側面44)出力データは、デジタルキャラクタの姿勢を説明する、側面34-43のいずれか1項に記載のシステム。
(側面45)入力データおよび出力データのうちの1つ以上のものはさらに、第3の成分を含む、側面34-44のいずれか1項に記載のシステム。
(側面46)角度成分、線形成分、および第3の成分はそれぞれ、運動の異なる成分である、側面45に記載のシステム。
(側面47)少なくとも1つの角度成分は、回転運動を説明し、少なくとも1つの線形成分は、平行移動運動を説明し、第3の成分は、スケールを説明する、側面45または側面46に記載のシステム。
(側面48)少なくとも1つのNNは、少なくとも1つの角度成分を評価する、第1のFFNNと、少なくとも1つの線形成分を評価する、第2のFFNNとを備える、側面45-47のいずれか1項に記載のシステム。
(側面49)少なくとも1つのニューラルネットワークは、第3の成分を評価する、第3のFFNNを備える、側面48に記載のシステム。
(側面50)少なくとも1つのNNは、複数のサンプルノードを備え、各サンプルノードは、訓練姿勢に対応し、訓練姿勢のうちの少なくとも1つは、少なくとも1つの角度および線形成分を含む、側面34-49のいずれか1項に記載のシステム。
(側面51)少なくとも1つのNNは、SO(3)空間内の少なくとも1つの角度成分を評価することによって、かつユークリッド距離式を利用して、少なくとも1つの線形成分を評価することによって、少なくとも1つの線形成分と異なるように少なくとも1つの角度成分を評価する、側面34-50のいずれか1項に記載のシステム。
(側面52)少なくとも1つのプロセッサはさらに、1つ以上のNNを訓練するようにプログラムされ、訓練するために、少なくとも1つのプロセッサは、訓練入力データおよび訓練出力データを含む、訓練データを受信し、訓練入力データおよび訓練する出力データは、1つ以上の訓練姿勢を表し、1つ以上の訓練姿勢のうちの少なくとも1つは、入力角度成分、入力線形成分、出力角度成分、および出力線形成分を含み、1つ以上の姿勢のそれぞれからの入力角度成分を入力角度成分群にグループ化し、1つ以上の姿勢のそれぞれからの入力線形成分を入力線形成分群にグループ化し、訓練入力データを入力として少なくとも1つのニューラルネットワーク(NN)に提供し、入力角度成分群は、入力線形成分群と異なるように評価され、評価は、出力角度成分および出力線形成分をもたらすようにプログラムされる、側面34-51のいずれか1項に記載のシステム。
(側面53)入力角度成分および出力角度成分は、SO(3)空間内にある、側面52に記載のシステム。
(側面54)ニューラルネットワークは、フィードフォワードニューラルネットワークである、側面52または側面53に記載のシステム。
(側面55)フィードフォワードニューラルネットワークは、全結合ネットワークである、側面54に記載のシステム。
(側面56)フィードフォワードニューラルネットワークは、単一隠れ層を備える、側面54または側面55に記載のシステム。
(側面57)フィードフォワードニューラルネットワークは、正規化線形ユニット活性化関数を備える、側面54-56のいずれか1項に記載のシステム。
(側面58)隠れ層は、残差ニューラルネットワークブロックである、側面56または側面57に記載のシステム。
(側面59)ニューラルネットワークは、放射基底関数ニューラルネットワーク(RBFNN)である、側面52-58のいずれか1項に記載のシステム。
(側面60)訓練データは、デジタルキャラクタの姿勢である、側面52-59のいずれか1項に記載のシステム。
(側面61)訓練データは、デジタルキャラクタの低次姿勢と、デジタルキャラクタの高次姿勢とを含む、側面60に記載のシステム。
(側面62)出力角度成分および出力線形成分は、デジタルキャラクタの姿勢を表す、側面52-61のいずれか1項に記載のシステム。
(側面63)1つ以上の訓練姿勢のうちの少なくとも1つは、第3の入力成分と、第3の出力成分とを含む、側面52-62のいずれか1項に記載のシステム。
(側面64)第3の入力成分および第3の出力成分は、スケールである、側面63に記載のシステム。
(側面65)入力角度データおよび出力角度データは、デジタルキャラクタに関する運動の回転成分を表す、側面52-64のいずれか1項に記載のシステム。
(側面66)入力線形データおよび出力線形データは、デジタルキャラクタに関する運動の平行移動成分を表す、側面52-65のいずれか1項に記載のシステム。
(側面67)方法であって、放射基底関数ニューラルネットワーク(RBFNN)への少なくとも1つの入力パラメータを受信するステップと、RBFNN内の1つ以上の距離関数からの距離のセットを計算するステップと、距離加重のセットをRBFNN内の1つ以上の距離関数から計算される距離のセットに適用するステップであって、距離加重のセットは、1つ以上の距離加重を含み、加重のセットは、RBFNNへの入力パラメータ毎に距離加重を含む、ステップとを含む、方法。
(側面68)距離加重のセットからの少なくとも1つの距離加重は、ユーザによって定義される、側面67に記載の方法。
(側面69)距離加重のセットからの少なくとも1つの距離加重は、RBFNNによって定義される、側面67または側面68に記載の方法。
(側面70)入力パラメータを第1の入力データタイプと第2の入力データタイプとに分離するステップをさらに含む、側面67-69のいずれか1項に記載の方法。
(側面71)第1の入力データタイプは、線形パラメータを表すデータである、側面70に記載の方法。
(側面72)第2の入力データタイプは、角度パラメータを表すデータである、側面70または側面71に記載の方法。
(側面73)1つ以上の距離関数は、少なくとも1つの角距離関数を含む、側面67-72のいずれか1項に記載の方法。
(側面74)角距離関数は、3次元空間内の特殊直交群(SO(3))内にある、側面73に記載の方法。
(側面75)角距離関数は、クォータニオン空間内にある、側面73または側面74に記載の方法。
(側面76)1つ以上の距離関数は、少なくとも1つの線形距離関数を含む、側面67-75のいずれか1項に記載の方法。
(側面77)線形距離関数は、ユークリッド距離関数である、側面76に記載の方法。
(側面78)少なくとも1つの入力パラメータを第1の入力データタイプと第2の入力データタイプとに分離するステップをさらに含む、側面67-77のいずれか1項に記載の方法。
(側面79)第1の入力データタイプは、線形パラメータを表すデータである、側面78に記載の方法。
(側面80)第2の入力データタイプは、角度パラメータを表すデータである、側面78または側面79に記載の方法。
(側面81)第2の入力データタイプおよび角距離関数を使用して、角距離を計算するステップと、第1の入力データタイプおよび線形距離関数を使用して、線形距離を計算するステップとをさらに含む、側面80に記載の方法。
(側面82)RBFNNは、デジタルキャラクタに関する姿勢を補間するように構成される、側面67-81のいずれか1項に記載の方法。
(側面83)1つ以上の入力パラメータは、低次デジタルキャラクタリグを表す、側面67-82のいずれか1項に記載の方法。
(側面84)RBFNNは、高次デジタルキャラクタリグを表す、出力パラメータを計算するように構成される、側面67-83のいずれか1項に記載の方法。
(側面85)RBFNNは、独立値である、複数の出力パラメータを計算するように構成される、側面67-84のいずれか1項に記載の方法。
(側面86)複数の独立値のうちの少なくとも2つを組み合わせ値にグループ化するステップをさらに含む、側面85に記載の方法。
(側面87)組み合わせ値は、x、y、z、およびwを含む、クォータニオンベクトルを表す、側面86に記載の方法。
(側面88)システムであって、1つ以上のコンピュータ上に実装される、放射基底関数ニューラルネットワーク(RBFNN)と、1つ以上のコンピュータによって実行されると、1つ以上のコンピュータに、少なくとも1つの入力パラメータをRBFNNへの入力パラメータのセットから受信させ、RBFNN内の1つ以上の距離関数からの距離のセットを計算させ、距離加重のセットをRBFNN内の1つ以上の距離から計算される距離のセットに適用させ、距離加重のセットは、RBFNNへの入力パラメータ毎に距離加重を含むように動作可能である、命令を記憶する、1つ以上の記憶デバイスとを備える、システム。
(側面89)距離加重のセットからの少なくとも1つの距離加重は、ユーザによって定義される、側面88に記載のシステム。
(側面90)距離加重のセットからの少なくとも1つの距離加重は、RBFNNによって定義される、側面88または側面89に記載のシステム。
(側面91)入力パラメータを第1の入力データタイプと第2の入力データタイプとに分離するステップをさらに含む、側面88-90のいずれか1項に記載のシステム。
(側面92)第1の入力データタイプは、線形パラメータを表すデータである、側面91に記載のシステム。
(側面93)第2の入力データタイプは、角度パラメータを表すデータである、側面91または側面92に記載のシステム。
(側面94)1つ以上の距離関数は、少なくとも1つの角距離関数を含む、側面88-93のいずれか1項に記載のシステム。
(側面95)角距離関数は、3次元空間内の特殊直交群(SO(3))内にある、側面94に記載のシステム。
(側面96)角距離関数は、クォータニオン空間内にある、側面94または側面95に記載のシステム。
(側面97)1つ以上の距離関数は、少なくとも1つの線形距離関数を含む、側面88-96のいずれか1項に記載のシステム。
(側面98)線形距離関数は、ユークリッド距離関数である、側面97に記載のシステム。
(側面99)入力パラメータを第1の入力データタイプと第2の入力データタイプとに分離するステップをさらに含む、側面88-98のいずれか1項に記載のシステム。
(側面100)第1の入力データタイプは、線形パラメータを表すデータである、側面99に記載のシステム。
(側面101)第2の入力データタイプは、角度パラメータを表すデータである、側面99または側面100に記載のシステム。
(側面102)第2の入力データタイプおよび角距離関数を使用して、角距離を計算するステップと、第1の入力データタイプおよび線形距離関数を使用して、線形距離を計算するステップとをさらに含む、側面99-101のいずれか1項に記載のシステム。
(側面103)RBFNNは、デジタルキャラクタに関する姿勢を補間するように構成される、側面88-102のいずれか1項に記載のシステム。
(側面104)1つ以上の入力パラメータは、低次デジタルキャラクタリグを表す、側面88-103のいずれか1項に記載のシステム。
(側面105)RBFNNは、高次デジタルキャラクタリグを表す、出力パラメータを計算するように構成される、側面88-104のいずれか1項に記載のシステム。
(側面106)RBFNNは、独立値である、複数の出力パラメータを計算するように構成される、側面88-105のいずれか1項に記載のシステム。
(側面107)複数の独立値のうちの少なくとも2つを組み合わせ値にグループ化するステップをさらに含む、側面106に記載のシステム。
(側面108)組み合わせ値は、x、y、z、およびwを含む、クォータニオンベクトルを表す、側面107に記載のシステム。
他の考慮点
本明細書に説明される、および/または添付される図に描写されるプロセス、方法、およびアルゴリズムはそれぞれ、具体的かつ特定のコンピュータ命令を実行するように構成される、1つ以上の物理的コンピューティングシステム、ハードウェアコンピュータプロセッサ、特定用途向け回路、および/または電子ハードウェアによって実行される、コードモジュールにおいて具現化され、それによって完全または部分的に自動化され得る。例えば、コンピューティングシステムは、具体的コンピュータ命令とともにプログラムされた汎用コンピュータ(例えば、サーバ)または専用コンピュータ、専用回路等を含むことができる。コードモジュールは、実行可能プログラムにコンパイルおよびリンクされ得る、動的リンクライブラリ内にインストールされ得る、またはインタープリタ型プログラミング言語において書き込まれ得る。いくつかの実装では、特定の動作および方法が、所与の機能に特有の回路によって実施され得る。
さらに、本開示の機能性のある実装は、十分に数学的、コンピュータ的、または技術的に複雑であるため、(適切な特殊化された実行可能命令を利用する)特定用途向けハードウェアまたは1つまたはそれを上回る物理的コンピューティングデバイスは、例えば、関与する計算の量または複雑性に起因して、または結果を実質的にリアルタイムで提供するために、機能性を実施する必要があり得る。例えば、アニメーションまたはビデオは、多くのフレームを含み、各フレームは、数百万のピクセルを有し得、具体的にプログラムされたコンピュータハードウェアは、商業的に妥当な時間量において所望の画像処理タスク、ニューラルネットワークタスク、または用途を提供するようにビデオデータを処理する必要がある。
コードモジュールまたは任意のタイプのデータは、ハードドライブ、ソリッドステートメモリ、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、光学ディスク、揮発性または不揮発性記憶装置、同一物の組み合わせ、および/または同等物を含む、物理的コンピュータ記憶装置等の任意のタイプの非一過性コンピュータ可読媒体上に記憶され得る。本方法およびモジュール(またはデータ)はまた、無線ベースおよび有線/ケーブルベースの媒体を含む、種々のコンピュータ可読伝送媒体上で生成されたデータ信号として(例えば、搬送波または他のアナログまたはデジタル伝搬信号の一部として)伝送され得、種々の形態(例えば、単一または多重化アナログ信号の一部として、または複数の離散デジタルパケットまたはフレームとして)をとり得る。開示されるプロセスまたはプロセスステップの結果は、任意のタイプの非一過性有形コンピュータ記憶装置内に持続的または別様に記憶され得る、またはコンピュータ可読伝送媒体を介して通信され得る。
本明細書に説明される、および/または添付される図に描写されるフロー図における任意のプロセス、ブロック、状態、ステップ、または機能性は、プロセスにおいて具体的機能(例えば、論理または算術)またはステップを実装するための1つまたはそれを上回る実行可能命令を含む、コードモジュール、セグメント、またはコードの一部を潜在的に表すものとして理解されたい。種々のプロセス、ブロック、状態、ステップ、または機能性は、組み合わせられる、再配列される、追加される、削除される、修正される、または別様に本明細書に提供される例証的実施例から変更されることができる。いくつかの実施形態では、付加的または異なるコンピューティングシステムまたはコードモジュールが、本明細書に説明される機能性のいくつかまたは全てを実施し得る。本明細書に説明される方法およびプロセスはまた、任意の特定のシーケンスに限定されず、それに関連するブロック、ステップ、または状態は、適切な他のシーケンスで、例えば、連続して、並行して、またはある他の様式で実施されることができる。タスクまたはイベントが、開示される例示的実施形態に追加される、またはそれから除去され得る。さらに、本明細書に説明される実装における種々のシステムコンポーネントの分離は、例証を目的とし、全ての実装においてそのような分離を要求するものとして理解されるべきではない。説明されるプログラムコンポーネント、方法、およびシステムは、概して、単一のコンピュータ製品においてともに統合される、または複数のコンピュータ製品にパッケージ化され得ることを理解されたい。多くの実装変形例が、可能である。
本プロセス、方法、およびシステムは、ネットワーク(または分散)コンピューティング環境において実装され得る。ネットワーク環境は、企業全体コンピュータネットワーク、イントラネット、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、パーソナルエリアネットワーク(PAN)、クラウドコンピューティングネットワーク、クラウドソースコンピューティングネットワーク、インターネット、およびワールドワイドウェブを含む。ネットワークは、有線または無線ネットワークまたは任意の他のタイプの通信ネットワークであり得る。
本開示のシステムおよび方法は、それぞれ、いくつかの革新的側面を有し、そのうちのいかなるものも、本明細書に開示される望ましい属性に単独で関与しない、またはそのために要求されない。上記に説明される種々の特徴およびプロセスは、相互に独立して使用され得る、または種々の方法で組み合わせられ得る。全ての可能な組み合わせおよび副次的組み合わせが、本開示の範囲内に該当することが意図される。本開示に説明される実装の種々の修正が、当業者に容易に明白であり得、本明細書に定義される一般原理は、本開示の精神または範囲から逸脱することなく、他の実装に適用され得る。したがって、請求項は、本明細書に示される実装に限定されることを意図されず、本明細書に開示される本開示、原理、および新規の特徴と一貫する最も広い範囲を与えられるべきである。
別個の実装の文脈において本明細書に説明されるある特徴はまた、単一の実装における組み合わせにおいて実装されることができる。逆に、単一の実装の文脈において説明される種々の特徴もまた、複数の実装において別個に、または任意の好適な副次的組み合わせにおいて実装されることができる。さらに、特徴がある組み合わせにおいて作用するものとして上記に説明され、さらに、そのようなものとして最初に請求され得るが、請求される組み合わせからの1つ以上の特徴は、いくつかの場合では、組み合わせから削除されることができ、請求される組み合わせは、副次的組み合わせまたは副次的組み合わせの変形例を対象とし得る。いかなる単一の特徴または特徴のグループも、あらゆる実施形態に必要または必須ではない。
とりわけ、「~できる(can)」、「~し得る(could)」、「~し得る(might)」、「~し得る(may)」、「例えば(e.g.)」、および同等物等、本明細書で使用される条件文は、別様に具体的に記載されない限り、または使用されるような文脈内で別様に理解されない限り、概して、ある実施形態がある特徴、要素、またはステップを含む一方、他の実施形態がそれらを含まないことを伝えることが意図される。したがって、そのような条件文は、概して、特徴、要素、および/またはステップが、1つまたはそれを上回る実施形態に対していかようにも要求されること、または1つまたはそれを上回る実施形態が、著者の入力または促しの有無を問わず、これらの特徴、要素、および/またはステップが任意の特定の実施形態において含まれる、または実施されるべきかどうかを決定するための論理を必然的に含むことを示唆することを意図されない。用語「~を備える」、「~を含む」、「~を有する」、および同等物は、同義語であり、非限定的方式で包括的に使用され、付加的要素、特徴、行為、動作等を除外しない。また、用語「または」は、その包括的意味において使用され(およびその排他的意味において使用されず)、したがって、例えば、要素のリストを接続するために使用されると、用語「または」は、リスト内の要素のうちの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つ以上の付加的動作が、図示される動作のいずれかの前に、その後に、それと同時に、またはその間に実施されることができる。加えて、動作は、他の実装において再配列される、または再順序付けられ得る。ある状況では、マルチタスクおよび並列処理が、有利であり得る。さらに、上記に説明される実装における種々のシステムコンポーネントの分離は、全ての実装におけるそのような分離を要求するものとして理解されるべきではなく、説明されるプログラムコンポーネントおよびシステムは、概して、単一のソフトウェア製品においてともに統合される、または複数のソフトウェア製品にパッケージ化され得ることを理解されたい。加えて、他の実装も、以下の請求項の範囲内である。いくつかの場合では、請求項に列挙されるアクションは、異なる順序で実施され、依然として、望ましい結果を達成することができる。