(57)【特許請求の範囲】
【請求項１】
ホスト・プロセッサとシステム・メモリとグラフィック・サブシステムを有するコンピュータ・グラフィック・システムにおいて、シーンが第１の座標系にある複数の３次元オブジェクトによって表され、各オブジェクトが１つ以上のプリミティブを表すグラフィック・データによって表される、前記第１の座標系で位置、向き、および視野を有するカメラに従ってシーンをレンダリングする方法であって、前記ホスト・プロセッサにより、
第１の領域を表すルームであって、前記シーンを表す複数のオブジェクトとは別のものであるルームをユーザ入力に応答して前記第１の座標系に定義してシステム・メモリに記憶するステップと、
ユーザ入力に応答して、前記シーンを表す前記複数のオブジェクトを、前記ルーム内から見ることのできる可能性のある前記オブジェクトの第１の集合、および前記ルーム内から見ることのできる可能性のないオブジェクトの第２の集合に区分して前記システム・メモリから読み取るステップと、
前記オブジェクトの第１の集合および第２の集合の一方を前記ルームに関連づけるデータを前記システム・メモリに格納するステップと、
前記カメラが前記ルーム内にあるかどうかを前記ホスト・プロセッサの演算処理により判定するステップと、
前記カメラが前記ルーム内にあるものと判定されたとき、前記オブジェクトの第１の集合および第２の集合の一方を前記ルームに関連づけるデータに従って前記第１の集合を識別し、前記オブジェクトの第１の集合のうち前記ルーム内から見ることができる可能性がある部分を表す第１のグラフィック・データを生成するステップと、
前記第１のグラフィック・データをレンダリングするグラフィック指令をグラフィック・サブシステムに与えるステップと、
を含む方法。
【請求項２】
前記ルームは第１の座標系にある２次元ジオメトリである請求項１に記載の方法。
【請求項３】
前記ルームは矩形である請求項２に記載の方法。
【請求項４】
前記ルームは第１の座標系にある３次元ジオメトリである請求項１に記載の方法。
【請求項５】
前記ルームは該ルームに関連づけられた少なくとも１つのウインドウを含む請求項１に記載の方法。
【請求項６】
前記第１のグラフィック・データを生成するステップは、前記ホスト・プロセッサにより、
前記カメラの前記第１の座標系における位置、向き、および視野によって定義されるビュー切頭体が前記ウインドウと交差するかどうかを判定するステップと、
前記ビュー切頭体がウインドウと交差するものと判定されたとき、前記ビュー切頭体と前記ウインドウとの交差に従って第１の領域を決定するステップと、
前記第１の領域内にある前記ルーム内から見ることができる可能性がある部分を表す前記第１のグラフィック・データを生成するステップと、
を含む請求項５に記載の方法。
【請求項７】
シーンが第１の座標系にある複数の３次元オブジェクトによって表され、各オブジェクトが１つ以上のプリミティブを表すグラフィック・データによって表されるコンピュータ・グラフィック・システムにおいて前記第１の座標系で位置、向き、および視野を有するカメラに従ってシーンをレンダリングする装置であって、
ユーザ入力に応答して、第１の領域を表すルームであって、前記シーンを表す複数のオブジェクトとは別のものであるルームを前記第１の座標系に定義し、前記シーンを表す前記複数のオブジェクトを、前記ルーム内から見ることのできる可能性のある前記オブジェクトの第１の集合、および前記ルーム内から見ることのできる可能性のないオブジェクトの第２の集合に区分し、前記オブジェクトの第１の集合および第２の集合の一方を前記ルームに関連づけるデータを格納する手段と、
前記カメラが前記ルーム内にあるかどうかを判定する手段と、
前記カメラが前記ルーム内にあるものと判定されたとき、前記オブジェクトの第１の集合および第２の集合の一方を前記ルームに関連づけるデータに従って前記第１の集合を識別する手段と、
前記オブジェクトの第１の集合の部分を表す第１のグラフィック・データを生成する手段と、
前記第１のグラフィック・データをレンダリングする手段と、
を含む装置。
【請求項８】
前記ルームは第１の座標系にある２次元ジオメトリである請求項７に記載の装置。
【請求項９】
前記ルームは矩形である請求項８に記載の装置。
【請求項１０】
前記ルームは第１の座標系にある３次元ジオメトリである請求項７に記載の装置。
【請求項１１】
前記ルームは該ルームに関連づけられた少なくとも１つのウインドウを含む請求項７に記載の装置。
【請求項１２】
前記第１のグラフィック・データを生成する手段は、
前記カメラの前記第１の座標系における位置、向き、および視野によって定義されるビュー切頭体が前記ウインドウと交差するかどうかを判定する手段と、
前記ビュー切頭体がウインドウと交差するものと判定されたとき、前記ビュー切頭体と前記ウインドウとの交差に従って第１の領域を決定する手段と、
前記第１の領域内にある前記ルーム内から見ることができる可能性がある部分を表す前記第１のグラフィック・データを生成する手段と、
を含む請求項１１に記載の装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は一般的に言ってコンピュータ・グラフィック・システムに関し、更に具体的に言えば複雑な幾何学的モデルの画像化を実時間対話式に与えるコンピュータ・グラフィック・システムに関する。
【０００２】
【従来の技術】
３次元のオブジェクトのシーンをモデル化してＣＲＴまたは液晶表示装置等の２次元表示装置に表示するためにこのシーンをレンダリングするのに在来型のコンピユータ・グラフィック・システムが用いられる。典型的な形においては、シーンの３次元オブジェクトはオブジェクトの形状を近似する複数のポリゴン（即ちプリミティブ）によって各々表される。オブジェクトを定義するプリミティブは典型的にはローカル座標系の座標によって定義される。たとえば、オブジェクトを定義するのに用いることのできるプリミティブの１つは三角形であり、これはローカル座標系の３つの頂点の座標によって定義される。
【０００３】
シーンのレンダリングは通常２段階、すなわち形状処理およびラスタ化、に分けられる。形状処理はモデリング変換、ライティング計算、ビューイング変換、クリッピング機能およびビューポート・マッピングを含むのが一般的である。モデリング変換はプリミティブをローカル座標系からワールド座標系に変換する。ライティング計算はいろいろな場所における照明モデルを評価する。これは一定シェディングに対してプリミティブあたり１回、グーロー(Gouraud)・シェーディングに対して頂点当たり１回、またはフォング(Phong)・シェーディングに対してピクセル当たり１回評価する。ビューイング変換はワールド座標のプリミティブを３Ｄスクリーン座標系（正規化された投影座標系とも呼ばれることがある）に変換する。クリッピング機能はビュー切頭体内にあるプリミティブ（またはプリミティブの一部）を決定する。ビューポイント・マッピングはクリップされたプリミティブの座標を正規化された装置座標系（２Ｄ座標系と呼ばれることがある）にマップする。
【０００４】
ラスタ化は形状処理の間に生成されたクリップされたプリミティブの記述をピクセルに変換して表示するプロセスである。典型的なプリミティブは図１に示すように三角形Ｔ1である。その他の領域プリミティブまたは表面プリミティブはラスタ化する前に１つ以上の三角形に変換されるのが普通である。このため通常のラスタ化プロセスは三角形を扱う必要があるだけである。三角形Ｔ1はその各頂点の（ｘ、ｙ、ｚ）座標によって表される。頂点の（ｘ、ｙ）座標は表示面におけるそれの場所を与える。ｚ座標は頂点が３次元シーンの選ばれた視点からどれ程遠くにあるかを表す。ラスタ化は普通は３つのタスクに分けられる。つまり、スキャン変換、シェーディング、および可視性決定である。
【０００５】
スキャン変換は三角形によって覆われるピクセルの集合Ｓを計算するために各三角形の頂点の（ｘ、ｙ）座標を利用する。
【０００６】
シェーディングは各三角形によって覆われるピクセルの集合Ｓの色を計算する。色を計算するには多くの手法があり、そのあるものはテクスチュア・マッピングのような重度の計算手法を含んでいる。シェーディングは、形状処理に関して上に述べたライティング計算を通常は利用する。
【０００７】
可視性決定は各三角形のｚ座標を利用してその三角形にとって見ることのできるピクセルの集合ＳV（Ｓの部分集合）を計算する。選ばれた視点に近い方のｚ値を有する以前にラスタ化された三角形によって集合Ｓのピクセルの何れかが覆われるならばピクセルの集合ＳVは集合Ｓとは異なったものとなる。従って、以前に処理されたすべての三角形によって記述されるシーン中の各三角形について、ピクセルはそれが集合ＳVの中にあるならば見ることができ、それが集合ＳVの中に無く集合Ｓの中にあるならば隠れて見ることができない。また、集合ＳVが集合Ｓと同一であるならば三角形はすべて見ることができ、集合ＳVが集合Ｓと同一でなくかつ集合ＳVが空でないならば部分的に隠れ、集合ＳVが空であるならばすべて隠れて見ることができない。たとえば図２は２つの三角形Ｔ１およびＴ２を示し、そこでは三角形Ｔ１が三角形Ｔ２によって部分的に隠されている。可視性決定はｚバッファ手法を用いて行われるのがふつうのやり方である。Ｚバッファは所与のピクセルの可視プリミティブのｚ値を表すエントリを各ピクセル毎に格納する。所与の三角形によって覆われるピクセルの集合のｚ値（Znew）は補間法によって決定される。集合内の各ピクセルについて所与ピクセルのZnewが当該所与ピクセルに対応するＺバッファにエントリとして格納されているｚ値(Zold)と比較され、エントリZoldは比較結果に従ってZnewにより更新される。
【０００８】
ラスタ化は可視ピクセルＳVの集合の色を表示のためイメージ・バッファに書き込むことによって完了する。
【０００９】
シーンがより一層複雑になるにつれて在来方式のレンダリング手法は多くのグラフィック・システムにとって計算負荷が重くなりすぎて性能低下をもたらす。複雑なシーンに適する代わりのレンダリング手法が提案されている。たとえば、米国特許第5,086,496号 "Method for Hidden Line and Surface Removal in a three Dimensional Display" はビュー・ウインドウの分割された区画（これは少なくとも１つのイメージ頂点で交差する境界によって定義される）および所与の区画内で見ることができる面への可視性ポインタ（面の可視性判定を行うための）を利用している。
【００１０】
別の例として、Proc. ACM SIGGRAPH 93, pp231-238, 1993 の "Hierachical Z-Buffer Visibility" はスキャン変換を加速するために２つの階層的データ構造、オブジェクト・スペース・オクトリー(octree)およびイメージ・スペース・Ｚピラミッド、の組み合わせを記述している。
【００１１】
また、Proc. ACM SIGGRAPH 91, pp61-69, 1991の"Visibility Preprocessing for Interactive Graphics"は、モデルを複数のセルに分割し、セル対セル可視性情報（これは所与のセルについて所与のセルの少なくとも１点から部分的にまたは完全に見ることのできるセルの集合を表す）を生成する可視性予備処理段階の間に利用されるアルゴリズムを記述している。対話式操作の間既知の位置およびビュー切頭体を有する観察者がモデルの中を動き回る。各フレームにおいて観察者を含むセルが識別され、見ることができる可能性のあるセルのコンテント（これは予備的処理の間に生成されたセル対セル可視性情報から引き出される）が貯蔵装置から取り出される。見ることができる可能性のあるセルの集合は観察者のビュー切頭体に対してそれをより分けることにより更に縮小されて目対セル情報（これは特定されたビュー切頭体内の観察者にとって部分的にまたは完全に見ることができるセルの集合を表す）を生じる。目対セル情報により識別される残余の可視セルのコンテントは隠面除去およびレンダリングのためにグラフィックス・パイプラインに送られる。Proc. ACM SIGGRAPH 93, pp239-246, 1993はこれらの可視性予備処理アルゴリズムを放射線計算に応用している。
【００１２】
【発明が解決しようとする課題】
このような代替的手法はラスタ化の間の可視性決定を加速するように設計されているが、これらの手法は融通性に欠けており、多くの場合レンダリング・プロセスに計算量の重いタスクを加えるのでその利点を殺してしまう。従って、現代の３次元モデル及びシーンに見られる様々な複雑度および特性に応じた要件に合致するように調整できる融通性のあるレンダリング手法を提供することがこの分野で必要とされている。
【００１３】
【課題を解決するための手段】
従来技術の上述の諸問題および関連する問題は、ユーザが１以上のルームを定義することを可能にする機構を備えたユーザ定義ルームを利用する効率的なレンダリングという本発明の原理によって解決される。ルームとはスペースの領域、たとえば立体的セル等のことである。カメラがルーム内にある時、データが記憶される、つまり見ることができる可能性のある（または見ることができない可能性のある）オブジェクトにルームが関連づけられる。ルームはシーンを表すオブジェクトとは別のものである。予備処理ステップによりカメラがルーム内にあるかどうかが調べられ、カメラがルーム内にあるならば記憶されたデータを利用してルーム内から見ることのできる可能性のある（または見ることのできない可能性のある）シーンのオブジェクトを判定する。ルーム内から見ることのできる可能性があるものと判定されたオブジェクトだけが表示のためにレンダリングされる。
【００１４】
これに加えて、１つ以上のウインドウをルームに関連づけるデータを記憶することもできる。ウインドウはそのウインドウに関するカメラの位置、向きおよび視野によって決まる見ることのできる、または見ることのできない領域を定義するジオメトリの１断片である。ルームに関連づけられたオブジェクトの集合の外にあるがウインドウにより定義される可視領域内にあるようなオブジェクトは表示のためにレンダリングされるオブジェクトに付け加えられることが望ましい。
【００１５】
【発明の実施の形態】
図３に在来型のグラフィック・システム１００が示されており、これはシステム・バス１０６を介してシステム・メモリ１０４に結合されたホスト・プロセッサ１０２を含んでいる。システム・メモリ１０４は１つ以上の３次元モデルに含まれるオブジェクトを定義するグラフィック・データを記憶するランダム・アクセス・メモリ（ＲＡＭ）より成る。各オブジェクトを定義するグラフィック・データはローカル座標系の座標およびプリミティブの属性（たとえば色、反射率、テクスチャ）から成る。プリミティブはポリゴン、線または面などの幾何学的エンティティである。典型的な場合、プリミティブはローカル座標系における３つの頂点の座標によって定義される三角形である。この場合、システム・メモリ１０４は３次元シーンを作るオブジェクトの面を定義する三角形の頂点の順序リストを含む。この他にシステム・メモリ１０４は各三角形および変換マトリックスに対応する三角形識別子のリストを記憶する事ができる。変換マトリックスはローカル座標系からワールド座標系にシーンのオブジェクトを変換してシーン中の三角形の位置、向きおよびスケールを指定するのに用いられる。
【００１６】
入出力（Ｉ／Ｏ）装置１０８はシステム・バス１０６を介してホスト・プロセッサ１０２とインタフェースする。Ｉ／Ｏ装置はテキスト入力のためのキーボード、テンプレートまたはタッチ・パッド、ユーザ入力のためのマウス、トラックボール、スペースボールまたはライトペンなどのポインティング装置、およびグラフィック・データや任意のアプリケーション・ソフトウエアを格納するハード・ディスクまたはＣＤ−ＲＯＭなどの非揮発性記憶装置を含んでいる。従来と同様、グラフィック・データやアプリケーション・ソフトウエアは非揮発性記憶装置からシステム・メモリ１０４にロードされてシステム・プロセッサ１０２がアクセスできるようにする。
【００１７】
アプリケーション・ソフトウエアは視点（またはカメラ）を更新してシーンをナビゲートする能力をユーザに与える１つ以上のユーザ・インタフェースを含んでいるのが普通である。これに加えて、アプリケーション・ソフトウエアは一連の所定の視点から眺めたビューであるアニメーションを行う能力をユーザに与える１つ以上のユーザ・インタフェースを含むのが普通である。視点が更新されると、アプリケーション・ソフトウエアはシステム・メモリ１０４に格納された変換マトリックスを利用してシーンのプリミティブをローカル座標系からワールド座標系に変換するのが普通である。ホスト・プロセッサ１０２で実行しているアプリケーション・ソフトウエアは次にシステム・バス１０６を介してシステム・メモリ１０４とインタフェースするグラフィック・サブシステム１１０にシーンを描画するグラフィック指令を供給する。
【００１８】
一般にグラフィック・サブシステム１１０はホスト・プロセッサ１０２からグラフィック・サブシステム１１０に転送されるグラフィック指令に従って表示装置１１２の表示領域に表示するためシステム・メモリ１０４に格納されたグラフィック・データを描画するように動作する。表示装置１１２はラスタ走査手法または液晶表示手法を利用してピクセルを表示する。グラフィック・サブシステム１１０によって生成されたピクセル・データはディジタル形である。表示装置１１２はピクセル・データがアナログ形であることを必要とするのが普通である。図４に示されるようにこの場合、ディジタル・アナログ変換器（ＤＡＣ）１１４がグラフィック・サブシステム１１０と表示装置１１２との間に置かれてピクセル・データをディジタル形からアナログ形に変換するようにすることができる。
【００１９】
グラフィック指令は典型的にはデータ・ブロックのシーケンスからなり、各データ・ブロックはシーンのプリミティブを定義するグラフィック・データ（たとえば１つ以上のプリミティブの座標および属性）、関連づけられた変換マトリックス、およびグラフィック・サブシステム１１０が必要とするその他のすべての情報を含み、あるいはこれらをポイントする。グラフィック指令に関連づけられたプリミティブはプリミティブの各頂点の幾何学的座標値または同次座標値によって定義されるのが一般的である。これに加えて、グラフィック指令は通常各プリミティブの頂点に対する法線ベクトルを定義するデータを含むか、またはこれをポイントする。これらの座標および法線ベクトルはワールド座標系で指定されるのが一般的である。
【００２０】
これに加えて、ローカル座標系からワールド座標系へのシーンのプリミティブの変換はホスト・プロセッサで実行しているアプリケーションによっては行うことができず、グラフィック・サブシステムによって行われることがある。この場合、グラフィック・サブシステムに与えられるグラフィック指令はシステム・メモリ１０４に格納された変換マトリックスを含むか、またはこれをポイントし、グラフィック・サブシステムはこの変換マトリックスを用いてシーンのプリミティブをローカル座標系からワールド座標系に変換する。
【００２１】
グラフィック・サブシステム１１０はグラフィック・ワークステーションの一部として示されているが本発明の範囲はこれに限られるものではない。更に、以下に述べる本発明のグラフィック・サブシステム１１０はゲート・アレイやチップ・セットなどのハードウエアの形で実現することができる。このようなゲート・アレイやチップ・セットは少なくとも１つのプログラマブル・シーケンサ、メモリ、少なくとも１つの整数処理装置、および少なくとも１つの浮動小数点処理装置を必要に応じて含むものである。これに加えて、グラフィック・サブシステム１１０は米国特許第4,876,644号に開示されたような並列またはパイプライン・アーキテクチュアを含むものであっても良い。
【００２２】
この代わりに、以下に述べるようなグラフィック・サブシステム１１０（またはその一部）がプロセッサと共にソフトウエアの形で実現されても良い。プロセッサは通常の汎用プロセッサ、ホスト・プロセッサ１０２，またはホスト・プロセッサ１０２に一体化されたコ・プロセッサであっても良い。
【００２３】
図４に示されたようにグラフィック・サブシステム１１０はグラフィック・サブシステム１１０の動作を管理する制御装置２００を含んでいる。シーンを描画するグラフィック指令を受け取ると制御装置２００はグラフィック指令に関連づけられたグラフィック・データをジオメトリ・エンジン２０２に渡す。ジオメトリ・エンジン２０２はグラフィック指令に関連づけられたグラフィック・データをワールド座標系から３次元スクリーン座標系（正規化投影座標系と呼ばれることもある）に変換し、グラフィック・データを所定のビュー・ボリュームにたいしてクリップし、そしてクリップされたデータを３次元スクリーン座標系から正規化装置座標系（２次元装置座標系またはスクリーン座標系と呼ばれることもある）に変換する。これに加えて、適用されるシェーディング・アルゴリズムに応じて照明モデルが種々の場所（即ち、プリミティブの頂点、または所与のプリミティブにより覆われるピクセル）で評価される。変換され、クリップされたグラフィック・データは正規化装置座標系により定義されており、これはラスタ化ステージ２１２に渡される。
【００２４】
ラスタ化ステージ２１２はスキャン変換を行なって変換されたプリミティブをピクセルに変換し、シェーディング計算および可視性決定を行い、各ピクセルにおける各プリミティブの寄与度を少なくとも１つのフレーム・バッファ２１６およびｚバッファ２１４に格納する。Ｚバッファ２１４は表示装置１１２の各ピクセルについてデプス値を格納するのに十分なメモリを含んでいることが望ましい。通常はデプス値は各ピクセルにつき２４ビット整数として格納される。フレーム・バッファ２１６は表示装置１１２の各ピクセルについて色データを格納するのに十分なメモリを含んでいることが望ましい。通常色データは各ピクセルにつき赤、緑、青（ｒ、ｇ、ｂ）を表す３つの８ビット整数から構成される。ピクセル・データは表示装置１１２に表示するためにフレーム・バッファ２１６から周期的に取り出される。ジオメトリ・エンジン２０２およびラスタ化ステージ２１２の機能は多様なアーキテクチュアで組織できる。このようなアーキテクチュアについてのより詳細な議論は、Foley et. al. "Computer Graphics: Principles and Practice", pp855-920 (2nd Edition, 1990) に見ることができる。
【００２５】
本発明によりユーザが１つ以上のルームを定義することができるようにする機構が提供される。ルームとは、カメラがルーム内にあるとき見ることができる可能性のある（または見ることができない可能性のある）オブジェクトに関連づけられた立体的セル等のスペースの領域である。ルームはシーンを表すオブジェクトとは別のものである。オブジェクトとはシーンの意味ある部分集合（室内の家具など）に対応するプリミティブ（三角形など）の集まりである。予備的処理ステップがカメラがルーム内にあるかどうかを調べ、ルーム内にあるならば見ることができる可能性のある（または見ることができない可能性のある）シーンのオブジェクトを判定する。ルーム内から見ることができる可能性のあるオブジェクトだけが表示のために描画される。
【００２６】
更に具体的に述べると、本発明の機構はユーザが１つ以上のルームを定義することができるようにするユーザ・インタフェースを含んでいる。ルームは、カメラがルーム内にあるとき見ることができる可能性のある（または見ることができない可能性のある）ようなオブジェクトの集合に関連づけられたスペースの領域である。ルームは２次元（たとえば三角形）であっても３次元（たとえば立体的セル）であっても良い。ユーザがスペース内の領域を指定し（描き）そしてこの指定された領域にオブジェクトを関連づけることを可能にするものであるならどのようなユーザ・インタフェースでも使用可能である。ルームを表し、そしてカメラがルーム内にあるとき見ることができる可能性のある（または見ることができない可能性のある）オブジェクトの集合を表すデータが生成され、好ましくはシステム・メモリ１０４に格納される。カメラがルーム内にあるとき見ることができる可能性のあるものとして識別されたオブジェクトがルーム内に無いこともあることに留意されたい。ルームはモデル座標系において定義されても、あるいはワールド座標系において定義されても良い。
【００２７】
これに加えて、ユーザ・インタフェースはルームがシーンのオブジェクトと共に表示されるかどうかをユーザが制御できるようになっていても良い。ルームを見るには各ルームを定義するジオメトリを表すデータがグラフィック・サブシステムに与えられるグラフィック指令にその一部として組み込まれる。この場合、ルームはルームをその他のオブジェクトと区別するプロパティを持っていても良い。例えば各ルームはワイヤ・フレームによって表されるようになっていても良く、また特徴的な色または斜線を持っていても、ルームの壁の後にシーンのテクスチャを含んでいても良い。
【００２８】
ルームの概念を更に説明するために図５に示された例を考察することにする。ここでルームＡは８個の点Ｐ１、Ｐ２、Ｐ３、Ｐ４、Ｐ５、Ｐ６、Ｐ７、Ｐ８により定義される立体的セルであり、点Ｐ１、Ｐ２、Ｐ３、Ｐ４、Ｐ５、Ｐ６、Ｐ７、Ｐ８の各々はワールド座標系の幾何学的座標によって表されている。このシーンは例としてルームから見ることのできる３つのオブジェクト、つまりビーム４０１、パイプ４０２、およびポンプ４０３を含んでいる。図６に示されるように,カメラがルームA内にあるとき見ることができる可能性のある（または見ることができない可能性のある）オブジェクトの集合を表すデータが生成されシステム・メモリ１０４に格納される。データはルームＡと関連づけられたエントリを含むアレイを含んでいることが望ましい。各アレイは所与のエントリに関連づけられたルーム内で見ることのできるオブジェクトを識別する参照情報を含んでいることが望ましい。アレイのエントリと所与のルームとの関連づけは図示のリンク・リスト構造によって形成される。
【００２９】
図７のフローチャートに示されたように予備処理ステップはステップ５０３で始まってカメラがルーム内にあるかどうかを調べる。カメラがルーム内にあるならば、ステップ５０５に動作が進んで、カメラがルームＡ内にあるとき見ることができる可能性のある（または見ることができない可能性のある）オブジェクト（またはその一部）の集合を表すデータがシステム・メモリ１０４から読み取られる。ステップ５０７においてルームＡ内から見ることができる可能性のあるオブジェクト（またはその一部）だけを描画するためのグラフィック指令が発生される。これはステップ５０５においてメモリ１０４から読み取られたデータによって指定される。ステップ５０９において、ステップ５０７で発生されたグラフィック指令がグラフィック・サブシステムに与えられ、ここで表示のために描画される。
【００３０】
カメラがルームＡ内になければ予備処理はルームＡに関して終了する。上に述べたのと同じステップをユーザにより指定されたルームの各々に対して繰り返す事ができる。カメラが２つ以上のルームにあるならばルームの１つに関連づけられたオブジェクト（またはカメラがあるルームの各々に関連づけられたオブジェクト）が表示のために描画されても良い。
【００３１】
本発明の別の実施例においては、上述のルームは１つ以上の関連づけられたウインドウを持つことができる。この実施例においては、ウインドウは矩形などのジオメトリであり、これはウインドウに対するカメラの位置、向き、および視野に依存するワールド座標系の、見ることのできる、または見ることのできない領域を定義する所与のルームと関連づけられる。カメラがウインドウに関連づけられたルームの外にあるならば、ルームおよび関連づけられたウインドウはシーン内のオブジェクトの可視性に効果を及ぼさない。しかしカメラがルーム内にあればウインドウによって定義された見ることのできる、または見ることのできない領域はオブジェクトの可視性に効果を及ぼすことがある。ウインドウの位置はルームに関連づけられたオブジェクトの集合の外にあるオブジェクトの可視性を決定するのに用いられるのが好ましい。ウインドウを表すデータは、ワールド座標系（またはモデル座標系）の座標の集合、例えばウインドウの隅の座標により表され、これはシステム・メモリ１０４に格納されるのが好適である。ルームとウインドウとの関連づけは階層的トリー・データ構造によって表すことができ、これは以下に述べる非凸状ルームの場合に有利である。
【００３２】
図８および９はカメラがウインドウに関連づけられたルーム内にあるときにウインドウによって定義され、見ることができる可能性のある（または見ることができない可能性のある）領域を図解する。例えば、図８に示されるように立体的ルームは点Ｐ３、Ｐ４、Ｐ７、Ｐ８によって定義されるセルの側にある矩形ウインドウを持つことができる。カメラの位置、向き、および視点はビュー切頭体を定義する。図示されたように、カメラはルーム内にあり、従ってウインドウにより定義される見ることができる可能性のある（または見ることができない可能性のある）領域は、ルームに関連づけられたオブジェクトの集合の外にあるオブジェクトの可視性に影響を与える事が好ましい。ウインドウに関連づけられたルームの外にカメラがあるときには、ウインドウに関連づけられたルームはシーン内のオブジェクトの可視性に影響を与えない。
【００３３】
図９に示されるように、ウインドウへのビュー切頭体の投影は斜線部Ａを定義し、ビュー切頭体はここでウインドウと交差する。同じく定義される第２の部分Ｂではビュー切頭体はウインドウと交差しない。図８のウインドウによって定義される可視領域は切頭体の斜線部Ａに投影する部分である。同様に、図８のウインドウによって定義される見ることのできない領域は切頭体の第２の部分Ｂに投影する部分である。所与のルームに関連づけられたオブジェクトの集合の外にあるオブジェクトはウインドウの可視領域Ａを通して見ることができる。
【００３４】
ルームおよび関連づけられたウインドウに関する予備処理ステップはカメラが所与のルーム内にあるかどうかを調べる。カメラが所与のルーム内にあるならば、所与のルームに関連づけられたオブジェクトの集合内にあるオブジェクト（またはオブジェクトの一部）が識別される。これに加えて、カメラが所与のルーム内にあるならば、次の特性を有するオブジェクトが識別される。
（１）所与のルームに関連づけられたオブジェクトの集合の外にある。
（２）所与のルームに関連づけられたウインドウにより定義される可視領域内にある。
【００３５】
識別されたオブジェクト（またはオブジェクトの一部）はグラフィック・サブシステムに送られてそこで表示のために描画される。
【００３６】
図１０に示されるように、好適には予備処理ステップはステップ７０３で開始してルームをデプスで分類する。次にステップ７０５で、カメラ位置に近い方の１つ以上のルームによって隠されている（または部分的に隠されている）ルームがあれば除去されるのが望ましい。これはカメラ位置から２番目に遠いルームから始めてルームをループし、カメラに最も近いルームが処理されるまでループを続けることにより行われる。これは次のようにして行われる。所定の基準に照らして現在のルームがその背後にあるルームを隠している（または部分的に隠している）ならば、その隠されているルーム（またはその部分）は除去されて良い。ステップ７０５で除去されなかったルーム（またはその部分）の各々についてステップ７０７ないし７１３が次に行われる。ステップ７０７ないし７１３は、最も背後にあるルーム（カメラから最も遠いルーム）から最も前面にあるルーム（カメラに最も近いルーム）への順で、ステップ７０５で除去されなかったルームの各々に対して行われる事が望ましい。
【００３７】
ステップ７０７において、カメラがルーム内にあるかどうかが判定される。ステップ７０７においてカメラがルーム内にあると判定されたならば、動作はルームと関連づけられた各ウインドウに対してステップ７０９からステップ７１７まで続けられる。ステップ７０７においてカメラがルームの外にあると判定されたならば、予備処理ステップはステップ７１９に続く。
【００３８】
ステップ７０９において、ルームに関連づけられたオブジェクトの集合内にあるすべてのオブジェクトが見ることができる可能性があるものとしてマークされる。ステップ７１１において、ルームに関連づけられたオブジェクトの集合の外にあるすべてのオブジェクトが隠されているものとしてマークされる。
【００３９】
ステップ７１３において、ビュー切頭体がルームのウインドウと交差するかどうかが判定される。これは幾何学的モデリングにおいて周知の手法、例えばC. M. Hoffman, "Geometric and Solid Modeling", Morgan Kaufmann Publisgers, San Mateo, California, 1989, pp67-109に述べられた手法など、を用いて行われる幾何学的テストである。ステップ７１３においてビュー切頭体がルームのウインドウと交差するものと判定されるならば動作はステップ７１５に続く。そうでなければ予備処理ステップがステップ７１９に続く。
【００４０】
ステップ７１５において、ウインドウにより定義される可視領域が決定され、動作はステップ７１７に続く。ウインドウの可視領域はウインドウと、ビュー切頭体との交差から決定される。可視領域は平面の適当なブール組み合わせとして表現されるのが望ましい。平面のこのようなブール組み合わせを誘導する事についてのもっと詳しい議論は、Requicha, "Representation of Rigid Solids: Theory, Method and Systems", ACM Computer Surveys, Vol.12, No.2, pp.437-464に記述されている。可視領域が複雑な形状を持っている場合、可視領域の表現はより複雑でない形状を持った近似と置き換える事ができる。
【００４１】
ステップ７１７において、ウインドウによって定義された可視領域内にあるオブジェクト（またはその一部）を識別して、識別されたオブジェクト（またはその一部）を見ることができる可能性あるものとしてマークするためのより分け動作が行われる。これは識別されたオブジェクト（またはその一部）に関連づけられた識別子を、そのオブジェクト（またはその一部）が見ることのできる可能性があるものであることを示す所定値にセットする事により行われて良い。ステップ７１７のより分け動作は、隠されているものとマークされたオブジェクト（またはその一部）、つまりルームに関連づけられたオブジェクトの集合の外にあるオブジェクト、について行われるのが望ましい。
【００４２】
ステップ７１９において、すべてのルームが処理されたかどうかが調べられる。すべてのルームが処理されているならば動作はステップ７２１に続き、そうでないならば動作は次の未処理のルームのためにステップ７０７に戻る。
【００４３】
ステップ７２１において、見ることができる可能性あるものとしてマークされているすべてのオブジェクト（またはその一部）を描画するためのグラフィック指令がグラフィック・サブシステムに転送され、予備処理ステップが終了する。グラフィック・サブシステムは予備処理の間に発生されたグラフィック指令を受け取ると見ることができる可能性あるオブジェクト（またはその部分）を表示装置に表示するために描画する。
【００４４】
ルームは非凸状であっても良い。例えば、図１３は４つのウインドウＡ，Ｂ，Ｃ，Ｄを有する非凸状のルームＲの断面を示す。この例においては２つ以上のウインドウがルームの外にあるオブジェクトの可視性に影響することがあると言うことに留意されたい。例えば、視点がベクトルＸにより与えられるならばルームの外にあるオブジェクトの可視性に影響するウインドウは図示のようにウインドウＢ、Ｃ、Ｄを含む。ウインドウＡ，Ｂ，Ｃ，ＤとルームＲとの関連づけを表し、適当なウインドウの効果が評価されるようにルームＲのウインドウに関連づけられたより分け動作を指令するために図１４に示す階層的データ構造が用いられるのが望ましい。もっと具体的にいうと、ステップ７０９ないし７１７は上述のように各ルームに対して行われるものではない。その代わりに、ビュー切頭体によって交差される最も近いウインドウ（視点の位置に関して）、ＷＣ１、を識別するためにトリーのレベル１ノードのウインドウが調べられる。ステップ７０９、７１５及び７１７がこのような最も近いウインドウＷＣ１に対して行われる。このステップの結果、ウインドウＷＣ１によって定義される可視領域にあるオブジェクト（またはその一部）が、見ることができる可能性あるものとしてマークされる事になる。図１３に示された例において、最も近いレベル１ウインドウＷＣ１はウインドウＢである。次に、ＷＣ１ノードの子であるレベル２ノードのウインドウが存在するならば、ビュー切頭体によって交差されるこの子ノードの最も近いウインドウ（視点の位置に関して）、ＷＣ２、を識別するためにレベル２ノードのウインドウが調べられる。レベル１ノード処理ステップにおいて見ることのできる可能性があるものとしてマークされたオブジェクト（またはその一部）についてステップ７１５および７１７がウインドウＷＣ２に対して行われる。しかしながらこのレベル２ノードについては、ウインドウＷＣ２によって定義される可視領域内にあるオブジェクト（またはその一部）は見ることができないものとしてマークされる。図１３に示された例においては最も近いレベル２ウインドウＷＣ２はウインドウＣである。次に、ＷＣ２ノードの子であるレベル３ノードのウインドウが存在するならば、ビュー切頭体によって交差されるこの子ノードの最も近いウインドウ（視点の位置に関して）、ＷＣ３、を識別するためにレベル３ノードのウインドウが調べられる。レベル２ノード処理ステップにおいて見ることのできる可能性があるものとしてマークされたオブジェクト（またはその一部）についてステップ７１５および７１７がウインドウＷＣ３に対して行われる。しかしながらこのレベル３ノードについては、ウインドウによって定義される可視領域内にあるオブジェクト（またはその一部）は見ることができる可能性あるものとしてマークされる。以降の偶数番号レベル（４、６、８・・・）があるならばこれらのすべての偶数番号レベルに対してレベル２ノード処理ステップが繰り返されることが望ましい。また、以降の奇数番号レベル（５、７、９・・・）があるならばこれらのすべての奇数番号レベルに対してレベル３ノード処理ステップが繰り返されることが望ましい。
【００４５】
要約すると、ルームはセルおよびセル対セル可視性情報を判定しあらかじめ格納するという計算負荷の重いタスクを不必要にする。ウインドウのないルームは幾何学的計算を必要としないが、ウインドウを有するルームはウインドウの投影範囲だけに空間的に限られた幾何学的問い合わせを必要とする。従って、ルームは任意のシーンに対して高速であり、ユーザによる制御ができ、計算上効率的であり、便利で、柔軟性に富む。
【００４６】
本発明の別の実施例において、上述のルームおよび予備処理は、カメラが視点相互間で移動するときに効率的な可視性判定ができるようにするため可視性集合と共に用いられて良い。図１１および１２に示されたように、ステップ８０１で１つ以上のルームが（そしておそらくは関連づけられたウインドウが）ユーザによって定義されそしてシーンに関連づけられる。ステップ８０３で、ユーザ入力に従って最初の視点（即ち最初のカメラ位置、向き、および視角）が設定される。ステップ８０５で、ルームを有する実施例に関して述べられた（またはルーム及びウインドウを有する実施例に関して述べられた）予備処理およびレンダリングが最初の視点について行われ、この最初の視点から眺めたシーンに寄与するオブジェクトの最初の可視性集合がたとえばシステム・メモリ１０４に格納される。
【００４７】
ステップ８０７で、ユーザ入力に従って第２の視点（即ち第２のカメラ位置、向き、および視角）が設定される。ステップ８０９で、ルームに関して述べられた（またはルーム及びウインドウを有する実施例に関して述べられた）予備処理およびレンダリングが第２の視点について行われ、この最初の視点から眺めたシーンに寄与するオブジェクトの第２の可視性集合がたとえばシステム・メモリ１０４に格納される。
【００４８】
ステップ８１１で、カメラが最初の視点（または最初の視点から所定の許容範囲内にある点）にあるかどうかが判定され、カメラが最初の視点（または最初の視点から所定の許容範囲内にある点）にあるならばステップ８１３で最初の可視性集合のオブジェクトを用いてシーンが描画される。
【００４９】
ステップ８１５で、カメラの位置が最初の視点（または最初の視点から所定の許容範囲内にある点）から第２の視点（または第２の視点から所定の許容範囲内にある点）に移動したかどうかが判定され、移動しているならばステップ８１７で最初の可視性集合および第２の可視性集合の和集合によって表されるオブジェクトを用いてシーンが描画される。ステップ８１７はカメラの位置が第２の視点に補間される間に行われることが望ましい。ステップ８１７に続いて、またはこれと同時にステップ８１９が行われ、これにより第２の可視性集合のオブジェクトを用い、第２の視点に従ってシーンが描画される。
【００５０】
ルームおよび可視性集合の組み合わせは複雑なシーン中に描画されるオブジェクトの数を大きく低減させる結果となるのが典型的である。重要なことは複雑なシーンに描画されるオブジェクトの低減が特定のドメイン（たとえば軸整列したアーキテクチュア・モデル）に限られないことである。更に、カメラの補間の間の可視性集合動作は移動の間のイメージ忠実度および感覚的一貫性を多くの場合維持し、シーンの同じ複雑度に対してよりよい性能（より高速なフレーム更新）およびよりよい忠実度をもたらす傾向がある。
【００５１】
本発明は特定の実施例に関して図示されかつ説明されてきたが、この技術分野の知識を有するものにとって形態および詳細について上述の変更およびその他の変更が本発明の精神及び範囲を逸脱することなくなされうることが理解されるべきである。
【図面の簡単な説明】
【図１】三角形Ｔ１のラスタ化を表す図である。
【図２】三角形Ｔ１およびＴ２のラスタ化を表す図である。ここで三角形Ｔ１はＴ２により部分的に隠されている。
【図３】グラフィック・ワークステーションの機能的ブロック線図である。
【図４】図３のグラフィック・ワークステーションのグラフィック・サブシステムの機能的ブロック線図である。
【図５】本発明によるルームを示す図である。
【図６】オブジェクトの集合にルームを関連づけるデータ構造を示す図である。
【図７】本発明に従つたルームの予備処理を示すフローチャートである。
【図８】本発明に従ったウインドウを有するルームを示す図である。
【図９】ビュー切頭体と図８のウインドウとの交差を２次元空間で示す図である。
【図１０】本発明に従った関連づけられたウインドウを有するルームの予備処理を示すフローチャートである。
【図１１】本発明による１つ以上のルームを利用する際のグラフィック・システムの動作及び関連する予備処理を可視性集合と共に示すフローチャートである。
【図１２】本発明による１つ以上のルームを利用する際のグラフィック・システムの動作及び関連する予備処理を可視性集合と共に示すフローチャートである。
【図１３】凸でないルームＲの断面図および関連づけられたウインドウＡ，Ｂ，Ｃ，Ｄを示す図である。
【図１４】適切なウインドウ効果が評価されるようにするためルームＲのウインドウに関連づけられたより分け動作を指令するのに用いられるウインドウＡ、Ｂ、Ｃ、ＤとルームＲとの関連づけを表す階層的トリー構造を示す図である。
【図１】
0004047421.tif 000002
【図２】
0004047421.tif 000003
【図３】
0004047421.tif 000004
【図４】
0004047421.tif 000005
【図５】
0004047421.tif 000006
【図６】
0004047421.tif 000007
【図７】
0004047421.tif 000008
【図８】
0004047421.tif 000009
【図９】
0004047421.tif 000010
【図１０】
0004047421.tif 000011
【図１１】
0004047421.tif 000012
【図１２】
0004047421.tif 000013
【図１３】
0004047421.tif 000014
【図１４】
0004047421.tif 000015