(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-29
(45)【発行日】2022-08-08
(54)【発明の名称】分散されたクラッシュおよびスナッピング
(51)【国際特許分類】
G06T 19/00 20110101AFI20220801BHJP
【FI】
G06T19/00 C
【外国語出願】
(21)【出願番号】P 2016248373
(22)【出願日】2016-12-21
【審査請求日】2019-11-25
(32)【優先日】2015-12-22
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】500102435
【氏名又は名称】ダッソー システムズ
【氏名又は名称原語表記】DASSAULT SYSTEMES
(74)【代理人】
【識別番号】110000752
【氏名又は名称】特許業務法人朝日特許事務所
(72)【発明者】
【氏名】ジャン=ジュリアン トゥッフェル
(72)【発明者】
【氏名】マリカ エム ブルケンアフェッド
【審査官】板垣 有紀
(56)【参考文献】
【文献】米国特許出願公開第2013/0106855(US,A1)
【文献】米国特許第08553028(US,B1)
【文献】国際公開第2015/037169(WO,A1)
【文献】特開2009-230442(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 11/00 - 19/20
(57)【特許請求の範囲】
【請求項1】
モデル化オブジェクトの3D集合体をクライアントコンピュータ上に表示するための、コンピュータにより実施される方法であって、
前記モデル化オブジェクトの3D集合体は、それぞれジオメトリ3Dモデル化オブジェクトである、第1の3Dモデル化オブジェクトおよび第2の3Dモデル化オブジェクトを含み、
サーバから前記クライアントコンピュータへ、少なくとも1つのラスタ画像をストリーミングすることと、
前記クライアントコンピュータが、前記第2の3Dモデル化オブジェクトを、前記サーバから前記クライアントコンピュータにストリーミングされた前記第1の3Dモデル化オブジェクトの少なくとも1つのラスタ画像とマージすることによって、モデル化オブジェクトの3D集合体を描画すること(S10)と、
前記クライアントコンピュータが、前記第1の3Dモデル化オブジェクトおよび前記第2の3Dモデル化オブジェクトの間の接触演算用の、前記第2の3Dモデル化オブジェクトに関連する第1のデータを、前記サーバに送信すること(S20)と、
前記サーバが、前記第1の3Dモデル化オブジェクトおよび前記第2の3Dモデル化オブジェクト間の接触を算出すること(S30)と
を含むことを特徴とする方法。
【請求項2】
前記サーバから前記クライアントコンピュータに、前記第1の3Dモデル化オブジェクトおよび前記第2の3Dモデル化オブジェクト間の接触の算出の結果に応じて、モデル化オブジェクトの3D集合体を再度描画するための第2のデータを送信すること
をさらに含むことを特徴とする、請求項1に記載のコンピュータによって実施される方法。
【請求項3】
前記サーバが、前記クライアントコンピュータに対し、前記第1の3Dモデル化オブジェクトおよび前記第2の3Dモデル化オブジェクト間の接触の算出の結果、前記第2の3Dモデル化オブジェクトと接触していると判断された前記第1の3Dモデル化オブジェクトに関連する第2のデータを送信することを特徴とする、請求項2に記載のコンピュータによって実施される方法。
【請求項4】
前記第1の3Dモデル化オブジェクトに関連する前記第2のデータは、前記第1の3Dモデル化オブジェクトのジオメトリを含むことを特徴とする、請求項2または3に記載のコンピュータによって実施される方法。
【請求項5】
前記第1の3Dモデル化オブジェクトに関連する前記第2のデータが前記第1の3Dモデル化オブジェクトの単純化したジオメトリを含むことを特徴とする、請求項4に記載のコンピュータによって実施される方法。
【請求項6】
前記第1の3Dモデル化オブジェクトに関連する前記第2のデータが前記第1の3Dモデル化オブジェクトの単純化されたジオメトリを含み、前記第1の3Dモデル化オブジェクトの前記単純化されたジオメトリと前記第1の3Dモデル化オブジェクトのジオメトリとの差が、前記クライアントコンピュータの画素の幅よりも小さいことを特徴とする、請求項5に記載のコンピュータによって実施される方法。
【請求項7】
前記第1の3Dモデル化オブジェクトに関連する前記第2のデータが、前記第1の3Dモデル化オブジェクトの2つ以上の深度マップを含むことを特徴とする、請求項2または3に記載のコンピュータによって実施される方法。
【請求項8】
前記第2のデータと前記第2の3Dモデル化オブジェクトとの間に生じ得る接触を前記クライアントコンピュータ上で算出すること(S50)をさらに含むことを特徴とする、請求項2~7のいずれか1つに記載のコンピュータによって実施される方法。
【請求項9】
接触が、衝突またはスナッピングであることを特徴とする、請求項1~8のいずれか1つに記載のコンピュータによって実施される方法。
【請求項10】
前記接
触の算出の結果に応じて前記第2の3Dモデル化オブジェクトを移動させること(S60)をさらに含むことを特徴とする、請求項2~9のいずれか1つに記載のコンピュータによって実施される方法。
【請求項11】
請求項1~10のいずれか1つに記載の方法を実行するための命令を含むコンピュータプログラム。
【請求項12】
請求項11に記載のコンピュータプログラムを記録したコンピュータ読み取り可能な記憶媒体。
【請求項13】
請求項11に記載のコンピュータプログラムを記録したメモリに接続されたプロセッサ、および、グラフィカル・ユーザ・インターフェイスを備えることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータプログラムおよびシステムの分野に関し、より詳細には、モデル化オブジェクトの3D集合体を設計するための方法、システム、およびプログラムに関する。
【背景技術】
【0002】
コンピュータ支援設計(CAD)、コンピュータ支援エンジニアリング(CAE)、コンピュータ支援製造(CAM)、仮想世界、オンラインビデオゲーム、および、より一般的には3Dオンラインアプリケーションのコンテキストにおいて、3次元(3D)環境(3Dシーンとも呼ばれる)およびそのコンテンツ(部分的または完全な3D仮想環境を記述する様々なアセット)を表示することは、依然として難題である。3Dシーンは3Dモデルを含み、各3Dモデルはアセットであって、ポリゴンメッシュ、スプラインサーフェス、空間領域構成法などを含む、通常の表現を有する。3Dモデル、ライト、シーングラフのアニメーション同様、マテリアルとテクスチャもまた、3Dシーンのアセットである可能性がある。アセットをホストするコンピュータは、コンテンツサーバと呼ばれる。特定の視点(仮想カメラとも呼ばれる)から見たこの3Dシーンの描画画像は、第2のコンピュータ上に表示することができる。遠隔描画のこのプロセスは、通常、クラウドゲーム、仮想地球、仮想世界で使用される。この遠隔描画が実行される第2のコンピュータは、クライアントと呼ばれる。
【0003】
3Dオンラインアプリケーションには3D描画エンジンと呼ばれるソフトウェアコンポーネントが含まれており、3D投影といくつかの照明効果(影、反射など)を考慮して、特定の視点から見た3Dシーンの1つ以上の画像を生成する。その目的を達成するため、このような3Dオンラインアプリケーションは、所定の時点でサーバ(群)からクライアント(群)へ3Dシーンの情報を転送しなければならない。
【0004】
3Dシーンの遠隔描画を実行するために、基本的に、2つのシナリオがある。第1のシナリオは、サーバからクライアントに3Dコンテンツを直接送信することを本質とし、このクライアントが描画ステップを実行する。これはジオメトリストリーミングと呼ばれる。この方法は、通常、仮想世界がどのように機能するかを記述する。第2のシナリオは、描画ステップを実行し、その結果(静止画またはビデオストリーム)をクライアントに送信するサーバを含む。これはピクセルストリーミングと呼ばれる。この方法は、通常、遠隔描画とクラウドゲームがどのように機能するかを記述する。
【0005】
ジオメトリストリーミングは、3Dシーンのコンテンツを送信するために多くの戦略を使用できる。戦略の一例は、ディテールのレベルという概念である。すなわち、各アセットについて、最終的な描画の全体的な品質を損なわない、最低品質レベルが、可視性演算から推測される。クライアントのキャッシュ内のアセットのバージョンが、求められる品質レベルに達していない場合、サーバは改善点(通常、必要なバージョンとクライアントのキャッシュにおけるバージョンとの違い)を送信する。このような戦略に関わる技術の例としては、プログレッシブメッシュ、地形変位マッピング、ボクセルベースのポイントクラウド、階層的LOD(levels of detail)などがある。
【0006】
ピクセルストリーミングの場合、転送されるデータは、通常、標準圧縮方式(画像の場合はJPEG/JPEG2000、動画の場合はH.264)で圧縮された画像または動画である。演算を複数のコンピュータに分散するため、いくつかの変形例が存在する。3Dコンピュータグラフィックスでは、3Dシーンを仮想カメラの位置に投影するために使用する2D矩形が参照される。ビューポートは、表示すべき全体画像のうちの一部を表示するために使用される画面の一領域である。アプリケーションは、ビューポートをカットして、各セクション(より小さなフレーム)の描画を複数のコンピュータに割り当てることができる。別の変形例では、アプリケーションは3Dシーンをカットし、各セクション(アセットのより小さなセット)の描画を幾つかのコンピュータに割り当てることができる。
【0007】
ジオメトリストリーミングとピクセルストリーミングは、3Dオンラインアプリケーションで発生する問題を別々に処理する。次に説明するように、これらにはそれぞれ欠点や限界がある。
【0008】
ジオメトリストリーミングとピクセルストリーミングは、クライアントの数が増加するのにしたがって規模が変化する。ピクセルストリーミングは、演算(描画を含む)の大部分がサーバ側で行われるため、極めて不利である。したがって必要なサーバの数は、クライアントの数とともに急速に増加する。クライアントが同じ視点を共有することはほとんどないため、あるクライアントから別のクライアントへと再利用できる演算結果を見つけることは困難である。ジオメトリストリーミングは、サーバ側での演算が少なくて済むため、スケーラビリティが高い。しかし、コンピュータネットワークを介してジオメトリを送信すると、ネットワークの帯域幅が消費され、一般に、クライアントコンピュータで描画される3Dシーンにラグが発生する。すなわち、アプリケーションの応答が遅くなる。
【0009】
ジオメトリストリーミングとピクセルストリーミングには、クライアントのハードウェア要件が関係する。上述のように、ピクセルストリーミングでは、クライアント側の演算コストが小さく、一方、ジオメトリストリーミングでは、クライアント側が、何らかの3D表示機能を必要とする。軽いデバイスのほとんどは、現在、3Dディスプレイのハードウェアアクセラレーションの恩恵を受けてはいるが、その機能は比較的限られているため、画像のリアリティの減少やアプリケーションの反応性の低下につながる可能性がある。
【0010】
ジオメトリストリーミングでもピクセルストリーミングでも、広い帯域幅が消費され、ネットワークの信頼性が要求される。帯域幅が適切に消費されるのを確実にするため、多くの効率的なレート歪みアルゴリズムをピクセルストリーミングとともに使用できる。しかし、ストリーミング動画は通常、他のアプリケーションに比べてかなり高価である。利用可能な帯域幅が突然減少した場合、それに応じて送信画像の品質が低下する可能性がある。ネットワークが中断した場合、クライアントは、視点を変更したり、3Dシーンを用いて対話操作を行ったりすることができなくなる。すでに紹介したように、ジオメトリストリーミングは帯域幅使用率の急上昇を招きやすく、それにより帯域幅の飽和およびネットワークエラーが生じる。この影響を軽減するためには、アプリケーションの設計(詳細レベル、すなわちLODの使用)および3Dシーンの設計(シーングラフにおける異なる領域の情報量について、バランスをとる必要がある)に関して、さらなる努力が必要である。使用可能な帯域幅が突然低下すると、帯域幅の飽和がより多く発生し、クライアントでのビューにおいて、シーンの欠落/部分的な劣化が頻繁に発生する。ネットワークが遮断された場合でも、クライアントは視点を変更して、すでに送信されたシーンの要素に対する対話操作を行うことができる。
【0011】
ピクセルストリーミングでは、クライアントに表示された3Dモデル化オブジェクト上/間での操作、例えば、衝突の判定、クラッシュの視覚的な手がかりの表示、オブジェクトを互いにスナッピングさせること、および剛体接触のシミュレーションができない。実際、クライアントは3Dモデル化オブジェクトの3Dコンテンツを有しておらず、サーバによって算出された表現を描画するだけである。ジオメトリストリーミングでは、クライアントでそのような操作が可能である。しかしながら、クライアントの演算リソースは限られており、それらはすでに3Dシーンの描画に使われている。接触および衝突判定アルゴリズムは、高度に発達している。例えば、ビデオゲームでは、固体力学をシミュレーションする必要性があるのが一般的であり、それは物理エンジンと呼ばれるコンポーネントによって実行される。このコンポーネントは、衝突判定を含む幾つかのタスクを実行する必要がある。
【発明の概要】
【発明が解決しようとする課題】
【0012】
こうした状況において、サーバに接続されたクライアント上で3Dシーンの描画を実行するための改良された方法が依然として求められている。遠隔描画により3Dシーンの3Dモデル化オブジェクト上/間での操作が可能であれば好適である。
【課題を解決するための手段】
【0013】
したがって、モデル化オブジェクトの3D集合体を設計するための、コンピュータによって実施される方法が提供される。本方法は、
・第2の3Dモデル化オブジェクトを、第1のコンピュータから第2のコンピュータにストリーミングされた、第1の3Dモデル化オブジェクトの少なくとも1つのラスタ画像とマージすることによって、モデル化オブジェクトの3D集合体を前記第2のコンピュータ上で描画することと、
・前記第1および第2の3Dモデル化オブジェクト間の接触演算用の、前記第2の3Dモデル化オブジェクトに関連する第1のデータを、前記第2のコンピュータから前記第1のコンピュータに送信することと、
・前記第1および第2の3Dモデル化オブジェクト間の接触を前記第1のコンピュータ上で算出することとを含む。
本方法は、以下のうちの1つまたは複数を含んでいてもよい。
・前記第1のコンピュータから前記第2のコンピュータに、前記接触演算に応じてモデル化オブジェクトの3D集合体を再度描画するための第2のデータを送信すること。
・前記第1のコンピュータが、前記第2のコンピュータに対し、前記演算ステップで前記第2のオブジェクトと接触していると判断された前記第1の3Dモデル化オブジェクトに関連する第2のデータを送信すること。
・前記第1の3Dモデル化オブジェクトに関連する前記第2のデータが、前記第1のオブジェクトのジオメトリを含むこと。
・前記第1の3Dモデル化オブジェクトに関連する前記第2のデータが、前記第1のオブジェクトの単純化したジオメトリを含むこと。
・第1の3Dモデル化オブジェクトに関連する前記第2のデータが前記第1のオブジェクトの単純化されたジオメトリを含み、前記第1のオブジェクトの前記単純化されたジオメトリと前記第1のオブジェクトのジオメトリとの差が、前記第2のコンピュータの画素の幅よりも小さいこと。
・前記第1の3Dモデル化オブジェクトに関連する前記第2のデータが、前記第1の3Dモデル化オブジェクトの2つ以上の深度マップを含むこと。
・前記第2のデータと前記第2の3Dモデル化オブジェクトとの間に生じ得る接触を前記第2のコンピュータ上で算出すること。
・接触は衝突またはスナッピングであること。
・前記接触演算の結果に応じて前記第2のオブジェクトを移動させること。
【0014】
さらには、上述の方法を実行するための命令を含むコンピュータプログラムが提供される。
さらには、上述のコンピュータプログラムを記録したコンピュータ読み取り可能記憶媒体が提供される。
さらには、上述のコンピュータプログラムを記録したメモリに接続された処理回路、および、グラフィカル・ユーザ・インターフェイスを備えることを特徴とするシステムが提供される。
【図面の簡単な説明】
【0015】
以下、非限定的な例として、本発明の実施の形態を添付の図面を参照しつつ説明する。
【
図4】モデル化オブジェクトの3D集合体を描画する一例のフローチャートを示す。
【
図5】照明効果演算の一例のフローチャートを示す。
【
図8】通信ネットワークを介して相互接続されたクライアントおよびサーバの一例を示す。
【
図9】クライアントが3Dシーン上の視点を変更する際のクライアントとサーバの対話の一例を示す。
【
図10】
図8のサーバまたはクライアントの一例を示す。
【発明を実施するための形態】
【0016】
図1のフローチャートを参照して、モデル化オブジェクトの3D集合体を設計する(例えば、モデル化オブジェクトの3D集合体のコンテンツが1つまたは複数のサーバに記憶され、少なくとも1つのコンピュータクライアントに対して遠隔で描画する)ための、コンピュータによって実施される方法を提案する。本方法は、第2の3Dモデル化オブジェクトを第1の3Dモデル化オブジェクトの少なくとも1つのラスタ画像とマージすることによって、モデル化オブジェクトの3D集合体を第2のコンピュータ(クライアントとも呼ばれる)上で描画することを含み、当該少なくとも1つのラスタ画像は、第1のコンピュータ(サーバとも呼ばれる)から上記第2のコンピュータにストリーミングされたものである。本方法はまた、第1および第2の3Dモデル化オブジェクト間の接触演算用の、第2の3Dモデル化オブジェクトに関連する第1のデータを、第2のコンピュータから第1のコンピュータに送信することを含む。本方法は、第1および第2の3Dモデル化オブジェクト間の接触を第1のコンピュータ上で算出することを含む。
【0017】
このような方法は、クライアントから遠く離れたサーバに格納されている、シーンを形成するいくつかのアセットを用いた、クライアント上での3Dシーンの遠隔表示を改善する。例えば、サーバとクライアントはコンピュータネットワークを介して相互接続されており、当該コンピュータネットワークは、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、またはインターネットなどのような、相互接続されたネットワークの集合である可能性があるが、これらに限定されない。
【0018】
特に、本発明の方法は、3Dシーンを2つの部分に分割することに依拠する。すなわち、ある部分はピクセルストリーミングで送信され、他の部分はジオメトリストリーミングで送信される。こうした分割(動画としてストリーミングされるものと、ジオメトリとしてストリーミングされるものとの分割)をどのように実現するかは、必要に応じて各方法の利点を活用するため、アプリケーションの裁量に基づく。本方法は、このようにしてクライアントとサーバのペイロードのバランスをとる。ジオメトリストリーミングは、クライアントに、より大きく依存し、またピクセルストリーミングは、サーバに、より大きく依存するため、本方法は、より効率的となる位置をその中間に見つける。画素としてストリーミングされた部分からジオメトリとしてストリーミングされた部分に幾つかのアセット(例えば、3Dモデル化オブジェクト、マテリアル、テクスチャ、3Dモデルのアニメーション、ライト、シーングラフなど)を移動するのをアプリケーションの設計上の制約によって妨げられることがなく、また逆も同様であれば、アプリケーションは、クライアントとサーバの間で動的にペイロードのバランスをとって、アプリケーションをこうした状況に適合させることができる(クライアントのハードウェアの様々な機能、および変化するネットワーク状態への適合)。さらには、本発明は、シーンの選択部分を、ピクセルストリーミングで送信することによって保護する機能を与える。これは共同作業を行うような状況で有利である。例えば、共同オーサリングのアプリケーションでは、一方で、クライアントが、ジオメトリとして受け取ったシーンの幾つかの部分について、完全な知識を受け取る。クライアントは、これらのアセットについて、サーバと対話、編集、および返信を行うことができる。他方で、クライアントは、ピクセルストリーミングで受け取った部分については完全な知識を持たない。これにより、ピクセルストリームによって送信された元のアセットが直接送信されることはないため、これらを確実に保護できる。例えば、ユーザは3Dモデル化製品の画素ビューのみを見ることができ、当該製品を構成する部品については認識できない。すなわち、部品の集合体を構成する部分は、このように、ユーザによるあらゆる変更から保護されており、しかも集合体についての知識は、ビューを構成する、与えられた画素の組に限られている。これにより、知的財産を有利に保護できる。
【0019】
本方法はさらに、上述の改善されたロードバランシングおよび帯域幅消費の恩恵を受けつつ、クライアント上での接触判定を可能にする。衝突判定の演算コストは、第1および第2のコンピュータで分担される。すなわち、各コンピュータは、他方のコンピュータに知られている3Dコンテンツのセットの単純化された表現を受け取り、接触判定アルゴリズムの1つのフェーズを、別のフェーズを実行する他方のコンピュータに緻密な情報を送信する前に実行する。さらに、マシーン(クライアントまたはサーバ)によって送信されるメッセージは、そのマシーンが有する3Dコンテンツのセットの単純な表現しか含まない。他方に応答する際、各メッセージはより緻密な情報を含んでいるかもしれないが、データはより少なくなる(各マシーンが、その都度、衝突判定アルゴリズムの1つのフェーズを実行して、対抗するセットと衝突していないコンテンツを廃棄するため)。これらの利点、およびさらなる利点については、以下の説明においてより明らかになる。
【0020】
本方法は、コンピュータによって実施される。すなわち、本方法のステップ(あるいは略すべてのステップ)が少なくとも1つのコンピュータ、または類似の任意のシステムによって実行される。よって本方法のステップは、コンピュータにより、完全に自動的に、あるいは半自動的に実行される可能性がある。例えば、本方法の少なくともいくつかのステップは、ユーザとコンピュータの対話を通じて始動されてもよい。求められるユーザとコンピュータの対話レベルは、想定される自動性のレベルに応じたものであって、ユーザの要望を実装する必要性との間でバランスをとるものとしてもよい。例えば、このレベルは、ユーザが設定し、かつ/あるいは、予め定義されていてもよい。
【0021】
例えば、ユーザは、描画された3Dシーン上の新しい視点を選択することができ、結果として、第1の3Dモデル化オブジェクトの少なくとも1つの新しいラスタ画像の算出が新しい視点に応じて始動され、第1の3Dモデル化オブジェクトの少なくとも1つの新しいラスタ画像が第1のコンピュータから第2のコンピュータへとストリーミングされる。
【0022】
本方法のコンピュータによる実施の典型的な例は、この目的に適したシステムを用いて本方法を実行することである。当該システムは、本方法を実行するための命令を含むコンピュータプログラムを記録したメモリに接続されたプロセッサ、および、グラフィカル・ユーザ・インターフェイス(GUI)を備えていてもよい。また、メモリはデータベースを記憶していてもよい。メモリは、そのような記憶に適した任意のハードウェアであり、場合により、物理的に区別可能ないくつかの部分(例えば、プログラム用に1つ、場合によりデータベース用に1つ)を含む。
【0023】
データベースとは、検索および取得用に最適化されたデータ(すなわち情報)の任意の集合(例えば所定の構造化言語、例えばSQLに基づく、例えばリレーショナルデータベース)を意味する。データベースは、メモリに格納されると、コンピュータによる迅速な検索および取得を可能にする。データベースは、実際、様々なデータ処理動作と連動して、データの記憶、取得、修正、および削除を容易にするよう構造化されている。データベースは、それぞれ1つまたは複数のフィールドからなるレコードに分割可能な1つのファイルあるいはファイルのセットからなっていてもよい。フィールドは、データ記憶の基本単位である。ユーザは、主としてクエリによってデータを取得してもよい。ユーザは、使用されているデータベース管理システムのルールに従って、キーワードとソートコマンドを用いて、多数のレコードにおけるフィールドを、迅速に、検索、再配置、グループ化、および選択し、特定の集積データに関するレポートを取得または作成することができる。本方法の場合、第1のコンピュータは、第2のコンピュータ上で描画される3Dシーンのアセットの少なくとも一部を格納するためのデータベースを備える。
【0024】
本方法は、広い意味において、アセットを操作する。ここで、アセットという用語は、3Dモデル化オブジェクト、マテリアル、テクスチャ、3Dモデルのアニメーション、ライト、シーングラフなどを意味し、さらに一般的には、アセットという用語は、描画可能な、または3Dシーンの描画に影響を及ぼす、すべての要素を含む。簡略化のため、以下、本発明をモデル化オブジェクトに関して説明するが、本発明の方法は、そのようなモデル化オブジェクトに限定されず、3Dシーンの任意のアセットを使用することができるものと理解される。モデル化オブジェクトは、例えばデータベースに格納されたデータによって定義される任意のオブジェクトである。さらには、「モデル化オブジェクト」という表現は、データそのものも指す。システムの種類に応じて、異なる種類のデータによってモデル化オブジェクトが定義されてもよい。実際、システムは、CADシステム、CAEシステム、CAMシステム、PDMシステム、PLMシステム、仮想世界アプリケーション、ビデオゲームであってもよい。より一般的には、システムは、3Dシーンおよびそのコンテンツ(部分的または完全な3D仮想環境を記述する様々なアセット)の表示を行う任意の3Dアプリケーションであってもよい。それら異なるシステムにおいて、モデル化オブジェクトは、対応するデータによって定義される。しかしながら、モデル化オブジェクトは、これらのシステムの任意の組み合わせに対応するデータによって定義されてもよいため、これらのシステムは、互いに排他的なものではない。したがって、以下に示すこのようなシステムの定義から明らかなように、システムは、CAD兼PLMシステムであってもよい。
【0025】
モデル化オブジェクトを定義するデータは、モデル化オブジェクトを表現可能にするデータを含む。上に列挙したシステムは、例えば、辺または線を用いて、場合によっては、面またはサーフェスを用いて、モデル化オブジェクトの表現を提供することができる。線、辺、あるいは面は、例えば、非一様有理Bスプライン(NURBS)など、様々な様式で表現されてもよい。具体的には、ファイルは仕様を含み、その仕様に基づきジオメトリが生成可能であり、よって表現が生成可能となる。モデル化オブジェクトの仕様は1つまたは複数のファイルに格納されていてもよい。例えばCADシステムでモデル化オブジェクトを表現するファイルの典型的なサイズは、一部分あたり1メガバイトの範囲である。また、モデル化オブジェクトは、典型的には、数千の部分の集合体であってもよい。
【0026】
実際、モデル化オブジェクトは、3Dモデル化オブジェクト、例えば、一つの部品や部品の集合体などの製品、あるいは製品の集合体を表現するものであってもよい。「3Dモデル化オブジェクト」は、3D表現が可能なデータによってモデル化される任意のオブジェクトを意味する。3D表現は、その部品をすべての角度から見ることを可能にする。例えば、3Dで表現された3Dモデル化オブジェクトは、その軸のうちの任意の軸、あるいは、その表現が表示された画面中の任意の軸を中心に、処理して回転させることが可能である。これは、特に、3Dモデル化されていない2Dアイコンについては除外される。3D表現の表示は、設計を容易にする(すなわち、設計者が作業を達成するスピードを統計的に速める)。製品の設計は製造工程の一部であるから、これによって当該産業における製造工程が迅速化する。
【0027】
3Dモデル化オブジェクトは、CADソフトウェア・ソリューションやCADシステム等を用いた仮想的デザインの完了後に実世界において製造される製品、すなわち(例えば機械的な)部品や、部品の集合、より一般的には任意の剛体の集合体(例えば移動機構)などの製品のジオメトリを表現してもよい。CADソフトウェア・ソリューションは、航空宇宙、建築、建設、消費財、ハイテク機器、産業機器、輸送、海洋、および/または海洋石油/ガス生産、または交通を含む、限定されることのない様々な産業分野において製品の設計を可能にする。本方法により設計される3Dモデル化オブジェクトは、このように、地上車両の部品(例えば、自動車および軽トラック機器、レーシングカー、オートバイ、トラックおよびモーター機器、トラック、バス、電車を含む)、航空車両の部品(例えば、航空機体機器、航空宇宙機器、推進機器、防衛製品、航空路線機器、宇宙機器を含む)、海軍車両の部品(例えば、海軍用機器、商業用船舶、オフショア機器、ヨットおよび作業船、船舶用機器を含む)、一般的な機械部品(例えば、工業用製造機械、大型移動機械または機器、設置機器、産業機器製品、加工金属製品、タイヤ製造製品を含む)、電気機械部品または電子部品(例えば、家電、セキュリティおよび/または制御および/または計装製品、コンピューティングおよび通信機器、半導体、医療装置および設備を含む)、消費者製品(例えば、家具、家庭用および庭用製品、レジャー用品、ファッション用品、耐久消費財小売用品、織物類小売用品を含む)、包装(例えば、食品および飲料およびたばこ、美容およびパーソナルケア、家庭用製品包装を含む)などのように、任意の機械的部品であり得る工業製品を表してもよい。
【0028】
PLMシステムとは、物理的な、製造された製品(または製造される予定の製品)を表すモデル化オブジェクトの管理に適した任意のシステムをも指す。PLMシステムでは、モデル化オブジェクトは、このように、物理的な物体の製造に適したデータによって定義される。これらは、典型的には、寸法の値および/または公差の値であってもよい。物体を正しく製造するために、実際、このような値を用いるのが望ましい。
【0029】
CAMソリューションとは、製品の製造データを管理するのに適した、ハードウェアのソフトウェアである、あらゆるソリューションをも指す。製造データは、一般に、製造する製品、製造工程、および必要なリソースに関するデータを含む。CAMソリューションは、製品の製造工程全体を計画し最適化するのに用いられる。例えば、実現可能性、製造工程の期間、または製造工程における特定のステップで使用されるリソース、例えば特定のロボットの数に関する情報をCAMユーザに提供することができる。これにより、管理や必要な投資についての決定を可能にする。CAMは、CAD工程、および、場合によりCAE工程に続く工程である。このようなCAMソリューションは、ダッソー・システムズにより、DELMIA(登録商標)として提供されている。
【0030】
CAEソリューションとは、モデル化オブジェクトの物理的挙動の分析に適した、ハードウェアのソフトウェアである、あらゆるソリューションをも指す。よく知られており広く用いられているCAE技術は有限要素法(Finite Element Method:FEM)であり、これは、典型的には、モデル化オブジェクトを、物理的挙動を方程式によって計算しシミュレーションできる要素に分割することを含む。このようなCAEソリューションは、ダッソー・システムズにより、SIMULIA(登録商標)として提供されている。成長するCAE技術のもう1つは、CADジオメトリデータを使用せずに異なる物理分野の複数の要素で構成される複雑なシステムのモデリングと解析を行うことを含む。CAEソリューションはシミュレーションを可能にし、それにより、製造する製品の最適化、改善および検証を可能にする。このようなCAEソリューションは、ダッソー・システムズにより、DYMOLA(登録商標)として提供されている。
【0031】
PDMはProduct Data Management(生産データ管理)の略である。PDMソリューションとは、特定の製品に関するすべての種類のデータを管理するのに適した、ハードウェアのソフトウェアである、あらゆるソリューションを指す。PDMソリューションは、製品のライフサイクルにかかわるすべての関係者によって使用されてもよい。これには、主として技術者のほか、プロジェクトマネージャー、財務担当者、営業担当者、およびバイヤーも含まれる。PDMソリューションは、一般に、製品指向のデータベースに基づく。これにより、関係者が製品に関する一貫したデータを共有することが可能になり、これにより、関係者が異なるデータを用いるのを防止する。このようなPDMソリューションは、ダッソー・システムズにより、ENOVIA(登録商標)として提供されている。
【0032】
図10は、クライアントであるコンピュータの一例を示す。この例はサーバにも同様に適用可能である。本例のクライアントコンピュータは、内部通信バス1000に接続された中央演算処理装置(CPU)1010、および同じくバスに接続されたランダムアクセスメモリ(RAM)1070とを備える。クライアントコンピュータは、さらに、バスに接続されたビデオランダムアクセスメモリ1100と関連付けられたグラフィックス処理装置(GPU)1110を備える。ビデオRAM1100は、当該技術分野において、フレームバッファとしても知られる。大容量記憶装置コントローラ1020は、ハードドライブ1030などの大容量記憶装置へのアクセスを管理する。コンピュータプログラムの命令及びデータを具体的に実現するのに適した大容量メモリ装置は、例として、EPROM、EEPROM及びフラッシュメモリ装置のような半導体メモリ装置、内蔵ハードディスクやリムーバブルディスクなどの磁気ディスク、光磁気ディスク、およびCD-ROMディスク1040を含む、すべての形式の不揮発性メモリを含む。前述のいずれも、特別に設計されたASIC(特定用途向け集積回路)によって補完されてもよいし、組み入れられてもよい。ネットワークアダプタ1050は、ネットワーク1060へのアクセスを管理する。クライアントコンピュータはまた、カーソル制御装置、キーボードなどの触覚装置1090を含んでいてもよい。カーソル制御装置は、ユーザがディスプレイ1080上の任意の所望の位置にカーソルを選択的に位置させることを可能にするために、クライアントコンピュータ内で使用される。さらに、カーソル制御デバイスは、ユーザが様々なコマンドを選択し、制御信号を入力することを可能にする。カーソル制御装置は、システムに制御信号を入力するための多数の信号生成装置を含む。典型的には、カーソル制御装置はマウスであってもよく、マウスのボタンは信号を生成するために使用される。あるいは、または追加的に、クライアントコンピュータシステムは、感知パッドおよび/または感知スクリーンを備えてもよい。
【0033】
コンピュータプログラムは、コンピュータによって実行可能な命令を含んでいてもよく、命令は、上記システムに方法を実行させるための手段を含む。プログラムは、システムのメモリを含む任意のデータ記憶媒体に記録可能であってもよい。プログラムは、例えば、デジタル電子回路、またはコンピュータハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせで実装されてもよい。プログラムは、例えばプログラマブルプロセッサによる実行のための機械読み取り可能な記憶装置に具体的に実現された製品のような装置として実装されてもよい。方法ステップは、プログラム可能なプロセッサが命令のプログラムを実行し、入力データを操作して出力を生成することによって方法の機能を実行することによって実行されてもよい。したがって、プロセッサは、データ記憶システム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受信し、また、それらにデータおよび命令を送信するようにプログラム可能であってもよく、またそのように接続されていてもよい。アプリケーションプログラムは、高水準の手続き型またはオブジェクト指向のプログラミング言語で、または必要に応じてアセンブリ言語または機械語で実装されていてもよい。いずれの場合も、言語はコンパイラ型言語またはインタープリタ型言語であってもよい。プログラムは、フルインストールプログラムまたは更新プログラムであってもよい。いずれの場合も、プログラムをシステムに適用すると、本方法を実行するための指示が得られる。
【0034】
本方法は、製造工程に含まれていてもよく、当該製造工程は、本方法を実行した後、表示されたモデル化オブジェクトに対応する物理的製品を生産することを含んでいてもよい。
【0035】
図1に戻って、モデル化オブジェクトの3D集合体を設計する方法の一例について説明する。
ステップS10において、3Dモデル化オブジェクトの3D集合体が、第2のコンピュータ、例えばクライアントコンピュータによって描画される。3D集合体は、少なくとも2つの3Dモデル化オブジェクトをマージすることによって得られる。第1の3Dモデル化オブジェクトは、第1の3Dモデル化オブジェクトの少なくとも1つのラスタ画像を第2のコンピュータにストリーミングする第1のコンピュータ(例えばサーバ)に格納されている。したがって、当該少なくとも1つのラスタ画像は、マージを行う際には、すでに第1のコンピュータから第2のコンピュータへとストリーミングされている。第2の3Dモデル化オブジェクトは、第3のコンピュータに格納されていてもよいし、第1のコンピュータに格納されていてもよい。これについては
図5を参照して説明する。
【0036】
ここで
図4を参照して、3D集合体の描画の一例について説明する。ステップS100において、ユーザのコンピュータ上で動作するアプリケーションは、例えば、表示される集合体を選択するユーザ操作に応じて、3D集合体の表示を要求する。表示される3D集合体のモデル化オブジェクトの少なくともいくつかを記憶するサーバ(第1のコンピュータとも呼ばれる)とは対照的に、ユーザのコンピュータは、クライアントまたは第2のコンピュータとも呼ばれる。
【0037】
ここで
図8を参照すると、サーバ1とクライアント2とが、例えばコンピュータネットワークを介して接続された例が示されている。コンピュータネットワークは、コンピュータによるデータ交換を可能にする電気通信ネットワークである。当該ネットワークは、LAN、MAN、WAN、インターネットなどであってもよいが、これらに限定されるものではない。本発明の方法は、任意の種類のコンピュータネットワークに対して実行することができる。さらに
図8を参照すると、サーバ1に格納された同じ3D集合体の表示を要求、あるいは、サーバ1または第2のサーバ3に格納されているかもしれない別の3D集合体の表示を要求することができる、第2のクライアント4が示されている。興味深いことに、サーバ1に格納されていない3D集合体のモデル化オブジェクトは、他のサーバ3、あるいは要求を実行したクライアント2、あるいは第2のクライアント4にさえも格納することができる。したがって、本発明は、クライアント/サーバモデルまたはピアツーピアモデルで実行することができ、実際、3D集合体の表示を要求するクライアント2から到達可能な任意のコンピュータ1、2、3は、表示する集合体のモデル化オブジェクトを格納することができる。
【0038】
図4に戻って、ステップS102において、第1の3Dモデル化オブジェクトの少なくとも1つのラスタ画像がサーバによって算出される。ラスタ画像という用語は、一般的に矩形の画素、または色の点のグリッドを表す、コンピュータを介して見ることが可能なドットマトリックスデータ構造を指す。ラスタ画像は、画像の画素を単位とする幅と高さ、および1画素あたりのビット数によって技術的に特徴づけられる。第1の3Dモデル化オブジェクトという用語は、サーバに格納された3D集合体を形成する1つまたは複数のモデル化オブジェクトを意味する。サーバは、当該技術分野で知られているように演算を実行する。例えば、サーバは、アプリケーションの要求を受信し(S100)、そのデータベースから集合体を構成する3Dオブジェクトを取得し、取得した3Dオブジェクトから3D空間内におけるこれらの3Dオブジェクトの画素を算出し、次いで視点(例えばデフォルトの視点、あるいは当該集合体のユーザの最後の視点)を選択し、そして選択された視点に基づいてラスタ画像を得る。実際には、3D描画エンジンは、当技術分野で知られているように、特定の視点から見た3Dシーンの、1つまたは複数のラスタ画像を生成する。例えば、3D描画エンジンは、3D空間上の視点に応じて、3D空間におけるこれらの3Dオブジェクトの画素を算出するためにサーバの演算処理ユニット(CPU)を使用し、画像(画素の集合)を取得するためにサーバのグラフィック処理ユニットを使用する。実際には、最も一般的なパイプラインは以下のとおりである。CPUは、三角形のリストをGPUに送信する。次に、GPUは、基準系内の三角形の頂点の座標を、現在の視点の系における新しい座標に変換する。すると三角形の新しい座標が2D空間に投影され、投影された三角形が、表示される画像を構成する1組の画素に変換される。
【0039】
ステップS104では、ステップS102で取得された第1の3Dモデル化オブジェクトの各ラスタ画像について深度バッファが算出される。深度バッファという用語は、深度バッファリング(zバッファリングとしても知られる)工程の結果を意味する。深度バッファリングまたはzバッファリングは、当該技術分野において周知である。各画像の深度バッファは、画像の各画素について、画素の深度(z座標)を記憶する。深度バッファは、ラスタ画像内の各画素について、その画素からカメラまでの距離に関する値を格納するラスタ画像と同じ次元を有する、2D配列(x-y)である。興味深いことに、深度バッファに記憶された値は、必ずしも点-カメラ距離の線形関数ではないが、当技術分野で知られているように、常に単調関数(ほとんどの場合、厳密な増加関数)である。用いられる深度バッファの粒度は任意であり、例えば16ビットまたは24ビットまたは32ビットの深度バッファを用いることができる。実際には、利用できるより高い粒度が選択される。一般的には、32ビットの深度バッファである。
【0040】
ステップS102およびS104は、第1のコンピュータによって実行される。これは、第1のコンピュータでのグラフィック描画機能を示す。ステップS102およびS104は、算出される新しいラスタ画像ごとに連続的に実行される。これは、幾つかのラスタ画像が連続的に算出される場合、1つのラスタ画像の深度バッファが、当該1つのラスタ画像が算出された後すぐに算出されることを意味する。あるいは、ラスタ画像(例えば、所定の数のラスタ画像)が算出された後に、深度バッファの集合を算出することができる。
【0041】
次に、ステップS120において、ステップS102で算出されたラスタ画像がサーバからクライアントにストリーミングされる。すなわち、それによりクライアントは画素画像のストリームを受信する。ストリーミングとは、ラスタ画像が、サーバによって配信されつつクライアントによって受信され、クライアントに対して提示されることを意味する。クライアントとサーバとの間に、チャネルが作成され、開かれる。チャネルは、例えば、クライアントの要求に応じて作成される。そして、サーバはこのチャネルを介してラスタ画像をクライアントに送信する。
【0042】
ラスタ画像と深度バッファは、一緒にストリーミングされてもよい。これは、クライアントがラスタイメージとそれに関連付けられた深度バッファを「同時に」受け取ることを意味する。ここで、「同時に」という表現は、コンピュータネットワークのパラメータ(帯域幅、プロトコルなど)および状態(輻輳、遅延など)に応じて変化する可能性のある、所定のタイムスロット中に、ということを意味する。例えば、5秒のタイムスロットにおいて、クライアントはラスタ画像を受け取り、次に深度バッファを受け取る。すでに説明したように、ステップS102およびS104は算出される新しいラスタ画像ごとに連続して実行されるため、ラスタ画像とともに深度バッファをストリーミングするのが容易になる。
【0043】
ラスタ画像および深度バッファは、単一のストリームにおいて、すなわち1つのストリームを用いてストリーミングされてもよい。あるいは、ラスタ画像は第1の単一ストリームでストリーミングされ、深度バッファは第2の単一ストリームでストリーミングされる。
【0044】
実際には、ラスタ画像を含む単一のストリーム、および/または深度バッファを含む単一のストリーム、またはラスタ画像および深度バッファの両方を含む単一のストリームが符号化される。符号化は、圧縮方式であってもよい。描画された画像のシーケンスまたは深度バッファのシーケンスが動画を作るのに、例えばH.264のような標準的な動画圧縮方式を使用することができる。興味深いことに、H.264圧縮方式は、L.Chengらによる「Real-time 3D Graphics Using Streaming MPEG-4」、またはP.FechtelerおよびP.Eisertによる「Accelerated Video Encoding Using Context Information Render」といった文献に記載されているような方法を用いて強化することができる。これらは、標準的ビデオコーデックに見られるような演算コストの高い動き推定検索アルゴリズムを用いる代わりに、シーンの描画中に用いられる3Dシーン情報(深度、カメラの動き、または3D部品の動き)から、直接動きベクトルを算出する方法を提供する。D.Pajak、R.Herzog他による文献「Scalable Remote Rendering with Depth and Motion-flow Augmented Streaming」は、描画された画像と深度バッファの相関性が高いことを考慮して、それら両方を単一のビデオストリームに符号化するソリューションを提供している。好都合なことに、この最後の解決策では、描画された画像と深度バッファの両方を含み、かつ、3Dシーンによっては、H.264ストリームにおいて単独で符号化された描画画像よりも軽くなり得る、単一のストリームを生成することが可能になる。
【0045】
なお、サーバからクライアントへ(およびクライアントからサーバへも)送信される必要がある任意のデータ(ラスタ画像、深度バッファなど)は、好ましくは、ストリーミングチャネルを用いて送信される。例えば、3Dシーンがサーバ上で修正されると(例えば、3Dシーン内の新しいオブジェクトや、3Dシーン上でのシミュレーションの実行)、その修正はクライアントにストリーミングされる。実際には、クライアントのユーザは3Dシーンに対する対話操作を行い、データがクライアントによって常に受信され、クライアントに常に提示されるようにする。また、ユーザが3Dシーンに対する対話操作を行なわないとき(あるいは3Dシーンにおいて何も動いていないとき)、ストリーミングされるデータの量は非常に少なくなる。なお、チャネルは開いたまま維持される。
【0046】
次に、ステップS130において、第2の3Dモデル化オブジェクトが、ストリーミングされた少なくとも1つのラスタ画像とマージされる。第2の3Dモデル化オブジェクトは、ジオメトリ3Dモデル化オブジェクトであり、クライアントコンピュータはマージを実行する。マージとは、第2の3Dモデル化オブジェクトを定義するデータが、ピクセルストリーミングによって送信された描画ビューの「中に」描画されることを意味する。上述のように、これらのデータは、モデル化オブジェクトの表現、例えば、辺または線、場合により面またはサーフェスを用いた表現を可能にするデータを含む。したがって、ステップS130は、ここでは、第2のコンピュータのグラフィックス描画能力を示す。すなわち、第2の3Dモデル化オブジェクトの画像はクライアントによって算出され、この画像は1つまたは複数のラスタ画像と組み合わされる。よって、新しく算出された、第2の3Dモデル化オブジェクトの画像、およびストリーミングされたラスタ画像は、第2(クライアント)コンピュータ上で描画される画像を形成するために結合される。第2の3Dモデル化オブジェクトは、クライアントコンピュータに格納されてもよく、あるいは第3のコンピュータからクライアントコンピュータに送信されてもよい。例えば、
図8を参照すると、第2の3Dモデル化オブジェクトは、他のサーバ3、あるいは要求を実行したクライアント2、あるいは第2のクライアント4にさえも格納することができる。
【0047】
マージの結果、描画されるべき新しい画像が生成される。したがって、マージとは、第2の3Dモデル化オブジェクトのジオメトリを、ピクセルストリーミングによって送信された描画ビューの「中に」描画することを含む。第2の3Dモデル化オブジェクトの画像は、第2のコンピュータによって、ラスタ画像のストリーミングから受信した現在のラスタ画像と合成される。実際には、第2の3Dモデル化オブジェクトの画像は、ラスタ画像と同じサイズ(同じ画素長、画素幅、および画素数)を有する。
【0048】
第2の3Dモデル化オブジェクトをラスタ画像とマージするとき、第2の3Dモデル化オブジェクト上の視点が、第2のモデル化オブジェクトの画像を算出するために選択される。視点の選択は、デフォルトで実行されてもよいし(例えば、第2のオブジェクトのユーザの最後の視点)、ランダムな工程で実行されてもよいし、また、ラスタ画像に対して選択された視点と同じ視点を用いて実行されてもよい(例えば、カメラの位置は、第1及び第2のモデル化オブジェクトによって共有される基準系内に提供される)。
【0049】
第2の3Dモデル化オブジェクトのラスタ画像と算出された画像とは、第2の3Dモデル化オブジェクトのどのフラグメントを描画するかを決定するために、画素単位で比較することによって組み合わされてもよい。フラグメントという用語は、描画画像上に画素を生成する可能性のある(描画されるか、または描画されない)3Dオブジェクトの一部を意味する。この用語は当技術分野で広く使用されており公知である。第2の3Dモデル化オブジェクトのフラグメントが、モデル化オブジェクトの3D集合体の描画画像の画素に描かれるべきであるときはいつも、第1のコンピュータからストリーミングされた深度バッファにおける対応する値と、カメラへの距離Fに関する値とが比較される。上述のように、ストリーミングされた深度バッファに格納された値は、カメラから、ストリーミングされた描画画像内の対応する画素までの、距離に関係する。したがって、この画素単位の比較は、描かれるべき第2の3Dモデル化オブジェクトのフラグメントが、第1の3Dモデル化オブジェクトにおける、ストリーム化された少なくとも1つのラスタ画像に由来する、すでに描かれた画素よりも、カメラから遠いか、あるいは近いかを決定するために実行される。この方法は、z-カリングと呼ばれ、第2の3Dモデル化オブジェクトのジオメトリを、ピクセルストリーミングによって送信された描画ビューの「中に」描画することによって、第2のコンピュータ上で3D集合体のビューを表示することを可能にする。このように、「ピクセルストリーム」で送信される深度バッファ(または深度マップ)は、オクルージョンを解決するために、すなわち、3D集合体のビューにおいて、各ストリームにおけるどの要素が可視でどの要素が不可視かを決定するために、使用される。
【0050】
次に、ステップS140において、3D集合体の描画画像の品質をさらに改善するために、3D集合体のビュー(S30)に対する照明効果が算出される。照明効果という用語は、特に、第2の3Dモデル化オブジェクトの視覚的側面における第1の3Dモデル化オブジェクトの光と影を含み、逆もまた同様である。したがって、ピクセルストリームの第1の3Dモデル化オブジェクトとジオメトリストリームの第2の3Dモデル化オブジェクトとの間の照明相互作用(光と影の投射)が算出される。
【0051】
次に、ステップS150において、モデル化オブジェクトの3D集合体が、第2のコンピュータ上で描画され表示される。これは、当技術分野で知られているように行われる。
【0052】
ここで
図6を参照して、
図3のフローチャートを参照して説明した本発明の一例について説明する。ユーザは、第1のサーバに格納された2つの3Dモデル化オブジェクト(立方体と円錐)からなる第1のセットS1と、第2のサーバに格納された2つの3Dモデル化オブジェクト(円柱とトーラス)からなる第2のセットS2とを含む3D集合体をコンピュータクライアント上で表示することを要求した(S100)。要求の結果、S1のラスタ画像R1および深度マップD1(または深度バッファ)が第1のサーバによって算出され(S102、S104)、次いでR1およびD1を含む単一のピクセルストリーミングが第1のサーバによってクライアントに送信され、第2のセットS2のジオメトリストリーミングが第2のサーバによってクライアントに送信される。その他の構成も考えられる。例えば、第1のサーバが2つのピクセルストリーム(R1用に1つ、D1用に1つ)を送信してもよく、および/または、セットS2がクライアントコンピュータに格納されてもよい。そして、クライアントは、2つのストリームをマージし、照明効果を算出し、3D集合体R2を遠隔描画する。
【0053】
本発明は、クライアントの数が増加する状況において遠隔描画のスケーラビリティを改善する。例えば、画素としてストリーミングされる部分である3Dシーンの3Dオブジェクトの数を、ジオメトリとしてストリーミングされる部分へと増やすことが可能であり、クライアントの数が増加する場合には、そのようにすることが有益であり得る。したがって、本発明により、クライアントの数およびそれらの構成に応じて、ピクセルストリームとジオメトリストリーミングとの間のロードバランシングを行うことが可能になる。別の例として、2つ以上のクライアントの視点が十分接近している場合、ジオメトリストリーミング(可能であればマルチキャストによる相互ストリームで)でそれらの近くのアセットを送り、遠くのオブジェクトはピクセルストリーミングで送信するという戦略をとることができる。実際、ストリーミングされた画像は、視差のために、一部のアセットの位置をわずかにシフトさせるだけで十分に近くなる可能性があり、これはすなわち、これらの画像もマルチキャストによる相互ストリームで送信される可能性がある。もう1つの「ロードバランシング」戦略は、クライアントが対話操作を行う可能性の高いオブジェクトにジオメトリストリーミングを用い、遠くのオブジェクトをピクセルストリーミングで送信することである。有利なことに、ネットワークが断絶した場合でも、クライアントは依然として、対話操作を行う可能性の高いオブジェクトに対して対話操作を行うことができる。ピクセルストリーミングで送信された部分の歪み(視差による変形に関するもの)は引き続き許容可能な状態となるので、クライアントは、視点を変更することもできる。
【0054】
ここで
図5を参照して、モデル化オブジェクトの3D集合体に対する照明効果の算出(S140)の例について説明する。これらの照明効果を後処理として算出するために、3Dコンピュータグラフィックの分野で多くの技術が開発されている。ここで後処理とは、画素のRGB空間への変換後に照明効果が算出されることを意味し、例えば、3D集合体の画像は、フレームバッファに格納され、そこから後処理される。これには、遅延シェーディング、スクリーン・スペース・アンビエント・オクルージョン、スクリーン・スペース・ダイレクト・オクルージョン、スクリーン・スペース・ローカル・リフレクション、スクリーン・スペース・シャドウ・レイ・トレーシングと呼ばれる技術等が含まれる。これらの技術は共通して、画素ごとに、少なくとも以下の情報を必要とする:面法線方向およびマテリアル特性。また、光源に関する情報(位置、色、距離など)を必要とする場合もある。
【0055】
ステップS400において、サーバは、第1の3Dモデル化オブジェクトの少なくとも1つのラスタ画像に関連付けられた1つまたは複数の第1の光源情報と、第2の3Dモデル化オブジェクトに関連付けられた1つまたは複数の第2の光源情報を受信する。実際には、第1の光源情報は、ラスタ画像を搬送するのと同じストリームにおいて送信される。あるいは、深度バッファのストリームとともに送信することもでき、また、独立した単一ストリームで送信することもできる。第2の光源情報は、ジオメトリストリームにおいて送信される。なお、独立した単一ストリームで送信することもできる。各光源に関する情報は、少なくとも光源の位置を含む(例えば、第1および第2のモデル化オブジェクトによって共有される基準系内)。さらには、光源の色、スペクトル分布、光度の空間分布を含んでいてもよいが、これらに限定されない。
【0056】
次に、ステップS410で、第2の3Dモデル化オブジェクトを前記少なくとも1つのラスタ画像の第1の深度バッファとマージすることによって、第2の深度バッファが算出される。このマージは、第2の3Dモデル化オブジェクトをラスタ画像にマージするのと同じ方法で実行される。
次に、ステップS420において、第2深度バッファ(S410)から法線マップが算出される。法線マップは、モデル化オブジェクトの3D集合体の各画素について、面法線方向を格納している。法線マップは、畳み込みフィルタを第2の深度バッファに適用することによって算出することができる。法線マップの算出は、当該技術分野で知られているように実行してもよい。深度の勾配(フィルタとしてSobelマスクを使用する畳み込み)が算出される。この勾配はスクリーン空間における法線のおおよその近似値である。そして、この勾配は、2D空間(スクリーン空間)から基準空間へ「未投影」である可能性がある。
【0057】
次に、ステップS430で、少なくとも1つのラスタ画像とマージした第2の3Dモデル化オブジェクトの各画素のマテリアル特性が推定される。これは、例えば、画素色、またはストリームから行うことができる。あるいは、マテリアル特性は、第1および第2の3Dモデル化オブジェクトをホストするサーバから直接得ることができる。例えば、同じストリーム中で光源情報とともに送信される。
【0058】
次に、ステップS440で、識別バッファが算出される。クライアントは、3Dモデル化オブジェクトの最初のセットから、描画画像と深度バッファのみを知ることができる。上述のとおり、照明技術は、各画素について、深度、面法線方向、および、わずかなマテリアル特性を必要とすることがある。したがって、この欠落した情報を回復するには、追加のステップが必要である。この追加のバッファ(識別バッファ)は、各画素について、描かれた画素が第1のシーンのストリーミングされた画像に由来するか、第2のセットの3D部分の描画に由来するかを識別する、バイナリ値を格納するために使用される。以後、各画素の起源(画素が、3Dオブジェクトのどちらのセット(すなわち、第1の3Dモデル化オブジェクト、または第2の3Dモデル化オブジェクト)に由来するかを識別し、画素の照明については、他のセットの画素および他のセットに関連付けられた光源からの情報のみを考慮に入れる。
【0059】
なお、
図5のフローチャートは一例に過ぎず、照明効果の算出を変更することなくステップの順序を変更することができる。もう1つの例が、
図7に関連して示される。
【0060】
ここで、クライアントコンピュータは、各画素の面法線方向およびマテリアル特性を端緒に、後処理としての照明効果を算出するためのすべての情報を取得済みである。
図7を参照して、
図4および
図5のフローチャートを参照して説明した本発明の一例について説明する。
図7は、
図3のパイプラインを、後処理技術を用いた照明補正を含むように修正したものである。上述の
図3のステップはここでも有効である。ユーザは、第1のサーバに格納された2つの3Dモデル化オブジェクト(立方体と円錐)からなる第1のセットS1と、第2のサーバに格納された2つの3Dモデル化オブジェクト(円柱とトーラス)からなる第2のセットS2とを含む3D集合体をコンピュータクライアント上で表示することを要求した(S100)。要求の結果、サーバによってS1のラスタ画像R1および第1の深度マップD1(または深度バッファ)が算出され(S102、S104)、R1が算出された3Dシーンにおいて、第1の光源L1(電球で表される)の情報が識別され、R1、D1およびL1が、第1のサーバからクライアントにストリーミングされる。同時に、第2のセットS2のジオメトリストリーミングが、S2に関連付けられた第2の光源L2(これも電球で表される)の情報とともに、第2のサーバによってクライアントに送信される。クライアントは、これら2つのストリームをマージする。つまり、クライアントはラスタ画像R1をジオメトリのセットS2にマージする。マージの結果として、3D集合体R2が得られる。次に、R2のオブジェクトのマテリアル特性を推定する(S430)。R2の画素のマテリアル特性Mの推定は、例えば、ピクセルストリームおよびジオメトリストリーム内で送られるマテリアル特性が識別されると、またはR2の画素の色が分析されると実行される。マテリアル特性を算出する間に、第2のセットS2をD1とマージすることによって、第2の深度バッファD2が算出され(S410)、次に識別バッファIが算出される(S430)。D2から法線マップNが生成される(S420)。ここで、クライアントは、入力R2、D2、I、N、M、およびS1とS2からの光源情報を必要とする後処理技術を用いて照明補正を実行するためのデータを備える。新しい画像R3は、S2のオブジェクトに対するS1からのオブジェクトおよび光源の照明効果(逆も同様)を考慮した、R2の代用物(pro R2)である。モデル化オブジェクトの3D集合体R3が描画され、ユーザに対して表示される。
【0061】
ここで
図9を参照して、クライアントのユーザが、描画された3D集合体(例えば
図6のR2、または
図7のR3)上で視点を変更する際のサーバとクライアントの対話(または送受信)について説明する。クライアントおよびサーバは、
図8に示すように、クライアント2およびサーバ1とすることができる。クライアントおよびサーバは、少なくともストリーミングチャネルで接続されている。クライアントおよびサーバの第2のコンピュータは、メモリに接続された処理回路を備える。クライアントはさらに、ユーザが3Dシーンに働きかけることを可能にするグラフィカル・ユーザ・インターフェイスを備える。第1および第2のコンピュータの各メモリには、
図9に示す送受信S600~S660を実行するためのコンピュータプログラムが記録されている。これは、サーバのメモリ上のコンピュータプログラムおよびクライアントのメモリ上のコンピュータプログラムが本発明の方法の実行を可能にすることを意味する。クライアントとサーバの両方のメモリ上のコンピュータプログラムは同じものであってもよい。
【0062】
あるいは、サーバのメモリ上のコンピュータプログラムは、データのストリーミングのためのチャネルを作成すること、および/または維持することを可能にし、さらにステップS620~S640の実行を可能にし、クライアントのメモリ上のコンピュータプログラムは、データのストリーミングのためのチャネルを作成すること、および/または維持することを可能にし、さらにステップS600~S610および650~660の実行を可能にする。この代替案では、クライアントおよびサーバ上のコンピュータプログラムは同一ではないが、本発明の方法を実行するために協働する。
【0063】
ステップS600において、表示された3D集合体での新しい視点が、クライアントコンピュータ上でユーザによって選択される。これは、当技術分野で知られているように行われる。メッセージS610が、3D集合体上で選択された新しい視点の座標とともにサーバに送信される。サーバは、メッセージS620およびそこに含まれる新しい座標を受信する。第1の3Dモデル化オブジェクトと第2の3Dモデル化オブジェクトとマージされたラスタ画像を含むサーバ上の3Dシーンは同じ基準系を共有するため、新しい座標を適用することは、サーバにとって単純な動作である。例えば、サーバのグラフィック処理ユニットは、新しい視点を3Dシーンに直接適用することによって、表示すべき新しい画素の組を得ることができる。サーバは、新しい視点に従って、第1の3Dモデル化オブジェクトの新しいラスタ画像を算出し(S630)、これはサーバからクライアントにストリーミング(S640)される。そして最終的にクライアントに受信される(S650)。クライアントは、第2の3Dモデル化オブジェクトを、ストリーミングされた新しいラスタ画像とマージし、3D集合体の新しいビューを描画する(S660)。ステップS630~S660は、
図4~
図7を参照して説明したように実行される。
【0064】
興味深いことに、
図9のステップは、ユーザが第1のセットの3Dモデル化オブジェクトの視点を変更した場合にのみ適用される。実際に、ユーザが第2のセットのモデル化オブジェクトを操作する(例えば、移動したり回転させたりする)場合、第2のモデル化オブジェクトがストリーミングされたサーバ上では、要求を実行する必要はない。なぜなら、クライアントコンピュータは、第2のモデル化オブジェクトの新しい画像を例えば新しい視点に応じて算出するための、すべてのデータを有しているからである。
【0065】
図1のステップS20に戻って、第2のコンピュータは、第1のコンピュータに対して、第1および第2の3Dモデル化オブジェクト間の接触演算用の、第2の3Dモデル化オブジェクトに関連する第1のデータを送信する。接触という用語は、3Dモデル化オブジェクトによってモデル化された2つの物体間のクラッシュまたは衝突を含む。したがって、クラッシュまたは衝突は、2つの物体が交差することである。接触という用語は、2つの物体が接近しているときに互いに引っ張られる効果を示すスナッピングも含む。それらの表面は磁力によってくっついているように見えるが、剛体ボリューム(rigid volumes)は交差しない。
【0066】
本発明では、モデル化オブジェクトの3D集合体は、ピクセルストリームおよびジオメトリストリームが(クライアント側で)3D集合体を構築するために使用される、いわゆるハイブリッドストリーミングを用いて、第2のコンピュータ上で描画される。第2のクライアント(第2のコンピュータ)に表示された3D集合体の3Dコンテンツである第1および第2の3Dモデル化オブジェクトについて、その正しいジオメトリを認識しているコンピュータ(クライアントおよびサーバ)は存在しない。しかしながら、このハイブリッドストリーミングの文脈において、サーバ(第1のコンピュータ)がクライアント(第2のコンピュータ)に対してピクセルストリーミングの正しいジオメトリを送信したり、あるいはクライアント(第2のコンピュータ)がサーバ(第1のコンピュータ)に対して第2の3Dモデル化オブジェクトの正しいジオメトリを送信したりすると、ハイブリッドストリーミングのパフォーマンスに関する利点が失われる。
【0067】
第2の3Dモデル化オブジェクトに関連する第1のデータを含むメッセージが、第1のコンピュータによって受信され、接触演算を実行するために使用される。実際には、第1のデータは、第2の3Dモデル化オブジェクトの単純な表現(単純衝突ジオメトリとも呼ばれる)を含む。実際、第1のコンピュータは、第1の3Dモデル化オブジェクトの正しいジオメトリをすでに所有している。この単純な表現は、第2の3Dモデル化オブジェクトの正しいジオメトリから導出される。単純な表現は、3Dモデル化オブジェクトの、境界ボックス、境界球、凸包(衝突包、衝突メッシュ、または衝突ジオメトリとも呼ばれる)などであり得るが、これらに限定されない。
【0068】
単純な表現は、単純な表現の寸法(例えば、境界ボックスの寸法(高さ、幅、長さ))と、3D集合体の3D空間における、単純な表現の座標とを含む(例えば、第1の3Dモデル化オブジェクト、および第2の3Dモデル化オブジェクトとマージされたラスタ画像は、同じ基準系を共有する)。
実際には、単純な表現(または衝突ジオメトリ)の座標および寸法の精度は、少なくとも、シーンを見るカメラの3D空間に投影された、描画された3D集合体の画素サイズである。
【0069】
サーバは、単純な表現を含むメッセージを受信した後、第1の3Dモデル化オブジェクトと第2の3Dモデル化オブジェクトの接触を算出する(S30)。すなわち、サーバは、第1の3Dモデル化オブジェクトと第2の3Dモデル化オブジェクトの単純な表現との間に生じ得る接触を算出する。このステップS30では、メッセージに含まれる単純な表現とは明らかに衝突していない3D集合体の3Dモデル化オブジェクト(例えば、第1の3Dモデル化オブジェクト)を迅速に破棄するサーバによって、演算が行われる。演算に使用されるアルゴリズムは、受信された単純な表現の性質により異なる。例えば、境界ボックスには、O’Rourke,Joseph(1985),「Finding min
imal enclosing boxes」,International Journal of Computer and Information Sciences 14(3):183-199に記載のアルゴリズムを用いることができる。ステップS30の結果、第1のコンピュータは、クライアント上ですでに描画された、第2の3Dモデル化オブジェクトと接触しているかもしれない1つまたは複数の3Dモデル化オブジェクトを認識する。
【0070】
ステップS30は、おおまかな接触判定のフェーズと考えることができ、よって、明らかに衝突していない実体の組のうちの大部分を除去するための、物理的実体間の単純なテストを含む。この大まかなフェーズは、弁別的ではないが、高速化に必要である。使用できる一般的なアルゴリズムには、空間ハッシュ、スイープ&プルーン、空間分割方法などがあるが、これらに限定されない。
【0071】
次に、ステップS40で、サーバはクライアントに対し、第2のオブジェクトと接触している第1の3Dモデル化オブジェクトに関連する第2のデータを含む新しいメッセージを送信する。実際には、このメッセージは、ステップS30で廃棄されなかった1つまたは複数の第1の3Dモデル化オブジェクトの単純な表現を含む。
【0072】
第1の3Dモデル化オブジェクトに関連する第2のデータは、第1の3Dモデル化オブジェクトのジオメトリであってもよい。例えば、第2のデータは、第1のオブジェクトの単純化されたジオメトリ、例えば凸包であってもよい。あるいは、第2のデータは、第1の3Dモデル化オブジェクトの1つまたは複数の深度マップであってもよい。実際、本発明は、描画された3D集合体に関連付けられたスクリーン空間における衝突特性(衝突部品の形状、貫通ベクトル(penetration vectors)など)を算出することを目的とする。同じスクリーン空間で算出された深度マップの集合は、物理的実体の剛体ボリュームの境界を表すのに十分たり得る。これについては、例えばJang、Jeong、およびHanによる「GPU-based Image-space Approach to Collision Detection among Closed Objects」に記載されている。したがって、ジオメトリまたは単純化されたジオメトリを送信することは必須ではなく、深度マップの集合により、クライアントは第1の3Dモデル化オブジェクトが第2の3Dモデル化オブジェクトと接触しているか否かを確認することが可能になる。例えば、深度マップの集合は、第1の3Dモデル化オブジェクトの正面からのビュー(すなわち、現在の視点によるビュー)から得られた深度マップと、現在の視点に対して後ろ側のビューから得られた別の深度マップとを含んでいてもよい。なお、深度マップの集合は、特に第1の3Dモデル化オブジェクトが複雑である場合、3つ以上の深度マップを含んでいてもよい。
【0073】
興味深いことに、第1の3Dモデル化オブジェクトに関連する第2のデータは、ステップS20の第1のメッセージにおける第2の3Dモデル化オブジェクトに関連する第1のデータよりも複雑または正確であり得る。しかしながら、このメッセージにおける単純な表現は少なくなると予想されるため、送信するデータの量を増加させることはない。
【0074】
単純な表現の座標および寸法の精度は、少なくとも、シーンを見るカメラの3D空間に投影された、描画された3D集合体の画素サイズである。サーバはクライアントの画素サイズを認識している。例えば、クライアントは、この情報を、第2の3Dモデル化オブジェクトに関連する第1のデータとともに送信している。第2のデータが1つまたは複数の深度マップである場合、精度は、描画された3D集合体の画素のサイズである。第1の3Dモデル化オブジェクトに関連する第2のデータが上記第1のオブジェクトの単純化されたジオメトリである場合、第1のオブジェクトの単純化されたジオメトリと第1のオブジェクトのジオメトリとの差は、第2のコンピュータ上での画素の幅よりも小さい。これは、有利なことに、第1および第2の3Dモデル化オブジェクト間に生じ得る(または潜在的な)接触が検出されることを保証する。
【0075】
興味深いことに、単純な表現を含むメッセージの送信は、クライアント上で描画を実行するために使用される交換画素およびジオメトリストリームによって引き起こされるのではなく、また同期もしない。これにより、有利なことに、3D集合体の描画とは独立して衝突判定を始動することが可能になる。したがって、たとえ第1のオブジェクトのジオメトリがクライアントに送信されても、サーバはラスタ画像をクライアントに送信する。なお、ピクセルストリーミングと単純な表現の送信は同期させてもよい。
【0076】
次に、ステップS50において、第2のコンピュータは、第2のデータと第2の3Dモデル化オブジェクトとの間に生じ得る(潜在的接触とも呼ばれる)接触を算出する。これは厳密な接触判定のフェーズであり、大まかなフェーズの後に依然として衝突し得る、第1の3Dモデル化オブジェクトに関連する第2のデータと第2の3Dモデル化オブジェクトとの間のテストを実行する。これらのテストは、より精密である。一般的なアルゴリズムには、分離軸定理とGilbert-Johnson-Keerthi距離アルゴリズムが含まれるが、これらに限定されない。ステップS50の結果、サーバによって送信されたメッセージに含まれる第2のデータとの接触が検出されない場合、第2のモデル化オブジェクトは破棄される。
【0077】
第2のコンピュータによって算出された接触がない場合、3D集合体を新たに描画することはない。
第2のコンピュータが第1の3Dモデル化オブジェクトと第2の3Dモデル化オブジェクトの接触を算出する場合、接触演算に応じて3D集合体の描画が再度実行される。このように3D集合体を新たに描画することは、第1の3Dモデル化オブジェクトと第2の3Dモデル化オブジェクトの接触がなくなるように、第2の3Dモデル化オブジェクトが移動される(S60)ことを含んでいてもよい。このように両オブジェクト間の制約(接触がないこと)が満たされる。あるいは、3D集合体を新たに描画することは、3D集合体上に接触を表示することを含んでいてもよく、例えば、2つのオブジェクトの接触領域が、特定の色で描画されるか、または点滅する。さらに、衝突する3Dモデル化オブジェクトの形状、衝突マニフォルド(collision manifold)、および衝突する3Dモデル化オブジェクトの各組についての貫通ベクトルを算出してもよい。例えば、拡張多面体アルゴリズム(expanding polytope algorithm)は、Gilbert-Johnson-Keerthi距離アルゴリズムに関連する一般的なアルゴリズムである。
【0078】
なお、この厳密なフェーズは、サーバによって実行される可能性もある。しかしながら、厳密なフェーズをクライアント上で実行することは、クライアントとサーバとの間でやりとりされる必要のあるメッセージが少なくなるので有利である。これは特に、サーバが第2の3Dモデル化オブジェクトのジオメトリデータを知らないためである。
【0079】
図2は、
図6の例に関して、
図1を参照して説明した大まかなフェーズおよび厳密なフェーズを示す。大まかなフェーズは、境界ボックス情報、例えば、3D集合体R2における3Dモデル化オブジェクトの第2のセットS2のトーラスや円柱の境界ボックスのサイズや向きを第2のコンピュータから受信した第1のコンピュータで実行される。第1のコンピュータは、2つの第1の3Dモデル化オブジェクトを含む第1のセットS1のサブセットS’1を算出する。このサブセットS’1は、S2のオブジェクトと接触する可能性
が高い3Dモデル化オブジェクトを含む。次に、第1のコンピュータは、第2のコンピュータに、S’1の3Dモデル化オブジェクトの単純な表現を伴うメッセージを送信する。
なお、第1のコンピュータは、S1の3Dモデル化オブジェクトの完全な表現を送信してもよい。単純な表現は、好ましくは、S’1の3Dモデル化オブジェクトのジオメトリデ
ータとそれらの単純な表現との間の距離が第2のコンピュータの画素の距離よりも小さくなるようなジオメトリデータの近似である。距離は、ユークリッド距離であってもよいが、これに限定されない。これにより、S’1のオブジェクトに関連する第2のデータと第
2のオブジェクトとの接触が(もしあれば)確実に検出される。
【0080】
図3は疎な衝突判定の一例を示す。この例では、大まかなフェーズのみが生じており、これは
図2のものと同じである。第2のコンピュータは、ネットワークを介して第1のコンピュータにメッセージを送信し、このメッセージは、第2の3Dモデル化オブジェクトの単純な表現を含む。この第1のメッセージを受信した後、第1のコンピュータは、メッセージに含まれる単純な表現とは明らかに接触していない1つまたは複数の3Dモデル化オブジェクト(例えば、第1の3Dモデル化オブジェクト)を迅速に破棄し、最終的に衝突を解消するために演算を行う。サーバは、接触演算の目的(例えば、衝突する部分(クラッシュ)を表示することや、立体の制約を満たすためにオブジェクトを移動させること)に応じて、衝突するオブジェクトの形状、衝突マニフォルド、および衝突するオブジェクトの各組についての貫通ベクトルをさらに算出する可能性がある。次に、サーバは、第2のメッセージをネットワークを介して第2のコンピュータに返す。このメッセージには、前述の演算ステップの結果が含まれる。したがって、メッセージは、接触の形状を表すメッシュ(単純なジオメトリ表現)を含むことができ、または単に、この形状の描画画像、または第1の3Dモデル化オブジェクトの実体と接触している第2の3Dモデル化オブジェクトの実体ごとに、衝突マニフォルドおよび貫通ベクトルを含むことができる。最後に、クライアントコンピュータは、
図4~
図7を参照して前述したように、描画された3D集合体上に第2の3Dモデル化オブジェクトを表示することができる(したがって、3D集合体は再描画、あるいは再び描画される)。あるいは、クライアントは、描画された3Dモデル化集合体を生成する前に第2の3Dモデル化オブジェクトを移動させて、立体の制約に従うことができる。有利なことに、クライアントは第2の3Dモデル化オブジェクトのすべてのデータを所有しているため、第2の3Dモデル化オブジェクトのみを移動するのに第1の3Dモデル化オブジェクトのラスタ画像を新たに送信する必要がない。これにより、新しい位置を有する第2の3Dモデル化オブジェクトの算出が容易になる。
【0081】
以上、本発明について、その実施例を参照して詳細に示し説明したが、当業者には、添付の請求の範囲に示される本発明の範囲から逸脱することなく形式や詳細に対して様々な変更がなされ得ることが理解されるであろう。