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