(57)【要約】      （修正有）【課題】ネットワークの帯域制限や帯域幅変動に対応して３Ｄシーンの対話操作を行うには、サーバとクライアントで３Ｄシーンの描画を分担する必要がある。【解決手段】第１のコンピュータから第２のコンピュータに、第１の３Ｄモデル化オブジェクトの少なくとも１つのラスタ画像をストリーミングすることと、第２の３Ｄモデル化オブジェクトを、ストリーミングした少なくとも１つのラスタ画像とマージすることによって、第２のコンピュータ上でモデル化オブジェクトの３Ｄ集合体を描画する。【選択図】図１
2017182779.tif 000002
【特許請求の範囲】
【請求項１】
モデル化オブジェクトの３Ｄ集合体を表示するための、コンピュータで実施される方法であって、
第１のコンピュータから第２のコンピュータに、第１の３Ｄモデル化オブジェクトの少なくとも１つのラスタ画像をストリーミングすること（Ｓ２０）と、
第２の３Ｄモデル化オブジェクトを前記ストリーミングした少なくとも１つのラスタ画像とマージすることによって、前記第２のコンピュータ上でモデル化オブジェクトの３Ｄ集合体を描画すること（Ｓ５０）と
を含むことを特徴とする方法。
【請求項２】
第１のコンピュータから第２のコンピュータへのストリーミングが、第１の３Ｄモデル化オブジェクトの少なくとも１つのラスタ画像を、前記少なくとも１つのラスタ画像の第１の深度バッファとともに、第１のコンピュータから第２のコンピュータに同時にストリーミングすることを含み、
第２の３Ｄモデル化オブジェクトを前記ストリーミングされた少なくとも１つのラスタ画像とマージすること（Ｓ３０）が、さらに、前記第２の３Ｄモデル化オブジェクトのどのフラグメントが描画されるかを決定するために画素単位での比較を行うことを含む
ことを特徴とする、請求項１に記載の、コンピュータによって実施される方法。
【請求項３】
前記ストリーミングの前に、
前記第１の３Ｄモデル化オブジェクトの前記少なくとも１つのラスタ画像と前記第１の深度バッファの両方を単一のストリームに符号化すること（Ｓ２０）
をさらに備えることを特徴とする、請求項２に記載の、コンピュータによって実施される方法。
【請求項４】
前記符号化が、動画圧縮方式を用いて実行されることを特徴とする、請求項３に記載の、コンピュータによって実施される方法。
【請求項５】
マージの後に、
前記第２のコンピュータによって、モデル化オブジェクトの前記３Ｄ集合体に対する照明効果を算出すること
をさらに含むことを特徴とする、請求項１〜４のいずれか１つに記載の、コンピュータによって実施される方法。
【請求項６】
モデル化オブジェクトの前記３Ｄ集合体に対する照明効果を算出することが、
前記第２のコンピュータ上で、前記第１の３Ｄモデル化オブジェクトの前記少なくとも１つのラスタ画像に関連付けられた第１の光源と、前記第２の３Ｄモデル化オブジェクトに関連付けられた第２の光源を受信すること（Ｓ４００）と、
各画素の面法線方向およびマテリアル特性の算出から始まる後処理として照明効果を算出すること（Ｓ４０）と
を含むことを特徴とする、請求項５に記載の、コンピュータによって実施される方法。
【請求項７】
前記第１および第２の光源を受信した後、前記照明効果を算出する前に、
モデル化オブジェクトの前記３Ｄ集合体の各画素について、面法線方向を記憶する法線マップを算出すること（Ｓ４２０）と、
モデル化オブジェクトの前記３Ｄ集合体の各画素について、画素が前記第１の３Ｄモデル化オブジェクトの前記ストリーミングされた少なくとも１つのラスタ画像に由来するか、前記ストリーミングされた少なくとも１つのラスタ画像とマージされた前記第２の３Ｄモデル化オブジェクトに由来するかを識別する識別バッファを算出すること（Ｓ４４０）と
をさらに含むことを特徴とする、請求項６に記載の、コンピュータによって実施される方法。
【請求項８】
前記法線マップ（Ｓ４１０）が、前記第２の３Ｄモデル化オブジェクトを前記少なくとも１つのラスタ画像の第１の深度バッファとマージすることによって得られた第２の深度バッファから算出されることを特徴とする、請求項７に記載の、コンピュータによって実施される方法。
【請求項９】
前記第２の深度バッファから前記法線マップを算出することが、前記第２の深度バッファに畳み込みフィルタを適用することを含むことを特徴とする、請求項８に記載の、コンピュータによって実施される方法。
【請求項１０】
各画素のマテリアル特性が、前記少なくとも１つのラスタ画像とマージされた前記第２の３Ｄモデル化オブジェクトの各画素の色から推定されること（Ｓ４３０）を特徴とする、請求項８または９に記載の、コンピュータによって実施される方法。
【請求項１１】
前記第２のコンピュータから前記第１のコンピュータに対し、前記第２のコンピュータ上で描画されたモデル化オブジェクトの前記３Ｄ集合体上の新たな視点（Ｓ６００）の座標を送信すること（Ｓ６１０）と、
前記新しい視点に応じて、前記第１の３Ｄモデル化オブジェクトの少なくとも１つの新しいラスタ画像を算出すること（Ｓ６２０）と、
前記第１のコンピュータから前記第２のコンピュータに対し、前記第１の３Ｄモデル化オブジェクトの前記少なくとも１つの新しいラスタ画像をストリーミングすること（Ｓ６３０）と、
をさらに含むことを特徴とする、請求項１〜１０のいずれか一つに記載の、コンピュータによって実施される方法。
【請求項１２】
前記ストリーミングされた前記少なくとも１つのラスタ画像とマージされた前記第２の３Ｄモデル化オブジェクトが、第３のコンピュータから前記第２のコンピュータに送信されることを特徴とする、請求項１〜１１のいずれか一つに記載の、コンピュータによって実施される方法。
【請求項１３】
請求項１〜１２のいずれか一つに記載の方法を実行するための命令を含むコンピュータプログラム。
【請求項１４】
請求項１３に記載のコンピュータプログラムを記録したコンピュータ読み取り可能記憶媒体。
【請求項１５】
ストリーミングチャネルに接続された第１のコンピュータおよび第２のコンピュータを含むシステムであって、前記第１および第２のコンピュータが、メモリに接続された処理回路を備え、前記第２のコンピュータはさらにグラフィカル・ユーザ・インターフェイスを備え、前記第１および第２のコンピュータの各メモリが、請求項１〜１２のいずれか１つに記載の方法を実行するためのコンピュータプログラムを記録していることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータプログラムおよびシステムの分野に関し、より詳細には、モデル化オブジェクトの３Ｄ集合体を表示するための方法、システム、およびプログラムに関する。
【背景技術】
【０００２】
コンピュータ支援設計（ＣＡＤ）、コンピュータ支援エンジニアリング（ＣＡＥ）、コンピュータ支援製造（ＣＡＭ）、仮想世界、オンラインビデオゲーム、および、より一般的には３Ｄオンラインアプリケーションのコンテキストにおいて、３次元（３Ｄ）環境（３Ｄシーンとも呼ばれる）およびそのコンテンツ（部分的または完全な３Ｄ仮想環境を記述する様々なアセット）を表示することは、依然として難題である。３Ｄシーンは３Ｄモデルを含み、各３Ｄモデルはアセットであって、ポリゴンメッシュ、スプラインサーフェス、空間領域構成法などを含む、通常の表現を有する。３Ｄモデル、ライト、シーングラフのアニメーション同様、マテリアルとテクスチャもまた、３Ｄシーンのアセットである可能性がある。アセットをホストするコンピュータは、コンテンツサーバと呼ばれる。特定の視点（仮想カメラとも呼ばれる）から見たこの３Ｄシーンの描画画像は、第２のコンピュータ上に表示することができる。遠隔描画のこのプロセスは、通常、クラウドゲーム、仮想地球、仮想世界で使用される。この遠隔描画が実行される第２のコンピュータは、クライアントと呼ばれる。
【０００３】
３Ｄオンラインアプリケーションには３Ｄ描画エンジンと呼ばれるソフトウェアコンポーネントが含まれており、３Ｄ投影と幾つかの照明効果（影、反射など）を考慮して、特定の視点から見た３Ｄシーンの１つまたは複数の画像を生成する。その目的を達成するため、このような３Ｄオンラインアプリケーションは、所定の時点でサーバ（群）からクライアント（群）へ３Ｄシーンの情報を転送しなければならない。
【０００４】
３Ｄシーンの遠隔描画を実行するために、基本的に、２つのシナリオがある。第１のシナリオは、サーバからクライアントに３Ｄコンテンツを直接送信することを本質とし、このクライアントが描画ステップを実行する。これはジオメトリストリーミングと呼ばれる。この方法は、通常、仮想世界がどのように機能するかを記述する。第２のシナリオは、描画ステップを実行し、その結果（静止画またはビデオストリーム）をクライアントに送信するサーバを含む。これはピクセルストリーミングと呼ばれる。この方法は、通常、遠隔描画とクラウドゲームがどのように機能するかを記述する。
【０００５】
ジオメトリストリーミングでは、３Ｄシーンのコンテンツを送信するために、多くの戦略をとることができる。戦略の一例は、ディテールのレベルという概念である。すなわち、各アセットについて、最終的な描画の全体的な品質を損なわない、最低品質レベルが、可視性演算から推測される。クライアントのキャッシュ内のアセットのバージョンが、求められる品質レベルに達していない場合、サーバは改善点（通常、必要なバージョンとクライアントのキャッシュにおけるバージョンとの違い）を送信する。このような戦略に関わる技術の例としては、プログレッシブメッシュ、地形変位マッピング、ボクセルベースのポイントクラウド、階層的ＬＯＤ（ｌｅｖｅｌｓ  ｏｆ  ｄｅｔａｉｌ）などがある。
【０００６】
ピクセルストリーミングの場合、転送されるデータは、通常、標準圧縮方式（画像の場合はＪＰＥＧ／ＪＰＥＧ２０００、動画の場合はＨ．２６４）で圧縮された画像または動画である。演算を複数のコンピュータに分散するための、幾つかの変形例が存在する。３Ｄコンピュータグラフィックスでは、３Ｄシーンを仮想カメラの位置に投影するために使用する２Ｄ矩形が参照される。ビューポートは、表示すべき全体画像のうちの一部を表示するために使用される画面の一領域である。アプリケーションは、ビューポートをカットして、各セクション（より小さなフレーム）の描画を幾つかのコンピュータに割り当てることができる。別の変形例では、アプリケーションは３Ｄシーンをカットし、各セクション（アセットのより小さなセット）の描画を幾つかのコンピュータに割り当てることができる。
【０００７】
ジオメトリストリーミングとピクセルストリーミングは、３Ｄオンラインアプリケーションで発生する問題を別々の方法で処理する。次に説明するように、これらにはそれぞれ欠点や限界がある。
ジオメトリストリーミングとピクセルストリーミングとでは、クライアントの数の増加に際したスケーラビリティが異なる。ピクセルストリーミングは、極めて不利である。なぜなら演算（描画を含む）の大部分がサーバ側で行われるからである。したがって必要なサーバの数は、クライアントの数の増加とともに急速に増加する。クライアントが同じ視点を共有することはほとんどないため、あるクライアントから別のクライアントへと再利用できる演算結果を見つけることは困難である。ジオメトリストリーミングは、サーバ側での演算が少なくて済むため、スケーラビリティが高い。しかし、コンピュータネットワークを介してジオメトリを送信すると、ネットワークの帯域幅が消費され、一般に、クライアントコンピュータで描画される３Ｄシーンにラグが発生する。すなわち、アプリケーションの応答が遅くなる。
【０００８】
ジオメトリストリーミングとピクセルストリーミングには、クライアントのハードウェア要件が関係する。上述のように、ピクセルストリーミングでは、クライアント側の演算コストが小さく、一方、ジオメトリストリーミングでは、クライアント側が、何らかの３Ｄ表示機能を必要とする。軽いデバイスのほとんどは、現在、３Ｄディスプレイのハードウェアアクセラレーションの恩恵を受けてはいるが、その機能は比較的限られているため、画像のリアリティの減少やアプリケーションの反応性の低下につながる可能性がある。
【０００９】
ジオメトリストリーミングでもピクセルストリーミングでも、広い帯域幅が消費され、ネットワークの信頼性が要求される。帯域幅が適切に消費されるのを確実にするため、多くの効率的なレート歪みアルゴリズムがピクセルストリーミングとともに使用できる。しかし、ストリーミング動画は通常、他のアプリケーションに比べてかなり高価である。利用可能な帯域幅が突然減少した場合、それに応じて送信画像の品質が低下する可能性がある。ネットワークが遮断された場合、クライアントは、視点を変更したり、３Ｄシーンを用いて対話操作を行ったりすることができなくなる。すでに紹介したように、ジオメトリストリーミングは帯域幅使用率の急上昇を招きやすく、それにより帯域幅の飽和およびネットワークエラーが生じる。この影響を軽減するためには、アプリケーションの設計（詳細レベル、すなわちＬＯＤの使用）および３Ｄシーンの設計（シーングラフにおける異なる領域の情報量について、バランスをとる必要がある）に関して、さらなる努力が必要である。使用可能な帯域幅が突然低下すると、帯域幅の飽和がより多く発生し、クライアントでのビューにおいて、シーンの欠落／部分的な劣化が頻繁に発生する。ネットワークが遮断された場合でも、クライアントは視点を変更して、すでに送信されたシーンの要素に対する対話操作を行うことができる。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
こうした状況において、サーバに接続されたクライアント上で３Ｄシーンの描画を実行するための改良された方法が依然として求められている。
【課題を解決するための手段】
【００１１】
したがって、モデル化オブジェクトの３Ｄ集合体を表示するための、コンピュータによって実施される方法が提供される。本方法は、第１のコンピュータから第２のコンピュータに、第１の３Ｄモデル化オブジェクトの少なくとも１つのラスタ画像をストリーミングすることと、第２の３Ｄモデル化オブジェクトを、前記ストリーミングした少なくとも１つのラスタ画像とマージすることによって、前記第２のコンピュータ上でモデル化オブジェクトの３Ｄ集合体を描画することとを含む。
【００１２】
本方法は、以下のうちの１つまたは複数を含んでいてもよい。
・第１のコンピュータから第２のコンピュータへのストリーミングが、第１の３Ｄモデル化オブジェクトの少なくとも１つのラスタ画像を、前記少なくとも１つのラスタ画像の第１の深度バッファとともに、第１のコンピュータから第２のコンピュータに同時にストリーミングすることを含み、第２の３Ｄモデル化オブジェクトを前記ストリーミングされた少なくとも１つのラスタ画像とマージすることが、さらに、前記第２のモデル化オブジェクトのどのフラグメントが描画されるかを決定するために画素単位での比較を行うことを含む。
・前記ストリーミングの前に、前記第１の３Ｄモデル化オブジェクトの前記少なくとも１つのラスタ画像と前記第１の深度バッファの両方を単一のストリームに符号化すること。
・前記符号化が、動画圧縮方式を用いて実行されること。
・マージの後に、前記第２のコンピュータによって、モデル化オブジェクトの前記３Ｄ集合体に対する照明効果を算出すること。
・モデル化オブジェクトの前記３Ｄ集合体に対する照明効果を算出することが、前記第２のコンピュータ上で、前記第１の３Ｄモデル化オブジェクトの前記少なくとも１つのラスタ画像に関連付けられた第１の光源と、前記第２の３Ｄモデル化オブジェクトに関連付けられた第２の光源を受信することと、各画素の面法線方向およびマテリアル特性の算出から始まる後処理として照明効果を算出することとを含む。
・前記第１および第２の光源を受信した後、前記照明効果を算出する前に、モデル化オブジェクトの前記３Ｄ集合体の各画素について、面法線方向を記憶する法線マップを算出することと、モデル化オブジェクトの前記３Ｄ集合体の各画素について、画素が前記第１の３Ｄモデル化オブジェクトの前記ストリーミングされた少なくとも１つのラスタ画像に由来するか、前記ストリーミングされた少なくとも１つのラスタ画像とマージされた前記第２の３Ｄモデル化オブジェクトに由来するかを識別する識別バッファを算出すること。
・前記法線マップが、前記第２の３Ｄモデル化オブジェクトを前記少なくとも１つのラスタ画像の第１の深度バッファとマージすることによって得られた第２の深度バッファから算出されること。
・前記第２の深度バッファから前記法線マップを算出することが、前記第２の深度バッファに畳み込みフィルタを適用することを含むこと。
・各画素のマテリアル特性が、前記少なくとも１つのラスタ画像とマージされた前記第２の３Ｄモデル化オブジェクトの各画素の色から推定されること。
・前記第２のコンピュータから前記第１のコンピュータに対し、前記第２のコンピュータ上で描画されたモデル化オブジェクトの前記３Ｄ集合体上の新たな視点の座標を送信することと、前記新しい視点に応じて、前記第１の３Ｄモデル化オブジェクトの少なくとも１つの新しいラスタ画像を算出することと、前記第１のコンピュータから前記第２のコンピュータに対し、前記第１の３Ｄモデル化オブジェクトの前記少なくとも１つの新しいラスタ画像をストリーミングすること。
・前記ストリーミングされた前記少なくとも１つのラスタ画像とマージされた前記第２の３Ｄモデル化オブジェクトは、第３のコンピュータから前記第２のコンピュータに送信されること。
【００１３】
さらには、当該方法を実行するための命令を含むコンピュータプログラムが提供される。
さらには、当該コンピュータプログラムを記録したコンピュータ読み取り可能記憶媒体が提供される。
さらには、ストリーミングチャネルに接続された第１のコンピュータおよび第２のコンピュータを含むシステムであって、前記第１および第２のコンピュータが、メモリに接続された処理回路を備え、前記第２のコンピュータはさらにグラフィカル・ユーザ・インターフェイスを備え、前記第１および第２のコンピュータの各メモリが、当該方法を実行するためのコンピュータプログラムを記録していることを特徴とするシステムが提供される。
さらには、当該コンピュータプログラムを記録したメモリに接続されたプロセッサ、および、グラフィカル・ユーザ・インターフェイスを備えることを特徴とするシステムが提供される。
【図面の簡単な説明】
【００１４】
【図１】本方法の一例のフローチャートを示す。
【図２】照明効果演算の一例のフローチャートを示す。
【図３】図１の例を説明した図である。
【図４】図２の例を説明した図である。
【図５】通信ネットワークを介して相互接続されたクライアントおよびサーバの一例を示す。
【図６】クライアントが３Ｄシーン上の視点を変更する際のクライアントとサーバの対話の一例を示す。
【図７】図５のサーバまたはクライアントの一例を示す。
【発明を実施するための形態】
【００１５】
以下、非限定的な例として、本発明の実施の形態を添付の図面を参照しつつ説明する。
図１のフローチャートを参照して、モデル化オブジェクトの３Ｄ集合体を表示する（例えば、モデル化オブジェクトの３Ｄ集合体のコンテンツが１つまたは複数のサーバに記憶され、少なくとも１台のコンピュータクライアントに対して遠隔で描画する）ための、コンピュータによって実施される方法を提案する。本方法は、第１のコンピュータ（サーバとも呼ばれる）から第２のコンピュータ（クライアントとも呼ばれる）に、第１の３Ｄモデル化オブジェクトの少なくとも１つのラスタ画像をストリーミングすることを含む。本方法は、さらに、第２の３Ｄモデル化オブジェクトを、ストリーミングされた少なくとも１つのラスタ画像とマージすることによって、第２のコンピュータ上でモデル化オブジェクトの３Ｄ集合体を描画することを含む。
【００１６】
このような方法は、クライアントから遠く離れたサーバに格納されている、シーンを形成するいくつかのアセットを用いた、クライアント上での３Ｄシーンの遠隔表示を改善する。例えば、サーバとクライアントはコンピュータネットワークを介して相互接続されており、当該コンピュータネットワークは、ローカルエリアネットワーク（ＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、またはインターネットなどのような、相互接続されたネットワークの集合である可能性があるが、これらに限定されない。
【００１７】
特に、本発明の方法は、３Ｄシーンを２つの部分に分割することに依拠する。すなわち、ある部分はピクセルストリーミングで送信され、他の部分はジオメトリストリーミングで送信される。こうした分割（動画としてストリーミングされるものと、ジオメトリとしてストリーミングされるものとの分割）をどのように実現するかは、必要に応じて各方法の利点を活用するため、アプリケーションの裁量に基づく。本方法は、このようにしてクライアントとサーバのペイロードのバランスをとる。ジオメトリストリーミングはクライアントに、より大きく依存し、またピクセルストリーミングはサーバに、より大きく依存するため、本方法は、より効率的となる位置をその中間に見つける。画素としてストリーミングされた部分からジオメトリとしてストリーミングされた部分に幾つかのアセット（例えば、３Ｄモデリング化オブジェクト、マテリアル、テクスチャ、３Ｄモデルのアニメーション、ライト、シーングラフなど）を移動するのをアプリケーションの設計上の制約によって妨げられることがなく、また逆も同様であれば、アプリケーションは、クライアントとサーバの間で動的にペイロードのバランスをとって、アプリケーションをこうした状況に適合させることができる（クライアントのハードウェアの様々な機能、および変化するネットワーク状態への適合）。さらには、本発明は、シーンの選択部分を、ピクセルストリーミングで送信することによって保護する機能を与える。これは共同作業を行うような状況で有利である。例えば、共同オーサリングのアプリケーションでは、一方で、クライアントは、ジオメトリとして受け取ったシーンの幾つかの部分について、完全な知識を受け取る。クライアントは、これらのアセットについて、サーバとの対話、編集、および返信を行うことができる。他方で、クライアントは、ピクセルストリーミングで受け取った部分については完全な知識を得られない。これにより、ピクセルストリームによって送信された元のアセットが直接送信されることはないため、これらを確実に保護できる。例えば、ユーザは３Ｄモデル化製品の画素ビューのみを見ることができ、当該製品を構成する部品については認識できない。すなわち、部品の集合体を構成する部分は、このように、ユーザによるあらゆる変更から保護されており、しかも集合体についての知識は、ビューを構成する、与えられた画素の組に限られている。これにより、知的財産を有利に保護できる。
【００１８】
本方法は、コンピュータによって実施される。すなわち、本方法のステップ（あるいは略すべてのステップ）が少なくとも１つのコンピュータ、または類似の任意のシステムによって実行される。よって本方法のステップは、コンピュータにより、完全に自動的に、あるいは半自動的に実行される。例えば、本方法の少なくともいくつかのステップは、ユーザとコンピュータの対話を通じて始動されてもよい。求められるユーザとコンピュータの対話レベルは、想定される自動性のレベルに応じたものであって、ユーザの要望を実装する必要性との間でバランスをとるものとしてもよい。例えば、このレベルは、ユーザが設定し、かつ／あるいは、予め定義されていてもよい。
【００１９】
例えば、ユーザは、描画された３Ｄシーン上の新しい視点を選択することができ、結果として、第１の３Ｄモデル化オブジェクトの少なくとも１つの新しいラスタ画像の算出が新しい視点に応じて始動され、第１の３Ｄモデル化オブジェクトの少なくとも１つの新しいラスタ画像が第１のコンピュータから第２のコンピュータへとストリーミングされる。
【００２０】
本方法のコンピュータによる実施の典型的な例は、この目的に適したシステムを用いて本方法を実行することである。当該システムは、本方法を実行するための命令を含むコンピュータプログラムを記録したメモリに接続されたプロセッサ、および、グラフィカル・ユーザ・インターフェイス（ＧＵＩ）を備えていてもよい。また、メモリはデータベースを記憶していてもよい。メモリは、そのような記憶に適した任意のハードウェアであり、場合により、物理的に区別可能ないくつかの部分（例えば、プログラム用に１つ、場合によりデータベース用に１つ）を含む。
【００２１】
データベースとは、検索および取得用に最適化されたデータ（すなわち情報）の任意の集合（例えば所定の構造化言語、例えばＳＱＬに基づく、例えばリレーショナルデータベース）を意味する。データベースは、メモリに格納されると、コンピュータによる迅速な検索および取得を可能にする。データベースは、実際、様々なデータ処理動作と連動して、データの記憶、取得、修正、および削除を容易にするよう構造化されている。データベースは、それぞれ１つまたは複数のフィールドからなるレコードに分割可能な１つのファイルあるいはファイルのセットからなっていてもよい。フィールドは、データ記憶の基本単位である。ユーザは、主としてクエリによってデータを取得してもよい。ユーザは、使用されているデータベース管理システムのルールに従って、キーワードとソートコマンドを用いて、多数のレコードにおけるフィールドを、迅速に、検索、再配置、グループ化、および選択し、特定の集積データに関するレポートを取得または作成することができる。本方法の場合、第１のコンピュータは、第２のコンピュータ上で描画される３Ｄシーンのアセットの少なくとも一部を格納するためのデータベースを備える。
【００２２】
本方法は、概して、アセットを操作する。ここで、アセットという用語は、３Ｄモデル化オブジェクト、マテリアル、テクスチャ、３Ｄモデルのアニメーション、ライト、シーングラフなどを意味し、さらに一般的には、アセットという用語は、描画可能な、または３Ｄシーンの描画に影響を及ぼす、すべての要素を含む。簡略化のため、以下、本発明をモデル化オブジェクトに関して説明するが、本発明の方法は、そのようなモデル化オブジェクトに限定されず、３Ｄシーンの任意のアセットを使用することができるものと理解される。モデル化オブジェクトは、例えばデータベースに格納されたデータによって定義される任意のオブジェクトである。さらには、「モデル化オブジェクト」という表現は、データそのものも指す。システムの種類に応じて、異なる種類のデータによってモデル化オブジェクトが定義されてもよい。実際、システムは、ＣＡＤシステム、ＣＡＥシステム、ＣＡＭシステム、ＰＤＭシステム、ＰＬＭシステム、仮想世界アプリケーション、ビデオゲームであってもよい。より一般的には、システムは、３Ｄシーンおよびそのコンテンツ（部分的または完全な３Ｄ仮想環境を記述する様々なアセット）の表示を行う任意の３Ｄアプリケーションであってもよい。それら異なるシステムにおいて、モデル化オブジェクトは、対応するデータによって定義される。しかしながら、モデル化オブジェクトは、これらのシステムの任意の組み合わせに対応するデータによって定義されてもよいため、これらのシステムは、互いに排他的なものではない。したがって、以下に示すこのようなシステムの定義から明らかなように、システムは、ＣＡＤ兼ＰＬＭシステムであってもよい。
【００２３】
モデル化オブジェクトを定義するデータは、モデル化オブジェクトを表現可能にするデータを含む。上に列挙したシステムは、例えば、辺または線を用いて、場合によっては、面またはサーフェスを用いて、モデル化オブジェクトの表現を提供することができる。線、辺、あるいは面は、例えば、非一様有理Ｂスプライン（ＮＵＲＢＳ）など、様々な様式で表現されてもよい。具体的には、ファイルは仕様を含み、その仕様に基づきジオメトリが生成可能であり、よって表現が生成可能となる。モデル化オブジェクトの仕様は１つまたは複数のファイルに格納されていてもよい。例えばＣＡＤシステムでモデル化オブジェクトを表現するファイルの典型的なサイズは、一部分あたり１メガバイトの範囲である。また、モデル化オブジェクトは、典型的には、数千の部分の集合体であってもよい。
【００２４】
実際、モデル化オブジェクトは、３Ｄモデル化オブジェクト、例えば、一つの部品や部品の集合体などの製品、あるいは製品の集合体を表現するものであってもよい。「３Ｄモデル化オブジェクト」は、３Ｄ表現が可能なデータによってモデル化される任意のオブジェクトを意味する。３Ｄ表現は、その部品をすべての角度から見ることを可能にする。例えば、３Ｄで表現された３Ｄモデル化オブジェクトは、その軸のうちの任意の軸、あるいは、その表現が表示された画面中の任意の軸を中心に、処理して回転させることが可能である。これは、特に、３Ｄモデル化されていない２Ｄアイコンについては除外される。３Ｄ表現の表示は、設計を容易にする（すなわち、設計者が作業を達成するスピードを統計的に速める）。製品の設計は製造工程の一部であるから、これによって当該産業における製造工程が迅速化する。
【００２５】
３Ｄモデル化オブジェクトは、ＣＡＤソフトウェア・ソリューションやＣＡＤシステム等を用いた仮想的デザインの完了後に実世界において製造される製品、すなわち（例えば機械的な）部品や、部品の集合、より一般的には任意の剛体の集合体（例えば移動機構）などの製品のジオメトリを表現してもよい。ＣＡＤソフトウェア・ソリューションは、航空宇宙、建築、建設、消費財、ハイテク機器、産業機器、輸送、海洋、および／または海洋石油／ガス生産、または交通を含む、限定されることのない様々な産業分野において製品の設計を可能にする。本方法により設計される３Ｄモデル化オブジェクトは、このように、地上車両の部品（例えば、自動車および軽トラック機器、レーシングカー、オートバイ、トラックおよびモーター機器、トラック、バス、電車を含む）、航空車両の部品（例えば、航空機体機器、航空宇宙機器、推進機器、防衛製品、航空路線機器、宇宙機器を含む）、海軍車両の部品（例えば、海軍用機器、商業用船舶、オフショア機器、ヨットおよび作業船、船舶用機器を含む）、一般的な機械部品（例えば、工業用製造機械、大型移動機械または機器、設置機器、産業機器製品、加工金属製品、タイヤ製造製品を含む）、電気機械部品または電子部品（例えば、家電、セキュリティおよび／または制御および／または計装製品、コンピューティングおよび通信機器、半導体、医療装置および設備を含む）、消費者製品（例えば、家具、家庭用および庭用製品、レジャー用品、ファッション用品、耐久消費財小売用品、織物類小売用品を含む）、包装（例えば、食品および飲料およびたばこ、美容およびパーソナルケア、家庭用製品包装を含む）などのように、任意の機械的部品であり得る工業製品を表してもよい。
【００２６】
ＰＬＭシステムとは、物理的な、製造された製品（または製造される予定の製品）を表すモデル化オブジェクトの管理に適した任意のシステムをも指す。ＰＬＭシステムでは、モデル化オブジェクトは、このように、物理的な物体の製造に適したデータによって定義される。これらは、典型的には、寸法の値および／または公差の値であってもよい。物体を正しく製造するために、実際、このような値を用いるのが望ましい。
【００２７】
ＣＡＭソリューションとは、製品の製造データを管理するのに適した、ハードウェアのソフトウェアである、あらゆるソリューションをも指す。製造データは、一般に、製造する製品、製造工程、および必要なリソースに関するデータを含む。ＣＡＭソリューションは、製品の製造工程全体を計画し最適化するのに用いられる。例えば、実現可能性、製造工程の期間、または製造工程における特定のステップで使用されるリソース、例えば特定のロボットの数に関する情報をＣＡＭユーザに提供することができる。これにより、管理や必要な投資についての決定を可能にする。ＣＡＭは、ＣＡＤ工程、および、場合によりＣＡＥ工程に続く工程である。このようなＣＡＭソリューションは、ダッソー・システムズにより、ＤＥＬＭＩＡ（登録商標）として提供されている。
【００２８】
ＣＡＥソリューションとは、モデル化オブジェクトの物理的挙動の分析に適した、ハードウェアのソフトウェアである、あらゆるソリューションをも指す。よく知られており広く用いられているＣＡＥ技術は有限要素法（Ｆｉｎｉｔｅ  Ｅｌｅｍｅｎｔ  Ｍｅｔｈｏｄ：ＦＥＭ）であり、これは、典型的には、モデル化オブジェクトを、物理的挙動を方程式によって計算しシミュレーションできる要素に分割することを含む。このようなＣＡＥソリューションは、ダッソー・システムズにより、ＳＩＭＵＬＩＡ（登録商標）として提供されている。成長するＣＡＥ技術のもう１つは、ＣＡＤジオメトリデータを使用せずに異なる物理分野の複数の要素で構成される複雑なシステムのモデリングと解析を行うことを含む。ＣＡＥソリューションはシミュレーションを可能にし、それにより、製造する製品の最適化、改善および検証を可能にする。このようなＣＡＥソリューションは、ダッソー・システムズにより、ＤＹＭＯＬＡ（登録商標）として提供されている。
【００２９】
ＰＤＭはＰｒｏｄｕｃｔ  Ｄａｔａ  Ｍａｎａｇｅｍｅｎｔ（生産データ管理）の略である。ＰＤＭソリューションとは、特定の製品に関するすべての種類のデータを管理するのに適した、ハードウェアのソフトウェアである、あらゆるソリューションを指す。ＰＤＭソリューションは、製品のライフサイクルにかかわるすべての関係者によって使用されてもよい。これには、主として技術者のほか、プロジェクトマネージャー、財務担当者、営業担当者、およびバイヤーも含まれる。ＰＤＭソリューションは、一般に、製品指向のデータベースに基づく。これにより、関係者が製品に関する一貫したデータを共有することが可能になり、これにより、関係者が異なるデータを用いるのを防止する。このようなＰＤＭソリューションは、ダッソー・システムズにより、ＥＮＯＶＩＡ（登録商標）として提供されている。
【００３０】
図７は、クライアントであるコンピュータの一例を示す。この例はサーバにも同様に適用可能である。本例のクライアントコンピュータは、内部通信バス１０００に接続された中央演算処理装置（ＣＰＵ）１０１０、および同じくバスに接続されたランダムアクセスメモリ（ＲＡＭ）１０７０とを備える。クライアントコンピュータは、さらに、バスに接続されたビデオランダムアクセスメモリ１１００と関連付けられたグラフィックス処理装置（ＧＰＵ）１１１０を備える。ビデオＲＡＭ１１００は、当該技術分野において、フレームバッファとしても知られる。大容量記憶装置コントローラ１０２０は、ハードドライブ１０３０などの大容量記憶装置へのアクセスを管理する。コンピュータプログラムの命令およびデータを具体的に実現するのに適した大容量メモリ装置は、例として、ＥＰＲＯＭ、ＥＥＰＲＯＭおよびフラッシュメモリ装置のような半導体メモリ装置、内蔵ハードディスクやリムーバブルディスクなどの磁気ディスク、光磁気ディスク、およびＣＤ−ＲＯＭディスク１０４０を含む、すべての形式の不揮発性メモリを含む。前述のいずれも、特別に設計されたＡＳＩＣ（特定用途向け集積回路）によって補完されてもよいし、組み入れられてもよい。ネットワークアダプタ１０５０は、ネットワーク１０６０へのアクセスを管理する。クライアントコンピュータはまた、カーソル制御装置、キーボードなどの触覚装置１０９０を含んでいてもよい。カーソル制御装置は、ユーザがディスプレイ１０８０上の任意の所望の位置にカーソルを選択的に位置させることを可能にするために、クライアントコンピュータ内で使用される。さらに、カーソル制御デバイスは、ユーザが様々なコマンドを選択し、制御信号を入力することを可能にする。カーソル制御装置は、システムに制御信号を入力するための多数の信号生成装置を含む。典型的には、カーソル制御装置はマウスであってもよく、マウスのボタンは信号を生成するために使用される。あるいは、または追加的に、クライアントコンピュータシステムは、感知パッドおよび／または感知スクリーンを備えてもよい。
【００３１】
コンピュータプログラムは、コンピュータによって実行可能な命令を含んでいてもよく、命令は、上記システムに方法を実行させるための手段を含む。プログラムは、システムのメモリを含む任意のデータ記憶媒体に記録可能であってもよい。プログラムは、例えば、デジタル電子回路、またはコンピュータハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせで実装されてもよい。プログラムは、例えばプログラマブルプロセッサによる実行のための機械読み取り可能な記憶装置に具体的に実現された製品のような装置として実装されてもよい。方法ステップは、プログラム可能なプロセッサが命令のプログラムを実行し、入力データを操作して出力を生成することによって方法の機能を実行することによって実行されてもよい。したがって、プロセッサは、データ記憶システム、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスからデータおよび命令を受信し、また、それらにデータおよび命令を送信するようにプログラム可能であってもよく、またそのように接続されていてもよい。アプリケーションプログラムは、高水準の手続き型またはオブジェクト指向のプログラミング言語で、または必要に応じてアセンブリ言語または機械語で実装されていてもよい。いずれの場合も、言語はコンパイラ型言語またはインタープリタ型言語であってもよい。プログラムは、フルインストールプログラムまたは更新プログラムであってもよい。いずれの場合も、プログラムをシステムに適用すると、本方法を実行するための指示が得られる。
【００３２】
本方法は、製造工程に含まれていてもよく、当該製造工程は、本方法を実行した後、表示されたモデル化オブジェクトに対応する物理的製品を生産することを含んでいてもよい。
【００３３】
図１に戻って、モデル化オブジェクトの３Ｄ集合体を表示する方法の一例について説明する。
ステップＳ１０において、ユーザのコンピュータ上で動作するアプリケーションは、例えば、表示される集合体を選択するユーザ操作に応じて、３Ｄ集合体の表示を要求する。表示される３Ｄ集合体のモデル化オブジェクトの少なくともいくつかを記憶するサーバ（第１のコンピュータとも呼ばれる）とは対照的に、ユーザのコンピュータは、クライアントまたは第２のコンピュータとも呼ばれる。
【００３４】
ここで図５を参照すると、サーバ１とクライアント２とが、例えばコンピュータネットワークを介して接続された例が示されている。コンピュータネットワークは、コンピュータによるデータ交換を可能にする電気通信ネットワークである。当該ネットワークは、ＬＡＮ、ＭＡＮ、ＷＡＮ、インターネットなどであってもよいが、これらに限定されるものではない。本発明の方法は、任意の種類のコンピュータネットワークに対して実行することができる。さらに図５を参照すると、サーバ１に格納された同じ３Ｄ集合体の表示を要求、あるいは、サーバ１または第２のサーバ３に格納されているかもしれない別の３Ｄ集合体の表示を要求することができる、第２のクライアント４が示されている。興味深いことに、サーバ１に格納されていない３Ｄ集合体のモデル化オブジェクトは、他のサーバ３、あるいは要求を実行したクライアント２、あるいは第２のクライアント４にさえも格納することができる。したがって、本発明は、クライアント／サーバモデルまたはピアツーピアモデルで実行することができ、実際、３Ｄ集合体の表示を要求するクライアント２から到達可能な任意のコンピュータ１、２、３は、表示する集合体のモデル化オブジェクトを格納することができる。
【００３５】
図１に戻って、ステップＳ１２において、第１の３Ｄモデル化オブジェクトの少なくとも１つのラスタ画像がサーバによって算出される。ラスタ画像という用語は、一般的に矩形の画素、または色の点のグリッドを表す、コンピュータを介して見ることが可能なドットマトリックスデータ構造を指す。ラスタ画像は、画像の画素を単位とする幅と高さ、および１画素あたりのビット数によって技術的に特徴づけられる。第１の３Ｄモデル化オブジェクトという用語は、サーバに格納された３Ｄ集合体を構成する１つまたは複数のモデル化オブジェクトを意味する。サーバは、当該技術分野で知られているように演算を実行する。例えば、サーバは、アプリケーションの要求を受信し（Ｓ１０）、そのデータベースから集合体を構成する３Ｄオブジェクトを取得し、取得した３Ｄオブジェクトから３Ｄ空間内におけるこれらの３Ｄオブジェクトの画素を算出し、次いで視点（例えばデフォルトの視点、あるいは当該集合体のユーザの最後の視点）を選択し、そして選択された視点に基づいてラスタ画像を得る。実際には、３Ｄ描画エンジンは、当技術分野で知られているように、特定の視点から見た３Ｄシーンの、１つまたは複数のラスタ画像を生成する。例えば、３Ｄ描画エンジンは、３Ｄ空間上の視点に応じて、３Ｄ空間におけるこれらの３Ｄオブジェクトの画素を算出するためにサーバの演算処理ユニット（ＣＰＵ）を使用し、画像（画素の集合）を取得するためにサーバのグラフィック処理ユニットを使用する。実際には、最も一般的なパイプラインは以下のとおりである。ＣＰＵは、三角形のリストをＧＰＵに送信する。次に、ＧＰＵは、基準系内の三角形の頂点の座標を、現在の視点の系における新しい座標に変換する。すると三角形の新しい座標が２Ｄ空間に投影され、投影された三角形が、表示される画像を構成する１組の画素に変換される。
【００３６】
ステップＳ１４では、ステップＳ１２で取得された第１の３Ｄモデル化オブジェクトの各ラスタ画像について深度バッファが算出される。深度バッファという用語は、深度バッファリング（ｚバッファリングとしても知られる）工程の結果を意味する。深度バッファリングまたはｚバッファリングは、当該技術分野において周知である。各画像の深度バッファは、画像の各画素について、画素の深度（ｚ座標）を記憶する。深度バッファは、ラスタ画像内の各画素について、その画素からカメラまでの距離に関する値を格納するラスタ画像と同じ次元を有する、２Ｄ配列（ｘ−ｙ）である。興味深いことに、深度バッファに記憶された値は、必ずしも点・カメラ距離の線形関数である必要はないが、当技術分野で知られているように、常に単調関数（ほとんどの場合、厳密な増加関数）である。用いられる深度バッファの粒度は任意であり、例えば１６ビットまたは２４ビットまたは３２ビットの深度バッファを用いることができる。実際には、利用できるより高い粒度が選択される。一般的には、３２ビットの深度バッファである。
【００３７】
ステップＳ１２およびＳ１４は、第１のコンピュータによって実行される。これは、第１のコンピュータでのグラフィック描画機能を示す。ステップＳ１２およびＳ１４は、算出される新しいラスタ画像ごとに連続的に実行される。これは、幾つかのラスタ画像が連続的に算出される場合、ラスタ画像の深度バッファが、その１つのラスタ画像が算出された後すぐに算出されることを意味する。あるいは、ラスタ画像（例えば、所定の数のラスタ画像）が算出された後に、深度バッファの集合を算出することができる。
【００３８】
次に、ステップＳ２０において、ステップＳ１２で算出されたラスタ画像がサーバからクライアントにストリーミングされる。すなわち、それによりクライアントは画素画像のストリームを受信する。ストリーミングとは、ラスタ画像が、サーバによって配信されつつクライアントによって受信され、クライアントに対して提示されることを意味する。クライアントとサーバとの間に、チャネルが作成され、開かれる。チャネルは、例えば、クライアントの要求に応じて作成される。そして、サーバはこのチャネルを介してラスタ画像をクライアントに送信する。
【００３９】
ラスタ画像と深度バッファは、一緒にストリーミングされてもよい。これは、クライアントがラスタイメージとそれに関連付けられた深度バッファを「同時に」受け取ることを意味する。ここで、「同時に」という表現は、コンピュータネットワークのパラメータ（帯域幅、プロトコルなど）および状態（輻輳、遅延など）に応じて変化する可能性のある、所定のタイムスロット中に、ということを意味する。例えば、５秒のタイムスロットにおいて、クライアントはラスタ画像を受け取り、次に深度バッファを受け取る。すでに説明したように、ステップＳ１２およびＳ１４は算出される新しいラスタ画像ごとに連続して実行されるため、ラスタ画像とともに深度バッファをストリーミングするのが容易になる。
【００４０】
ラスタ画像および深度バッファが、単一のストリームで、すなわち１つのストリームを用いてストリーミングされてもよい。あるいは、ラスタ画像は第１の単一ストリームでストリーミングされ、深度バッファは第２の単一ストリームでストリーミングされる。
【００４１】
実際には、ラスタ画像を含む単一のストリーム、および／または深度バッファを含む単一のストリーム、またはラスタ画像および深度バッファの両方を含む単一のストリームが符号化される。符号化は、圧縮方式であってもよい。描画された画像のシーケンスまたは深度バッファのシーケンスが動画を作るのに、例えばＨ．２６４のような標準的な動画圧縮方式を使用することができる。興味深いことに、Ｈ．２６４圧縮方式は、Ｌ．Ｃｈｅｎｇ他による文献「Ｒｅａｌ−ｔｉｍｅ  ３Ｄ  Ｇｒａｐｈｉｃｓ  Ｕｓｉｎｇ  Ｓｔｒｅａｍｉｎｇ  ＭＰＥＧ−４」、またはＰ．ＦｅｃｈｔｅｌｅｒおよびＰ．Ｅｉｓｅｒｔによる文献「Ａｃｃｅｌｅｒａｔｅｄ  Ｖｉｄｅｏ  Ｅｎｃｏｄｉｎｇ  Ｕｓｉｎｇ  Ｃｏｎｔｅｘｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｒｅｎｄｅｒ」に記載されているような方法を用いて強化することができる。これらは、標準的ビデオコーデックに見られるような演算コストの高い動き推定検索アルゴリズムを用いる代わりに、シーンの描画中に用いられる３Ｄシーン情報（深度、カメラの動き、または３Ｄ部品の動き）から直接、動きベクトルを算出する方法を提供する。Ｄ．Ｐａｊａｋ、Ｒ．Ｈｅｒｚｏｇ他による文献「Ｓｃａｌａｂｌｅ  Ｒｅｍｏｔｅ  Ｒｅｎｄｅｒｉｎｇ  ｗｉｔｈ  Ｄｅｐｔｈ  ａｎｄ  Ｍｏｔｉｏｎ−ｆｌｏｗ  Ａｕｇｍｅｎｔｅｄ  Ｓｔｒｅａｍｉｎｇ」は、描画された画像と深度バッファの相関性が高いことを考慮して、それら両方を単一のビデオストリームに符号化する解決策を提供している。好都合なことに、この最後の解決策では、描画された画像と深度バッファの両方を含み、かつ、３Ｄシーンによっては、Ｈ．２６４ストリームにおいて単独で符号化された描画された画像よりも軽くなり得る、単一のストリームを生成することが可能になる。
【００４２】
なお、サーバからクライアントへ（およびクライアントからサーバへも）送信される必要がある任意のデータ（ラスタ画像、深度バッファなど）は、好ましくは、ストリーミングチャネルを用いて送信される。例えば、３Ｄシーンがサーバ上で修正されると（例えば、３Ｄシーン内の新しいオブジェクトや、３Ｄシーン上でのシミュレーションの実行）、その修正はクライアントにストリーミングされる。実際には、クライアントのユーザは３Ｄシーンに対する対話操作を行い、データがクライアントによって常に受信され、クライアントに常に提示されるようにする。また、ユーザが３Ｄシーンに対する対話操作を行なわないとき（あるいは３Ｄシーンにおいて何も動いていないとき）、ストリーミングされるデータの量は非常に少なくなる。なお、チャネルは開いたまま維持される。
【００４３】
次に、ステップＳ３０において、第２の３Ｄモデル化オブジェクトが、ストリーミングされた少なくとも１つのラスタ画像とマージされる。第２の３Ｄモデル化オブジェクトは、ジオメトリ３Ｄモデル化オブジェクトであり、クライアントコンピュータはマージを実行する。マージとは、第２の３Ｄモデル化オブジェクトを定義するデータが、ピクセルストリーミングによって送信された描画ビューの「中に」描画されることを意味する。上述のように、これらのデータは、モデル化オブジェクトの表現、例えば、辺または線、場合により面またはサーフェスを用いた表現を可能にするデータを含む。したがって、ステップＳ３０は、ここでは、第２のコンピュータのグラフィックス描画能力を示す。すなわち、第２の３Ｄモデル化オブジェクトの画像はクライアントによって算出され、この画像は１つまたは複数のラスタ画像と組み合わされる。よって、新しく算出された、第２の３Ｄモデル化オブジェクトの画像、およびストリーミングされたラスタ画像は、第２（クライアント）コンピュータ上で描画される画像を形成するために結合される。第２の３Ｄモデル化オブジェクトは、クライアントコンピュータに格納されてもよく、あるいは第３のコンピュータからクライアントコンピュータに送信されてもよい。例えば、図５を参照すると、第２の３Ｄモデル化オブジェクトは、他のサーバ３、あるいは要求を実行したクライアント２、あるいは第２のクライアント４にさえも格納することができる。
【００４４】
マージの結果、描画されるべき新しい画像が生成される。したがって、マージとは、第２の３Ｄモデル化オブジェクトのジオメトリを、ピクセルストリーミングによって送信された描画ビューの「中に」描画することを含む。第２の３Ｄモデル化オブジェクトの画像は、第２のコンピュータによって、ラスタ画像のストリームから受信した現在のラスタ画像と合成される。実際には、第２の３Ｄモデル化オブジェクトの画像は、ラスタ画像と同じサイズ（同じ画素長、画素幅、および画素数）を有する。
【００４５】
第２の３Ｄモデル化オブジェクトをラスタ画像とマージするとき、第２の３Ｄモデル化オブジェクト上の視点が、第２のモデル化オブジェクトの画像を算出するために選択される。視点の選択は、デフォルトで実行されてもよいし（例えば、第２のオブジェクトのユーザの最後の視点）、ランダムな工程で実行されてもよいし、また、ラスタ画像に対して選択された視点と同じ視点を用いて実行されてもよい（例えば、カメラの位置は、第１および第２のモデル化オブジェクトによって共有される基準系内に提供される）。
【００４６】
第２の３Ｄモデル化オブジェクトのラスタ画像と算出された画像とは、第２の３Ｄモデル化オブジェクトのどのフラグメントを描画するかを決定するために、画素単位で比較することによって組み合わされてもよい。フラグメントという用語は、描画される画像上に画素を生成する可能性のある（描かれるか、または描かれない）３Ｄオブジェクトの一部を意味する。この用語は当技術分野で広く使用されており公知である。第２の３Ｄモデル化オブジェクトのフラグメントが、モデル化オブジェクトの３Ｄ集合体の描画画像の画素に描かれるべきであるときはいつも、第１のコンピュータからストリーミングされた深度バッファにおける対応する値と、カメラへの距離Ｆに関する値とが比較される。上述のように、ストリーミングされた深度バッファに格納された値は、カメラから、ストリーミングされた描画画像内の対応する画素までの、距離に関係する。したがって、この画素単位の比較は、描かれるべき第２の３Ｄモデル化オブジェクトのフラグメントが、第１の３Ｄモデル化オブジェクトにおける、ストリーム化された少なくとも１つのラスタ画像に由来する、すでに描かれた画素よりも、カメラから遠いか、あるいは近いかを決定するために実行される。この方法は、ｚ−カリングと呼ばれ、第２の３Ｄモデル化オブジェクトのジオメトリを、ピクセルストリーミングによって送信された描画ビューの「中に」描画することによって、第２のコンピュータ上で３Ｄ集合体のビューを表示することを可能にする。このように、「ピクセルストリーム」で送信される深度バッファ（または深度マップ）は、オクルージョンを解決するために、すなわち、３Ｄ集合体のビューにおいて、各ストリームにおけるどの要素が可視でどの要素が不可視かを決定するために、使用される。
【００４７】
次に、ステップＳ４０において、３Ｄ集合体の描画画像の品質をさらに改善するために、３Ｄ集合体のビュー（Ｓ３０）に対する照明効果が算出される。照明効果という用語は、特に、第２の３Ｄモデル化オブジェクトの視覚的側面における第１の３Ｄモデル化オブジェクトの光と影を含み、逆もまた同様である。したがって、ピクセルストリームの第１の３Ｄモデル化オブジェクトとジオメトリストリームの第２の３Ｄモデル化オブジェクトとの間の照明相互作用（光と影の投射）が算出される。
【００４８】
次に、ステップＳ５０において、モデル化オブジェクトの３Ｄ集合体が、第２のコンピュータ上で描画され表示される。これは、当技術分野で知られているように行われる。
【００４９】
ここで図３を参照して、図１のフローチャートを参照して説明した本発明の一例について説明する。ユーザは、第１のサーバに格納された２つの３Ｄモデル化オブジェクト（立方体と円錐）からなる第１のセットＳ１と、第２のサーバに格納された２つの３Ｄモデル化オブジェクト（円柱とトーラス）からなる第２のセットＳ２とを含む３Ｄ集合体をコンピュータクライアント上で表示することを要求する（Ｓ１０）。要求の結果、Ｓ１のラスタ画像Ｒ１および深度マップＤ１（または深度バッファ）が第１のサーバによって算出され（Ｓ１２、Ｓ１４）、次いでＲ１およびＤ１を含む単一のピクセルストリーミングが第１のサーバによってクライアントに送信され、第２のセットＳ２のジオメトリストリーミングが第２のサーバによってクライアントに送信される。その他の構成も考えられる。例えば、第１のサーバが２つのピクセルストリーム（Ｒ１用に１つ、Ｄ１用に１つ）を送信してもよく、および／または、セットＳ２がクライアントコンピュータに格納されてもよい。そして、クライアントは、２つのストリームをマージし、照明効果を算出し、３Ｄ集合体Ｒ２を遠隔描画する。
【００５０】
本発明は、クライアントの数が増加する状況において遠隔描画のスケーラビリティを改善する。例えば、画素としてストリーミングされる部分からジオメトリとしてストリーミングされる部分へと３Ｄシーンの３Ｄオブジェクトの数を増やすことが可能であり、クライアントの数が増加する場合には、そのようにすることが有益であり得る。したがって、本発明により、クライアントの数およびそれらの構成に応じて、ピクセルストリームとジオメトリストリーミングとの間のロードバランシングを行うことが可能になる。別の例として、２つ以上のクライアントの視点が十分接近している場合、ジオメトリストリーミング（可能であればマルチキャストによる相互ストリームで）でそれらの近くのアセットを送り、遠くのオブジェクトはピクセルストリーミングで送信するという戦略をとることができる。実際、ストリーミングされた画像は、視差のために、一部のアセットの位置をわずかにシフトさせるだけで十分に近くなる可能性があり、これはすなわち、これらの画像もマルチキャストによる相互ストリームで送信される可能性がある。もう１つの「ロードバランシング」戦略は、クライアントが対話操作を行う可能性の高いオブジェクトにジオメトリストリーミングを用い、遠くのオブジェクトをピクセルストリーミングで送信することである。有利なことに、ネットワークが断絶した場合でも、クライアントは依然として、対話操作を行う可能性の高いオブジェクトに対して対話操作を行うことができる。ピクセルストリーミングで送信された部分の歪み（視差による変形に関するもの）は引き続き許容可能な状態となるので、クライアントは、視点を変更することもできる。
【００５１】
ここで図２を参照して、モデル化オブジェクトの３Ｄ集合体に対する照明効果の算出（Ｓ４０）の例について説明する。これらの照明効果を後処理として算出するために、３Ｄコンピュータグラフィックの分野で多くの技術が開発されている。ここで後処理とは、画素のＲＧＢ空間への変換後に照明効果が算出されることを意味し、例えば、３Ｄ集合体の画像は、フレームバッファに格納され、そこから後処理される。これには、遅延シェーディング、スクリーン・スペース・アンビエント・オクルージョン、スクリーン・スペース・ダイレクト・オクルージョン、スクリーン・スペース・ローカル・リフレクション、スクリーン・スペース・シャドウ・レイ・トレーシングと呼ばれる技術等が含まれる。これらの技術は共通して、画素ごとに、少なくとも以下の情報を必要とする：面法線方向およびマテリアル特性。また、光源に関する情報（位置、色、距離など）を必要とする場合もある。
ステップＳ４００において、サーバは、第１の３Ｄモデル化オブジェクトの少なくとも１つのラスタ画像に関連付けられた１つまたは複数の第１の光源情報と、第２の３Ｄモデル化オブジェクトに関連付けられた１つまたは複数の第２の光源情報を受信する。実際には、第１の光源情報は、ラスタ画像を搬送するのと同じストリームにおいて送信される。あるいは、深度バッファのストリームとともに送信することもでき、また、独立した単一ストリームで送信することもできる。第２の光源情報は、ジオメトリストリームにおいて送信される。なお、独立した単一ストリームで送信することもできる。各光源に関する情報は、少なくとも光源の位置を含む（例えば、第１および第２のモデル化オブジェクトによって共有される基準系内）。さらには、光源の色、スペクトル分布、光度の空間分布を含んでいてもよいが、これらに限定されない。
【００５２】
次に、ステップＳ４１０で、第２の３Ｄモデル化オブジェクトを前記少なくとも１つのラスタ画像の第１の深度バッファとマージすることによって、第２の深度バッファが算出される。このマージは、第２の３Ｄモデル化オブジェクトをラスタ画像にマージするのと同じ方法で実行される。
【００５３】
次に、ステップＳ４２０において、第２深度バッファ（Ｓ４１０）から法線マップが算出される。法線マップは、モデル化オブジェクトの３Ｄ集合体の各画素について、面法線方向を格納している。法線マップは、畳み込みフィルタを第２の深度バッファに適用することによって算出することができる。法線マップの算出は、当該技術分野で知られているように実行してもよい。深度の勾配（フィルタとしてＳｏｂｅｌマスクを使用する畳み込み）が算出される。この勾配はスクリーン空間における法線のおおよその近似値である。そして、この勾配は、２Ｄ空間（スクリーン空間）から基準空間へ「未投影」である可能性がある。
【００５４】
次に、ステップＳ４３０で、少なくとも１つのラスタ画像を有するマージした第２の３Ｄモデル化オブジェクトの各画素のマテリアル特性が推定される。これは、例えば、画素色、またはストリームから行う。あるいは、マテリアル特性は、第１および第２の３Ｄモデル化オブジェクトをホストするサーバから直接得ることができる。例えば、同じストリーム中で光源情報とともに送信される。
【００５５】
次に、ステップＳ４４０で、識別バッファが算出される。クライアントは、３Ｄモデル化オブジェクトの最初のセットから、描画画像と深度バッファのみを知ることができる。上述のとおり、照明技術は、各画素について、深度、面法線方向、および、わずかなマテリアル特性を必要とすることがある。したがって、この欠落した情報を回復するには、追加のステップが必要である。この追加のバッファ（識別バッファ）は、各画素について、描かれた画素が第１のシーンのストリーミングされた画像に由来するか、第２のセットの３Ｄ部分の描画に由来するかを識別する、バイナリ値を格納するために使用される。以後、各画素の起源（画素が、３Ｄオブジェクトのどちらのセット（すなわち、第１の３Ｄモデル化オブジェクト、または第２の３Ｄモデル化オブジェクト）に由来するか）を識別し、画素の照明については、他のセットの画素および他のセットに関連付けられた光源からの情報のみを考慮に入れる。
【００５６】
なお、図２のフローチャートは一例に過ぎず、照明効果の算出を変更することなくステップの順序を変更することができる。もう１つの例が、図４に関連して示される。
【００５７】
ここで、クライアントコンピュータは、各画素の面法線方向およびマテリアル特性の算出から始まる後処理として照明効果を算出するためのすべての情報を取得済みである。図４を参照して、図１および図２のフローチャートを参照して説明した本発明の一例について説明する。図４は、図３のパイプラインを、後処理技術を用いた照明補正を含むように修正したものである。上述の図３のステップはここでも有効である。ユーザは、第１のサーバに格納された２つの３Ｄモデル化オブジェクト（立方体と円錐）からなる第１のセットＳ１と、第２のサーバに格納された２つの３Ｄモデル化オブジェクト（円柱とトーラス）からなる第２のセットＳ２とを含む３Ｄ集合体をコンピュータクライアント上で表示することを要求した（Ｓ１０）。要求の結果、サーバによってＳ１のラスタ画像Ｒ１および第１の深度マップＤ１（または深度バッファ）が算出され（Ｓ１２、Ｓ１４）、Ｒ１が算出された３Ｄシーンにおいて、第１の光源Ｌ１（電球で表される）の情報が識別され、Ｒ１、Ｄ１およびＬ１が、第１のサーバからクライアントにストリーミングされる。同時に、第２のセットＳ２のジオメトリストリーミングが、Ｓ２に関連付けられた第２の光源Ｌ２（これも電球で表される）の情報とともに、第２のサーバによってクライアントに送信される。クライアントは、これら２つのストリームをマージする。つまり、クライアントはラスタ画像Ｒ１をジオメトリのセットＳ２にマージする。マージの結果として、３Ｄ集合体Ｒ２が得られる。次に、Ｒ２のオブジェクトのマテリアル特性を推定する（Ｓ４３０）。Ｒ２の画素のマテリアル特性Ｍの推定は、例えば、ピクセルストリームおよびジオメトリストリーム内で送られるマテリアル特性が識別されると、またはＲ２の画素の色が分析されると実行される。マテリアル特性を算出する間に、第２のセットＳ２をＤ１とマージすることによって、第２の深度バッファＤ２が算出され（Ｓ４１０）、次に識別バッファＩが算出される（Ｓ４３０）。法線マップＮは、Ｄ２から生成される（Ｓ４２０）。ここで、クライアントは、入力Ｒ２、Ｄ２、Ｉ、Ｎ、Ｍ、およびＳ１とＳ２からの光源情報を必要とする後処理技術を用いて照明補正を実行するためのデータを備える。新しい画像Ｒ３は、Ｓ２のオブジェクトに対するＳ１からのオブジェクトおよび光源の照明効果を考慮したＲ２の代用物（ｐｒｏ  Ｒ２）である（逆も同様）。モデル化オブジェクトの３Ｄ集合体Ｒ３が描画され、ユーザに対して表示される。
【００５８】
ここで図６を参照して、クライアントのユーザが、描画された３Ｄ集合体（例えば図３のＲ２、または図４のＲ３）上で視点を変更する際のサーバとクライアントの対話（または送受信）について説明する。クライアントおよびサーバは、図５に示すように、クライアント２およびサーバ１とすることができる。クライアントおよびサーバは、少なくともストリーミングチャネルで接続されている。クライアントおよびサーバの第２のコンピュータは、メモリに接続された処理回路を備える。クライアントはさらに、ユーザが３Ｄシーンに働きかけることを可能にするグラフィカル・ユーザ・インターフェイスを備える。第１および第２のコンピュータの各メモリには、図６に示す送受信Ｓ６００〜Ｓ６６０を実行するためのコンピュータプログラムが記録されている。これは、サーバのメモリ上のコンピュータプログラムおよびクライアントのメモリ上のコンピュータプログラムが本発明の方法の実行を可能にすることを意味する。クライアントとサーバの両方のメモリ上のコンピュータプログラムは同じものであってもよい。
【００５９】
あるいは、サーバのメモリ上のコンピュータプログラムは、データのストリーミングのためのチャネルを作成すること、および／または維持することを可能にし、さらにステップＳ６２０〜Ｓ６４０の実行を可能にし、クライアントのメモリ上のコンピュータプログラムは、データのストリーミングのためのチャネルを作成すること、および／または維持することを可能にし、さらにステップＳ６００〜Ｓ６１０および６５０〜６６０の実行を可能にする。この代替案では、クライアントおよびサーバ上のコンピュータプログラムは同一ではないが、本発明の方法を実行するために協働する。
【００６０】
ステップＳ６００において、表示された３Ｄ集合体での新しい視点が、クライアントコンピュータ上でユーザによって選択される。これは、当技術分野で知られているように行われる。メッセージＳ６１０が、３Ｄ集合体上で選択された新しい視点の座標とともにサーバに送信される。サーバは、メッセージＳ６２０およびそこに含まれる新しい座標を受信する。第１の３Ｄモデル化オブジェクトと第２の３Ｄモデル化オブジェクトとマージされたラスタ画像を含むサーバ上の３Ｄシーンは同じ基準系を共有するため、新しい座標を適用することは、サーバにとって単純な動作である。例えば、サーバのグラフィック処理ユニットは、新しい視点を３Ｄシーンに直接適用することによって、表示すべき新しい画素の組を得ることができる。サーバは、新しい視点に応じて、第１の３Ｄモデル化オブジェクトの新しいラスタ画像を算出し（Ｓ６３０）、これはサーバからクライアントにストリーミング（Ｓ６４０）される。そして最終的にクライアントに受信される（Ｓ６５０）。クライアントは、第２の３Ｄモデル化オブジェクトを、ストリーミングされた新しいラスタ画像とマージし、３Ｄ集合体の新しいビューを描画する（Ｓ６６０）。ステップＳ６３０〜Ｓ６６０は、図１〜図４を参照して説明したように実行される。
【００６１】
興味深いことに、図６のステップは、ユーザが第１のセットの３Ｄモデル化オブジェクトの視点を変更した場合にのみ適用される。実際に、ユーザが第２のセットのモデル化オブジェクトを操作する（例えば、移動したり回転させたりする）場合、第２のモデル化オブジェクトがストリーミングされたサーバ上では、要求を実行する必要はない。なぜなら、クライアントコンピュータは第２のモデル化オブジェクトの新しい画像を例えば新しい視点に応じて算出するための、すべてのデータを有しているからである。
【００６２】
以上、本発明について、その実施例を参照して詳細に示し説明したが、当業者には、添付の請求の範囲に示される本発明の範囲から逸脱することなく形式や詳細に対して様々な変更がなされ得ることが理解されるであろう。
【図１】
2017182779.tif 000003
【図２】
2017182779.tif 000004
【図３】
2017182779.tif 000005
【図４】
2017182779.tif 000006
【図５】
2017182779.tif 000007
【図６】
2017182779.tif 000008
【図７】
2017182779.tif 000009
【外国語明細書】
2017182779.tif 000010
2017182779.tif 000011
2017182779.tif 000012
2017182779.tif 000013
2017182779.tif 000014
2017182779.tif 000015
2017182779.tif 000016
2017182779.tif 000017
2017182779.tif 000018
2017182779.tif 000019
2017182779.tif 000020
2017182779.tif 000021
2017182779.tif 000022
2017182779.tif 000023
2017182779.tif 000024
2017182779.tif 000025
2017182779.tif 000026
2017182779.tif 000027
2017182779.tif 000028
2017182779.tif 000029
2017182779.tif 000030
2017182779.tif 000031
2017182779.tif 000032
2017182779.tif 000033
2017182779.tif 000034
2017182779.tif 000035
【図１】
2017182779.tif 000036
【図２】
2017182779.tif 000037
【図３】
2017182779.tif 000038
【図４】
2017182779.tif 000039
【図５】
2017182779.tif 000040
【図６】
2017182779.tif 000041
【図７】
2017182779.tif 000042