本明細書では、3Dシーンの2Dキャプチャ画像に基づいて仮想現実コンテンツをレンダリングするための方法およびシステムが記載される。特定の例示的な方法およびシステムでは、仮想現実コンテンツレンダリングシステム(「レンダリングシステム」)は、3Dシーンに関して異なる観測点(たとえば、3Dシーンに関して異なるキャプチャ角度を有する異なる位置)に物理的に配置された複数のキャプチャデバイス(たとえば、ビデオカメラ、3D深さスキャンハードウェア等)によってキャプチャされたような3Dシーン(たとえば、現実世界のシーン)の2D画像を表すデータを受信し得る。表面データと称され得るキャプチャ2D画像は、複数のキャプチャデバイスに含まれる各キャプチャデバイスによってキャプチャされた、3Dシーン内の1つまたは複数のオブジェクトの表面の2Dカラーデータおよび深さデータを含み得る。
キャプチャデバイスのおのおのによってキャプチャされた2Dカラーデータおよび深さデータは、3Dシーンに対する特定の観測点からの3Dシーンの明確な非メッシュビューを表し得る。本明細書で使用する「明確な非メッシュビュー」は、特定のキャプチャデバイスからの3Dシーンのビューに対応しており、ここでは、特定のキャプチャデバイスによってキャプチャされた3Dシーンの表面データ(たとえば、2Dカラーデータおよび深さデータ)は、3Dモデルまたは3Dシーンの3D表現を形成するために、幾何学プリミティブの3Dメッシュとして表されず、および/または、別のキャプチャデバイスによってキャプチャされた表面データとともに組み合わされない(つまり、メッシュ化されない)。
レンダリングシステムはまた、2Dカラーデータおよび深さデータのための投影メタデータのようなメタデータを受信し得る。メタデータは、仮想3D空間において3Dシーンの仮想表現を作成するために、2Dカラーデータおよび深さデータを、仮想3D空間に投影するためにレンダリングシステムによって使用可能な複数のキャプチャデバイスに関する情報のように、3Dシーンに関連付けられた情報を含み得、これによって、投影されるデータは、仮想3D空間内の任意の視点から、仮想3D空間のビュー(すなわち、仮想3D空間における3Dシーンの仮想表現のビュー)をレンダリングするために、レンダリングシステムによって使用されるようになる。
受信したデータ(たとえば、メタデータおよび深さデータ)に基づいて、レンダリングシステムは、各それぞれのキャプチャデバイスに関連付けられた各観測点について、仮想3D空間における3Dシーンの部分的な仮想表現を作成するために、仮想3D空間に投影される部分3Dメッシュを生成し得る。特定の例では、各部分3Dメッシュを生成することは、レンダリングシステムが、各それぞれのキャプチャデバイスに関連付けられた各観測点について、仮想3D空間における部分3Dメッシュのプリミティブの頂点の3D座標を作成するために、深さデータに基づいて、仮想3D空間内の深さに対して、透視線に沿って2D入力メッシュを投影することを含み得る。特定の例では、各部分3Dメッシュを生成することはまた、レンダリングシステムが、各部分3Dメッシュについて、部分3Dメッシュのプリミティブの1つまたは複数を無関係なプリミティブとして識別し、識別された無関係なプリミティブを各部分3Dメッシュから削除することを含み得る。
キャプチャデバイスに関連付けられた観測点の仮想3D空間に投影された部分3Dメッシュに基づいて、レンダリングシステムは、仮想3D空間内の任意の視点から、仮想3D空間の画像ビューを生成し得る。特定の例では、仮想3D空間の画像ビューを生成することは、レンダリングシステムが、仮想3D空間に投影される部分3Dメッシュを蓄積し、2Dカラーデータに基づいて、部分3Dメッシュのカラーサンプルをブレンドして、仮想3D空間の画像ビューを形成することを含む。特定の例では、仮想3D空間に投影される部分3Dメッシュを蓄積することは、グラフィック処理ユニット(「GPU」)のフレームバッファに部分3Dメッシュを蓄積し、部分3Dメッシュのカラーサンプルを、GPUのフレームバッファに追加的にブレンドすることを含み得る。特定の例では、カラーサンプルをブレンドすることは、レンダリングシステムが、部分3Dメッシュのプリミティブのブレンド重み付けを決定し、部分3Dメッシュのプリミティブの決定されたブレンド重み付けに基づいて、部分3Dメッシュのカラーサンプルを重み付けし、部分3Dメッシュの重複セクションに含まれる重畳されたプリミティブの重み付けられたカラーサンプルの重み付け平均を決定することを含み得る。特定の例において、レンダリングシステムは、蓄積領域を決定し、蓄積領域内に位置するプリミティブまたはフラグメントのみを蓄積およびブレンドし得る。
前述された原理および動作の例示的な例、ならびに追加のおよび/または代替の原理および動作が、本明細書で記載される。明確化および説明のために、特定の実例が、簡略化されたデータセット(たとえば、単純な3Dシーン、オブジェクト、2D入力メッシュ、部分3Dメッシュ等を表すデータセット)を使用して本明細書に記載および例示される。しかしながら、本明細書に記載された原理および動作は、より大きなおよび/またはより複雑なデータセットに適用され得ることが理解されるであろう。
本明細書に記載された方法およびシステムは、従来の仮想現実コンテンツレンダリング技術を超える1つまたは複数の有利さおよび/または利点を提供する。たとえば、本明細書に記載された方法およびシステムは、仮想現実コンテンツをレンダリングするために必要なコンピューティングリソース(たとえば、メモリおよび/または処理リソース)を大幅に削減し得る。本明細書に記載されたように、2Dカラーデータ、深さデータ、およびメタデータを使用して、部分3Dメッシュを生成、蓄積、およびブレンドし、仮想3D空間の画像ビューを形成することを例示するために、レンダリングシステムは、3Dシーンの単一の凝集した幾何学メッシュのように、3Dシーンの完全な3Dモデルを受信または生成する必要なく、仮想現実コンテンツ(たとえば、仮想3D空間における任意の動的に選択可能な視点からの仮想3D空間の画像ビュー)をレンダリングし得る。これにより、伝送帯域幅、処理要件、およびメモリを節約する。
追加的または代替的に、本明細書に記載されたように、部分3Dメッシュを生成、蓄積、およびブレンドして、仮想3D空間の画像ビューを形成するために、2Dカラーデータ、深さデータ、およびメタデータを使用することによって、本明細書に記載された方法およびシステムは、既存のビデオ処理技術(たとえば、ビデオレンダリング技術)および既存のグラフィックハードウェア(たとえば、既存のグラフィックカードおよびパイプライン)および/または仮想現実コンテンツをレンダリングするソフトウェアを使用し得る。これは、より幅広いエンドユーザコンピューティングデバイスに対する仮想現実コンテンツサービスのスケーラビリティをサポートし得、および/または、様々なエンドユーザコンピューティングデバイスのユーザへの仮想現実コンテンツのアクセス性を拡張し得る。
追加的または代替的に、本明細書に記載されたように、部分3Dメッシュを生成、蓄積、およびブレンドして、仮想3D空間の画像ビューを形成するために、2Dカラーデータ、深さデータ、およびメタデータを使用することによって、本明細書に記載された方法およびシステムは、仮想現実コンテンツを、仮想現実コンテンツが従来のレンダリング技術を使用してレンダリングされるよりも、より高速にレンダリングし得る。これは、イベントがリアルタイムで発生するときにイベントを表す仮想現実コンテンツに関するように、仮想現実コンテンツがリアルタイムまたはほぼリアルタイムでストリーミングおよびレンダリングされるアプリケーションをサポートし得る。
追加的または代替的に、本明細書に記載されたように、部分3Dメッシュを生成、蓄積、およびブレンドして、仮想3D空間の画像ビューを形成するために、2Dカラーデータ、深さデータ、およびメタデータを使用することによって、本明細書に記載された方法およびシステムは、ネットワークを経由してメディアプレーヤデバイスに仮想現実コンテンツを提供するために必要な帯域幅の量の大幅な低減を容易にし得る。たとえば、送信前に3Dシーンの3Dモデルを生成する代わりに、3Dシーンの明確な非メッシュビューを表す2Dデータが生成され、ネットワークを経由してメディアプレーヤデバイスへ送信され得る。これは、サーバ側で処理され、ネットワークを介して送信される必要があるデータの量を大幅に低減し、これにより、処理および/または帯域幅の要件が低減された、高められた速度において、仮想現実コンテンツのストリーミングを可能にし得、これは、データスループットおよびレイテンシを高め得る。
本明細書に記載されたシステムおよび方法は、特定の実施に役立ち得るように、追加または代替の利点を提供し得る。次に、図面を参照して、様々な実施形態をより詳細に説明する。開示された方法およびシステムは、前述の利点の1つまたは複数、および/または、本明細書で明らかにされる様々な追加および/または代替の利点を提供し得る。
図1は、本明細書に記載された方法およびシステムに従って、2Dカラーデータ、深さデータ、およびメタデータを処理して、部分3Dメッシュを生成、蓄積、およびブレンドし、仮想3D空間の画像ビューを形成し得る例示的な仮想現実コンテンツレンダリングシステム100(「システム100」)を示す。図示されるように、システム100は、互いに選択的かつ通信可能に結合されたレンダリング機能102および記憶機能104を含み得るが、これらに限定されない。特定の代替例では、記憶機能104は、システム100から除外され得、システム100に通信可能に結合され得る。機能102および機能104は、図1では別個の機能であるように示されているが、機能102および機能104は、単一の機能等のより少ない機能に組み合わされ得るか、または特定の実施に役立ち得るように、より多くの機能に分割され得ることが認識されるであろう。機能102および機能104のおのおのは、デバイス(たとえば、単一のシャーシを有するメディアプレーヤデバイス)を含むか、またはこのデバイスに収容され、単一の場所(たとえば、住居、企業等のユーザ建物等、または、メディアプレーヤデバイスのユーザに関連付けられた別の場所)に位置し、または、特定の実施に役立ち得るように、多数のデバイスおよび/または多数の場所に分散され得る。次に、機能102および機能104のおのおのについてより詳細に説明する。
記憶機能104は、2Dカラーおよび深さデータ106、メタデータ108、仮想現実コンテンツデータ110、および/または、レンダリング機能102によって受信、生成、管理、維持、使用、および/または送信される任意の他のデータを記憶し得る。2Dカラーおよび深さデータ106は、レンダリング機能102によって受信され得、3Dシーン内のオブジェクトの外観および位置のように、3Dシーン内の1つまたは複数のオブジェクトを表す2Dカラーデータおよび深さデータを含み得る。
特定の例では、3Dシーンは、ライブ(たとえば、リアルタイム)で発生し得る現実世界のイベントの3Dシーンのように、現実世界のシーンであり得る。そのような例では、3Dシーンは、現実世界のイベントに関連付けられた1つまたは複数の現実世界のオブジェクトを含み得、現実世界のイベントが発生すると、2Dカラーおよび深さデータ106がリアルタイムで獲得され得る。他の例では、3Dシーンは、1つまたは複数の仮想オブジェクトを含む仮想シーンであり得る。他の例では、3Dシーンは、融合現実シーンであり得、3Dシーンは、少なくとも1つの仮想オブジェクトと、少なくとも1つの現実世界のオブジェクトとを含み得る。3Dシーンは、3Dシーン内の各オブジェクトおよび/または表面が、現実または仮想に関わらず、3Dシーンおよび3Dシーン内の他のオブジェクトに関して3D空間で検出可能な位置を有しているため、3Dシーンと見なされ得る。
本明細書で使用するとき、「オブジェクト」は、実在するか否かに関わらず、3Dシーンの特定の観測点から見える(つまり、不透明な)ものをすべて含み得る。たとえば、3Dシーンが、バスケットボールの試合のような現実世界のイベントに対応している場合、オブジェクトは、試合に使用されているバスケットボール、バスケットボールコート、バスケットボールの標準物(バックボード、リム、ネット等)を含み得、試合に参加している選手と審判、および/または、バスケットボールの試合に存在する、および/または、関連付けられた他の任意のオブジェクトを含み得る。
本明細書で使用される「2Dカラーデータ」は、2Dカラーデータをキャプチャする少なくとも1つのデバイスの少なくとも1つの観測点から3Dシーンがどのように見えるかを表す任意のデータを広く含み得る。2Dカラーデータは、3Dシーンの色(たとえば、赤、緑、青等)表現、3Dシーンの白黒表現、3Dシーンのグレースケール表現、および/または、3Dシーンの外観の他の任意の適切な表現を含み得る。特定の例では、2Dカラーデータは、特定の期間にわたる観測点からの3Dシーン(たとえば、現実世界のイベントにおけるオブジェクト)の外観を表すキャプチャされた一連の画像(たとえば、高解像度静止画像)を含み得る。たとえば、2Dカラーデータは、ビデオのフレームが、フレームのピクセル座標における色値を表す3Dシーンの2Dカラービデオデータを含み得る。しかしながら、2Dカラーデータは、任意の特定のフォーマット、ファイルタイプ、フレームレート、解像度、品質レベル、または当該技術分野でビデオを定義する様々な定義および/または規格に関連付けられ得る他の特性に限定されない。
本明細書で使用される「深さデータ」は、3Dシーン内の1つまたは複数のオブジェクト(たとえば、現実世界のイベントにおける1つまたは複数のオブジェクト)の空間位置を表す任意のデータを広く含み得る。深さデータは、任意の適切な方式でフォーマットされ得る。特定の例では、後述されるように、深さデータは、特定の観測点からの一連の連続2D深さデータキャプチャ(たとえば、特定の時間にキャプチャされた深さデータの別個のインスタンス)としてフォーマットされ得る。たとえば、深さデータは、特定の観測点からの3Dシーンの2D深さビデオデータを含み得、ここで、ビデオのフレームは、フレームのピクセル座標における深さ値を表す。しかしながら、深さデータは、任意の特定のフォーマット、ファイルタイプ、フレームレート、解像度、品質レベル、または当該技術分野でビデオを定義する様々な定義および/または規格に関連付けられ得る他の特性に限定されない。好ましくは、深さデータは、高い精度および正確性を有する。しかしながら、深さデータは一般に、2Dカラーデータよりも低い解像度(たとえば、低いxおよびy座標の解像度)を有し得るが、それでも許容できる。
深さデータは、2Dカラーデータと同期され得る。たとえば、深さデータにおける深さデータフレームと、カラーデータにおけるカラーデータフレームは、時間における共通のインスタンス(たとえば、同じ参照信号、タイムスタンプ、キャプチャ時間等)に対応し得る。そのような対応する深さデータフレームおよびカラーデータフレームは、他の観測点からキャプチャされた他の深さおよびカラーデータフレームの同期ペアおよび対応するメタデータとともに、部分3Dメッシュを生成、蓄積、およびブレンドして、仮想3D空間の画像ビューを形成するために、本明細書で記載されたような任意の適切な方式で、レンダリング機能102によって処理され得る、同期フレームのペアを形成し得る。
2Dカラーデータおよび深さデータは、3Dシーンに関して異なる観測点に配置された複数のキャプチャデバイスによってキャプチャされ得る。キャプチャデバイスは、たとえば、2Dビデオカメラ、3D深さスキャナ、組合せキャプチャデバイス(たとえば、2Dビデオと、関連付けられた深さデータとの両方をキャプチャするように構成されたデバイス)等を含み得る。複数のキャプチャデバイスに含まれる各キャプチャデバイスは、3Dシーンに関して特定の観測点から、3Dシーンの2Dカラーデータおよび深さデータをキャプチャし得る。本明細書で使用される「観測点」とは、複数のキャプチャデバイスに含まれる各キャプチャデバイスによって、3Dシーンの表面データがキャプチャされる、位置およびキャプチャ角度を称する。特定の例では、特定のキャプチャデバイスの観測点が固定され得る(すなわち、特定のキャプチャデバイスの位置と、特定のキャプチャデバイスのキャプチャ角度は、時間とともに変化しない)。あるいは、特定のキャプチャデバイスの位置とキャプチャ角度との1つまたは複数が、時間とともに変化し得る。たとえば、特定のキャプチャデバイスが固定されている装置が、3Dシーンに関して移動すると、特定のキャプチャデバイスの位置および/またはキャプチャ角度は、時間とともに変化し得る。観測点は、特定の実施に適し得るように、他の任意の適切な情報によって記載され得る。本明細書では、キャプチャデバイスの例示的な観測点が記載される。
複数のキャプチャデバイスは、特定の実施に役立ち得るように、任意の適切な方式で、任意の適切なデバイスを使用して、2Dカラーデータおよび深さデータをキャプチャし得る。特定の例では、キャプチャデバイスは、1つまたは複数の深さキャプチャ技術(たとえば、三角測量ベースの深さキャプチャ技術、立体深さキャプチャ技術等)を使用することによって、多数の観測点から、3Dシーンにおけるオブジェクトの2Dカラーデータをキャプチャし、そこから、オブジェクトの表面の深さデータがキャプチャ(たとえば、導出)され得る、ビデオカメラまたは他のタイプの画像キャプチャデバイスで構成され得る。
他の例では、キャプチャデバイスは、2Dカラーデータをキャプチャするように構成されたビデオカメラまたは他のタイプの画像キャプチャデバイスのみならず、深さキャプチャ技術(たとえば、飛行時間ベースの深さキャプチャ技術、赤外線ベースの深さキャプチャ技術等)の1つまたは複数を使用して、オブジェクトの表面の深さをキャプチャするように構成された別個の深さキャプチャデバイスを含み得る。たとえば、各キャプチャデバイスは、第1のコンポーネント(たとえば、ビデオカメラデバイス)が向けられているオブジェクトの2Dビデオをキャプチャするように構成された第1のコンポーネントと、第2のコンポーネント(たとえば、深さカメラデバイス、3Dイメージング、または3Dスキャンデバイス等)が向けられているオブジェクトの深さデータをキャプチャするように構成された第2のコンポーネントとを含み得る。この例では、第1のコンポーネントと第2のコンポーネントは、別個の、すなわち分離したデバイスであり得るが、2Dカラーデータと深さデータとの両方を同期的に(たとえば、同時に)キャプチャするために互いに連携して動作するように、通信可能に結合および構成され得る。
他の例では、各キャプチャデバイスは、2Dカラーデータと深さデータとの両方をキャプチャするように構成されたビデオ-深さ組合せキャプチャデバイス(たとえば、特別に設計されたビデオカメラ)を備え得る。ビデオ-深さ組合せキャプチャデバイスは、3Dシーン内のオブジェクトのビデオデータをキャプチャできるのみならず、1つまたは複数の適切な深さキャプチャ技術を使用して、オブジェクトの対応する深さをも検出できる、市販の、または特別に設計されたビデオカメラであり得る。
いくつかの例では、キャプチャデバイスは、有限のキャプチャ角度(たとえば、90度、120度等)を有し得、3Dシーンのそれぞれのエリアから、データをキャプチャするように配置および方向付けされ得る。たとえば、キャプチャデバイスのリング構成が、3Dシーンまたは3Dシーンの1つまたは複数の部分(たとえば、バスケットボールコート、競技場の曲がり角)を囲むように配置され得、3Dシーンにおけるオブジェクトを表すデータをキャプチャするために内側に向けられ得る。同じまたは他の例では、少なくとも1つの特定のキャプチャデバイスは、360度のキャプチャ角度を有し得、特定のキャプチャデバイスの周囲のオブジェクトからデータをキャプチャするように配置され得る。たとえば、キャプチャデバイスの少なくとも1つは、360度カメラに対応する中心点の周りの3Dシーンの360度ビデオ画像をキャプチャおよび/または生成するように構成された360度カメラであり得る。本明細書では、3Dシーンに対するキャプチャデバイスの特定の例示的な構成が記載されているが、例は例示にすぎない。他の実施では、3Dシーンに対するキャプチャデバイスの任意の適切な構成が使用され得る。
複数のキャプチャデバイスは、本明細書に記載されたような任意の適切な方式で互いに通信可能に結合され(たとえば、ともにネットワーク化され)得るか、および/または、別のデバイスまたはシステム(たとえば、システム100)に通信可能に結合され得る。これにより、キャプチャデバイスは、時間、位置、角度等の同期性を維持でき得る。たとえば、キャプチャデバイスは、各キャプチャデバイスが、共通の時間(たとえば、しきい時間範囲内)に、対応するデータをキャプチャすることと、異なるキャプチャデバイスによってキャプチャされたデータが、すべてのキャプチャデバイスによって共有される世界標準時間でタイムスタンプされ得ることとを保証するために、タイミング信号を送信および受信し得る。特定の例では、コントローラは、3Dシーンのデータをいつキャプチャおよび/または出力するかについて、キャプチャデバイスに指示し得る。他の例では、キャプチャデバイスは、3Dシーンのデータがいつキャプチャおよび/または出力されるのかを制御し得、任意の適切な機能は、キャプチャデバイスから受信したデータをソートおよび/または選択的に使用し得る。キャプチャデバイスがどのように同期的に機能し得るかのこれら例は、単なる例示である。他の実施では、任意の適切なデバイス同期および/または通信技術を使用して、3Dシーンのデータを同期的にキャプチャするキャプチャデバイスの動作を容易にし得る。特定の代替例では、複数のキャプチャデバイスの1つまたは複数が、非同期的に機能し得、3Dシーン用にキャプチャされたデータは、キャプチャ後に任意の適切な方式で処理および同期され得る。
メタデータ108は、3Dシーンの2Dカラーデータおよび深さデータとともに、仮想3D空間における3Dシーンの仮想表現を生成し、仮想3D空間内の任意の視点からの仮想3D空間の画像ビューを形成するために、レンダリング機能102によって使用され得る任意の情報を含み得る。たとえば、メタデータ108は、3Dシーンの2Dカラーデータおよび深さデータとともに、3Dシーンの2Dカラーデータおよび深さデータを、共通の仮想3D空間に投影し、仮想3D空間における3Dシーンの仮想表現を生成するために、レンダリング機能102によって使用され得る任意の情報を含み得る投影メタデータを含み得る。メタデータ108は、2Dカラーデータがいつキャプチャされたか、2Dカラーデータがキャプチャされた観測点、どのキャプチャデバイスが2Dカラーデータをキャプチャしたか等のように、3Dシーンの2Dカラーデータに関連付けられた時間的および空間的情報を示す情報を含み得るが、これらに限定されない。それに加えて、メタデータ108は、深さデータがキャプチャされたとき、深さデータがキャプチャされた場所、深さデータがキャプチャされた観測点、どのキャプチャデバイスが深さデータをキャプチャしたか等のように、3Dシーンの深さデータに関連付けられた時間的および空間的情報を示す情報を含み得る。メタデータ108はまた、視野情報(たとえば、焦点距離、光学中心、視野角、角度の接線等)、深さマッピング情報、位置情報、方位情報、視野角情報、並進情報、変換行列情報、各キャプチャデバイスのこのような情報のいずれかの変化、および/または、キャプチャデバイスの他の任意の固有および/または外部特性に関する情報を含み得る。いくつかの例では、メタデータ108は、座標系(たとえば、キャプチャデバイスおよび/またはシーンに関連付けられたローカル座標系)、投影パラメータ、投影計算、レンズ歪みパラメータ、および/または、本明細書で記載された手法の何れかにおいて、2Dカラーおよび深さデータを処理するために役立つ他の任意の情報に関する情報を含み得る。特定の例では、メタデータ108はまた、3Dシーンに関してキャプチャされたオーディオサンプルの位置情報をも含み得る。メタデータ108は、Java Script Object Notation(「JSON」)、拡張マークアップ言語(「XML」)のように、特定の実施に役立ち得るように、任意の適切なフォーマットで表され得る。本明細書では、メタデータ108の例示的なフォーマットが記載される。
没入型仮想現実コンテンツデータ110は、2Dカラーデータ、深さデータ、および3Dシーンに関連付けられたメタデータに基づいて、レンダリング機能102によって生成された、仮想現実コンテンツを表す任意のデータを含み得る。たとえば、仮想現実コンテンツデータ110は、仮想3D空間に投影される生成された部分3Dメッシュを表すデータ、仮想3D空間内の任意の視点からの仮想3D空間の生成された画像ビューを表すデータ、および/または、仮想3D空間内の任意の視点からの仮想3D空間内の3Dシーンの仮想表現の画像ビューを提供するためにレンダリング機能102によって生成され得る他の任意の適切なデータを含み得る。そのようなデータの例は、本明細書に記載されている。特定の例では、仮想現実コンテンツデータ110はまた、3Dシーンの生成された仮想表現に関連付けられたオーディオデータ、および/または、3Dシーンの生成された仮想表現に関連付けられた他の任意の適切なデータも含み得る。記憶機能104はさらに、レンダリング機能102によって使用され得る他の任意のデータを含み、特定の実施に役立ち得るように、仮想3D空間内の任意の視点から、仮想3D空間における3Dシーンの仮想表現の画像ビューを形成する。
レンダリング機能102は、仮想3D空間の画像ビューを形成するために、2Dカラーデータ、深さデータ、およびメタデータに基づいて、部分3Dメッシュを生成、蓄積、およびブレンドするために使用される任意のハードウェアおよび/またはソフトウェア(たとえば、コンピューティングシステム、ソフトウェアプログラム、グラフィック処理ハードウェア等)を含み得る。特定の例では、レンダリング機能102は、専用のビデオ復号ハードウェア(たとえば、1つまたは複数の専用のビデオデコーダ)およびプログラム可能なGPUを有するグラフィックカードを含み得る。
レンダリング機能102は、3Dシーンに関して異なる観測点に配置された複数のキャプチャデバイスによってキャプチャされた2Dカラーデータおよび深さデータを受信し得る。レンダリング機能102はまた、2Dカラーデータおよび深さデータのメタデータ(たとえば、メタデータ108)を受信し得る。レンダリング機能102は、2Dカラーデータ、深さデータ、およびメタデータを、任意の適切な方式で、任意の適切なソースから受信し得る。例示するために、図2は、レンダリング機能102が、オブジェクト208を含む3Dシーン206に関して異なる観測点(たとえば、観測点204-1乃至204-n)に物理的に配置された複数のキャプチャデバイス202(たとえば、キャプチャデバイス202-1乃至202-n)からデータを受信する例示的な構成200を示す。
複数のキャプチャデバイス202は、特定の実施に役立ち得る任意の手法で、3Dシーン206に関して固定位置に配置(すなわち、位置、設置等)され得る。たとえば、キャプチャデバイス202は、現実世界のイベントまたは現実世界のイベントの1つまたは複数の部分を囲む(たとえば、バスケットボールの試合におけるバスケットボールコートのように、スポーツイベントの競技場を囲むまたは部分的に囲む)固定位置に配置され得る。
図2に示す例では、観測点204のおのおのは、3Dシーン206および3Dシーン206におけるオブジェクト208の異なる制限されたビューを提供する。たとえば、キャプチャデバイス202-2の観測点204-2は、オブジェクト208の上方からのビューを提供し得る。観測点204-2から、キャプチャデバイス202-2は、オブジェクト208の底面の2Dカラーデータおよび深さデータをキャプチャできない可能性がある。しかしながら、キャプチャデバイス202-1は、オブジェクト208の下方に配置され、観測点204-1からオブジェクト208の底面の2Dカラーデータおよび深さデータをキャプチャでき得る。したがって、キャプチャデバイス202は、オブジェクト208のすべての表面の2Dカラーデータおよび深さデータを、組み合わせてキャプチャするように構成され得る。キャプチャデバイス202は、本明細書に記載されたような任意の適切な方式で、互いにおよびレンダリング機能102に通信可能に結合され得る。
図2に示されるように、レンダリング機能102は、2Dカラーデータ210、深さデータ212、およびメタデータ214を受信し得る。レンダリング機能102は、任意の適切なデータ通信チャネルおよび/または技術を使用して、キャプチャデバイス202から直接的または間接的に、2Dカラーデータ210、深さデータ212、およびメタデータ214を受信し得る。特定の例では、レンダリング機能102は、1つまたは複数の適切なデータ通信ネットワークを介して、キャプチャデバイス202から、2Dカラーデータ210、深さデータ212、およびメタデータ214を受信し得る。たとえば、レンダリング機能102は、ストリーミングビデオおよび/または他のデータ(たとえば、Amazon Web Serviceによって運営されるCDN)を伝送することが可能なCDNのようなコンテンツ配信ネットワーク(「CDN」)を経由して、2Dカラーデータ210、深さデータ212、およびメタデータ214の少なくとも一部を受信し得る。本明細書には、レンダリング機能102が、2Dカラーデータ210、深さデータ212、およびメタデータ214を受信し得る例示的なデータ通信ネットワークが記載されている。
レンダリング機能102によって受信された2Dカラーデータ210、深さデータ212、およびメタデータ214は、任意の適切なデータフォーマットおよび/またはデータ通信プロトコル、フォーマット、および技術を使用して表現され得る。そのようなデータフォーマットおよび通信ストリームの例は、本明細書に記載されている。
3Dシーンの受信データ(たとえば、3Dシーンのメタデータおよび深さデータ)に基づいて、レンダリング機能102は、3Dシーンに関連付けられた各それぞれのキャプチャデバイスに関連付けられた各観測点について、仮想3D空間における3Dシーンの部分表現を作成するために、仮想3D空間へ投影される部分3Dメッシュを生成し得る。図2に関して、たとえば、受信されたメタデータ214および受信された深さデータ212に基づいて、レンダリング機能102は、キャプチャデバイス202のおのおのにそれぞれ関連付けられた観測点204のおのおのについて、仮想3D空間における3Dシーン206(したがってオブジェクト208)の部分表現を作成するために、仮想3D空間に投影される部分3Dメッシュを生成し得る。
本明細書で使用される場合、「仮想3D空間」は、仮想3D世界の3D空間を表し得、仮想3D世界座標のセットに基づいて表され得る。仮想3D空間は、3D空間にキャプチャされた3Dシーンの部分的な仮想表現を作成するために、3D空間に投影される部分3Dメッシュを収容できる任意の適切な3D空間であると定義され得る。特定の例では、レンダリング機能102は、各キャプチャデバイスの各観測点の深さマッピング範囲、視野、および変換行列に関する情報のようなメタデータに少なくとも部分的に基づいて仮想3D空間を定義し得る。
仮想3D空間に投影される部分3Dメッシュは、仮想3D空間内の3D座標に投影される頂点のセットによって相互接続する、および/または、形成される、幾何学プリミティブ(たとえば、三角形、点、線、多角形、複雑な幾何学形状等)のメッシュを含み得る。そのため、3Dシーンの深さデータに基づいて仮想3D空間に投影される部分3Dメッシュは、3Dシーン(たとえば、3Dシーン206)の、したがって、3Dシーン内の1つまたは複数のオブジェクト(たとえば、3Dシーン206内のオブジェクト208)の部分的な仮想表現を作成し得る。3Dシーンの部分的な仮想表現は、3Dシーンの部分的な仮想再構築と称され得、3Dシーン内の1つまたは複数のオブジェクトの表面を仮想的に表し得る。本明細書で使用される「部分3Dメッシュ」は、部分的な3Dメッシュであり、3Dシーン全体に対する単一の凝集した3Dメッシュではなく、そこでは、部分3Dメッシュは、3Dシーンの部分的なビューのみ、すなわち、単一のそれぞれのキャプチャデバイスに関連付けられた単一の観測点からのビューを表す。本明細書に記載されたように、レンダリング機能102は、3Dシーンの単一の凝集した3Dメッシュのように、3Dシーンの完全な3Dモデルを構築または使用する必要なく、仮想現実コンテンツをレンダリングするために、部分3Dメッシュを個別に、または、複数の部分3Dメッシュを、生成および使用し得る。本明細書では、レンダリング機能102によって生成され得る部分3Dメッシュの例が記載される。
特定の例では、仮想3D空間に投影される部分3Dメッシュは、部分3Dメッシュに関連付けられたキャプチャされた3Dシーンの2Dカラーデータからのカラーサンプルなしで、仮想3D空間においてキャプチャされた3Dシーンの部分的な幾何学表現を作成し得る。他の例では、仮想3D空間に投影される部分3Dメッシュは、部分3Dメッシュに関連付けられたキャプチャされた3Dシーンの2Dカラーデータからのカラーサンプルを用いて、仮想3D空間においてキャプチャされた3Dシーンの部分的な幾何学表現を作成し得る。したがって、特定の例では、仮想3D空間に投影される部分3Dメッシュを生成することはさらに、受信した2Dカラーデータ210に基づいて、2Dカラーデータ210からのカラーサンプルを、部分3Dメッシュを生成することの一部として仮想3D空間に投影される部分3Dメッシュの頂点および/またはプリミティブに関連付けるためであり得る。他の例では、レンダリング機能102は、(部分3Dメッシュが生成された後)部分3Dメッシュを生成することとは別個の、1つまたは複数の動作を実行して、2Dカラーデータ210からのカラーサンプルを、仮想3D空間に投影される3Dメッシュの頂点および/またはプリミティブに関連付け得る。
レンダリング機能102は、任意の適切な方式で、3Dシーンの各観測点について部分3Dメッシュを生成し得る。たとえば、レンダリング機能102は、メモリ内でインスタンスを作成し、2D入力メッシュを、レンダリング機能102によって受信された深さデータに基づいて、透視線に沿って、仮想3D空間内の深さに投影し得る。2D入力メッシュは、頂点を相互接続する幾何学プリミティブのセットを形成するために、2D平面内の正規化された座標のグリッドに配置された頂点のセットを含み得る。たとえば、2D入力メッシュは、頂点と端部を相互接続し、任意の所定の範囲(たとえば、1つまたは複数の計算を簡略化し得る符号付きの正規化された範囲[-1,1])をカバーすることによって形成される、頂点と幾何学プリミティブ(たとえば、三角形、点、線、多角形、複雑な幾何学形状等)の2Dグリッドを含み得る。本明細書では、例示的な2D入力メッシュが記載される。
レンダリング機能102は、レンダリング機能102によって受信され、観測点に関連付けられた深さデータに基づいて、2D入力メッシュを、観測点から、透視線に沿って、仮想3D空間内の深さに投影し得る。たとえば、レンダリング機能102は、2D入力メッシュの頂点を仮想3D空間内の深さに投影して、仮想3D空間内の頂点の3D座標を決定し得る。2D入力メッシュの頂点の3D座標への投影は、2D入力メッシュのプリミティブの形状、方位、深さ等を決定し得、2D入力メッシュを、仮想3D空間に投影される部分3Dメッシュに変換し得、これによって、仮想3Dメッシュのプリミティブが、仮想3D空間内に配置され、キャプチャされた3Dシーンに含まれる1つまたは複数のオブジェクトの表面を仮想的に表すことができる。特定の例では、仮想3D空間内の2D入力メッシュの頂点の投影は、2Dキャプチャ画像(たとえば、レンダリング機能102によって受信された2Dカラーデータおよび/または深さデータ)を、(たとえば、レンダリング機能102によって受信されたメタデータに含まれる変換行列を使用して)仮想3D空間に関連付けられた3D世界座標系へ変換することを含む。
次に、部分3Dメッシュを生成するレンダリング機能102の例が、図3~図10を参照して記載される。図3は、異なるそれぞれの観測点204-1乃至204-3に配置されたキャプチャデバイス202-1乃至202-3を示し、そこからキャプチャデバイス202-1乃至202-3は、3Dシーン206内のオブジェクト208の特定の表面302(たとえば、表面302-1および表面302-2)に関連付けられた深さデータおよび2Dカラーデータをキャプチャし得る。説明を簡単にするために、3つのキャプチャデバイス202が、図3に示され、図3は、オブジェクト208に対する3つのそれぞれの観測点204-1乃至204-3を有する3つのキャプチャデバイス202-1乃至202-3に関する3Dシーン206内のオブジェクト208の断面図である。したがって、立方体208、キャプチャデバイス202、および観測点204の間の関係は、図3において2次元(たとえば、x-y-z座標系によって表される3Dシーン206のx-z平面内)で示される。しかしながら、特定の実施に適し得るように、オブジェクト208および/または3Dシーン206に関して任意の数のキャプチャデバイス202が提供され得、2D断面図に関して記載された原理が、オブジェクト208と、様々な観測点204を有するキャプチャデバイス202との間の3D関係に適合することを理解されたい。
レンダリング機能102は、キャプチャデバイス202-1乃至202-3によってキャプチャされた2Dカラーデータおよび深さデータ、ならびに2Dカラーデータおよび深さデータのメタデータを受信し、受信したデータを使用して、キャプチャデバイス202-1乃至202-3のおのおのの観測点204-1乃至204-3のおのおのの部分3Dメッシュを生成し得る。部分3Dメッシュを生成するために、レンダリング機能102は、メモリ内で各2D入力メッシュをインスタンス化すること等により、観測点204-1乃至204-3のおのおのの2D入力メッシュを生成し得る。図4は、レンダリング機能102により生成され得る例示的な2D入力メッシュ402(たとえば、2D入力メッシュ402-1乃至402-3)を示す。図4に示す例では、2D入力メッシュ402-1は観測点204-1に関連付けられ、2D入力メッシュ402-2は観測点204-2に関連付けられ、2D入力メッシュ404-3は観測点204-3に関連付けられる。図示される例では、各2D入力メッシュは、2D平面に配置された三角形のグリッドであり、各三角形(たとえば、三角形404)は、プリミティブ(すなわち、幾何学形状を有する面)を表し、三角形の各点は、2D平面における座標(たとえば、正規化された座標)に位置する頂点(たとえば、頂点406)を表す。図4に示す例では、2D入力メッシュ402はおのおの、特定の高さ(たとえば、4つの頂点または3つのプリミティブ)および特定の長さ(たとえば、8つの頂点または7つのプリミティブ)を有する長方形の形状である。しかしながら、2D入力メッシュは、任意の適切なアスペクト比、サイズ、および/または形状を有し得、特定の実施に適し得るように、任意の適切な頂点およびプリミティブの任意の適切な2D配置を使用し得る。
レンダリング機能102は、任意の適切な方式で仮想3D空間内に2D入力メッシュを投影し得る。たとえば、レンダリング機能102は、レンダリング機能102によって受信された深さデータに基づいて、仮想3D空間内の深さに、それぞれの観測点に関連付けられた透視線に沿って2D入力メッシュを投影し得る。説明のために、図5~図7は、仮想3D空間504内の透視線502(たとえば、透視線502-1乃至502-3)に沿った2D入力メッシュ402(たとえば、2D入力メッシュ402-1乃至402-3)の例示的な投影を示す。図5~図7に示す例では、仮想3D空間504および2D入力メッシュ402は、2D入力メッシュ402の頂点を表す2D入力メッシュ402の各円形ドットを伴う断面図(たとえば、x-y-z座標系によって表される仮想3D空間504のx-z平面の図)に示される。図5~図7は、長方形である仮想3D空間504の断面を示しているが、これは例示にすぎない。仮想3D空間は、任意の適切な形状を有し得る。
図5は、観測点204-1に関連付けられたキャプチャデバイス202-1によってキャプチャされ、レンダリング機能102により受信された、深さデータによって表された仮想3D空間504内の深さへ観測点204-1に関連付けられた複数の透視線502-1に沿った2D入力メッシュ402-1の投影を示す。深さデータは、観測点204-1からのキャプチャデバイス202-1の視野内にあり、観測点204-1からのキャプチャデバイス202-1によって検出された、キャプチャされた3Dシーンに含まれる1つまたは複数のオブジェクトの表面を表し得る。図5は、キャプチャされた3Dシーン内のオブジェクトの表面の位置を表すために、オブジェクト208の破線表現506(たとえば、立方体の断面図)および別のオブジェクトの破線表現508(たとえば、後壁の断面図)を示す。オブジェクトの表面の位置は、キャプチャされた深さデータとして表され、レンダリング機能102は、この深さデータを使用して、2D入力メッシュ402-1の頂点を、キャプチャされた3Dシーン内のオブジェクトの表面の検出位置に揃えられた仮想3D空間504内の3D座標に投影し得る。
図6は、同様に、観測点204-2に関連付けられたキャプチャデバイス202-2によってキャプチャされ、レンダリング機能102により受信された、深さデータによって表された仮想3D空間504内の深さへ、観測点204-1に関連付けられた複数の透視線502-2に沿った2D入力メッシュ402-2の投影を示す。図7は、同様に、観測点204-3に関連付けられたキャプチャデバイス202-3によってキャプチャされ、レンダリング機能102により受信された、深さデータによって表された仮想3D空間504内の深さへの、観測点204-3に関連付けられた複数の透視線502-3に沿った2D入力メッシュ402-3の投影を示す。
図5~図7に示す例では、投影される2D入力メッシュ402は、キャプチャされた3Dシーンに含まれるオブジェクトの表面の少なくとも一部を仮想的に表す部分3Dメッシュ510(たとえば、部分3Dメッシュ510-1乃至510-3)を形成する。部分3Dメッシュ510は、仮想3D空間504の3D座標に配置された頂点を含む。3D座標に配置された頂点は、部分3Dメッシュのプリミティブの特性(サイズ、位置、方向等)を定義するので、頂点およびプリミティブは、仮想3D空間504内で、キャプチャ3Dシーンにおいてオブジェクトの表面の位置を仮想的に表すことができる。
図5~図7に示される例示的な2D入力メッシュ402および対応する部分3Dメッシュ510は、例示目的のみのために提供される。実際には、2D入力メッシュの断面は、図5~図7に示される各2D入力メッシュに対して示される8つの頂点よりも多くの頂点を有し得ることが理解される。
図5~図7に示されるように、部分3Dメッシュの頂点は、キャプチャされた3Dシーンに含まれる異なるオブジェクトの表面に関連付けられた仮想3D空間504内の深さに投影され得る。たとえば、図5において、部分3Dメッシュ510-1の8つの断面頂点のうち5つは、キャプチャされた3Dシーン内のオブジェクト208の表面(オブジェクト208の破線表現506として表される)に関連付けられた深さに投影される一方、部分3Dメッシュ510-1の断面頂点の他の3つは、たとえば、キャプチャされた3Dシーンの後壁の表面(別のオブジェクトの破線表現508として表される)に関連付けられた深さに投影される。同様に、図6および図7において、部分3Dメッシュの頂点が、キャプチャされた3Dシーンに含まれるオブジェクトの表面に関連付けられた仮想3D空間504内の深さに投影される。
仮想3D空間内の2D入力メッシュの投影は、仮想3D空間においてキャプチャされたシーンまたはオブジェクトの部分的な仮想表現を生成するのに役立たない、または、信頼できない、1つまたは複数のプリミティブを含む部分3Dメッシュを作成し得る。したがって、レンダリング機能102は、部分3Dメッシュから、役立たない、および/または、信頼できない、プリミティブを識別および除去するために、1つまたは複数の動作を実行し得る。このようなプリミティブは、無関係なプリミティブと称され得、キャプチャされた3Dシーンのオブジェクトの表面を、十分な信頼性で正確に表すことができない任意のプリミティブを含む場合があり、この信頼性しきい値は、特定のアプリケーションに適合し得るように定義され得る。
例として、部分3Dメッシュは、おのおのが、1つのオブジェクトの表面に投影される頂点と、別のオブジェクトの表面に投影される頂点との間の距離におよぶ、1つまたは複数のプリミティブを含み得る。そのようなオブジェクト間プリミティブは、キャプチャされた3Dシーン内のオブジェクトの表面を正確に表さない場合があるため、オブジェクトの部分的な仮想表現を生成するのに役立たない場合がある。図5は、たとえば、プリミティブ512が、破線表現506によって表される立方体オブジェクトの表面に投影された頂点、および破線表現508によって表された後壁オブジェクトの表面に投影された頂点からの距離におよぶことを示す。したがって、プリミティブ512は、立方体オブジェクト208の、または後壁オブジェクトの表面を表さない場合がある。したがって、プリミティブ512は、オブジェクト208の、または仮想3D空間内の後壁オブジェクトの部分的な仮想表現を生成するのに役に立たない。
レンダリング機能102は、1つまたは複数の動作を実行して、プリミティブ512のような無関係なプリミティブを、部分3Dメッシュから識別および除去し得る。そのような動作は、レンダリング機能102が、各部分3Dメッシュについて、部分3Dメッシュのプリミティブの1つまたは複数を、無関係なプリミティブとして識別し、識別された無関係なプリミティブを、各部分3Dメッシュから除去することを含み得る。レンダリング機能102は、任意の適切な手法で、部分3Dメッシュから無関係なプリミティブを識別および除去し得、その例がここに記載される。
特定の例では、レンダリング機能102は、所定の深さ変化しきい値を超える深さ変化を有するプリミティブに少なくとも部分的に基づいて、部分3Dメッシュのプリミティブを無関係なプリミティブとして識別し得る。所定の深さ変化しきい値は、任意の適切な方式で事前に決定され得、特定の実施に従って、任意の適切な値を有し得る。特定の例では、所定の深さ変化しきい値は、プリミティブが有し得る深さ変化の最大量を表すことができ、それでも、3Dシーン内のオブジェクトの表面を表しているとして考慮され得る。
図8は、部分3Dメッシュ510-2に含まれる特定のプリミティブが、所定の深さ変化しきい値を超える深さ変化を有する例を示す。図8に示されるように、部分3Dメッシュ510-2は、プリミティブ802(たとえば、プリミティブ802-1乃至802-7)を含む。プリミティブ802のうち、プリミティブ802-2および802-6はおのおの、所定の深さ変化しきい値を超えるそれぞれの深さ変化804(たとえば、深さ変化804-1および804-2)を有し得る。深さ変化804のため、レンダリング機能102は、プリミティブ802-2および802-6が、キャプチャされた3Dシーン内のオブジェクト(たとえば、オブジェクト208または後壁オブジェクト)の表面を正確に表さないと判定し得る。したがって、レンダリング機能102は、プリミティブ802-2および802-6を無関係なプリミティブとして識別し得、任意の適切な方式で部分3Dメッシュ510-2からプリミティブ802-2および802-6を除去し得る。プリミティブ802-2および802-6は、レンダリング機能102によって除去されたことを示すために、図8において点線で示されている。
追加的または代替的に、レンダリング機能102は、所定の近平面または所定の遠平面の範囲外にあるプリミティブに少なくとも部分的に基づいて、部分3Dメッシュのプリミティブを無関係なプリミティブとして識別し得る。レンダリング機能102は、メタデータ(たとえば、メタデータに含まれる深さマッピング範囲)、観測点、および/または深さデータ等に基づいて、任意の適切な方式で事前に所定の近平面および所定の遠平面を定義し得る。
図9は、部分3Dメッシュ510-2のプリミティブ802が、所定の近平面902および所定の遠平面904に関して示される例を示す。図9に示す例では、レンダリング機能102は、所定の近平面902が、破線表現506により表される最近接深さ点の深さ値、または所定のオフセットを差し引いた最近接深さ点の深さ値に対応していることを判定し得る。プリミティブのすべてまたは一部が、所定の近平面902と観測点204-2との間に位置する場合、レンダリング機能102は、そのプリミティブが無関係なプリミティブであると判定し得る。同様に、プリミティブのすべてまたは一部が、遠平面904上にまたは遠平面904を超えて(観測点204-2から離れて)位置する場合、レンダリング機能102は、そのプリミティブが無関係なプリミティブであると判定し得る。図9に示す例のように、プリミティブ802-2および802-6の少なくとも一部は、遠平面904を超えて位置している。それに加えて、プリミティブ802-1および802-7は、遠平面904を完全に超えて位置している。したがって、レンダリング機能102は、プリミティブ802-1、802-2、802-6、および802-7が無関係なプリミティブであると判定し、それらを、部分3Dメッシュ510-2から、任意の適切な方式で除去し得る。プリミティブ802-1、802-2、802-6、および802-7は、図9において点線で示され、これらは、レンダリング機能102によって除去されたことを示す。
追加的または代替的に、レンダリング機能102は、部分3Dメッシュに関連付けられたそれぞれの観測点に面していない表面を有するプリミティブに少なくとも部分的に基づいて、プリミティブを無関係なプリミティブとして識別し得る。レンダリング機能102は、プリミティブが、適切な方式でそれぞれの観測点に面していない表面を有するか否かを判定し得る。たとえば、レンダリング機能102は、プリミティブの表面法線と、対応する観測点からの対応する透視線との間の関係に基づいて、プリミティブが、対応する観測点に面していないことを判定し得る。たとえば、レンダリング機能102は、コサインシータまたはドット積計算を実行して、プリミティブの表面が、それぞれの観測点に面しているか否かを判定し得る。コサインシータまたはドット積計算の結果が、特定の値である場合、レンダリング機能102は、プリミティブの表面が、観測点から離れた方向(たとえば、観測点の透視線に直交する方向)を向いていると判定し得る。したがって、レンダリング機能102は、そのようなプリミティブを無関係なプリミティブとして識別し得る。
図10は、部分3Dメッシュ510-2の各プリミティブ802に対して表面法線矢印が示され、プリミティブ802の表面が面し得る方向を示す例を示している。図10に示す例では、レンダリング機能102は、プリミティブ802-2および802-6が、観測点204-2に面しない表面を有することを判定するために、任意の適切な計算を実行し得る。したがって、レンダリング機能102は、プリミティブ802-2および802-6を無関係なプリミティブとして識別し、それらを、任意の適切な方式で、部分3Dメッシュ510-2から除去し得る。
前述の例では、レンダリング機能102は、対応する透視線と、表面の表面法線との間の角度が、直角以上である場合、プリミティブの表面が、対応する観測点から離れる方向を向いていると判定し得る。他の特定の例では、レンダリング機能102は、特定の実施に適し得るように、対応する観測点の透視線に関して直交する所定の範囲内にある表面に基づいて、プリミティブの表面が、観測点に面していないと判定し得る。したがって、レンダリング機能102は、所定の角度よりも大きい角度で、観測点の透視線に対して角度付けられた表面を有するプリミティブを識別および除去し得る。
レンダリング機能102は、前述のような1つまたは複数の動作を実行して、部分3Dメッシュを生成し得る。特定の例では、生成された部分3Dメッシュは、前述のように、観測点の深さデータによって定義された深さへの2D入力メッシュの投影によって作成された、すべてのプリミティブを含み得る。他の例では、プリミティブの1つまたは複数が、無関係なプリミティブとして識別され、部分3Dメッシュから除去され得るので、生成された部分3Dメッシュは、観測点のために深さデータによって定義された深さへの2D入力メッシュの投影によって作成される、プリミティブのすべてよりも少ないプリミティブを含み得、生成された部分3Dメッシュとして、プリミティブのサブセットを残す。たとえば、特定のプリミティブ802は、図9に示される部分3Dメッシュ510-2から除去され、これによって、プリミティブ802-3乃至802-5のみが残る。このような動作は、それぞれの観測点に対応する任意の数の部分3Dメッシュに対して実行され得る。したがって、レンダリング機能102は、利用可能な観測点のすべてまたはサブセットについて、仮想3D空間に投影される部分3Dメッシュを生成し、キャプチャされた3Dシーン内の1つまたは複数のオブジェクト(たとえば、3Dシーン206内のオブジェクト208)の部分仮想表現を作成し得、これは、仮想3D空間内の任意の視点から仮想3D空間内の部分仮想表現の画像ビューを生成するために、レンダリング機能102によって使用され得る。
レンダリング機能102は、各部分3Dメッシュを個別に生成および使用し得、各部分3Dメッシュは、3Dシーンの部分的な仮想表現のみを表し得る。たとえば、図9に例示されるような部分3Dメッシュ510-2は、プリミティブ802-3、802-4、および802-5を含むように、3Dシーン206内のオブジェクト208の表面を部分的にのみ表す。この意味において、部分3Dメッシュ510-2は、仮想オブジェクト全体または仮想3D世界のための、単一の凝集したメッシュとは対照的な、部分メッシュと考慮され得る。レンダリング機能102は、部分3Dメッシュを個別に生成および使用し得るが、部分3Dメッシュは、共通の仮想3D空間に投影されるため、部分3Dメッシュは、キャプチャされた3Dシーン内のオブジェクトのすべての表面またはすべての関連する表面を集合的に表し得る。
図11は、仮想3D空間504に投影された複数の部分3Dメッシュ1102(たとえば、部分3Dメッシュ1102-1乃至1102-3)の断面図を示す。図11に示す例では、各部分3Dメッシュ1102の頂点は、他の部分の3Dメッシュ1102の頂点とは異なる形状のインジケータによって表される。たとえば、部分3Dメッシュ1102-1の頂点が、三角形インジケータによって表され、部分3Dメッシュ1102-2の頂点が、円インジケータによって表され、部分3Dメッシュ1102-3の頂点が、四角形インジケータによって表される。頂点は、図11における異なる形状で表され、部分3Dメッシュ1102を区別し、各部分3Dメッシュ1102は、個々の、別個の部分3Dメッシュであることを示す。
それに加えて、部分3Dメッシュ1102は、例示を明確にするために、互いに隣接し、先頭が互いに整列していないものとして、図11に示される。実際には、部分3Dメッシュ1102は、キャプチャされた3Dシーン206内のオブジェクト208の表面の位置を表す深さデータに基づいて仮想3D空間504内の同じ深さに投影されている頂点の1つまたは複数に基づいて、互いの先頭において、オブジェクト208の破線表現506と、整列し得ることが理解される。たとえば、部分3Dメッシュ1102-1および1102-3は、図11におけるオブジェクト208の部分3Dメッシュ1102-2および破線表現506のわずかに前に位置するように示され、これは、例示の明確化のためである。実際には、部分3Dメッシュ1102-1および1102-3は、オブジェクト208の部分3Dメッシュ1102-2および破線表現506と、より密に整列する。
図11は、個々の部分3Dメッシュが重畳され、仮想3D空間内に共通の空間位置を共有する重複セクションを有するように、個々の部分3Dメッシュが、共通の仮想3D空間に投影され得ることを示す。部分3Dメッシュのセクションが、仮想3D空間内の共通の空間位置を共有する場合、部分3Dメッシュのセクションは、重複していると見なされ得る。たとえば、部分3Dメッシュ1102-2のプリミティブ1104および部分3Dメッシュ1102-1のセクション1106は、仮想3D空間504内のオブジェクト208の表面を表す共通の空間位置と整列したときに重複し得る。
図11は、仮想3D空間に投影された3つの部分3Dメッシュ1102-1乃至1102-3を示す。部分3Dメッシュ1102-1乃至1102-3は、図2に示す構成200において、キャプチャデバイス202-1乃至202-3の観測点204-1乃至204-3に基づいて、前述した手法のいずれかにおいて、レンダリング機能102によって生成された部分3Dメッシュであり得る。しかしながら、3Dシーンに対する観測点を有するキャプチャデバイスの任意の適切な構成のための任意の適切な数の部分3Dメッシュは、仮想3D空間内の3Dシーンの部分仮想表現を作成するために、共通の仮想3D空間に投影され得る。たとえば、追加のキャプチャデバイスが、3Dシーンにおけるオブジェクト208に対する追加の観測点を有する構成に関し、レンダリング機能102は、仮想3D空間504におけるオブジェクト208の追加の表面を仮想的に表すために、追加の観測点のための仮想3D空間504内に投影された追加の部分3Dメッシュを生成し得る。例示のために、図12は、仮想3D空間504内に投影された複数の部分3Dメッシュ1202(たとえば、部分3Dメッシュ1201-1乃至1202-6)の断面図を示す。図12は、図12が、仮想3D空間504に投影された6つの観測点に関連付けられた6つの部分3Dメッシュ1202を示すことを除いて、図11と同様である。
特定の例では、レンダリング機能102は、キャプチャされた3D空間に対する利用可能なすべての観測点のために共通の仮想3D空間へ投影される部分3Dメッシュを生成し得る。他の例では、レンダリング機能102は、キャプチャされた3D空間に対して利用可能なすべての観測点のサブセットのみのために、共通の仮想3D空間に投影される部分3Dメッシュを生成し得る。レンダリング機能102は、利用可能な観測点のサブセットのみのためのデータを受信するので、または、レンダリング機能102は、仮想3D空間内の任意の視点のための最も信頼性の高いデータを提供する観測点のように、最も好ましい観測点のサブセットのためのデータを選択および処理し得るので、レンダリング機能102は、利用可能な観測点のサブセットのみのための部分3Dメッシュを生成し得る。
レンダリング機能102は、仮想3D空間内の任意の視点から、仮想3D空間の画像ビューを生成するために、仮想3D空間に投影される、生成された部分3Dメッシュを使用し得る。前述のように、仮想3D空間に投影される部分3Dメッシュは、キャプチャされた3Dシーンの部分仮想表現(すなわち、3Dシーンにおける1つまたは複数のオブジェクトの部分仮想再構築)を作成するので、画像ビューは、仮想3D空間内の任意の視点からの3Dシーンの部分仮想表現の透視図を表し得る。生成された画像ビューは、仮想3D空間504における3D座標から、画像平面における2D画像座標のセットへマッピングされた(たとえば、ラスタライズされた)データ(たとえば、フラグメントを表すデータ)として含む任意の適切な手法で表され得、これによって、データは、2Dディスプレイスクリーンにおける表示のために、画像ビューを表すディスプレイスクリーンデータ(たとえば、ピクセルデータ)を生成し出力するために使用される。
レンダリング機能102は、仮想3D空間に投影される部分3Dメッシュを蓄積し、部分3Dメッシュのカラーサンプルをブレンドして仮想3D空間の画像ビューを形成することにより、仮想3D空間内の任意の視点から仮想3D空間の画像ビューを生成し得る。特定の例では、レンダリング機能102は、GPUのフレームバッファに部分3Dメッシュを蓄積し、GPUのフレームバッファに部分3Dメッシュのカラーサンプルを追加的にブレンドし得る。特定の例では、部分3Dメッシュのカラーサンプルをブレンドすることは、レンダリング機能102が、部分3Dメッシュのプリミティブのブレンド重み付けを決定し、部分3Dメッシュのプリミティブの決定されたブレンド重み付けに基づいて、部分3Dメッシュのカラーサンプルを重み付け、部分3Dメッシュの重複セクションに含まれる重畳されたプリミティブの、重み付けられたカラーサンプルの重み付け平均を決定することを含み得る。特定の例では、レンダリング機能102は、蓄積領域を決定し、蓄積領域内に位置するプリミティブまたはフラグメントのみを蓄積およびブレンドし得る。次に、仮想3D空間に投影される部分3Dメッシュに基づいて、仮想3D空間内の任意の視点から、仮想3D空間の画像ビューを生成するためのそのような動作の例について説明する。
図13は、仮想3D空間504に投影され、しかも、仮想3D空間504内の任意の視点1304から、仮想3D空間504の画像ビュー1302を生成するためにレンダリング機能102によって使用され得る部分3Dメッシュ1202の断面図(たとえば、仮想3D空間504のx-z平面の図)を示す。図13において、画像ビュー1302は、仮想3D空間504内の2D画像平面の断面図として表され、ここでは、仮想3D空間504の透視図は、任意の視点1304から投影され得る。
画像ビュー1302を生成するために、レンダリング機能102は、画像ビュー1302を表すデータが書き込まれるフレームバッファへ投影される、仮想3D空間504内の部分3Dメッシュ1202を表すデータを蓄積し得る。フレームバッファは、GPUのバッファのように、蓄積された部分3Dメッシュからのデータサンプルを記憶できる任意のバッファであり得る。特定の例では、フレームバッファは、16ビットの浮動小数点タイプのデータまたは高ダイナミックレンジビデオまたは画像フォーマットに適した他の任意のデータタイプを記憶するように構成されたフレームバッファのような高精度フレームバッファであり得る。他の例では、フレームバッファは、任意の適切な画像および/またはビデオフォーマットに使用され得る他の任意のデータタイプを記憶するように構成され得る。
レンダリング機能102は、部分3Dメッシュのデータをサンプリングして、フレームバッファに書き込むデータを選択し、選択したデータをフレームバッファに書き込み、選択されなかったデータをフレームバッファに書き込まないことを含む、任意の適切な手法で部分3Dメッシュ1202をフレームバッファに蓄積し得る。この目的のために、レンダリング機能102は、仮想3D空間504内の閉塞の決定、部分3Dメッシュ1202によって表される表面が向く方向の決定、深さテスト等のための動作のように、フレームバッファにどのデータを書き込み、どのデータを書き込まないのかを選択する1つまたは複数の動作を実行し得る。そのような動作を使用して、レンダリング機能102は、部分3Dメッシュ1202からのどのデータが任意の視点1304から見えるオブジェクトの表面を仮想的に表すのかを決定し、そのデータを選択してフレームバッファに書き込み得る。
例示のために、図13の任意の視点1304から、仮想3D空間内のオブジェクト208の右前表面を仮想的に表す部分3Dメッシュ1202のプリミティブは見えるので、画像ビュー1302に含まれる。示されるように、そのようなプリミティブは、部分3Dメッシュ1202-2の(プリミティブ1306としてラベル付けされた)1つのプリミティブ、(個々の参照番号でラベル付けされていない)部分3Dメッシュ1202-3のすべてのプリミティブ、および(プリミティブ1308としてラベル付けされた)部分3Dメッシュ1202-4の1つのプリミティブを含む。この例では、レンダリング機能102は、これらのプリミティブを、任意の視点1304から見えるものとして識別し、これらのプリミティブを表すデータをフレームバッファに書き込むための動作を実行し得る。レンダリング機能102は、任意の視点1304から見えない他のプリミティブを識別し、これらの他のプリミティブを表すデータをフレームバッファに書き込まないための動作を実行し得る。これは、部分3Dメッシュ1202からのデータをレンダリング機能102がサンプリング(たとえば、深さテスト)する順序に応じて、見えないプリミティブを表すデータをフレームバッファへ決して書き込まないことと、および/または、任意の視点1304から見えると識別されたプリミティブを表すデータとともに、すでにフレームバッファに書き込まれた見えないプリミティブを表すデータを上書きすることとを含み得る。
特定の例では、レンダリング機能102は、仮想3D空間504に投影されるすべての部分3Dメッシュ1202からのデータを、任意の順序でサンプリングし、選択されたプリミティブを表すデータを、フレームバッファに書き込み、これによって、すべての部分3Dメッシュ1202がサンプリングされた後、フレームバッファは、任意の視点1304から見える部分3Dメッシュのプリミティブのためのみのデータを含むことができる。他の例では、レンダリング機能102は、任意の適切な定義された基準および動作と、選択された部分3Dメッシュ1202のためのみのサンプルデータとに基づいて、任意の視点1304に最も関連する仮想3D空間504に投影される部分3Dメッシュ1202のサブセットを選択し得る。
レンダリング機能102は、仮想3D空間504内の共通の3D座標に関連付けられた重複セクションを有する部分3Dメッシュ1202を蓄積し得るので、レンダリング機能102は、フレームバッファで表されるような画像ビュー1302の共通の2D座標にマッピングされる仮想3D空間504内の共通の3D座標について、多数の部分3Dメッシュ1202から、多数のプリミティブまたはサンプルを選択し得る。部分3Dメッシュ1202のそのような重複セクションについて、レンダリング機能102は、フレームバッファ内の部分3Dメッシュ1202の重複セクションのカラーサンプルを蓄積およびブレンドするための1つまたは複数の動作を実行し得る。特定の例では、レンダリング機能102は、部分3Dメッシュの任意の順序の処理について、サンプルがサンプリングされて書き込まれるように選択されると、部分3Dメッシュ1202のサンプルがフレームバッファに書き込まれるように、カラーサンプルをブレンドするために追加ブレンドを使用する。
次に、画像ビュー1302の単一の2D座標点の部分3Dメッシュからのサンプルを蓄積しブレンドするレンダリング機能102の例について説明する。図13は、任意の視点1304から仮想3D空間504に投影される例示的な透視線1310を示す。示されるように、透視線1310は、仮想3D空間504内の3D座標点1312における画像ビュー1302、仮想3D空間504内の3D座標点1314における部分3Dメッシュ1202-3、仮想3D空間504内の3D座標点1316における部分3Dメッシュ1202-2、および、3D座標点1318における部分3Dメッシュ1202-6を交差する。図13では、3D座標点1314および1316が異なる場所に示されているが、部分3Dメッシュ1202-2および1202-3は、前述したような説明を明確にするために、互いの先頭に揃えられていないので、3D座標点1314および1316は、同じ3D座標点として取り扱われるように、同じ3D座標点であると、または、互いの所定のしきい距離内にあると考慮される。画像ビュー1302の画像平面上の3D座標点1312は、画像ビュー1302を表すために使用される2D座標のセット内の画像ビュー1302の2D座標点に対応し、ここには、フレームバッファ内の部分3Dメッシュ1202からのデータを蓄積するときに、レンダリング機能1302によって、3D座標点1314、1316、および1318がマッピングされ得る。
一例として、レンダリング機能102は、部分3Dメッシュ1202-3の3D座標点1314をサンプリングし、フレームバッファに書き込まれる3D座標点1314を選択し、画像ビュー1302の画像平面上の3D座標点1312に対応する、画像ビュー1302の2D座標点に、3D座標点1314のデータをマッピングし、書き込み得る。レンダリング機能102はまた、部分3Dメッシュ1202-6の3D座標点1318をサンプリングし、3D座標点1318は、すでにマッピングされて、(深さテストによって、または他の任意の適切な手法で、閉塞が決定される)フレームバッファに、画像ビュー1302の2D座標点に書き込まれた3D座標点1314によって閉塞されているので、フレームバッファに書き込まれるべき3D座標点1318を選択せず、画像ビュー1302の2D座標点に3D座標点1318のデータを書き込まない。レンダリング機能102はまた、3D座標点1316が共通の3D点を表すため、3D座標点1314によって閉塞されないので、部分3Dメッシュ1202-2の3D座標点1316をサンプリングし、フレームバッファに書き込まれる3D座標点1316を選択し得る。前述のように、3D座標点1316は、3D座標点1314と同じであるため、レンダリング機能102は、3D座標点1316のデータを、3D座標点1314および1316のデータをブレンドする手法で、画像ビュー1302の2D座標点に3D座標点1316のデータをマッピングして書き込み得、これによって、フレームバッファは、3D座標点1314および1316のデータのブレンドを表す、2D座標点のデータを含むようになる。たとえば、レンダリング機能102は、フレームバッファ内の3D座標点1314および1316のカラーサンプルをブレンドし得る。
特定の例では、レンダリング機能102は、レンダリング機能102がサンプルを処理すると、フレームバッファ内の部分3Dメッシュの重複セクション上の共通の3D座標点のカラーサンプルを追加的にブレンドすることにより、部分3Dメッシュのカラーサンプルをブレンドし得る。図13に示す例を続けると、レンダリング機能102は、3D座標点1314および1316がマッピングされる画像ビュー1302内の2D座標点のフレームバッファ内の共通の3D座標点1314および1316のカラーサンプルを追加的にブレンドし得る。例示するために、レンダリング機能102は、部分3Dメッシュ1202-3の3D座標点1314をサンプリングし、フレームバッファに書き込まれるべき3D座標点1314を選択し、画像ビュー1302のために、3D座標点1314のデータを2D座標点にマッピングして書き込み得る。これは、3D座標点1314に関連付けられたカラーサンプルデータを、フレームバッファに書き込むことを含み得る。たとえば、RGBカラーモデル値における3D座標点のカラーサンプルデータは(255,0,0)であり得、レンダリング機能102は、この値を、画像ビュー1302の2D座標点のフレームバッファに(たとえば、フラグメントデータの一部として)書き込み得る。レンダリング機能102はまた、前述のように、部分3Dメッシュ1202-2の3D座標点1316をサンプリングし、フレームバッファに書き込まれる3D座標点1316を選択し得る。3D座標点1316は、3D座標点1314と同じであるため、3D座標点1316のデータを、画像ビュー1302の2D座標点に書き込むことは、3D座標点1316に関連付けられたカラーサンプルデータを、3D座標点1314および1316のカラーサンプルデータをブレンドする手法で、フレームバッファに書き込むことを含み、これによって、フレームバッファは、3D座標点1314および1316のカラーサンプルのブレンドを表す2D座標点のカラーサンプルデータを含むようになる。たとえば、RGBカラーモデル値における3D座標点のカラーサンプルデータは(205,0,0)であり得、レンダリング機能102は、この値を、画像ビュー1302の2D座標点のフレームバッファに既に記憶されている3D座標点1314のRGB値に追加的にブレンドし得る。特定の例では、追加ブレンドは、3D座標点1314および1316のRGBカラー値の平均を決定し、画像ビュー1302の2D座標点のフレームバッファに、決定された平均(たとえば、RGB値(225,0,0))を書き込むことを含み得る。
特定の例では、レンダリング機能102は、重み付けられたブレンドを使用して、部分3Dメッシュのカラーサンプルをブレンドし得る。たとえば、部分3Dメッシュのカラーサンプルのブレンドは、レンダリング機能102が、部分3Dメッシュのプリミティブのブレンド重み付けを決定し、部分3Dメッシュのプリミティブのために決定されたブレンド重み付けに基づいて、部分3Dメッシュのためのカラーサンプルを重み付け、部分3Dメッシュの重複セクションに含まれる重畳されたプリミティブの、重み付けられたカラーサンプルの重み付け平均を決定することを含み得る。
レンダリング機能102は、任意の適切な手法で部分3Dメッシュのプリミティブのブレンド重み付けを決定し得る。特定の例では、レンダリング機能102は、プリミティブの表面の表面法線と、観測点から投影されプリミティブと交差する透視線との間の関係(たとえば、角度)のように、プリミティブに関連付けられたデータがキャプチャされる観測点に関して、プリミティブの表面が向いている方向に基づいて、プリミティブのブレンド重み付けを決定し得る。そのような関係は、表面データがキャプチャされる観測点に対するプリミティブの表面の角度に基づいて、プリミティブの表面データの信頼性または品質のレベルを表し得る。たとえば、プリミティブの表面法線とキャプチャ観測点から投影される透視線との間の小さな角度は、プリミティブの表面法線と、キャプチャ観測点から投影される透視線との間の大きな角度によって示されるよりも、プリミティブの表面データにおける信頼性レベルが高いことを示し得る。小さな角度は、キャプチャ観測点にさほど直接面していないプリミティブの表面を示す大きな角度と比較して、キャプチャ観測点により直接面しているプリミティブの表面を示している。したがって、プリミティブ表面とキャプチャ観測点との間の角度関係に基づいて、レンダリング機能102は、第2のプリミティブに関連付けられた表面データによりも、第1のプリミティブに関連付けられた表面データに多くの重み付けを与えるために、キャプチャ観測点により直接面している表面を有する第1のプリミティブのために、より高いブレンド重み付けを決定し、キャプチャ観測点にさほど直接面していない表面を有する第2のプリミティブのために、より低いブレンド重み付けを決定し得る。この方式または同様の方式で、レンダリング機能102は、ブレンド動作における角度付き表面の影響を減らすこと等により、プリミティブの表面データの信頼性のレベルに基づいて、プリミティブがどのようにブレンド動作に影響するのかを制御し得る。
図13に示される例を続けると、たとえば、3D座標点1314は、部分3Dメッシュ1202-2に関連付けられた表面データがキャプチャされる観測点(たとえば、観測点204-2)に関して3D座標点1316が位置する部分3Dメッシュ1202-2のプリミティブの表面よりも、部分3Dメッシュ1202-3に関連付けられた表面データがキャプチャされる観測点(たとえば、観測点204-3)に、より直接面する表面を有する部分3Dメッシュ1202-3のプリミティブ上にあり得る。したがって、レンダリング機能102は、部分3Dメッシュ1202-3上の3D座標点1314に関連付けられたプリミティブの比較的高いブレンド重み付けと、部分3Dメッシュ1202-2上の3D座標点1316に関連付けられたプリミティブの比較的低いブレンド重み付けとを決定し得、このブレンド重み付けは、3D座標点1314および1316のカラーサンプルがブレンドされるときに、3D座標点1314に関連付けられたプリミティブの影響を増加させ、3D座標点1316に関連付けられたプリミティブの影響を減少させるために、レンダリング機能102によって使用され得る。
レンダリング機能102は、部分3Dメッシュのプリミティブの決定されたブレンド重み付けを使用して、部分3Dメッシュの表面データ(たとえば、カラーサンプル)を重み付け、部分3Dメッシュの重複セクションに含まれる重畳されたプリミティブの、重み付けられた表面データの重み付け平均を決定し得る。たとえば、レンダリング機能102は、部分3Dメッシュ1202-3および1202-2のプリミティブのブレンド重み付けを使用して、3D座標点1314および1316のカラーサンプルを重み付けし、重み付けられたカラーサンプルの重み付け平均を決定し得る。たとえば、レンダリング機能102は、3D座標点1314のカラーサンプルに、3D座標点1314を含む部分3Dメッシュ1202-3のプリミティブに対して決定された第1のブレンド重み付けを乗じ、3D座標点1316のカラーサンプルに、3D座標点1316を含む部分3Dメッシュ1202-2のプリミティブに対して決定された第2のブレンド重み付けを乗じ、2つの乗算の積を加算し、その積の合計を、ブレンド重み付けの合計で除し、部分3Dメッシュ1202-3および1202-2の重複セクションに含まれる重畳されたプリミティブの3D座標点1314および1316のカラーサンプルの重み付け平均を決定し得る。レンダリング機能102は、画像ビュー1302の対応する2D座標点について、決定されたカラーサンプルの重み付け平均を、フレームバッファに書き込み得る。
この方式または同様の方式でカラーサンプルを重み付けることは、より直接的にキャプチャされた表面に関連付けられたカラーサンプルへ、より多くの重み付けを与え、さほど直接的にキャプチャされていない表面に関連付けられたカラーサンプルへ、比較的少ない重み付けを与える。たとえば、RGB値(255,0,0)を有する3D座標点1314のカラーサンプルに対して0.7の重み付けが決定され、RGB値(205,0,0)を有する3D座標点1316のカラーサンプルに対して0.3の重み付けが決定された場合、レンダリング機能102は、ブレンドされたカラーサンプルに対して(240,0,0)の重み付け平均カラーサンプルRGB値を決定し得、この重み付け平均カラーサンプル値は、フレームバッファ内のカラーサンプルをブレンドした結果として、対応する2D座標点についてフレームバッファに書き込まれ得る。
本明細書で使用されるように、フレームバッファへデータを書き込むことは、任意の適切なフレームバッファ、または、仮想3D空間の2D画像ビューのためのデータを記憶するフレームバッファの構成へ、データを書き込むことを含み得る。フレームバッファに書き込まれるデータは、表示データとして、および/または、表示デバイスへ出力され、2D画像ビューを2Dディスプレイスクリーンまたは多数の2Dディスプレイスクリーンのセットに表示するために使用され得る、表示データ(たとえば、ピクセルデータ)を決定するために役立つ、任意のデータを含み得る。
図14は、蓄積バッファ1402および出力バッファ1404を含むフレームバッファの例示的な構成1400を示す。特定の例では、レンダリング機能102は、蓄積バッファ1402を使用して、部分3Dメッシュの重み付けデータを蓄積し得る。この目的のために、蓄積バッファ1402は、RGBカラーモデル値が、ブレンド重み付け「w」を乗じられた重み付けフラグメントのデータのセットを含み得る。蓄積バッファ1402はまた、ブレンド重み付け「w」を表すデータを含むことができ、このブレンド重み付けは、本明細書に記載されたようにレンダリング機能102によって決定され得る。レンダリング機能102は、本明細書に記載されたように、蓄積バッファに部分3Dメッシュを蓄積し得、これは、画像ビューの共通の2D座標点の重み付けられたすべてのフラグメントを追加することによることを含む。すべてのサンプルが蓄積バッファ1402に蓄積されると、レンダリング機能102は、共通の2D座標点のフラグメントの重み付け平均を決定するために、重み付けフラグメントの合計を、蓄積バッファ1402内のブレンド重み付けの合計で除し得る。レンダリング機能102は、決定されたフラグメントの重み付け平均を、(たとえば、示されるRGBAカラーモデルフォーマットで、または他の任意の適切なフォーマットで)出力バッファ1404に出力し(たとえば、書き込み)得、これは、ディスプレイスクリーンに関連付けられたユーザによる表示のために、ディスプレイスクリーン上に2D画像ビューの表示を提供するために使用され得る。
図14において、蓄積バッファ1402は、画像ビュー1302上の2D座標点にマッピングされる仮想3D空間504内の単一の3D座標点のデータのセットを含むように示されている。蓄積バッファ1402は、画像ビュー1302上の同じ2D座標点にマッピングされる仮想3D空間504内の1つまたは複数の他の3D座標点の追加のデータのセットを含み、画像ビュー1302上の同じ2D座標点にマッピングされた仮想3D空間504内のすべての3D座標点のデータのセットの重み付けられた蓄積およびブレンドを可能にし得ることが理解されよう。
図14において、蓄積バッファ1402および出力バッファ1404はおのおの、画像ビュー(たとえば、画像ビュー1302)の単一の2D座標点のためのデータのセットを含むように示されている。蓄積バッファ1402および出力バッファ1404はおのおの、2D画像ビューを表す2D座標点の2D配列内の各2D座標点について、図示されたデータのセット(および、特定の実施では、図14に示されていない追加のデータ)を含み得ることが理解されるであろう。特定の例では、蓄積バッファ1402は、蓄積バッファ1402内のデータの正確な蓄積計算を可能にするために、表示精度および/または出力バッファ1404よりも高精度のバッファであり得る。たとえば、蓄積バッファ1402は、16ビットの浮動小数点、16ビット正規化、または他の高ダイナミックレンジビデオまたは画像データタイプフォーマットでデータを記憶し得、出力バッファ1404は、8ビット低ダイナミックレンジビデオまたは画像データタイプフォーマットでデータを記憶し得る。蓄積バッファ1402は、本明細書に記載されたように、多数の部分3Dメッシュのデータが蓄積され得、その後、出力バッファ1404に出力され得る中間バッファとして機能し得る。
特定の例では、レンダリング機能102は、蓄積領域を決定し、蓄積領域内に位置するプリミティブまたはフラグメントのみを蓄積および/またはブレンドし得る。レンダリング機能102は、メタデータ(たとえば、メタデータに含まれる深さマッピング範囲)、仮想3D空間内の任意の視点、および/または、仮想3D空間に投影される部分3Dメッシュの深さデータ等に基づいて、任意の適切な時間において(たとえば、深さ事前パスの一部として)、および、任意の適切な方式で、蓄積領域を決定し得る。たとえば、レンダリング機能102は、仮想3D空間504に投影される部分3Dメッシュ1202の深さデータに基づいて、仮想3D空間504内の任意の視点から、透視図に沿って、投影される部分3Dメッシュ1202の最も近い深さ点の深さ値で蓄積領域が始まると判定し得る。レンダリング機能102は、蓄積された範囲の遠端を決定するために、投影される部分3Dメッシュ1202の最も近い深さ点の決定された深さ値に、所定の深さオフセット値を追加し得る。蓄積領域は、透視図に沿って、決定された最も近い深さ点の深さ値から、任意の視点から離れる方向に、最も近い深さ点と、所定の深さオフセット値との合計に等しい深さ値を有する遠い深さ点の深さ値まで延び得る。最も近い深さ点が、z0として表され、所定の深さオフセットが、dzとして表される場合、遠い深さ点は、z1として表され、ここで、z1=z0+dzであり、蓄積範囲は[z0,z1]であり、ここで、深さzは、任意の視点からの透視図に沿って方向付けられる。
蓄積領域は、特定の実施に適し得るように、任意のサイズ(すなわち、仮想3D空間内の深さの範囲)を有し得る。蓄積領域のサイズは、特定の実施に適し得るように、事前に定義され得る、所定の深さオフセットの値によって決定され得る。たとえば、深さオフセットは、3Dシーンおよび/または仮想3D空間のために、所望のレベルの精度を提供するように定義され得る。
深さオフセットは、レンダリング機能102によって使用され、仮想3D空間504内の任意の視点から、透視図に沿った投影された部分3Dメッシュの最も近い各サンプルの深さ値を押し戻す。説明するために、図15は、仮想3D空間504内の任意の視点1502に関してオブジェクト208の破線表現506の例示的な断面図を示す。図15において、オブジェクト208の破線表現506の正面端部は、任意の視点1502に投影される部分3Dメッシュの最も近い深さサンプルであり、実線1504-1および1504-2として表される。最も近いサンプルは、深さオフセットによって透視図に沿って押し戻され、この深さオフセットは、矢印1506として表される。深さオフセットにより最も近いサンプルを押し戻すことにより、レンダリング機能102は、任意の視点1502から、各透視図に沿った蓄積領域を決定し得る。蓄積領域1508の例を図15に示す。図15において、オブジェクト208の破線表現1510は、レンダリング機能102が深さオフセットを実行した後の仮想3D空間504内のオブジェクトを表す。オブジェクト208の破線表現1510の正面端部は、深さオフセット後の任意の視点1502に投影される部分3Dメッシュの最も近い深さサンプルであり、実線1512-1および1512-2として表される。レンダリング機能102は、任意の視点1502から透視図に沿って、最も近いサンプルを押し戻すので、深さオフセットは、ユーザに対して透明であり得る。
図15に示されるように、蓄積領域1508はおのおの、任意の視点1502から透視図に沿って、最も近い深さサンプル値から、深さオフセット値までの距離におよび得る。各蓄積領域1508に関連付けられた任意の視点1502から透視図に沿って、レンダリング機能102は、それぞれの蓄積領域1508内に位置するプリミティブまたはフラグメント(たとえば、プリミティブまたはフラグメントのカラーサンプル)のみを蓄積およびブレンドし得る。したがって、レンダリング機能102は、各蓄積領域1508の外側の(たとえば、超えた)サンプルを無視することができ、これは、コンピューティングリソースを節約し、および/または、データの高速処理を可能にし得る。各蓄積領域(たとえば、各蓄積領域1508)は、仮想3D空間における任意の視点に関して蓄積領域と考慮され得るか、または仮想3D空間における蓄積領域(たとえば、蓄積領域1508)の組合せが、任意の観測点に関して仮想3D空間の蓄積領域と考慮され得る。
投影される部分3Dメッシュは、(たとえば、図11および図12に示されるように)仮想3D空間内で重畳され、重複し得る。したがって、部分3Dメッシュは、任意の観測点から透視図に沿って異なる深さ値を有し得る。深さ値のこのような違いは、符号化エラー、キャプチャエラー、および/または、レンダリング機能102によって受信された深さデータに関連付けられた他の任意のエラーによって発生し得る。レンダリング機能102は、最前面のサンプルからの深さオフセットを使用して蓄積領域を決定し、決定された蓄積領域内にサンプルを蓄積することにより、深さ値におけるそのような差を補正および/または補償し得、これは、任意の視点からの画像ビューに寄与するために、蓄積領域内の異なる深さ値に関連付けられたサンプルがサンプリングされ、ともにブレンドされることを可能にする。
特定の例では、システム100は、キャプチャされた3Dシーンの2Dカラーデータ、深さデータ、およびメタデータを受信し、受信したデータを使用して、本明細書に記載されたように、メディアプレーヤデバイスのユーザへの提示のために仮想現実コンテンツをレンダリングすることができるメディアプレーヤデバイスに組み込まれ得、これにより、メディアプレーヤデバイスのユーザは、3Dシーンの仮想再構築内で動的に選択された視点から、3Dシーンの仮想再構築を体験でき得る。図16は、システム100が、仮想現実メディアプロバイダシステム1604に通信可能に結合されたメディアプレーヤデバイス1602に組み込まれた、システム100の例示的な実施1600を示す。メディアプレーヤデバイス1602は、任意の適切な方式で仮想現実メディアプロバイダシステム1604に通信可能に結合され得る。図16に示す例では、メディアプレーヤデバイス1602は、ネットワーク1606を経由して仮想現実メディアプロバイダシステム1604に通信可能に結合される。しかしながら、メディアプレーヤデバイス1602は、追加的または代替的に、仮想現実メディアプロバイダシステム1604に通信可能に直接結合され得る。
ネットワーク1606は、プロバイダ特有の有線または無線のネットワーク(たとえば、ケーブルまたは衛星キャリアネットワークまたはモバイル電話ネットワーク)、インターネット、広域ネットワーク、または他の任意の適切なネットワークを含み得る。データは、特定の実施に役立ち得るように、任意の通信技術、デバイス、メディア、およびプロトコルを使用して、メディアプレーヤデバイス1602と仮想現実メディアプロバイダシステム1604との間を流れ得る。たとえば、メディアプレーヤデバイス1602および仮想現実メディアプロバイダシステム1604は、ソケット接続、イーサネット(登録商標)、データバス技術、データ伝送媒体、通信デバイス、メディアストリーミング技術(たとえば、ビデオストリーミング技術)、Moving Picture Experts Group(「MPEG」)プロトコル、伝送制御プロトコル(「TCP」)、インターネットプロトコル(「IP」)、ファイル転送プロトコル(「FTP」)、Telnet、ハイパテキスト転送プロトコル(「HTTP」)、HTTPS、セッション開始プロトコル(「SIP」)、シンプルオブジェクトアクセスプロトコル(「SOAP」)、拡張マークアップ言語(「XML」)およびそのバリエーション、リアルタイム転送プロトコル(「RTP」)、ユーザデータグラムプロトコル(「UDP」)、汎欧州デジタル移動電話方式(「GSM(登録商標)」)技術、符号分割多元接続(「CDMA」)技術、エボリューションデータオプティマイズドプロトコル(「EVDO」)、4Gロングタームエボリューション(「LTE」)、WiMax、時分割多元接続(「TDMA」)技術、無線周波数(「RF」)シグナリング技術、無線通信技術(たとえば、BLUETOOTH(登録商標)、Wi-Fi(登録商標)等)、帯域内および帯域外シグナリング技術、および他の適切な通信技術を含むがこれらに限定されない、任意の適切な通信技術、デバイス、メディア、および/または、データ通信をサポートするプロトコルを使用して通信し得る。図2では、仮想現実メディアプロバイダシステム1604とメディアプレーヤデバイス1602とを相互接続するために、1つのネットワーク1606しか示されていないが、これらのデバイスおよびシステムは、特定の実施に役立ち得るように、多数のおよび/または異なる相互接続されたネットワークを経由して相互通信し得ることが認識されよう。
仮想現実メディアプロバイダシステム1604は、2Dキャプチャ画像およびメタデータを処理するために使用される任意のハードウェアおよび/またはソフトウェア(たとえば、コンピューティングシステム、ソフトウェアプログラム等)を含み得る。仮想現実メディアプロバイダシステム1604は、特定の実施に役立ち得るように、単一の場所に配置され得るか、多数のデバイス(たとえば、サーバ)および/または多数の場所に分散され得る。
仮想現実メディアプロバイダシステム1604は、2Dキャプチャ画像およびメタデータの配信のためのデータパイプラインを提供し得、ここでは、2Dキャプチャ画像およびメタデータが、任意の適切な方式で(たとえば、直接またはネットワーク1606を介して)キャプチャデバイス(たとえば、キャプチャデバイス202)から仮想現実メディアプロバイダシステム1604へ、および、仮想現実メディアプロバイダシステム1604からネットワーク1606を経由してメディアプレーヤデバイス1602へ流れる。たとえば、仮想現実メディアプロバイダシステム1604は、獲得した2Dキャプチャ画像およびメタデータを処理し、ネットワーク1606を経由してメディアプレーヤデバイス1602にストリーミングするために、少なくとも1つのトランスポートストリームで2Dキャプチャ画像およびメタデータを生成し提供し得る。
特定の例では、仮想現実メディアプロバイダシステム1604は、「Methods and Systems for Using 2D Captured Imagery of a Scene to Provide Vitrual Reality Content」と題され、本願と同日に出願され、その全体が参照により本明細書に組み込まれている同時係属中の米国特許出願第15/610,575号に記載された手法のいずれかで、2Dキャプチャ画像およびメタデータを生成し、メディアプレーヤデバイス1602のようなメディアプレーヤデバイスに提供し得る。
特定の例では、仮想現実メディアプロバイダシステム1604は、任意の適切な通信チャネルを介してトランスポートストリームをメディアプレーヤデバイス1602にストリーミングし得る。あるいは、仮想現実メディアプロバイダシステム1604は、メディアプレーヤデバイス1602へのストリーミングのために、コンテンツ配信ネットワーク(「CDN」)(たとえば、サードパーティCDN)にトランスポートストリームを提供し得る。特定の例では、仮想現実メディアプロバイダシステム1604は、トランスポートストリームにメタデータを(たとえば、2Dキャプチャ画像データ(すなわち、表面データ)とともに)含み、メタデータが、トランスポートストリームの一部としてメディアプレーヤデバイス1602へストリーミングされるように、ストリーミング用のトランスポートストリームを提供し得る。他の例では、仮想現実メディアプロバイダシステム1604は、メタデータが、トランスポートストリームとは別個にストリーミングされるように、メタデータとトランスポートストリームとをストリーミングのために別個に提供し得る。
本明細書で使用される「トランスポートストリーム」は、カラービデオデータストリームおよび深さビデオデータストリームがパッケージ化され得る単一のトランスポートストリーム、または、カラービデオデータストリームおよび深さビデオデータストリームがパッケージ化され得る多数のトランスポートストリームを称し得る。したがって、特定の例では、トランスポートストリームは、キャプチャされたシーンのビデオデータストリーム(たとえば、各3Dキャプチャデバイスのための1つのカラービデオデータストリームと、各3Dキャプチャデバイスのための1つの深さビデオデータストリーム)のみならず、特定の実施における伝送のために含まれ得る任意のメタデータまたは他の適切なデータを搬送する単一のトランスポートストリームを称し得る。他の例では、トランスポートストリームは、キャプチャされたシーンのビデオデータストリーム(たとえば、各3Dキャプチャデバイスのための1つのカラービデオデータストリームと、各3Dキャプチャデバイスのための1つの深さビデオデータストリーム)のみならず、特定の実施における伝送のために含まれ得る任意のメタデータまたは他の適切なデータを集合的に搬送する複数のトランスポートストリームを称し得る。
トランスポートストリームは、ビデオおよび/または他のデータを、仮想現実メディアプロバイダシステム1604からメディアプレーヤデバイス1602に伝送するのに適した任意のタイプのトランスポートストリーム(たとえば、MPEGトランスポートストリームまたは他のタイプのトランスポートストリーム)を含み得る。トランスポートストリームは、特定の実施に適し得るように、任意の適切なデータフォーマット、コンテナフォーマット、および/または、伝送プロトコルに従って構成され得る。
図17は、カラービデオデータストリーム1704-1、深さビデオデータストリーム1706-1、およびメタデータストリーム1708-1が、キャプチャデバイス202-1からのストリームとして提供され、カラービデオデータストリーム1704-2、深さビデオデータストリーム1706-2、およびメタデータストリーム1708-2が、キャプチャデバイス202-2からのストリームとして提供され、カラービデオデータストリーム1704-n、深さビデオデータストリーム1706-n、およびメタデータストリーム1708-nが、キャプチャデバイス202-nからのストリームとして提供されるトランスポートストリーム1702の例を示す。
トランスポートストリーム(たとえば、トランスポートストリーム1702)でメディアプレーヤデバイス1602に送信または提供される2Dキャプチャ画像データは、適切な方式で、別個のカラーデータストリームおよび深さデータストリームとして提供され得る。例示するために、図18は、たとえばキャプチャデバイス202-2から仮想現実メディアプロバイダシステム1604によって獲得され得る例示的な表面データ1802を示す。図18に示すように、表面データ1802は、キャプチャデバイス202-2によってキャプチャされた3Dシーン206の一連の連続2Dカラーデータキャプチャ1804(たとえば、カラーデータストリームのフレーム)、および、キャプチャデバイス202-2によってキャプチャされたシーン206の一連の連続2D深さデータキャプチャ1806(たとえば、深さデータストリームのフレーム)を含み得る。一連の連続2Dカラーデータキャプチャ1804は、特定の時間シーケンス1808(たとえば、特定のリアルタイム期間、3Dシーン206に関連付けられた特定の仮想タイムライン等)中、キャプチャデバイス202-2の観測点204-2からの3Dシーン206におけるオブジェクト208のカラーデータを表し得る。一連の連続2D深さデータキャプチャ1806は、特定の時間シーケンス1808中、キャプチャデバイス202-2の観測点204-2からの3Dシーン206におけるオブジェクト208の深さデータを表し得る。
図18はまた、一連の連続2Dカラーデータキャプチャ1804に含まれる例示的な2Dカラーデータキャプチャ1810と、一連の連続2D深さデータキャプチャに含まれる例示的な2D深さデータキャプチャ1812とを示す。2Dカラーデータキャプチャ1810は、観測点204-2から見える(オブジェクト208の表面からのカラーデータを含む)3Dシーン206のビューを表し得るカラーデータを含み得る。カラーデータは、図18において画像として示されているが、カラーデータは、任意の適切な形式でキャプチャ、符号化、フォーマット、送信、および表示され得ることが理解されよう。たとえば、カラーデータは、標準的なビデオ符号化プロトコル、標準的な画像フォーマット等に従ってフォーマットされたデジタルデータであり得る。カラーデータは、仮想的な観測点204-2から見たように3Dシーン内に含まれるオブジェクトの(たとえば、カラー写真に類似した)カラー画像を表し得る。代替的に、カラーデータは、オブジェクトを表す(たとえば、白黒写真に類似した)グレースケール画像であり得る。
2D深さデータキャプチャ1812は、観測点204-2に関連付けられた空間内の点からのオブジェクト208の表面の深さデータを含み得る。カラーデータと同様に、2D深さデータキャプチャ412で表される深さデータは、観測点204-2の透視図から3Dシーン206内のオブジェクト208を描写し得る。しかしながら、オブジェクト208の目に見える外観を表す(すなわち、光がオブジェクト208の表面とどのように相互作用するのかをカラーまたはグレースケールで表す)のではなく、深さデータは、(たとえば、3Dシーン206内の他のオブジェクトと同様に)観測点204-2の位置に対するオブジェクト208の表面上の点の深さ(すなわち、距離または位置)を表し得る。カラーデータと同様に、深さデータは、任意の適切な形式でキャプチャ、符号化、フォーマット、送信、および表示され得る。たとえば、図示されるように、深さデータは、グレースケール画像データ(たとえば、深さデータ内で表される各ピクセルについて6または8ビット)によって表され得る。しかしながら、可視光がオブジェクト208の表面からどのように(すなわち、カラーデータで表されるように)反射するかを表すのではなく、深さデータのグレースケール画像は、画像内の各ピクセルについて、そのピクセルによって表される点が、観測点204-2の位置からどれだけ離れているのかを表し得る。たとえば、観測点204-2により近い点は、より暗いグレーの濃淡を表す値(たとえば、0b111111が黒を表す6ビット実施の場合、0b111111により近いバイナリ値)で表され得る。逆に、観測点204-2からさらに離れた点は、より明るいグレーの濃淡を表す値(たとえば、0b000000が白を表す6ビット実施の場合、0b000000により近いバイナリ値)で表され得る。
仮想現実コンテンツプロバイダシステム1604によって提供されるメタデータは、任意の適切な方式でフォーマットされ得る。特定の例では、メタデータは一連の連続メタデータキャプチャにフォーマットされ得る。一連の連続投影メタデータキャプチャに含まれる各メタデータキャプチャは、3Dシーンに関して特定の時点において特定のキャプチャデバイスに関連付けられたメタデータを含み得る。それに加えて、各メタデータキャプチャは、対応する2Dカラーデータキャプチャおよび対応する2D深さデータキャプチャと同期され得、そのため、2Dカラーデータおよび深さデータのメタデータとして(たとえば、同期2Dカラーのメタデータキャプチャまたはフレーム、および、深さデータキャプチャまたはフレームとして)称され得る。
図19は、仮想現実コンテンツプロバイダシステム1604によって提供され、メディアプレーヤデバイス1602によって受信され得るメタデータの例示的な実施1902を示している。実施1902は、特定の実施に役立ち得るように、JSONデータフォーマット、バイナリデータフォーマット、または他の任意の適切なデータフォーマットに準拠し得る。図19は、特定のキャプチャデバイス(たとえば、キャプチャデバイス202-1)に関連付けられたメタデータを定義するために使用され得る例示的なデータフィールドを示す。図19に示されたフィールドのおのおのの簡単な説明が提供される。
図19に示される例において「ストリームID」とラベル付けされたフィールドは、特定のキャプチャデバイスに関連付けられたカラービデオデータストリームの識別子と、深さビデオデータストリームの識別子とを取り込まれ得る。識別子は、文字列タイプ変数または他の任意の適切なデータタイプを使用して表され得る。識別子は、任意の適切なタイプのデータストリームのための任意の適切なフォーマットであり得る。たとえば、MPEGトランスポートストリームの場合、識別子は、MPEGトランスポートストリーム内のパケットのパケット識別子(「PID」)であり得る。
図19に示される例において「深さマッピング」とラベル付けされたフィールドは、キャプチャ機能106により最初に提供され、(たとえば、特定のキャプチャデバイスからの)表現可能な値の範囲の最小値の距離と、(たとえば、特定のキャプチャデバイスからの)表現可能な値の範囲の最大値の距離とをそれぞれ表す「近い」深さ値および「遠い」深さ値とを取り込まれ得る。「近い」深さ値および「遠い」深さ値は、データ値を現実世界の単位にマッピングし得、浮動小数点値または他の任意の適切なデータタイプで表され得、指定された深さ値に位置する近平面と遠平面とによって境界付けられる深さマッピング範囲のような深さマッピング範囲を表し得る。実施形態では、これは、
のようなフォーマットで、より一般化された「深さ復号」を含み得、ここで、
であり、キャプチャシステム(たとえば、図4におけるキャプチャデバイス202のような1つまたは複数のキャプチャデバイス)は、行列係数a,b,c,dを送信する。
図19に示される例において「3×4列主要変換行列」とラベル付けされたフィールドは、カラービデオデータストリームおよび深さビデオデータストリームに含まれるデータを、共通の仮想3D空間内の3D座標に変換するために、システム100によって使用される変換行列が取り込まれ得る。
図19に示される例において「FOV接線角」とラベル付けされたフィールドは、視野角または角度の接線(たとえば、タンレフト、タンライト、タントップ、およびタンボトム)に関して特定のキャプチャデバイスの焦点距離、中心点等に基づくもののように、視野または固有のキャプチャデバイスパラメータを示す情報が取り込まれ得る。特定の例では、メタデータは、追加的または代替的に、キャプチャデバイスおよび/またはキャプチャされた表面データに関連付けられた、線形および/または非線形の深さ視差に関連する、外部キャプチャデバイスパラメータおよび/または情報を含み得る。
図11に示す実施1102は、特定の例においてメタデータがメディアプレーヤデバイス210に表され提供され得る1つの手法を示している。他の例では、メタデータは、他の任意のフォーマットで表され、特定の実施に適切であり得るような任意の追加のまたは代替の情報を含み得る。
図16に戻って示すように、メディアプレーヤデバイス1602は、2Dカラーデータおよび深さデータを表すデータと、メタデータとを(たとえば、トランスポートストリームにおいて)受信し、受信したデータを、本明細書に記載されたように処理して、仮想現実コンテンツを生成することができる任意のデバイスを含むか、この任意のデバイスによって実施され得る。メディアプレーヤデバイス1602は、本明細書に記載されたような部分3Dメッシュを生成および使用して、仮想3D空間内の選択された任意の視点から仮想3D空間の画像ビューをレンダリングおよび提示し得、この画像ビューは、仮想3D空間の透視視野(たとえば、キャプチャされた3Dシーンを表す仮想現実世界の透視図)であり得る。図16に示されるように、メディアプレーヤデバイス1602は、ユーザ1608によって操作され得る。ユーザ1608が、仮想3D空間で表される仮想現実世界を体験すると、メディアプレーヤデバイス1602は、ユーザ1608からのユーザ入力を検出し、ユーザ入力に基づいて、レンダリングおよび提示される仮想3D空間の画像ビューを動的に更新し得る。
たとえば、仮想現実世界内の任意の視点からの視野は、ユーザ1608が仮想現実世界の周りを容易かつ自然に見渡すことができる画像ビューを提供し得る。視野は、メディアプレーヤデバイス1602によって(たとえば、メディアプレーヤデバイス1602のディスプレイスクリーン上に)提示され得、仮想現実世界内のユーザ1608の視点を囲むオブジェクトを描写するビデオを含み得る。それに加えて、ユーザ1608が仮想現実世界を体験すると、視野は、ユーザ1608によって提供されるユーザ入力に応答して動的に変化し得る。たとえば、メディアプレーヤデバイス1602は、(たとえば、視野が提示されるディスプレイスクリーンを移動または回転させる)ユーザ入力を検出し得る。それに応じて、視野は、前の視点から見たオブジェクトの代わりに、異なるオブジェクトおよび/または異なる視点(たとえば、ディスプレイスクリーンの位置に対応する視点)から見たオブジェクトを表示し得る。
ユーザ1608が仮想3D空間の画像ビューを体験することを容易にするために、メディアプレーヤデバイス1602は、仮想現実世界の画像ビューを表示され得る少なくとも1つのディスプレイスクリーン(たとえば、ヘッドマウント仮想現実デバイスに組み込まれたヘッドマウントディスプレイスクリーン、または、カードボード装置のような装置を使用してユーザの頭部に取り付けられたモバイルデバイスのディスプレイスクリーン)を含み得るか、関連付けられ得る。メディアプレーヤデバイス1602はまた、本明細書に記載されたシステム100の動作のいずれかに従って、メディアプレーヤデバイス1602のディスプレイスクリーン上に、仮想現実世界のビューをレンダリングおよび提示するために、仮想現実世界を表す2Dカラーデータおよび深さデータを、対応するメタデータとともに受信し、維持し、および/または、処理するように構成されたソフトウェアを含み得る。たとえば、メディアプレーヤデバイス1602は、仮想現実世界を表すデータを処理し、ディスプレイ上に提示するように構成された専用のスタンドアロンソフトウェアアプリケーション(たとえば、モバイルアプリケーション)を含み得る。他の例では、仮想現実世界の特定のビューを提示するために使用されるソフトウェアは、標準Webブラウザアプリケーションのような専用ではないソフトウェアを含み得る。
追加的または代替的に、メディアプレーヤデバイス1602は、2Dカラーデータ、深さデータ、およびメタデータの受信、復号、逆多重化、および/または処理を容易にするように構成されたハードウェア、ファームウェア、および/またはソフトウェアを含み得る。たとえば、メディアプレーヤデバイス1602は、仮想現実メディアプロバイダシステム1604から受信した2Dカラーデータ、深さデータ、およびメタデータに関連付けられた任意の適切な復号および/または逆多重化動作を実行し得る復号/逆多重化システム1610を含み得る。特定の例では、復号/逆多重化システム1610は、専用のビデオ復号ハードウェア(たとえば、1つまたは複数の専用のビデオデコーダ)およびプログラム可能なGPUを有するグラフィックカードを含み得る。グラフィックカードは、受信したデータを復号できる限られた数のデコーダを含み得る。したがって、特定の例では、メディアプレーヤデバイス1602によって受信されるデータ(たとえば、メディアプレーヤデバイス1602によって受信されるトランスポートストリームに含まれるデータ)は、仮想現実メディアプロバイダシステム1604によって、(たとえば、トランスポートストリームに含まれるストリームの数を制限することにより)メディアプレーヤデバイス1602の特定のハードウェア制約に合わせて調整され得る。
復号/逆多重化システム1610は、任意の適切な方式で、システム100に通信可能に結合され得る。したがって、特定の例では、システム100は、復号/逆多重化システム1610から、逆多重化および/または復号された2Dキャプチャ画像データおよび投影データを受信し、受信したデータを、本明細書に記載されたように処理して、仮想現実コンテンツをレンダリングし得る。システム100および1610は、図16では別個のシステムであるように示されているが、システム100および1610は、単一のシステム等、より少ないシステムに組み合わされ得るか、または、特定の実施に役立ち得るように、より多くのシステムに分割され得ることが認識されるであろう。
メディアプレーヤデバイス1602は、いくつかの異なるフォームファクタの1つを採用し得る。たとえば、メディアプレーヤデバイス1602は、ヘッドマウントディスプレイスクリーンを含むヘッドマウント仮想現実デバイス(たとえば、仮想現実ゲームデバイス)を含み得るか、このヘッドマウント仮想現実デバイスによって実施され、パーソナルコンピュータデバイス(たとえば、デスクトップコンピュータ、ラップトップコンピュータ等)を含み得るか、このパーソナルコンピュータデバイスによって実施され、モバイルまたは無線デバイス(たとえば、スマートフォン、タブレットデバイス、モバイルリーダ等)を含み得るか、このモバイルまたは無線デバイスによって実施され、または、2Dカラーデータ、深さデータ、およびメタデータの受信および仮想現実コンテンツのレンダリングおよび提示を容易にするための特定の実施に役立ち得る他の任意のデバイスまたはデバイスの構成を含み得るか、この任意のデバイスまたはデバイスの構成によって実施され得る。異なるタイプのメディアプレーヤデバイス(たとえば、ヘッドマウント仮想現実デバイス、パーソナルコンピュータデバイス、モバイルデバイス等)は、ユーザ1608のために異なる没入レベルを有する、異なるタイプの仮想現実体験を提供し得る。
特定のメディアプレーヤデバイスの例を説明したが、これらの例は例示であり、限定するものではない。メディアプレーヤデバイスは、本明細書に記載された原理に従って、2Dカラーデータ、深さデータ、およびメタデータを受信し、2Dカラーデータ、深さデータ、およびメタデータを使用して、仮想3D空間の画像ビューをレンダリングするように構成された任意の適切なデバイスおよび/またはデバイスの構成を含み得る。たとえば、メディアプレーヤデバイスは、テザーデバイス構成(たとえば、テザーヘッドセットデバイス)、または非テザーデバイス構成(たとえば、処理デバイスからテザーされていないディスプレイスクリーン)を含み得る。別の例として、ヘッドマウント仮想現実メディアプレーヤデバイスまたは他のメディアプレーヤデバイスは、ウェアラブルコントローラ(たとえば、リングコントローラ)および/またはハンドヘルドコントローラのような仮想現実コントローラと連携して使用され得る。
図16は、システム100を、メディアプレーヤデバイス1602の一部として示しているが、システム100の1つまたは複数の機能は、代替実施において他のコンピューティングデバイスに組み込まれるか、他のコンピューティングデバイスにわたって分散され得ることが理解される。たとえば、レンダリング機能102によって実行される動作の1つまたは複数は、仮想現実メディアプロバイダシステム1604および/またはメディアプレーヤデバイス1602とは別個の別のシステムに関連付けられたコンピューティングデバイス(たとえば、サーバ)によって実行され得る。それに加えて、特定の実施では、記憶機能104が、メディアプレーヤデバイス1602から遠隔に(たとえば、クラウドベースの記憶機能として)配置され得る。
図20は、3Dシーンの2Dキャプチャ画像に基づいて、仮想現実コンテンツをレンダリングするための例示的な方法2000を示している。図20は、1つの実施形態による例示的な動作を示しているが、他の実施形態は、図20に示す動作のいずれかを省略、追加、並べ替え、および/または修正し得る。図20に示された動作の1つまたは複数は、レンダリングシステム100および/またはその任意の実施によって実行され得る。
動作2002において、仮想現実コンテンツレンダリングシステム(たとえば、仮想現実コンテンツレンダリングシステム100)は、3Dシーンに関して異なる観測点に配置された複数のキャプチャデバイスによってキャプチャされた2Dカラーデータおよび深さデータを受信し得る。動作2002は、本明細書で説明されている手法のいずれかで実行され得る。
動作2004において、仮想現実コンテンツレンダリングシステムは、2Dカラーデータおよび深さデータのメタデータを受信し得る。動作2004は、本明細書で記載されている手法のいずれかで実行され得る。
動作2006において、仮想現実コンテンツレンダリングシステムは、複数のキャプチャデバイスに含まれる各それぞれのキャプチャデバイスに関連付けられた各観測点について、メタデータおよび深さデータに基づいて、仮想3D空間に投影される部分3Dメッシュを生成し、仮想3D空間内の3Dシーンの部分的な仮想表現を作成し得る。動作2006は、本明細書に記載された手法のいずれかで実行され得る。
動作2008において、仮想現実コンテンツレンダリングシステムは、仮想3D空間に投影される部分3Dメッシュに基づいて、仮想3D空間内の任意の視点から、仮想3D空間の画像ビューを生成し得る。特定の例では、画像ビューを生成することは、仮想3D空間に投影される部分3Dメッシュを蓄積することと、2Dカラーデータに基づいて、部分3Dメッシュのカラーサンプルをブレンドし、仮想3Dの画像ビューを形成することを含み得る。動作2008は、本明細書に記載された手法のいずれかで実行され得る。
特定の例では、本明細書に記載されたシステム100の1つまたは複数の動作は、GPUおよび/またはグラフィックカードのグラフィックパイプライン(たとえば、OpenGLレンダリングパイプライン)に従って、その一部として、および/または、その一部を使用して実行され得る。システム100のそのような実施は、固定機能、ハードウェア加速機能、および/またはGPUおよび/またはグラフィックカードのバッファ(たとえば、固定機能ラスタライゼーション、ハードウェア加速された深さテスト、深さバッファ等)を含む1つまたは複数の能力、機能、および/またはGPUおよび/またはグラフィックカードのリソース(たとえば、2Dデータを表すように設計された既存のビデオコーデック)を活用し得る。
特定の例では、グラフィックパイプラインは、少なくとも頂点処理、ラスタライゼーション、およびフラグメント処理ステージを含み得、システム100の1つまたは複数の動作は、グラフィックパイプラインのこれらのステージ内で実行され得る。一例として、システム100は、本明細書に記載されたように、グラフィックパイプラインの頂点処理ステージ内で部分3Dメッシュを生成し得る。別の例として、システム100は、グラフィックパイプラインの頂点処理ステージ内の頂点シェーダを使用して、本明細書に記載されたように、仮想3D空間に部分3Dメッシュを生成するために2D入力メッシュを投影し得る。別の例として、システム100は、部分3Dメッシュの無関係なプリミティブを除去し、および/または、本明細書に記載されたように、部分3Dメッシュのプリミティブのブレンド重み付けと、グラフィックパイプラインの頂点処理ステージ内で幾何学シェーダおよび/またはテッセレーションシェーダを使用した事前ラスタライゼーションと、および/またはグラフィックパイプラインのフラグメント処理ステージ内でフラグメントシェーダを使用した事後ラスタライゼーションとを決定し得る。別の例として、システム100は、本明細書に記載されたように、グラフィックパイプラインのフラグメント処理ステージ内でフラグメントシェーダを使用してラスタライズ後のカラーサンプルをサンプリングおよびブレンドし得る。
特定の例では、システム100は、グラフィックパイプラインを活用する手法で、データセットに対して多数のパス(たとえば、キャプチャフレームのシーケンス内の1つのフレームのために、2Dカラーデータ、深さデータ、およびメタデータに対して多数のパス)を実行し得る。たとえば、システム100は、中にカラーサンプルを蓄積する蓄積領域を確立するために、深さ事前パスを実行することを、データセットに対して一度繰り返し、蓄積領域内にカラーサンプルを蓄積するために、データセットに対して再び繰り返し得る。システム100は、表示用に出力され得る画像ビューを形成するために、カラーサンプルをブレンドすることを、蓄積されたカラーサンプルに対して反復し得る。
図21は、本明細書に記載された原理に従って、3Dシーンの2Dキャプチャ画像に基づいて仮想現実コンテンツをレンダリングするための例示的な方法を示す。図21は、1つの実施形態に従う例示的な動作を示しているが、他の実施形態は、図21に示す動作のいずれかを省略、追加、並べ替え、および/または修正し得る。図21に示された動作の1つまたは複数は、仮想現実コンテンツレンダリングシステム(たとえば、仮想現実コンテンツレンダリングシステム100)によって、および/または、それらの実施または組合せによって実行され得る。
動作2102において、仮想現実コンテンツレンダリングシステム(たとえば、仮想現実コンテンツレンダリングシステム100)は、3Dシーンに関して異なる観測点に配置された複数のキャプチャデバイスによってキャプチャされた2Dカラーデータおよび深さデータを受信し得る。動作2102は、本明細書に記載された手法のいずれかで実行され得る。
動作2104において、仮想現実コンテンツレンダリングシステムは、2Dカラーデータおよび深さデータのメタデータを受信し得る。動作2104は、本明細書に記載された手法のいずれかで実行され得る。
動作2106において、仮想現実コンテンツレンダリングシステムは、深さパス(たとえば、深さ事前パス)を実行し得る。深さパスは、本明細書に記載されたように、仮想現実コンテンツレンダリングシステムが、受信した深さデータ(たとえば、3Dシーン内のオブジェクトの位置を表すキャプチャされた深さデータ)およびメタデータ(たとえば、観測点情報)を、共通の仮想3D空間の3D座標に変換し、観測点の2D入力メッシュを、仮想3D空間における3D座標へ投影し、仮想3D空間に投影される部分3Dメッシュを形成することを含み得る。深さパスはまた、閉塞されたサンプルを識別および省略するために、仮想現実コンテンツレンダリングシステムが、仮想3D空間内の選択された任意の視点の透視図から、たとえば深さテストによって、深さデータを集めることを含み得る。
深さパスはまた、仮想現実コンテンツレンダリングシステムが、仮想3D空間内の選択された任意の視点から、カラーサンプルが蓄積される蓄積範囲を決定することを含み得る。仮想現実コンテンツレンダリングシステムは、本明細書に記載されたように、選択された任意の視点から透視図に沿って平行移動することにより、選択された任意の視点に最も近い深さ値をオフセットすることにより蓄積範囲を決定し得る。仮想現実コンテンツレンダリングシステムは、蓄積パスにおける使用のために、蓄積範囲の遠値を表すデータのように、蓄積範囲を表すデータを記憶し得る。
深さパスは、深さテストと深さ書き込み用に設定できるが、カラー書き込みは無効である。したがって、仮想現実コンテンツレンダリングシステムは、深さパス中にデータを深さバッファに書き込み得る。深さバッファに書き込まれたデータは、所定の深さオフセット(すなわち、蓄積範囲の遠値)までオフセットされた最前面の深さサンプル値を含み得る。仮想現実コンテンツレンダリングシステムは、蓄積パスの前に深さバッファをクリアしないように構成され得、これによって、深さバッファは、蓄積パスで実行される固定機能深さテストに入力を提供し得る。これは、決定された蓄積範囲外のサンプル(たとえば、蓄積範囲の遠値を超えるサンプル)のハードウェア加速された却下を提供し得、蓄積範囲外のサンプル(たとえば、深さオフセットを超えるサンプル)は、ラスタライゼーションから出力されない。蓄積範囲内のサンプル(すなわち、蓄積範囲の遠値の前にあるサンプル)が選択され、描画された画像ビューに寄与する。
動作2108において、仮想現実コンテンツレンダリングシステムは、蓄積パスを実行し得る。蓄積パスは、仮想現実コンテンツレンダリングシステムが、本明細書に記載されたように、受信した深さデータ(たとえば、3Dシーン内のオブジェクトの位置を表すキャプチャされた深さデータ)およびメタデータ(たとえば、観測点視野座標)を、共通の仮想3D空間内の3D座標に変換し、観測点の2D入力メッシュを仮想3D空間における3D座標に投影し、仮想3D空間に投影される部分3Dメッシュを形成することを含み得る。蓄積パスはまた、閉塞されたサンプルを識別および省略するために、仮想現実コンテンツレンダリングシステムが、仮想3D空間内の選択された任意の視点の透視図から、たとえば深さテストによって、深さデータを集めることを含み得る。蓄積パスはまた、仮想現実コンテンツレンダリングシステムが、本明細書に記載されたように、部分3Dメッシュのプリミティブのブレンド重み付けを決定することを含み得る。
蓄積パスはまた、仮想現実コンテンツレンダリングシステムが、本明細書に記載するように、仮想3D空間内の選択された任意の視点から投影される部分3Dメッシュの透視画像ビューをラスタライズし、2Dカラーデータから(たとえば、入力2D座標におけるカラービデオストリームから)、深さパスで確立された蓄積領域内にある投影される部分3Dメッシュの3D座標のカラーサンプルを蓄積することを含み得る。透視画像ビューのカラーサンプルは、本明細書に記載されたようにフレームバッファに蓄積され得る。特定の例では、蓄積は、加算ブレンドを使用して、すべてのフラグメント出力の合計を蓄積し得る。このブレンドは、特定の実施では、固定機能動作であり得る。蓄積パスで決定されたブレンド重み付けを使用して、蓄積されたカラーサンプルを乗算し得る。これらは、ともに加算され、本明細書に記載されたように、すべてのフラグメントの重み付け合計を決定し得る。
蓄積パスは、深さテストとカラー書き込み用に設定できるが、深さ書き込みは無効である。したがって、本明細書に記載されたように、仮想現実コンテンツレンダリングシステムは、蓄積パス中に蓄積されたカラーサンプルデータを、中間の高精度フレームバッファに書き込み得る。
動作2110において、仮想現実コンテンツレンダリングシステムは、重み付け平均分割パスを実行し得る。重み付け平均分割パスは、仮想現実コンテンツレンダリングシステムが、蓄積された重み付けカラーサンプルを、ブレンド重み付けの合計で除し、蓄積カラーサンプルの重み付け平均を決定することを含み得る。仮想現実コンテンツレンダリングシステムは、ステップ2112において、決定された重み付け平均のフルスクリーンクワッド(たとえば、クリップ座標においてx/y[-1,1]をカバーするクワッド)を出力(たとえば、ディスプレイ)フレームバッファに描画することができる。出力フレームバッファ内のコンテンツは、本明細書に記載されたように、部分3Dメッシュを生成、蓄積、およびブレンドする仮想現実コンテンツレンダリングシステムによって形成された仮想3D空間の透視画像ビューを表示するために、仮想現実コンテンツレンダリングシステムによって、および/または、仮想現実コンテンツレンダリングシステムを実施するメディアプレーヤデバイスによって使用され得る。
特定の例では、方法2000または方法2100は、フレームの時間シーケンス内のフレームに対して実行され得る。フレームは、2Dカラーデータフレーム、深さデータフレーム、およびフレームに関連付けられた(たとえば、フレームに対応する時点に関連付けられた)メタデータを含み得る。したがって、方法2000または方法2100は、キャプチャされた3Dシーンを表す仮想3D空間の動的透視画像ビューのビデオ出力を作成するために、フレームの時間シーケンス内の他の各フレームに対して繰り返され得る。
特定の実施形態では、本明細書に記載されたシステム、コンポーネント、および/または処理の1つまたは複数は、1つまたは複数の適切に構成されたコンピューティングデバイスによって実施および/または実行され得る。この目的のために、前述されたシステムおよび/またはコンポーネントの1つまたは複数は、本明細書に記載された処理の1つまたは複数を実行するように構成された少なくとも1つの非一時的なコンピュータ可読媒体上で具体化される任意のコンピュータハードウェアおよび/またはコンピュータによって実施される命令(たとえば、ソフトウェア)を含むか、この命令によって実施され得る。特に、システムコンポーネントは、1つの物理的コンピューティングデバイス上で実施され得るか、または、複数の物理的コンピューティングデバイス上で実施され得る。したがって、システムコンポーネントは、任意の数のコンピューティングデバイスを含むことができ、任意の数のコンピュータオペレーティングシステムを使用し得る。
特定の実施形態では、本明細書に記載された処理の1つまたは複数は、非一時的なコンピュータ可読媒体に具体化され、1つまたは複数のコンピューティングデバイスによって実行可能な命令として少なくとも部分的に実施され得る。一般に、プロセッサ(たとえば、マイクロプロセッサ)は、非一時的なコンピュータ可読媒体(たとえば、メモリ等)から命令を受け取り、それらの命令を実行し、それによって、本明細書に記載された処理の1つまたは複数を含む1つまたは複数の処理を実行する。そのような命令は、様々な既知のコンピュータ可読媒体のいずれかを使用して記憶および/または送信され得る。
(プロセッサ可読媒体とも称される)コンピュータ可読媒体は、コンピュータによって(たとえば、コンピュータのプロセッサによって)読み取られ得るデータ(たとえば、命令)の提供に関与する任意の非一時的な媒体を含む。そのような媒体は、不揮発性媒体および/または揮発性媒体を含むがこれらに限定されない多くの形態を採り得る。不揮発性媒体は、たとえば、光ディスクまたは磁気ディスク、およびその他の持続性メモリを含み得る。揮発性媒体は、たとえば、一般にメインメモリを構成するダイナミックランダムアクセスメモリ(「DRAM」)を含み得る。コンピュータ可読媒体の一般的な形式は、たとえば、ディスク、ハードディスク、磁気テープ、他の任意の磁気媒体、コンパクトディスク読取専用メモリ(「CD-ROM」)、デジタルビデオディスク(「DVD」)、他の任意の光学媒体、ランダムアクセスメモリ(「RAM」)、プログラム可能な読取専用メモリ(「PROM」)、電気的に消去可能なプログラム可能な読取専用メモリ(「EPROM」)、FLASH-EEPROM、他の任意のメモリチップまたはカートリッジ、またはコンピュータが読み取り可能な他の任意の有形媒体を含む。
図22は、本明細書に記載された処理の1つまたは複数を実行するように具体的に構成され得る例示的なコンピューティングデバイス2200を示す。図22に示すように、コンピューティングデバイス2200は、通信インフラストラクチャ2212を介して通信可能に接続された通信インターフェース2202、プロセッサ2204、記憶デバイス2206、入力/出力(「I/O」)モジュール2208、およびグラフィックカード2210を含み得る。例示的なコンピューティングデバイス2200が図22に示されているが、図22に例示されるコンポーネントは、限定することは意図されていない。追加のまたは代替のコンポーネントが、他の実施形態において使用され得る。次に、図22に示すコンピューティングデバイス2200のコンポーネントが、さらに詳細に記載される。
通信インターフェース2202は、1つまたは複数のコンピューティングデバイスと通信するように構成され得る。通信インターフェース2202の例は、(ネットワークインターフェースカードのような)有線ネットワークインターフェース、(無線ネットワークインターフェースカードのような)無線ネットワークインターフェース、モデム、オーディオ/ビデオ接続、および他の任意の適切なインターフェースを含むが、これらに限定されない。
プロセッサ2204は、一般に、本明細書に記載された命令、処理、および/または動作の1つまたは複数のデータを処理、または実行を解釈、実行、および/または指示することができる処理ユニット(たとえば、中央処理ユニット)の任意のタイプまたは形態を表す。プロセッサ2204は、1つまたは複数のアプリケーション2214、または、記憶デバイス2206または別のコンピュータ可読媒体に記憶され得るような他のコンピュータ実行可能命令に従って動作の実行を指示し得る。
記憶デバイス2206は、1つまたは複数のデータ記憶媒体、デバイス、または構成を含み得、データ記憶媒体および/またはデバイスの任意のタイプ、形態、および組合せを適用し得る。たとえば、記憶デバイス2206は、ハードドライブ、ネットワークドライブ、フラッシュドライブ、磁気ディスク、光ディスク、RAM、ダイナミックRAM、他の不揮発性および/または揮発性データ記憶ユニット、またはその組合せまたは部分組合せを含み得るが、これらに限定されない。本明細書に記載されたデータを含む電子データは、一時的および/または永久に記憶デバイス2206に記憶され得る。たとえば、プロセッサ2204に対して、本明細書に記載された動作のいずれかを実行するよう指示するように構成された1つまたは複数の実行可能アプリケーション2214を表すデータが、記憶デバイス2206内に記憶され得る。いくつかの例では、データは、記憶デバイス2206内に存在する1つまたは複数のデータベースに配置され得る。特定の例では、記憶デバイス2206は、表面データ、メタデータ、データストリーム、ビデオストリーム、トランスポートストリーム、および/または、機能102によって受信、生成、管理、維持、使用され、および/または、機能102へ送信される、他の任意のデータを維持し得る。記憶デバイス2206はさらに、本明細書に記載された動作の1つまたは複数を実行するために機能102によって使用され得るような他の任意のデータを含み得る。
I/Oモジュール2208は、ユーザ入力を受信し、ユーザ出力を提供するように構成された1つまたは複数のI/Oモジュールを含み得る。単一の仮想現実体験の入力を受信するために、1つまたは複数のI/Oモジュールが使用され得る。I/Oモジュール2208は、入力機能および出力機能をサポートする任意のハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せを含み得る。たとえば、I/Oモジュール2208は、キーボードまたはキーパッド、タッチスクリーンコンポーネント(たとえば、タッチスクリーンディスプレイ)、受信機(たとえば、RFまたは赤外線受信機)、動きセンサ、および/または1つまたは複数の入力ボタンを含むが、これらに限定されない、ユーザ入力をキャプチャするためのハードウェアおよび/またはソフトウェアを含み得る。
I/Oモジュール2208は、グラフィックエンジン、ディスプレイ(たとえば、ディスプレイスクリーン)、1つまたは複数の出力ドライバ(たとえば、ディスプレイドライバ)、1つまたは複数のオーディオスピーカ、および1つまたは複数のオーディオドライバを含むがこれらに限定されない、出力をユーザに提示するための1つまたは複数のデバイスを含み得る。特定の実施形態では、I/Oモジュール2208は、ユーザに提示するためにグラフィックデータをディスプレイに提供するように構成される。グラフィックデータは、特定の実施に役立ち得るように、1つまたは複数のグラフィックユーザインターフェースおよび/または任意の他のグラフィックコンテンツを表し得る。I/Oモジュール2208は、特定の実施から省略され得る。
いくつかの例では、本明細書に記載された機能のいずれかは、コンピューティングデバイス2200の1つまたは複数のコンポーネントによって、またはその内部で実施され得る。たとえば、記憶デバイス2206内に存在する1つまたは複数のアプリケーション2214は、プロセッサ2204に対して、仮想現実コンテンツレンダリングシステム100(図1参照)のレンダリング機能102に関連付けられた1つまたは複数の処理または機能を実行するように指示するように構成され得る。あるいは、記憶デバイス2206内に存在する1つまたは複数のアプリケーション2214は、プロセッサ2204に対して、データ復号/逆多重化システム1610(図16参照)に関連付けられた1つまたは複数の処理または機能を実行するよう指示するように構成され得る。同様に、システム100の記憶機能104は、記憶デバイス2206によって、または記憶デバイス2206内で実施され得る。
グラフィックカード2210は、専用のビデオ復号ハードウェア(たとえば、1つまたは複数の専用のビデオデコーダ)およびプログラム可能なGPU2216を有する任意の適切なグラフィックカード(たとえば、市販のグラフィックカード)を含み得る。特定の実施形態では、グラフィックカード2210は、追加のコンポーネントを含み得る。グラフィックカード2210および/またはGPU2216は、本明細書に記載された例示的な動作の1つまたは複数を実行する際にプロセッサ2204を実行および/または支援するように構成され得る。グラフィックカード2210は、特定の実施に適し得るように、任意の適切な数のグラフィックカードおよび/またはGPUを含み得る。
前述した実施形態が、個人によって提供された個人情報を収集、記憶、および/または使用する限り、そのような情報は、個人情報の保護に関して適用されるすべての法律に従って使用されるものとすることを理解されたい。それに加えて、このような情報の収集、記憶、および使用は、たとえば、状況および情報のタイプに応じて適切であり得る周知の「オプトイン」または「オプトアウト」処理を通じて、そのような活動に対する個人の同意の対象となり得る。個人情報の記憶および使用は、たとえば、特に機密情報の様々な暗号化および匿名化技術を通じて、情報のタイプを反映した安全な方式で適切に行われ得る。
前述の記載では、添付の図面を参照して様々な例示的な実施形態が記載された。しかしながら、添付の特許請求の範囲に記載される本発明の範囲から逸脱することなく、様々な修正および変更がそれに行われ、追加の実施形態が実施され得ることが明らかであろう。たとえば、本明細書に記載された1つの実施形態の特定の特徴は、本明細書に記載された別の実施形態の特徴と組み合わされ得るか、または置換され得る。したがって、記載および図面は、限定的な意味ではなく、例示的な意味と見なされるべきである。
なお、一側面において本開示は以下の発明を包含する。
(発明1)
方法であって、
3次元(「3D」)シーンに関して異なる観測点に配置された複数のキャプチャデバイスによってキャプチャされた2次元(「2D」)カラーデータおよび深さデータを、仮想現実コンテンツレンダリングシステムによって受信することと、
前記2Dカラーデータおよび前記深さデータのメタデータを、前記仮想現実コンテンツレンダリングシステムによって受信することと、
前記複数のキャプチャデバイスに含まれる各それぞれのキャプチャデバイスに関連付けられた各観測点について、仮想3D空間における前記3Dシーンの部分的な表現を作成するために、前記仮想3D空間に投影される部分3Dメッシュを、前記メタデータおよび前記深さデータに基づいて、前記仮想現実コンテンツレンダリングシステムによって生成することと、
前記仮想3D空間に投影される前記部分3Dメッシュに基づいて、前記仮想3D空間内の任意の視点から、前記仮想現実コンテンツレンダリングシステムによって前記仮想3D空間の画像ビューを生成することとを備え、前記画像ビューを生成することは、
前記仮想3D空間に投影される前記部分3Dメッシュを蓄積することと、
前記2Dカラーデータに基づいて、前記部分3Dメッシュのカラーサンプルをブレンドして、前記仮想3D空間の前記画像ビューを形成することとを備えた、方法。
(発明2)
前記複数のキャプチャデバイスに含まれる各それぞれのキャプチャデバイスに関連付けられた各観測点について、前記部分3Dメッシュを生成することは、
前記複数のキャプチャデバイスに含まれる各それぞれのキャプチャデバイスに関連付けられた各観測点について、前記仮想3D空間における前記部分3Dメッシュのプリミティブの頂点の3D座標を作成するために、前記深さデータに基づいて、前記仮想3D空間内の深さに対して、透視線に沿って2D入力メッシュを投影することを備えた、発明1に記載の方法。
(発明3)
前記複数のキャプチャデバイスに含まれる各それぞれのキャプチャデバイスに関連付けられた各観測点について、前記部分3Dメッシュを生成することはさらに、
各部分3Dメッシュについて、前記部分3Dメッシュの前記プリミティブの1つまたは複数を、無関係なプリミティブとして識別することと、
前記識別された無関係なプリミティブを、各部分3Dメッシュから削除することとを備えた、発明2に記載の方法。
(発明4)
各部分3Dメッシュについて、前記部分3Dメッシュの前記プリミティブの1つまたは複数を、無関係なプリミティブとして識別することは、
所定の深さ変化しきい値を超える深さ変化を有する第1のプリミティブに少なくとも部分的に基づいて、前記部分3Dメッシュの前記第1のプリミティブを、無関係なプリミティブとして識別することと、
前記部分3Dメッシュに関連付けられた前記それぞれの観測点に面していない表面を有する第2のプリミティブに少なくとも部分的に基づいて、前記部分3Dメッシュの前記第2のプリミティブを、無関係なプリミティブとして識別することと、
所定の近平面または所定の遠平面の範囲外にある第3のプリミティブに少なくとも部分的に基づいて、前記部分3Dメッシュの前記第3のプリミティブを、無関係なプリミティブとして識別することとのうちの少なくとも1つを備えた、発明3に記載の方法。
(発明5)
前記部分3Dメッシュの前記カラーサンプルをブレンドして、前記仮想3D空間の前記画像ビューを形成することは、
前記部分3Dメッシュの前記プリミティブのブレンド重み付けを決定することと、
前記部分3Dメッシュのプリミティブの前記決定されたブレンド重み付けに基づいて、前記部分3Dメッシュの前記カラーサンプルを重み付けることと、
前記部分3Dメッシュの重複セクションに含まれる重畳されたプリミティブの、前記重み付けられたカラーサンプルの重み付け平均を決定することとを備えた、発明2に記載の方法。
(発明6)
前記仮想3D空間に投影される前記部分3Dメッシュを蓄積することは、グラフィック処理ユニット(「GPU」)のフレームバッファに前記部分3Dメッシュの前記カラーサンプルを蓄積することを備え、
前記部分3Dメッシュの前記カラーサンプルをブレンドして、前記仮想3D空間の前記画像ビューを形成することは、前記部分3Dメッシュの前記カラーサンプルを、前記GPUの前記フレームバッファに追加的にブレンドすることを備えた、発明1に記載の方法。
(発明7)
前記仮想3D空間に投影された前記部分3Dメッシュに基づいて、前記仮想3D空間内の前記任意の視点から、前記仮想現実コンテンツレンダリングシステムによって、蓄積領域を決定することをさらに備え、
前記部分3Dメッシュを蓄積し、前記部分3Dメッシュの前記カラーサンプルをブレンドして、前記仮想3D空間の前記画像ビューを形成することは、前記蓄積領域内にあるフラグメントについてのみ実行される、発明1に記載の方法。
(発明8)
少なくとも1つの非一時的なコンピュータ可読媒体におけるコンピュータ実行可能な命令として具体化される、発明1に記載の方法。
(発明9)
非一時的なコンピュータ可読媒体であって、実行された場合、コンピューティングデバイスの少なくとも1つのプロセッサに対して、
3次元(「3D」)シーンに関して異なる観測点に配置された複数のキャプチャデバイスによってキャプチャされた2次元(「2D」)カラーデータおよび深さデータを受信することと、
前記2Dカラーデータおよび前記深さデータのメタデータを受信することと、
前記複数のキャプチャデバイスに含まれる各それぞれのキャプチャデバイスに関連付けられた各観測点について、仮想3D空間における前記3Dシーンの部分的な表現を作成するために、前記仮想3D空間に投影される部分3Dメッシュを、前記メタデータおよび前記深さデータに基づいて生成することと、
前記仮想3D空間に投影される前記部分3Dメッシュに基づいて、前記仮想3D空間内の任意の視点から、前記仮想3D空間の画像ビューを生成することであって、前記画像ビューを生成することは、前記2Dカラーデータに基づいて、前記部分3Dメッシュのカラーサンプルをブレンドして、前記仮想3D空間の前記画像ビューを形成することを備えた、生成することと、を行うように指示する命令を記憶した、非一時的なコンピュータ可読媒体。
(発明10)
前記複数のキャプチャデバイスに含まれる各それぞれのキャプチャデバイスに関連付けられた各観測点について、前記部分3Dメッシュを生成することは、
実行された場合、前記少なくとも1つのプロセッサに対して、前記複数のキャプチャデバイスに含まれる各それぞれのキャプチャデバイスに関連付けられた各観測点について、前記仮想3D空間における前記部分3Dメッシュのプリミティブの頂点の3D座標を作成するために、前記深さデータに基づいて、前記仮想3D空間内の深さに対して、透視線に沿って2D入力メッシュを投影するように指示する命令を備えた、発明9に記載の非一時的なコンピュータ可読媒体。
(発明11)
前記複数のキャプチャデバイスに含まれる各それぞれのキャプチャデバイスに関連付けられた各観測点について、前記部分3Dメッシュを生成することはさらに、実行された場合、前記少なくとも1つのプロセッサに対して、
各部分3Dメッシュについて、前記部分3Dメッシュの前記プリミティブの1つまたは複数を、無関係なプリミティブとして識別することと、
前記識別された無関係なプリミティブを、各部分3Dメッシュから削除することと、を行うように指示する命令を備えた、発明10に記載の非一時的なコンピュータ可読媒体。
(発明12)
前記部分3Dメッシュの前記カラーサンプルをブレンドして、前記仮想3D空間の前記画像ビューを形成することは、実行された場合、前記少なくとも1つのプロセッサに対して、
前記部分3Dメッシュの前記プリミティブのブレンド重み付けを決定することと、
前記部分3Dメッシュのプリミティブの前記決定されたブレンド重み付けに基づいて、前記部分3Dメッシュの前記カラーサンプルを重み付けることと、
前記部分3Dメッシュの重複エリアに含まれる重畳されたプリミティブの、前記重み付けられたカラーサンプルの重み付け平均を決定することと、を行うように指示する命令を備えた、発明10に記載の非一時的なコンピュータ可読媒体。
(発明13)
前記少なくとも1つのプロセッサは、グラフィック処理ユニット(「GPU」)を備え、
前記部分3Dメッシュの前記カラーサンプルをブレンドして、前記仮想3D空間の前記画像ビューを形成することは、実行された場合、前記少なくとも1つのプロセッサに対して、前記部分3Dメッシュの前記カラーサンプルを、前記GPUのフレームバッファに蓄積するように指示する命令を備えた、発明9に記載の非一時的なコンピュータ可読媒体。
(発明14)
実行された場合、前記少なくとも1つのプロセッサに対して、前記仮想3D空間に投影された前記部分3Dメッシュに基づいて、前記仮想3D空間内の前記任意の視点から、蓄積領域を決定するように指示する命令をさらに備え、
前記部分3Dメッシュの前記カラーサンプルをブレンドして、前記仮想3D空間の前記画像ビューを形成することは、前記蓄積領域内にあるカラーサンプルについてのみ実行される、発明9に記載の非一時的なコンピュータ可読媒体。
(発明15)
システムであって、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに対して、
3次元(「3D」)シーンに関して異なる観測点に配置された複数のキャプチャデバイスによってキャプチャされた2次元(「2D」)カラーデータおよび深さデータを受信することと、
前記2Dカラーデータおよび前記深さデータのメタデータを受信することと、
前記複数のキャプチャデバイスに含まれる各それぞれのキャプチャデバイスに関連付けられた各観測点について、仮想3D空間における前記3Dシーンの部分的な表現を作成するために、前記仮想3D空間に投影される部分3Dメッシュを、前記メタデータおよび前記深さデータに基づいて生成することと、
前記仮想3D空間に投影される前記部分3Dメッシュに基づいて、前記仮想3D空間内の任意の視点から、前記仮想3D空間の画像ビューを生成することであって、前記画像ビューを生成することは、前記2Dカラーデータに基づいて、前記部分3Dメッシュのカラーサンプルをブレンドして、前記仮想3D空間の前記画像ビューを形成することを備えた、生成することと、を行うように指示する仮想現実レンダリング機能とを備えた、システム。
(発明16)
前記複数のキャプチャデバイスに含まれる各それぞれのキャプチャデバイスに関連付けられた各観測点について、前記部分3Dメッシュを生成することは、
前記仮想現実レンダリング機能が、前記少なくとも1つのコンピュータプロセッサに対して、前記複数のキャプチャデバイスに含まれる各それぞれのキャプチャデバイスに関連付けられた各観測点について、前記仮想3D空間における前記部分3Dメッシュのプリミティブの頂点の3D座標を作成するために、前記深さデータに基づいて、前記仮想3D空間内の深さに対して、透視線に沿って2D入力メッシュを投影するように指示することを備えた、発明15に記載のシステム。
(発明17)
前記複数のキャプチャデバイスに含まれる各それぞれのキャプチャデバイスに関連付けられた各観測点について、前記部分3Dメッシュを生成することはさらに、
前記仮想現実レンダリング機能が、前記少なくとも1つのコンピュータプロセッサに対して、各部分3Dメッシュについて、前記部分3Dメッシュのプリミティブの1つまたは複数を、無関係なプリミティブとして識別するように指示することと、
前記仮想現実レンダリング機能が、前記少なくとも1つのコンピュータプロセッサに対して、前記識別された無関係なプリミティブを、各部分3Dメッシュから削除するように指示することとを備えた、発明16に記載のシステム。
(発明18)
前記部分3Dメッシュの前記カラーサンプルをブレンドして、前記仮想3D空間の前記画像ビューを形成することは、
前記仮想現実レンダリング機能が、前記少なくとも1つのコンピュータプロセッサに対して、前記部分3Dメッシュの前記プリミティブのブレンド重み付けを決定するように指示することと、
前記仮想現実レンダリング機能が、前記少なくとも1つのコンピュータプロセッサに対して、前記部分3Dメッシュのプリミティブの前記決定されたブレンド重み付けに基づいて、前記部分3Dメッシュの前記カラーサンプルを重み付けるように指示することと、
前記仮想現実レンダリング機能が、前記少なくとも1つのコンピュータプロセッサに対して、前記部分3Dメッシュの重複エリアに含まれる重畳されたプリミティブの、前記重み付けられたカラーサンプルの重み付け平均を決定するように指示することとを備えた、発明16に記載のシステム。
(発明19)
前記少なくとも1つのコンピュータプロセッサは、グラフィック処理ユニット(「GPU」)を備え、
前記部分3Dメッシュの前記カラーサンプルをブレンドして、前記仮想3D空間の前記画像ビューを形成することは、前記仮想現実レンダリング機能が、前記少なくとも1つのコンピュータプロセッサに対して、前記部分3Dメッシュの前記カラーサンプルを、前記GPUのフレームバッファに蓄積するように指示することを備えた、発明15に記載のシステム。
(発明20)
前記仮想現実レンダリング機能が、前記少なくとも1つのコンピュータプロセッサに対して、前記仮想3D空間に投影された前記部分3Dメッシュに基づいて、前記仮想3D空間内の前記任意の視点から、蓄積領域を決定するように指示することをさらに備え、
前記部分3Dメッシュの前記カラーサンプルをブレンドして、前記仮想3D空間の前記画像ビューを形成することは、前記蓄積領域内にあるカラーサンプルについてのみ実行される、発明15に記載のシステム。