(57)【特許請求の範囲】
【請求項１】
一連の複数の画像を作成する画像生成方法であって、前記複数の画像はそれぞれ階層構造ツリーに基づいて合成される少なくとも複数の図形オブジェクトをレンダリングすることによって形成され、前記階層構造ツリーが前記複数の画像のうちの少なくとも１つの画像の構成要素をそれぞれ表す複数のノードを含み、
前記ノードのそれぞれについて、前記図形オブジェクトが画定された空間を複数の領域に分割する分割工程と、
前記分割された複数の領域をそれぞれ調べることによって、該領域に寄与するオブジェクトを求める第１の調査工程と、
前記第１の調査工程の調査結果に基づいて、前記分割された複数の領域のそれぞれについて前記オブジェクトの前記ノード間における依存情報を生成する生成工程と、
前記階層構造ツリーを用いて、前記連続する複数の画像のうちの第１の画像をレンダリングするレンダリング工程と、
前記ノードに対する変更に応答して、前記ノード間における前記オブジェクトの依存情報の変化を調べる第２の調査工程と、
前記第２の調査工程によって検出された前記依存情報の変化に基づいて、当該変化の影響を受けるノードについて、対応する領域を更新するとともに、前記ノード間における依存情報を更新することによって前記階層構造ツリーを更新する更新工程とからなり、
前記レンダリング工程は、前記第１の画像に対して、前記更新工程によって更新された前記領域を合成することによって、前記第１の画像に関連する他の画像をレンダリングすることによって、前記連続する複数の画像を作成することを特徴とする画像生成方法。
【請求項２】
前記オブジェクトの外側および内側の輪郭を格子に近似させることによって各輪郭による領域を形成する近似工程を備えたことを特徴とする請求項１に記載の画像生成方法。
【請求項３】
前記領域が相互排除の関係にあることを特徴とする請求項１に記載の画像生成方法。
【請求項４】
前記第１の画像のレンダリングが、前記階層構造ツリーで表される全ての領域を合成することによって実行され、前記他の画像は前記更新された階層構造ツリーにしたがって前記第１の画像に対して変化した部分をレンダリングすることによって作成されることを特徴とする請求項１に記載の画像生成方法。
【請求項５】
前記第１の調査工程は、前記領域内におけるオブジェクトの不透明度を求める処理を含むことを特徴とする請求項１に記載の画像処理方法。
【請求項６】
前記第２の調査工程によって調査された前記ノード間の依存情報が、前記領域のそれぞれに対して生成されることを特徴とする請求項１に記載の画像生成方法。
【請求項７】
前記ノード間における依存情報は、前記１つの領域の変更の影響を直接に受ける領域を識別する第１のノード間依存リスト、および前記１つの領域の変更の影響を間接的に受ける領域を識別する第２のノード間依存リストを含むことを特徴とする請求項１に記載の画像生成方法。
【請求項８】
前記ノードに対する変更が、前記階層構造ツリー中のノードの属性の変更を含み、前記ノードに対する変更の結果として、新しい領域を、前記階層構造ツリーに追加することができることを特徴とする請求項１に記載の画像生成方法。
【請求項９】
前記領域内において、完全に不透明なオブジェクトは他のオブジェクトを前記階層構造ツリーから排除し、完全に透明なオブジェクトは前記階層構造ツリーから少なくとも自体を排除することを特徴とする請求項１に記載の画像生成方法。
【請求項１０】
一連の複数の画像を作成する画像生成装置であって、前記複数の画像はそれぞれ階層構造ツリーに基づいて合成される少なくとも複数の図形オブジェクトをレンダリングすることによって形成され、前記階層構造ツリーが前記複数の画像のうちの少なくとも１つの画像の構成要素をそれぞれ表す複数のノードを含み、
前記ノードのそれぞれについて、前記図形オブジェクトが画定された空間を複数の領域に分割する分割手段と、
前記分割された複数の領域をそれぞれ調べることによって、該領域に寄与するオブジェクトを求める第１の調査手段と、
前記第１の調査手段の調査結果に基づいて、前記分割された複数の領域のそれぞれについて前記オブジェクトの前記ノード間における依存情報を生成する生成手段と、
前記階層構造ツリーを用いて、前記連続する複数の画像のうちの第１の画像をレンダリングするレンダリング手段と、
前記ノードに対する変更に応答して、前記ノード間における前記オブジェクトの依存情報の変化を調べる第２の調査手段と、
前記第２の調査手段によって検出された前記依存情報の変化に基づいて、当該変化の影響を受けるノードについて、対応する領域を更新するとともに、前記ノード間における依存情報を更新することによって前記階層構造ツリーを更新する更新手段とを備え、
前記レンダリング手段は、前記第１の画像に対して、前記更新手段によって更新された前記領域を合成することによって、前記第１の画像に関連する他の画像をレンダリングすることによって、前記連続する複数の画像を作成することを特徴とする画像生成装置。
【請求項１１】
前記オブジェクトの外側および内側の輪郭を格子に近似させることによって各輪郭による領域を形成する近似手段を備えたことを特徴とする請求項１０に記載の画像生成装置。
【請求項１２】
前記領域が相互排除の関係にあることを特徴とする請求項１０に記載の画像生成装置。
【請求項１３】
前記第１の画像のレンダリングが、前記階層構造ツリーで表される全ての領域を合成することによって実行され、前記他の画像は前記更新された階層構造ツリーにしたがって前記第１の画像に対して変化した部分をレンダリングすることによって作成されることを特徴とする請求項１０に記載の画像生成装置。
【請求項１４】
前記第１の調査手段が、前記領域のそれぞれの領域を調べ、前記オブジェクトのそれぞれのオブジェクトの前記領域内の不透明度を求める手段を含むことを特徴とする請求項１０に記載の画像生成装置。
【請求項１５】
前記第２の調査手段による前記ノード間の依存情報が、前記領域のそれぞれに対して生成されることを特徴とする請求項１０に記載の画像生成装置。
【請求項１６】
前記ノード間における依存情報は、前記１つの領域の変更の影響を直接に受ける領域を識別する第１のノード間依存リスト、および前記１つの領域の変更の影響を間接的に受ける領域を識別する第２のノード間依存リストを含むことを特徴とする請求項１０に記載の画像生成装置。
【請求項１７】
前記ノードに対する変更が、前記階層構造ツリー中のノードの属性の変更を含み、前記ノードに対する変更の結果として、新しい領域を、前記階層構造ツリーに追加することができることを特徴とする請求項１０項に記載の画像生成装置。
【請求項１８】
前記領域内において、完全に不透明なオブジェクトは他のオブジェクトを前記階層構造ツリーから排除し、完全に透明なオブジェクトは前記階層構造ツリーから少なくとも自体を排除することを特徴とする請求項１０に記載の画像生成装置。
【請求項１９】
請求項１乃至９のいずれか１項に記載の画像生成方法を、コンピュータに実行させるためのコンピュータプログラムを格納したことを特徴とするコンピュータ可読の記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、静止画像とビデオ画像の両方の形態のコンピュータ生成画像の作成に関し、具体的には、複数の構成要素を合成することによって生成される画像を効率的に作成する方法、装置およびシステムに関する。
【０００２】
【従来の技術】
コンピュータ生成画像は一般に、多くの異なる構成要素、すなわち図形要素から構成される。最終的な画像は、これらの要素をレンダリングし、合成することによって作成される。最近は、「オーパシティ（ｏｐａｃｉｔｙ；不透明）チャネル」が一般に使用されている（これは「マット（ｍａｔｔｅ；つや消し）」、「アルファ・チャネル」または単に「オーパシティ」とも呼ばれる）。オーパシティ・チャネルは、それぞれの要素の透明度に関する情報を含む。オーパシティ・チャネルは、それぞれの色インスタンスに並置される形で記憶され、そのため例えば、画素ベースの不透明画像には、それぞれの画素の表現の一部として不透明値が記憶される。明示的な不透明チャネル情報を持たない要素は一般に、その要素の定義された境界の内部は完全に不透明、境界の外側では完全に透明であるとみなされる。
【０００３】
表現式ツリーは、その構成要素について画像を表現し、後段のレンダリングを容易にする系統的手段である。表現式ツリーは一般に、葉ノード、単項ノード（unary node）および二項ノード（binary node）を含む複数のノードを含む。これらよりも高次のノードまたは別の定義のノードを使用することもできる。表現式ツリーの最も外側のノードである葉ノードは下位ノードを持たず、画像の基本構成要素を表す。単項ノードは、ツリーの単項演算子の下にある部分の画素データを変更する演算を表す。単項ノードは、色変換、畳込み（ブラーリング（ｂｌｕｒｒｉｎｇ）など）、レッドアイ除去などの演算を含む。二項ノードは一般に、自体が少なくとも１つの葉ノードを含む表現式ツリーである左右のサブツリーに分岐する。二項ノードは、その２つの子ノードの画素データを結合して単一の結果を得る演算を表す。二項ノードは例えば、ＯＶＥＲ、ＩＮ、ＯＵＴ、ＡＴＯＰ、アルファＸＯＲなどの標準的な「合成演算子」のうちの１つである。これらおよびその他の演算子を図２０に示す。
【０００４】
前記種類のノードのいくつかを組み合わせて、合成ツリーを形成することができる。この例を図１に示す。この合成ツリーの左辺の結果は、色変換された画像が細長い境界形状に切り取られたものと解釈される。この構成は、第２の画像と合成される。
【０００５】
図形要素の非透明領域はある大きさを持っているが、この領域は、最終的な画像でその全体が目に見える必要はなく、最終的な画像に効果を与えるのが要素の一部分だけであってもよい。例えば、ある大きさの画像をディスプレイに表示するとしよう。画像の左上隅のみがディスプレイ装置に表示されるように画像を配置する場合、画像の残りの部分は表示されない。したがってディスプレイ装置に表示された最終画像が含むのは画像の目に見える部分だけであり、この場合、目に見えない部分をレンダリングする必要はない。
【０００６】
要素の一部分のみが効果を与えるケースにはその他、その部分が他の要素によって覆い隠される場合がある。例えば、表示（またはレンダリング）する最終画像が、１つまたは複数の不透明な図形要素を含み、そのうちのいくつかが他の図形要素を覆い隠す場合である。したがって、覆い隠された要素は最終画像に対して効果を与えない。
【０００７】
従来の合成モデルでは、それぞれのノードの範囲は概念上無限であるとみなされる。したがって従来のシステムでは、最終画像を構築するのに出力画像のすべての画素に合成式を適用する。実際の画素演算はかなり単純で高度に最適化することができるので、現在のほとんどのシステムでは比較的に強行なアプローチによって、１５フレーム／秒を超える程度のインタラクティブ・フレーム・レートを得ることができる。この高度に最適化されたコードは十分に高速であり、複雑なコードを必要とせずに許容されるフレーム・レートを生み出すことができる。しかしこのことがある合成環境では真実ではないことは疑いない。
【０００８】
画素当たりの合成コストはかなり高い。これは、画像が一般に、２４ビットの色チャネルおよび８ビットのアルファ・チャネルにレンダリングされ、したがって１画素につき３２ビットが与えられるからである。それぞれの合成演算子は、これらの４チャネルを処理しなければならない。したがって必要なときに必要な全てのフレームの全ての画素を完全に生成する方法は、画素当たりのコストがあまりに高くなってしまうので非効率である。
【０００９】
従来技術の方法では、透明な領域および部分的に透明な領域を含む図形オブジェクトをレンダリングするときに問題が生じる。さらに、このような方法は一般に、全ての種類の合成演算子を取り扱うものではない。
【００１０】
【発明が解決しようとする課題】
本発明の目的は、複数の構成要素を合成することによって生成される画像を作成する方法を提供することによって、前述の方法の１つまたは複数の欠陥を実質的に克服するまたは改善することにある。
【００１１】
【課題を解決するための手段】
本発明の一態様によれば、一連の複数の画像を作成する画像生成方法であって、前記複数の画像はそれぞれ階層構造ツリーに基づいて合成される少なくとも複数の図形オブジェクトをレンダリングすることによって形成され、前記階層構造ツリーが前記複数の画像のうちの少なくとも１つの画像の構成要素をそれぞれ表す複数のノードを含み、
前記ノードのそれぞれについて、前記図形オブジェクトが画定された空間を複数の領域に分割する分割工程と、
前記分割された複数の領域をそれぞれ調べることによって、該領域に寄与するオブジェクトを求める第１の調査工程と、
前記第１の調査工程の調査結果に基づいて、前記分割された複数の領域のそれぞれについて前記オブジェクトの前記ノード間における依存情報を生成する生成工程と、
前記階層構造ツリーを用いて、前記連続する複数の画像のうちの第１の画像をレンダリングするレンダリング工程と、
前記ノードに対する変更に応答して、前記ノード間における前記オブジェクトの依存情報の変化を調べる第２の調査工程と、
前記第２の調査工程によって検出された前記依存情報の変化に基づいて、当該変化の影響を受けるノードについて、対応する領域を更新するとともに、前記ノード間における依存情報を更新することによって前記階層構造ツリーを更新する更新工程とからなり、
前記レンダリング工程は、前記第１の画像に対して、前記更新工程によって更新された前記領域を合成することによって、前記第１の画像に関連する他の画像をレンダリングすることによって、前記連続する複数の画像を作成することを特徴とする画像生成方法が提供される。
【００１２】
本発明の他の態様によれば、一連の複数の画像を作成する画像生成装置であって、前記複数の画像はそれぞれ階層構造ツリーに基づいて合成される少なくとも複数の図形オブジェクトをレンダリングすることによって形成され、前記階層構造ツリーが前記複数の画像のうちの少なくとも１つの画像の構成要素をそれぞれ表す複数のノードを含み、
前記ノードのそれぞれについて、前記図形オブジェクトが画定された空間を複数の領域に分割する分割手段と、
前記分割された複数の領域をそれぞれ調べることによって、該領域に寄与するオブジェクトを求める第１の調査手段と、
前記第１の調査手段の調査結果に基づいて、前記分割された複数の領域のそれぞれについて前記オブジェクトの前記ノード間における依存情報を生成する生成手段と、
前記階層構造ツリーを用いて、前記連続する複数の画像のうちの第１の画像をレンダリングするレンダリング手段と、
前記ノードに対する変更に応答して、前記ノード間における前記オブジェクトの依存情報の変化を調べる第２の調査手段と、
前記第２の調査手段によって検出された前記依存情報の変化に基づいて、当該変化の影響を受けるノードについて、対応する領域を更新するとともに、前記ノード間における依存情報を更新することによって前記階層構造ツリーを更新する更新手段とを備え、
前記レンダリング手段は、前記第１の画像に対して、前記更新手段によって更新された前記領域を合成することによって、前記第1の画像に関連する他の画像をレンダリングすることによって、前記連続する複数の画像を作成することを特徴とする画像生成装置が提供される。
【００２９】
【発明の実施の形態】
次に、図面を参照して本発明の実施形態を説明する。なお、付属書１に、本発明に基づくソース・コードのリストを示す。
【００３０】
１．０  基本原理
現在のほとんどのシステムの合成演算子のオペランドの基本的な形状は、合成するオブジェクトの実際の形状に関わらず長方形である。２つの境界ボックスの積領域内に入る合成を実行する演算子を書くことは極めてやさしい。しかし、境界ボックスは一般に、図形オブジェクトの実際の境界を正確には表していないので、この方法では、完全に透明な画素の上に完全に透明な画素を合成する不必要な合成が多く生じる。また、合成の一般的な構成を調べると、多くのオブジェクトの領域が完全に不透明であることが分かる。この不透明性を合成演算時に活用することができる。しかし、完全に不透明なこれらの領域は通常、非長方形であり、そのため、境界ボックスによって記述された合成引き数を使用してこれらの領域を活用することは難しい。不規則な領域を使用して、これらの不透明なオブジェクトを活用する場合には、合成を実施すべき場所を決定する何らかの方法でこれらの領域を結合すればよい。さらに、このような領域のいずれかが完全に透明であるか、または完全に不透明であることが分かっている場合には、さらに最適化することが可能である。
【００３１】
現在のほとんどのシステムは、あるフレームの構成と次のフレームの構成の間の類似性を活用できないでいる。フレームごとに全てが変化することはまれであり、したがってフレームが変わっても合成ツリーの大きな領域は変更されない。この一例が、複数の図形オブジェクトを含むアニメーションのキャラクタがディスプレイ上にレンダリングされる場合である。例えば、キャラクタが次のフレームでシャツにペンキをこぼすとした場合、画像全体をもう一度レンダリングする必要はない。例えば、キャラクタの頭部および脚はもとのままかもしれない。その動作によって変更のあった画像構成要素だけをレンダリングすればよいのである。ここに挙げた例では、シャツのペンキがこぼれた部分をペンキと同じ色にレンダリングし直し、キャラクタの残りの部分は以前と同じままにしておけばよい。この原理を活用することによって効率が大きく向上する。合成ツリーに増的変更が実施される場合、この変更を実施するのに必要な更新はわずかである。
【００３２】
現在の多くのグラフィック・システムは、即時モード・アプリケーション・プログラム・インタフェース（ＡＰＩ）として知られるものを使用する。これは、フレームをレンダリングするごとに、レンダリング・コマンドの完全セットをこのＡＰＩに送ることを意味する。しかし、レンダリング・コマンドの完全セットをＡＰＩに送信する方法は、合成環境ではいくぶん非効率である。これは、合成ツリーの大きなセクションは、あるフレームから次のフレームに移っても一般に変更されないのに、即時モードでは完全に再レンダリングされるからである。一方、本発明の発明者らは、本発明の好ましい実施形態を保持モードＡＰＩと記述することが最も適当であると考えている。保持モードは、フレームごとに合成ツリー全体を供給するのではなく、ユーザが、最初の合成ツリーを供給し、次いでこの合成ツリーをフレームごとに変更して、変更を実施するものである。ツリーに対して実施できる変更には、ツリーの一部または全体の幾何的変形、ツリー構造（アンリンクおよびリンク・サブツリー）の変更、および個々のノードの属性（色など）の変更が含まれる。個々のノードの属性のみが変更された場合には、例えば図１に示すようなツリー構造が変更されるとは限らないことに留意されたい。
【００３３】
好ましい実施形態のレンダリング演算は、いくつかの手法および仮定が組み合わされたものであり、これらが組み合わされることにより高品質の画像および高いフレーム・レートが提供される。寄与する原理のいくつかを以下に挙げる。
（ｉ）不規則領域の使用による画素当たりの合成の最小化。例えば、ある図形オブジェクトが別の図形オブジェクトの上にある場合、画素合成が必要なのは、２つのオブジェクトが交わる領域の内部だけである。不規則領域を使用することができれば、関心の領域をはるかに正確に狭めることができる。
（ｉｉ）あるフレームから次のフレームへの移行で変更されるのはツリーの一部分だけであると仮定する。生成にコストがかかる合成に関する情報を次のフレームで再使用することができるようにキャッシュしておくことによって、この仮定を活用することができる。生成にコストがかかる情報の例には、関心の領域（オブジェクト間の積領域の境界など）、（コストのかかる合成物などを表す）画素データ、オブジェクト間の位相関係などがある。
（ｉｉｉ）不透明なオブジェクトをＯＶＥＲ演算子を使用して他のオブジェクトと合成する場合、不透明オブジェクトは、このオブジェクトの下に合成される部分を（不透明オブジェクトの領域内に）完全に覆い隠す。この特性は、コストのかかる画素合成を必要とせずに重なり合う領域内に画素を出力することができることを意味するので、非常に有用である（その画素値は、不透明オブジェクトの対応する点の値と同じである）。不透明オブジェクトは、ほとんどの合成演算子で同様の作用を生む。したがって好ましい実施形態では、不透明領域をできる限り活用することを試みる。
【００３４】
図２３は、本発明の好ましい実施形態に基づいて画像を作成する方法を示す流れ図である。画像は、図形オブジェクトをレンダリングし、合成式にしたがって合成することによって形成される。このプロセスは段階２３０１から開始され、この段階で、オブジェクト境界の輪郭が定義された空間をいくつかの相互排除領域に分割する。それぞれの領域は、所定の領域境界輪郭のうちの少なくとも１つ、またはその部分によって定義される。空間をいくつかの領域に分割し、これらの領域を操作するプロセスについては、２．３節を特に参照して後に詳細に説明する。２．３節は、「ＯＶＥＲ」および「ＩＮ」合成演算に対する段階２３０１を説明する２つの擬似コード・リストを含む。プロセスは段階２３０３に進み、これらの領域のうちの１つを選択してそれを調べ、どのオブジェクトがその領域に寄与するかを求める。次の段階２３０５で、選択された領域に対応する合成式を、その領域内でのそれぞれのオブジェクトの寄与に基づいて変更し、その領域に対して最適化された合成式を生成する。それぞれの領域を調べ、合成式を変更するプロセスについては、２．４節を特に参照して後に詳細に説明する。２．４節は、「ＯＶＥＲ」および「ＩＮ」合成演算に対する段階２３０３および段階２３０５を説明する２つの擬似コード・リストを含む。プロセスは段階２３０７に進み、選択された領域の画像データをレンダリングする。次の段階２３０９でチェックを実施し、処理を必要とする領域が他にあるかどうかを判定する。処理を必要とする領域がある場合には、プロセスは段階２３０３に進み、別の領域を選択する。全ての相互排除領域の処理が終了した場合には、プロセスは最終段階２３１１に進み、全ての領域の領域データを結合して、１つの画像を形成させる。段階２３０７、２３０９および２３１１については、擬似コード・リスト１つを含む２．６節を参照して後に詳細に説明する。
【００３５】
２．０  基本の静的レンダリング
静的レンダリングは、合成ツリーから単一の画像をできるだけ速く生成する課題を取り扱う。好ましい実施形態の画素合成方法のいくつかを、静的レンダリングの一例を使用して説明する。
【００３６】
葉ノード・オブジェクトから成り、「ＯＶＥＲ」演算子のみを使用する単純な合成ツリーの例を図２に示す。従来どおり、それぞれのノードの範囲は概念上無限であるとみなす。最終画像を構築する１つの方法は、合成式（（（Ｄ  ＯＶＥＲ  Ｂ）ＯＶＥＲ  Ｃ）ＯＶＥＲ（Ａ  ＯＶＥＲ  Ｅ））を出力画像の全ての画素に適用するものである。しかしこれは、かなり非効率な方法である。
【００３７】
一般に１つの構成を、いくつかの不規則な相互排除領域に再分割することができる。それぞれの領域で前記合成式を独立に単純化することができる。図２の例で、Ａ、Ｃ、Ｅは不透明オブジェクトを表す。一方、Ｂ、Ｄは、部分的に透明なオブジェクトである。図３に、この例に存在する５つのオブジェクトを使用して創出した異なる領域（１〜１０）、およびそれぞれの特定の領域に対する画素データの生成に使用する合成式を示す。
【００３８】
図３に示した合成式には、オブジェクトの不透明な特性を活用しようという試みがなされていない。この特性を使用してそれぞれの領域に対する合成式を単純化すると図４の式が得られ、図３に比べると領域２、３、５、６、７、８および９のレンダリングが単純化される。これらの単純化された合成式を使用することによって、はるかに少ない回数の画素合成演算の実行で、最終画像を生み出すことができる。
【００３９】
図４は、合成ツリーのルートについての領域の再分割を表す。しかし、この合成ツリーの全てのノードについてそれ自体が合成ツリー全体のルートであると考えることができる。したがって、合成ツリーの全てのノードを、そのノードがルートであるサブツリーの領域再分割を表す一群の領域と関連付けることができる。領域再分割は、合成ツリーの複雑性を管理する便利な手段、およびコストのかかるデータをキャッシュしておく効率的なフレームワークとなる。
【００４０】
前述の原理を使用すると、合成する図形オブジェクトが全体に不透明であるのか、全体に透明であるのか、またはそのどちらでもないのか（本明細書ではこれを「普通」とみなす）にしたがって、合成式を単純化することができる。
【００４１】
テーブル１（１−１〜１−３）に、一方または両方のオペランドが不透明または透明であるときに、図２０の合成演算を単純化する方法を示す。
【表１】
0004164204.tif 000002
【表２】
0004164204.tif 000003
【表３】
0004164204.tif 000004
【００４２】
２．１  基本データ・モデル
合成ツリーの全てのノードの非透明領域を表す一群の相互排除領域はそのノードに関連づけられる。好ましい実施形態で使用する領域記述は一般に、画素レベルでは不正確であることに留意されたい。事実、領域がいくつかの透明画素を含むことがある。しかし、ノードの全ての領域の外側にある点は確実に透明である。ノードの相互排除領域の集合は領域群として知られる。葉ノードの領域群が含むことのできる領域は１つまたは２つである。ツリーのルートの領域群は、数百の領域を含むことができる。領域群のそれぞれの領域は以下の基本のデータを含む。
（ｉ）領域記述は、領域境界の低位表現である。領域群の全ての領域の領域記述は相互排除でなければならない（交わることがあってはならない）。ただし好ましい実施形態は、軸平行な（すなわちすべての側面が、出力装置の走査線に平行または垂直である）領域記述の使用に限定されるわけではない。好ましい実施形態では、任意の形状の領域をより忠実に表す領域記述が許される。
（ｉｉ）プロキシは、合成式によって指定された演算を領域記述の内部の全ての画素に適用して得られた画素データをキャッシュする手段である。プロキシは、２４ビットのカラー・ビットマップのような単純なものでもよいし、または（ランレングス符号化記述などの）より複雑なものでもよい。基本的にプロキシは、検索および使用が効率的に行えるなんらかの方法で、画素データを表すものであればよい。
【００４３】
全ての領域群はさらに、その領域群の領域の全ての領域記述の和である領域記述を含む。この領域記述は実質上、その領域群がカバーする範囲全体を表す。
【００４４】
２．２  領域記述および領域演算
好ましい実施形態の領域演算およびデータ構造は以下の特性を有する。
−凸形領域、凹形領域および穴の開いた領域を含む複雑な領域の表現が可能である。領域が、それが表す図形オブジェクトの幾何形状を模倣することが合理的に可能であるためには、このことが必要である。
−空間効率がよい。複雑な構成では多くの領域が存在する。したがってメモリ効率に関して言えば、これらの領域を記憶するコストが合理的に小さいことが好ましい。
−領域演算は、基本的な集合演算、すなわち和、積および差をサポートしなければならない。
−前記基本演算は、速度に関して効率的でなければならない。複雑な合成ツリーでは、多量の領域演算が実施される可能性がある。領域演算の実施が不適切であると、領域演算にかかる時間が、画素当たりの合成を減らすことによって節約された時間よりも大きくなることがある。
−領域記述の幾何形状を効率的に変換することができると有利である。そうであると、図形オブジェクトを変換する場合に、その図形オブジェクトの関連領域を迅速に変換することができる。
−２つの領域を比較して、それらが同じものであるかどうかを迅速に判定することができれば時に有用である。その類似性に関するその他の統計量を得る必要は必ずしもない。単なる同一性のみが必要である。
従来の２つの領域記述手法を検討したが、本発明の好ましい実施形態に対しては採用しないこととした。それは次の２つである。
ポリゴン：ポリゴンを使用して、ほとんど全てのオブジェクトを表すことができるが、これを使用することの欠点は、ポリゴンの汎用性のために、集合演算の実施が非効率かつ時間のかかるものとなることである。
クワッドツリー（Ｑｕａｄｔｒｅｅ）：クワッドツリーを使用した集合演算は実施が容易で、かなり効率的である。さらにクワッドツリーは、十分な細分性が与えられた多様な領域を表すことができる（クワッドツリーの全ての辺は軸平行でなければならない）。クワッドツリーの主な欠点は、全てのクワッドツリーが同じ格子（細分性）上に整列しなければならないということである。このことは、クワッドツリーを任意の量で変換することが不可能であることを意味する。その量が、基礎をなす格子の大きさの倍数でない場合には、クワッドツリーを、それが記述するオブジェクトから計算し直す必要が生じる（さもなければそれは成長を続ける）。したがってクワッドツリーは、幾何的変換が頻繁に実施される適用領域には適さない。
【００４５】
好ましい実施形態の領域記述のデータ構造は、垂直線に沿って全ての座標が、領域の内側または外側のいずれかの状態を有するとイメージすると理解することができる。データ構造には、内側と外側の間で状態変化が生じているｙ座標が記憶される。このようなｙ座標それぞれについて、そのデータは、データを横切る全ての垂直線の状態をそれぞれが切り換える座標の範囲を含む。ｘ座標のそれぞれの範囲をラン（ｒｕｎ）と呼ぶ。ｙ座標に関連したランの列をロー（ｒｏｗ）と呼ぶ。例えば図１６の領域は、以下のように記述することができる。
ロー  ｙ＝１０：ｘ＝１０，ｘ＝１００
ロー  ｙ＝１００：ｘ＝１０，ｘ＝１００
同様に図１７の領域は、以下のように記述することができる。
ロー  ｙ＝１０：ｘ＝１０，ｘ＝１００
ロー  ｙ＝３０：ｘ＝３０，ｘ＝７０
ロー  ｙ＝７０：ｘ＝３０，ｘ＝７０
ロー  ｙ＝１００：ｘ＝１０，ｘ＝１００
領域を表すデータは、整数値の配列によって表される。２つの「特殊」値がある。
Ｒ＿ＮＥＸＴ＿ＩＳ＿Ｙ：  ローの先頭マーカ  順序列中の次の整数がｙ座標を表すことを指示する。
Ｒ＿ＥＯＲ：              領域の終わりを表す。領域記述が終わったことを指示する。
【００４６】
その他の値は全てｘまたはｙ座標を表す。ローの中のｘ座標はランを表す。最初の２つの座標がランを表し、次の２つの座標が次のランを表す。以下同様である。したがって１つのロー中のｘ座標は常に増えていかなければならない。また、ロー中には常に、偶数個のｘ座標がなければならない。図１７の領域データ・ストリームを以下に示す。
Ｒ＿ＮＥＸＴ＿ＩＳ＿Ｙ  １０  １０  １００
Ｒ＿ＮＥＸＴ＿ＩＳ＿Ｙ  ３０  ３０  ７０
Ｒ＿ＮＥＸＴ＿ＩＳ＿Ｙ  ７０  ３０  ７０
Ｒ＿ＮＥＸＴ＿ＩＳ＿Ｙ  １００  １０  １００
Ｒ＿ＥＯＲ
【００４７】
ある集合演算において有用であるので、好ましい実施形態はさらに領域の境界ボックスを含む。
【００４８】
図６に示すように、２つの領域記述を和演算を使用して結合する場合、結合された領域記述は、どちらかの領域記述がアクティブである領域を記述する。
【００４９】
図７に示すように、２つの領域記述を積演算を使用して結合する場合、結合された領域記述は、両方の領域記述がともにアクティブである領域を記述する。
【００５０】
２つの領域記述を差演算を使用して結合する場合、結合された領域記述は図８Ａ乃至８Ｄに示すように、最初の領域のみがアクティブである領域を記述する。
【００５１】
２．３  領域群の構築
２．３．１  葉ノード領域群の構築
葉ノードの領域群は一般に、１つまたは複数の領域を含む。これらの領域は全体として、この葉ノードが表す図形オブジェクトの非透明領域全体を含む。一般に非透明領域は、最適化を容易にするある特性をそれぞれが有する領域に分割される。例えば、ある図形オブジェクトの非透明領域を、完全に不透明な領域と不透明度が普通の領域の２つの領域に分割することができる。不透明領域を合成する場合には、先に述べた合成の最適化が適用される。
【００５２】
この代わりに、葉ノードを別の属性に基づいて再分割してもよい。例えば葉ノードを、色が一定な領域を表す領域と色が混じり合った領域を表す領域の２つの領域に分割することができる。色が一定な領域は、より一般的な色記述を有する領域よりも効率的に合成することができる。
【００５３】
２．３．１．１  領域形成および位相合わせ
領域を作成する際、領域境界が、図形オブジェクトの境界と正確に一致することが常に有利であるとは限らない。重要なのは、最適化を容易にする任意の特性が、その特性を有するとされる領域内のどの点においても有効であるということである。例えば、不透明な円を、不透明と分類される１つの円形領域で正確に覆うこともできるし、または２つの近似的な領域、すなわち円に内接した完全に不透明な八角形の領域と円の残りの部分および円の外部のある領域を含む不透明度が普通の環状の八角形の領域で覆うこともできる。
【００５４】
一般に、領域の境界が図形オブジェクトの境界とどのくらい一致するかということと、得られる利点との間にはトレードオフの関係がある。領域境界がオブジェクト境界と非常によく一致する場合には通常、領域境界の作成ならびに領域の積および差演算の実行に多くの操作が関与する（このような演算の実行が必要な理由については後節で説明する）。しかし、領域境界が大まかすぎる場合には、領域が、オブジェクト境界の外側に大きな領域を含み、その結果、非常に多くの不必要な合成を実施しなければならなくなるか、または既知の特性から最適化することができる領域をあまり含むことができないかのいずれかである。
【００５５】
１つのアプローチは添付の付属書に示すように、領域境界を、水平および垂直セグメントの列に限定するものである。この方法を使用する際、一般的なセグメントの大きさは、あまりに詳細にすぎて領域演算が過負荷とならないように、また、大まかすぎて、無駄な合成や不十分な最適化につながらないように選択する。
【００５６】
領域演算の効率を高める１つの方法は、実質的に全ての領域境界の水平および垂直セグメントが実際的な範囲でできるだけ多く同位相となるように選択することである。言い換えると、水平および垂直セグメントを、同じ格子の水平および垂直線から選択することである。一般にはそのようにはなるが、格子は、規則的な間隔を置いて配置されている必要もないし、水平および垂直方向に同じ間隔を有している必要もない。
【００５７】
同じ格子の水平および垂直線から水平および垂直セグメントを選択すると、全ての領域境界の詳細さを、基礎をなす格子に含まれる詳細さのレベルに維持することになって領域演算の効率は向上する。領域境界セグメントの大部分を格子に制限することをしないと、差、積などの領域演算子によってその詳細さがはるかに細かくなる傾向が見られる。例えば図２１で、２つの円９０１および９０２は、格子上に整列していない領域９０３および９０４をそれぞれ有している。これらの円を部分的に重ね合わせると、差領域９０５、９０７および積領域９０６が生じる。図２２で、同じ円９０１および９０２は、格子９１０の上に整列した領域９１３および９１４を有する。これらの円を部分的に重ね合わせると、差領域９１５、９１７および積領域９１６が生じる。格子上に整列した領域では、領域のカバーする範囲の効率がわずかに低下するのと引き替えに、詳細度の低い結果が得られていることがこの例から分かる。領域９０５、９０６および９０７は全体で６０個のセグメントを含むが、領域９１５、９１６および９１７では５２個でしかない。
【００５８】
２．３．２  二項領域群の作成
合成ツリーの二項ノードの領域群はそれらの子ノードの領域群を結合した結果である。次に、領域群を結合して新しい領域群を形成する方法を説明する。単純にするためこの項では、「ＯＶＥＲ」および「ＩＮ」二項ノードのみを取り扱う。その他の合成演算子を表す二項ノードに必要な演算は、「ＯＶＥＲ」および「ＩＮ」の場合をさまざまに組み合わせることによって容易に推量することができる。
【００５９】
明確にするため、最初に、好ましい実施形態の方法を、不透明度などの最適化ベースの特性に言及することなく説明する。
【００６０】
以下の表記法は、二項領域群の作成を考える場合に有効である。
0004164204.tif 000005
【００６１】
２．３．２．１  「ＯＶＥＲ」領域群の構築
「ＯＶＥＲ」領域群を構築するときには、寄与する領域群が交わる領域だけを合成すればよい。一方のオペランドが他方のオペランドと重なり合わない領域は合成に関与しない。この方法は、３つの繰り返し段階に分けられる。まず、初期化する二項ノードの領域群のカバー領域（ＲＧ→ｕｒｇｎ）を、二項ノードの左子ノードのカバー領域（ＲＧ１→ｕｒｇｎ）と二項ノードの右子ノードのカバー領域（ＲＧ２→ｕｒｇｎ）の和に等しいとおく。次いで、ＲＧ１のそれぞれの領域ｒｇｉについて、その領域とＲＧ２のカバー領域（ＲＧ２→ｕｒｇｎ）の差（ｄｉｆｆ＿ｒｇｎ）を計算する。差（ｄｕｆｆ＿ｒｇｎ）が空集合でない場合には、ｄｉｆｆ＿ｒｇｎをその領域記述とする新しい領域をＲＧに追加する。この新しい差領域のプロキシは、プロキシｒｇ１iと同じである。この生成に合成は一切必要ない。ＲＧ２の領域とＲＧ１のカバー領域の差領域を同様に構築し、ＲＧに加える。最後に、ＲＧ１のそれぞれの領域ｒｇ１iとＲＧ２のそれぞれの領域ｒｇ２jの積（ｉｎｔｅｒ＿ｒｇｎ）を計算する。この積計算の結果が空集合でない場合には、ｉｎｔｅｒ＿ｒｇｎにｏｖｅｒ演算を使用してｒｇ１iのプロキシをｒｇ２jのプロキシと合成することによって、新しいプロキシ（ｎｅｗ＿ｐ）を作成する。ｉｎｔｅｒ＿ｒｇｎをその領域記述としｎｅｗ＿ｐをそのプロキシとする新しい領域をＲＧに追加する。好ましい実施形態に基づく「ＯＶＥＲ」領域群の構築方法を、疑似コードを使用して以下に記載する。
0004164204.tif 000006
【００６２】
アスタリスク（＊）でマークした追加演算によって追加された領域は、その形状が差演算の結果であることから差領域と呼ばれる。このような領域は、そのプロキシが合成を必要としないため、コンピュータ操作上非常に安価である。関与する唯一の負荷は、新しい領域を領域群に追加する管理オーバヘッドおよび差演算自体のコストである。好ましい実施形態では、プロキシが、それの基となった（一方の子領域群中の）領域から継承される。差領域を使用することによって、合成ツリーの下位を起源とするプロキシを、（速度とメモリの両方に関して）最低限のオーバヘッドで、ルートに向かって上方に伝播することができることが分かる。
【００６３】
プラス記号（＋）でマークした追加演算によって追加された領域は、積領域と呼ばれる。これは、その形状が積演算の結果であるからである。このような領域のプロキシは、積によって定義された領域内で実行される画素ごとの合成演算を含むため、差領域よりも生成にコストがかかる。領域記述が与える精度が高いほど、管理オーバヘッドが大きくなる（複雑な領域ほど積演算等に長い時間が必要となる）が、それと引き替えに画素処理のコストの節減の程度も大きくなる。
【００６４】
図８Ａないし８Ｄに、以上の方法を使用して「ＯＶＥＲ」領域群を結合する単純な例を示す。結合の結果生じる領域群は、差領域３つ、積領域２つの５領域を含む。第８Ａ図は、結合する２つの領域群ＲＧ１およびＲＧ２を表す。ＲＧ１は２つの領域８１、８２を含み、ＲＧ２は領域８３だけを含む。図８Ｂに示すように、ＲＧ１のそれぞれの領域について、ＲＧ２がカバーする範囲を、ＲＧ１の対応する領域から差し引く。その結果生じた領域が空集合でない場合、その領域は新しい領域群の領域になる。この例では、領域８１、８２からそれぞれ、空集合でない差領域８４、８５が生成される。ＲＧ２のそれぞれの領域について、ＲＧ１のカバー範囲を図８Ｃに示すようにその領域から差し引く。この例では、差領域８６が生み出される。最後に図８Ｄに示すように、ＲＧ１の全ての領域とＲＧ２の全ての領域との積をとる。空集合でない全ての領域は、新しい領域群の領域となる。この例では、領域８１と８３から８７が生成される。さらに領域８２と８３から８８が生成される。
【００６５】
２．３．２．２  「ＩＮ」領域群の構築
「ＩＮ」演算子の特性によれば、「ＩＮ」二項領域群は、２つの寄与領域群の積領域の画素データのみを生成する。事実、「ＯＶＥＲ」領域群に使用するアルゴリズムと比較すると、積領域だけが生成される。したがって、ＲＧ１のそれぞれの領域ｒｇ１iおよびＲＧ２のそれぞれの領域ｒｇ２ｊについて、ｒｇ１iとｒｇ２jの積（ｉｎｔｅｒ＿ｒｇｎij）が計算される。この積が空集合でない場合には、ｉｎｔｅｒ＿ｒｇｎijの範囲内で「ＩＮ」演算を使用し、ｒｇ１iのプロキシをｒｇ２jのプロキシと合成することによって、新しいプロキシ（ｎｅｗ＿ｐ）を作成する。次いで、ｉｎｔｅｒ＿ｒｇｎをその領域記述としｎｅｗ＿ｐをそのプロキシとする新しい領域をＲＧに追加する。好ましい実施形態に基づく「ＩＮ」領域群の構築方法を表す擬似コードを以下に示す。
0004164204.tif 000007
【００６６】
「ＩＮ」と「ＯＶＥＲ」の主な違いは、「ＯＶＥＲ」の場合には差領域が生成されるのに対し、「ＩＮ」ではそれが生成されないことである。図８Ａないし８Ｄに示した例で言えば、積領域である新しい領域８７、８８だけが生成される。「ＩＮ」を使用した場合には差領域８４、８５、８６は生成されない。
【００６７】
下記テーブル２ならびに「ＯＶＥＲ」および「ＩＮ」の擬似コード例を使用して、その他の合成演算子に対する関連コードを導くことができる。
【００６８】
２．３．２．３  その他の合成演算子の領域群の構築
その他の合成演算子は一般に、「ＯＶＥＲ」および「ＩＮ」の場合に生成されるものと同じ積領域を生成する。しかしその他の合成演算子は一般に、生成する差領域が（「ＯＶＥＲ」と「ＩＮ」では異なるように）互いに異なる。これは、それぞれの合成演算子の特定の特性に依存する。テーブル２に、一般的に使用されるいくつかの合成演算子でどちらの差領域が生成されるかを示す。
【表４】
0004164204.tif 000008
【００６９】
２．４  不透明領域を使用した最適化
好ましい実施形態ではそれぞれの領域に、その領域のプロキシ中の画素データが完全に不透明であるかどうかを指示するフラグを記憶する。そのため、不透明なオペランドが合成演算子に対して有する効果を活用することによって、画素当たりの合成演算回数を減らすことができる。
【００７０】
２．４．１  「Ｏｖｅｒ」領域群に対する不透明領域による最適化
不透明な領域が別の領域の上にある（「ＯＶＥＲ」）場合には、左オペランドの不透明プロキシを通して見える右オペランド領域のプロキシは一部分足りともないので、合成の結果を計算する必要はない。好ましい実施形態ではその結果生じた領域が、合成を実際に実施するのと同じ効果を有する左オペランドのプロキシを参照する。
【００７１】
「Ｏｖｅｒ」領域群に対する不透明領域による最適化の方法は、先に示した「Ｏｖｅｒ」領域群の構築方法をわずかに変更したものである。唯一の違いは、ＲＧ１の現在の領域とＲＧ２のそれぞれの領域との間の積領域を計算するときに、ＲＧ１の現在の領域が不透明であるかどうかを調べるチェックが実施されることである。不透明である場合には、ＲＧ１の現在の領域のプロキシが新しく計算された領域のプロキシ（ｎｅｗ＿ｐ）となる。
【００７２】
この方法を、以下の擬似コードを使用して示す。
0004164204.tif 000009
【００７３】
２．４．２  「ＩＮ」領域群に対する不透明領域による最適化
領域が不透明な領域の中にある（「ＩＮ」）場合には、「ＩＮ」演算子の特性にしたがい、演算の結果生じる画素データは左オペランドのそれと同じになる。これは、演算の結果生じた領域が左オペランドのプロキシを単に参照することによって達成される。好ましい実施形態の方法は、先に示した「ＩＮ」領域群の構築方法をわずかに変更したものである。唯一の違いは、ＲＧ１の現在の領域とＲＧ２のそれぞれの領域との間の積領域を計算するときに、ＲＧ２の現在の領域が不透明であるかどうかを調べるチェックが実施されることである。不透明である場合には、ＲＧ１の現在の領域のプロキシが新しく計算された領域のプロキシ（ｎｅｗ＿ｐ）となる。
【００７４】
この手法を、以下の擬似コードを使用して示す。
0004164204.tif 000010
【００７５】
２．５  ツリー全体の初期化
ツリーの全ての二項領域群に前述の好ましい実施形態の方法を使用することによって、合成ツリー全体を初期化することができる。ノードは、その子ノードが初期化されるまで初期化することができない。したがってこのプロセスはツリーの最下段から始まり、ルートに向かって上方に進む。このプロセスでは最初に、現在のノードが葉ノードであるかどうかを調べる。そうである場合には、葉ノード領域群を構築する。しかし、現在のノードが二項ノードである場合には、２．４．１項および２．４．２項で概説した好ましい実施形態の方法を使用して二項ノード領域群を構築する。以下の擬似コードによって、ツリーの全ての領域群を初期化する方法の概要を説明する。この方法は再帰的関数を利用する。この関数は、呼び出されると、ツリーのルートを引き数として渡す。
0004164204.tif 000011
【００７６】
２．６  合成画像の構築
合成ツリーを初期化すると、ツリーのルートの領域群は、合成画像の、画像データが生成された方法が異なる領域への分割を表すゼロ個以上の領域から成る群を含む。領域のプロキシのいくつかは、合成を一切必要とすることなくツリーの葉ノードから直接に画像データを参照することができる。一方その他の領域は、合成演算の結果であるプロキシを有する。画素バッファに記憶された画像などの単一の合成画像が必要な場合、これは、それぞれの領域のプロキシからの画像データを、その領域に対応する領域内の画素バッファにコピーすることによって達成することができる。このプロセスを、以下の擬似コードに示す。これは、一般化されており、最終画像の構築を指名された任意の更新領域に制限することができる。
0004164204.tif 000012
【００７７】
３．０  動的レンダリング
動的レンダリングは、連続する複数の画像を生成する課題に関する。合成ツリーが与えられれば、前述の方法を使用して領域群（領域およびプロキシを含む）を生成することができる。動的レンダリングをサポートする、前述の方法の他の実施形態を以下に説明する。合成ツリーは画像を表す。ツリーを変更して、ツリーが新しい画像を表すようにすることができる。ツリーの領域群（およびツリーの領域記述およびプロキシ）は、ツリーの変更を反映するよう更新される。２つの画像が共通の特徴を有していることを活用することによって効率は向上する。一例を挙げ、他の実施形態の手法および用語を説明する。
【００７８】
図３に、単純な合成ツリーに対する領域再分割およびこれに対応するそれぞれの領域の合成式（不透明度は利用していない）を示す。オブジェクトＡがその他のオブジェクトに対して相対的に短い距離を移動する状況を考える。ツリーのルートの領域群の領域のいくつかは、Ａの移動の影響を受ける。
【００７９】
不透明な場合の最適化を考えない場合、合成式にＡを含む領域はＡの移動の影響をかなり受ける。影響を受ける領域は２、３、５および６である。ツリーのルートの領域群を更新するときには、これらの領域の領域記述とプロキシの両方を完全に計算し直す必要がある。他の実施形態においてこの状況は１次被害として知られる。何らかの変更が加えられたオブジェクトを合成式中に含む領域は、１次被害を受けると言うことができる。
【００８０】
合成式中にＡを含む領域に隣接する領域もＡの移動の影響を受ける。ただしその影響は、１次被害を受ける領域ほどには深刻ではない。この例でこのような影響を受ける領域は１、４、７および８である。ツリーのルートの領域群を更新するときには、これらの領域の領域記述を計算し直す必要がある。しかしプロキシについては、新たな領域のうち、対応する以前の領域に含まれていなかった範囲のみを計算し直せばよい。他の実施形態においてこの状況は２次被害として知られる。一般に２次被害は、領域の境界（内容ではない）を左右するオブジェクトが何らかの変更を受ける場合に起こる。
【００８１】
フレーム当たりの更新コストを減らすためには、画素ごとの演算と領域群演算の両方について必要な作業量を、実行可能な限りにおいて減らすことが重要である。１次および２次被害の概念は、このことを容易にする一手段である。他の実施形態で、合成ツリー全体を通じて何らかの被害を有する領域の最小集合を正確に決定することができれば、実行される作業の量が低減することは明らかである。
【００８２】
図２４は、本発明の他の実施形態に基づいて一連の画像を作成する方法を示す流れ図である。この一連の画像のメンバはそれぞれ、その前のメンバに関係している。これらの画像は、合成式を表す階層的な合成ツリーに基づいて合成されるいくつかの図形オブジェクトをレンダリングすることによって形成される。この階層的合成ツリーのそれぞれのノードは、これらの画像のうちの少なくとも１つの画像の構成要素を表し、それぞれのオブジェクトは所定の輪郭を有する。このプロセスは段階２４０１から始まり、この段階で、第１の画像を表す階層的合成ツリーにアクセスする。次の段階２４０３で、階層的合成ツリーのそれぞれのノードについて、構成画像空間をいくつかの相互排除領域に再分割する。プロセスは段階２４０５に進み、それぞれの相互排除領域を調べ、ノード間の依存情報を生成する。ノード間依存情報のデータ構造およびそれを作成するプロセスについては、後の３．１節ないし３．９節で説明する。次の段階２４０７で、第１の画像をその階層構造に基づいてレンダリングする。プロセスは段階２４０９に進み、この段階で、階層的合成ツリーの変更を引き起こす画像の変更が実施される。次の段階２４１１で、依存情報を調べ、どの領域が、階層的合成ツリーの変更の影響を受けたかを求める。プロセスは次の段階２４１３に進み、影響を受けた領域を更新する。次の段階２４１５で、階層的合成ツリーの変更を反映するようノード間依存情報を更新する。領域を調べ、これを更新するプロセスについては後の３．６節ないし３．９節で説明する。特に３．９節には、二項「ＯＶＥＲ」領域を更新する方法を示す擬似コードを含めた。プロセスは段階２４１７に進み、階層的合成ツリーに基づいて第１の画像の変更された部分をレンダリングし、更新された画像を生成する。段階２４１７では、変更の影響を受けた領域だけをレンダリングする。
【００８３】
３．１  基本データ・モデル
静的レンダリングに使用される、領域記述およびプロキシからなるデータ・モデルは、動的レンダリングでの使用には不十分である。これは、１次および２次被害を求めるために、フレーム間で同じ内容の領域どうしを関連付けることができなければならないからである。同じ内容の領域の関連付けをサポートするには、領域群のそれぞれの領域に追加の情報が必要である。そのため、領域群のそれぞれの領域は以下のデータを含む。
（ｉ）領域記述：領域境界の低位表現である。領域群の全ての領域の領域記述は相互排除（交わらず、重なり合わない）でなければならない。
（ｉｉ）プロキシ：合成式によって指定された演算を領域記述の内部の全ての画素に適用して得られた画素データをキャッシュする手段である。プロキシは、２４ビットのカラー・ビットマップのような単純なものでもよいし、または（ランレングス符号化記述などの）それよりもはるかに複雑なものでもよい。基本的にプロキシは、検索および使用が効率的に行えるなんらかの方法で、画素データを表すものであればよい。
（ｉｉｉ）内容ラベル：内容ラベルは、画像データの構築方法を記述した一意の記号式を表す。記号式中の項は、カテゴリーの異なる画像データ・ソースを識別する。したがって、合成ツリー中の２つの異なる葉ノードの領域群は、たとえ実際の画像データが等しい場合であっても、異なる内容ラベルでラベルされた領域を含む。他の実施形態では、内容ラベルを表すのに一意の整数の系を使用する。例えば「２３」が「（Ａ  ＯＶＥＲ  Ｂ）ＯＶＥＲ  Ｃ」を表すなどとする。
（ｉｖ）フラグ・レジスタ：領域群の更新プロセス時に状態を記憶しておくのに使用する汎用フラグ・レジスタである。これに記憶されるフラグについては後節で概要を説明する。
【００８４】
３．２  内容ラベル
葉ノードの領域群は複数の領域を含むことができ、それぞれの領域は当然一意の内容ラベルを有する。例えば、合成ツリーの葉ノードの領域群が、その葉ノードの非透明領域を表す（単一の内容ラベルが付けられた）単一の領域を含むことがある。葉ノードの領域群が、葉ノードの完全に不透明な範囲を表す領域と残りの非透明な範囲を表す領域の（それぞれ異なる内容ラベルが付けられた）２つの領域を含むこともある。さらには葉ノードを、任意の数の領域（および関連内容ラベル）にカテゴリー化することもできる。
【００８５】
内容ラベルを作成する１つの方法は、葉ノードの領域群の領域に新しい内容ラベルを割り当てるものである。他の方法は、複数の内容ラベルを取り上げ、これらを結合して、結合に寄与した式の結合を表す記号式を示す新しい内容ラベルを作成するものである。例えば、（（Ａ  ｃｏｍｐ  Ｂ）ｃｏｍｐ  Ｃ）を表す内容ラベルを、（Ｄ  ｃｏｍｐ  Ｅ）を表す内容ラベルと結合した場合には、（（（Ａ  ｃｏｍｐ  Ｂ）ｃｏｍｐ  Ｃ）ｃｏｍｐ（Ｄ  ｃｏｍｐ  Ｅ））を表す新しい内容ラベルが作成される。
【００８６】
内容ラベルの他に依存情報も必要である。依存情報は、ある領域の内容がその他の領域の内容にどのように寄与するか、および領域境界の変更がその他の領域の境界にどのような影響を及ぼすかという点に関して、所与の内容ラベルがその他の内容ラベルとどのような関係にあるのかを示すものである。他の実施形態では、以下のデータをそれぞれの内容ラベルに関連付ける。
（ｉ）１次依存リスト：それぞれの１次依存は、内容ラベルＬが直接に寄与する内容ラベルＬ'である。言い換えると「１次依存」は、内容ラベルＬと別の内容ラベルを結合することによって構築された式を表す内容ラベルＬ'である。内容ラベルが結合されるたびに、その結合に対する内容ラベルが、結合に寄与した全ての内容ラベルの１次依存に追加される。
（ｉｉ）２次依存リスト：それぞれの２次依存は、内容ラベルＬによって表される画像がその境界に影響を及ぼす何らかの変更を受けた場合に、間接的な影響を受けうる内容ラベルＬ''である。内容ラベルが結合されるとき、合成演算子が、寄与する内容ラベルを有する差領域を生成する場合にのみ、この寄与内容ラベルが次段の２次依存に追加される。表２に、一般的に使用される演算子のうちのどの演算子がその左右のオペランドに対して差領域を生成するのかを示す。さらに、結合（Ａ  ｃｏｍｐ  Ｂ）に対して、全ての（Ａ  ｃｏｍｐ  ｂｉ）および全ての（ａｊ  ｃｏｍｐ  Ｂ）に対する結合内容ラベルの２次依存が追加される。ａｊはＡの２次依存であり、ｂｉはＢの２次依存である。
（ｉｉｉ）特性情報：それぞれの内容ラベルは、合成エンジンが活用できる可能性のある特性を有する内容を表すことができる。その一例が不透明な特性である。内容ラベルが不透明な内容を表す場合、その内容の合成ははるかに高速となり、ある演算子に関しては、画素ごとの合成演算が必要なくなる。
【００８７】
３．３  内容ラベルの実装
他の実施形態では、内容ラベルとして一意の整数が使用され、現在存在する内容ラベルの数を表す数値が記憶される。新しい内容ラベルが作成されたときにはこの数値が増分され、その数値が、この内容ラベルを表す一意の整数となる。整数を単調に増分することによって内容ラベルを割り当てるこの手法は、内容ラベルの関連データ構造を、内容ラベルが追加されるごとに成長する一次元配列の形態に記憶することができることを意味する。内容ラベルを索引として使用する内容ラベルのデータ構造を参照することができる。葉ノードの内容ラベルが作成されるときには、その内容ラベルが１次または２次依存を持たないように初期化される。現在の葉ノードの内容ラベルが不透明である場合には、この内容ラベルｉの特性にフラグがセットされる。
【００８８】
下記の擬似コードに、他の内容ラベルに左右されない新しい内容ラベル（すなわち葉ノード領域群の内容ラベル）を作成するのに使用する基本手法を示す。
0004164204.tif 000013
【００８９】
既存の内容ラベルの結合を表す内容ラベルを作成することもできる。他の実施形態ではこれが、演算およびそのオペランドの内容ラベル（これらはハッシュされて鍵が作成される）を、その演算結果を表す単一の内容ラベルにマップするハッシュ・テーブルによって達成される。
【００９０】
（それぞれが内容ラベルを有する）２つの領域の積を表す領域が作成されるときには、新しい領域を標識するのに使用する新しい内容ラベルが生成される。この新しい内容ラベルが生成されたときには、これを、その両方の寄与オペランドの１次依存リストに追加しなければならない。さらに、これら２つの寄与内容ラベルの２次依存および合成演算子の特性によって決まる２次依存リストも生成しなければならない。
【００９１】
このプロセスは再帰的であり、新しく作成された内容ラベル（ｎｅｗ＿ｃｌ）を寄与内容ラベルの１次依存リストに追加することによって開始される。次いで、合成演算子の特性に応じ、一方または両方の寄与内容ラベルを２次依存リストに追加するか、あるいはどちらも追加しない。次いで、（ｃｌａｂ１  ｏｐ  ｓｄ２ｉ）および（ｓｄ１i  ｏｐ  ｔａｂ２）を表す全ての内容ラベルを２次依存リストに追加する。
0004164204.tif 000014
0004164204.tif 000015
【００９２】
３．４  動的レンダリングにおける領域群の結合
合成ツリーに増的更新を実施するためには、合成ツリーが一貫した初期状態に構築されていなければならない。これを達成する基本的な手法は、内容ラベルのサポートが組み込まれている点を除けば静的レンダリングに使用した手法と同じである。
【００９３】
葉ノードの領域群は、静的レンダリングと実質的に同じように初期化されるが、それぞれの葉ノードの領域群のそれぞれの領域を一意の内容ラベルで標識する点が異なる。それぞれの内容ラベルを、レンダラの効率を高めるのに役立つ可能性のあるさまざまなカテゴリーの特性で標識することができる。例えば、内容ラベルを、完全に不透明であると標識することができる。
【００９４】
二項ノードの初期化も静的レンダリングの場合と同様である。一例として、「ＯＶＥＲ」二項ノードの領域群を構築する方法を説明する。その他の合成演算子の領域群を構築する手法は、この「ＯＶＥＲ」に対する手法から容易に推量することができる。
【００９５】
一方のオペランドのｒｇｉと他方のオペランドのカバー領域との差領域を計算する際、差領域は内容ラベルｒｇｉを継承する。一方、積領域を作成するときには、２つの寄与領域の内容ラベルを結合することによって新しい内容ラベルを作成する。これは、これらの２つの寄与領域のプロキシが合成されて、新しい内容を意味する新しいプロキシが生成されるためである。内容ラベル管理を含む「ＯＶＥＲ」領域群構築方法の擬似コードを以下に示す。
0004164204.tif 000016
0004164204.tif 000017
【００９６】
３．５  ２次依存とＯｖｅｒ
２次依存の生成に使用する方法の理論的根拠についてはさらに説明が必要である。２次依存が生成されるのは、２つの内容ラベルを結合することによって新しい内容ラベルが作成されるときのみである。上記擬似コードから分かるように、これは、積領域が生成されるときに限られる。他の実施形態では本質的に、積領域に対して生成された内容ラベルを誘因として使用する。２つの内容ラベルが付けられた領域は、これらの領域が交わらない限り、間接的な影響を及ぼしあうことはできない。特定の内容ラベルの２次依存リストは、この合成内容ラベルが表す合成演算子、２つの寄与内容ラベル、および寄与内容ラベルの２次依存リストによって決まる。
【００９７】
「ＯＶＥＲ」演算子を使用して内容ラベル（Ｂ）の上に合成された内容ラベル（Ａ）を表す新しい内容ラベル（Ｃ）の２次依存リストを生成する他の実施形態の方法を次に説明する。Ａの２次依存リストの要素およびＢの２次依存リストの要素をそれぞれＡi、Ｂiとする。まずＡおよびＢを、Ｃの２次依存リストに追加する。これは、Ｃで標識された領域が境界を変更した場合には、ＡおよびＢで標識された領域の計算をやり直す必要がある可能性が高いからである（これらの領域はＣの領域に接している可能性が高い）。次に、Ｂの２次依存リストのそれぞれの要素について、（Ａ  ＯＶＥＲ  Ｂi）を表すそれぞれの内容ラベルを追加する。Ａ  ＯＶＥＲ  Ｂiを表すマッピングはシステム中に存在せず、作成する必要がある。２次依存リストが、領域群のいずれの領域によっても表されていない内容ラベルを含むことがある。これらは、領域境界の変更によって存在するようになることがある。その理論的根拠は、ＡがＢと交わるということであり、したがって、Ａも、Ｂの２次依存リスト中に存在する内容ラベルで標識された領域と交わる可能性が高いということである。同様に、Ａの２次依存リストのそれぞれの要素について、（Ａi  ＯＶＥＲ  Ｂ）を表すそれぞれの内容ラベルを追加する。
【００９８】
３．６  内容ラベルと被害
合成ツリーが変更されたからといって画像全体を生成し直す必要は必ずしもないことを示すために、１次および２次被害の概念を図３に関して導入した。異なる内容の領域間の依存関係を追跡することによって、内容が被害を受けた領域の画像データを生成し直すだけでよくなる。以下の説明では、合成ツリーの単純な変更に対する依存および被害について概説する。「単純」の意味は、変更が葉ノードに限られるということである。ツリー構造の変更などのより複雑な変更については、後節で概要を説明する。
【００９９】
葉ノードが変更された場合、その影響を受けた領域の内容ラベルは「１次被害」を受けたと言う。内容ラベルが１次被害を受けるということには、その内容ラベルの全ての１次依存が再帰的に１次被害を受けるということが含まれる。内容ラベルが１次被害を受けるとき、その内容ラベルの全ての２次依存には、２次被害が非再帰的にマークされる。このプロセスは、内容ラベルに、被害を受けるというフラグをセットすることから始まる。以下の擬似コードに、内容ラベルがどのように被害をうけるかを示す。
0004164204.tif 000018
【０１００】
ツリーの更新が実施されたときには、１次被害を受けるとマークされた内容ラベルを有する領域は、領域境界とプロキシの両方を計算し直す必要がある。２次被害を受けるとマークされた内容ラベルを有する領域は、その領域記述を計算し直す必要があるが、プロキシは、以前の領域に含まれていなかった新しい領域の範囲だけを計算し直せばよい。
【０１０１】
３．７  内容ラベルと依存の例
内容ラベルおよび被害の概念をはっきりさせるため、複雑さの異なるいくつかの例を示す。
【０１０２】
３．７．１  例１
図９で、合成ツリーを最初に構築すると以下の内容ラベル表が得られる。（注：下表では内容ラベルを、整数ではなく一意の文字列で表し、「ｏｖｅｒ」は短縮して「ｏ」とした。これは単に読みやすさを考えてのことである）
【表５】
0004164204.tif 000019
【０１０３】
Ａが移動した場合には、ＡｏＢが１次被害を受け、その結果、Ｂが２次被害を受ける。
【０１０４】
３．７．２  例２
図１０で、合成ツリーを最初に構築すると以下の内容ラベル表が得られる。
【表６】
0004164204.tif 000020
【０１０５】
この例では、全てのオブジェクトが、その他の全てのオブジェクトと交わっており、そのため何らかの変更があると、全てが何らかの被害を受ける。変更されたオブジェクトの１次依存は全て１次被害を受け、それ以外は全て２次被害を受ける。
【０１０６】
図１１に、次のフレームにおけるＡの移動の影響を示す。見て分かるとおりＡが変更された場合には、Ａ、ＡｏＢ、ＡｏＣおよび（ＡｏＢ）ｏＣによって定義された領域がそれぞれ１次被害を受ける。Ｂ、ＣおよびＢｏＣによって定義された領域はそれぞれ２次被害を受ける。
【０１０７】
３．７．３  例３
図１２で、合成ツリーを最初に構築すると以下の内容ラベル表が得られる。
【表７】
0004164204.tif 000021
【０１０８】
Ａはその他の全てのオブジェクトと交わっているので、Ａが移動した場合には、合成ツリーのかなりの部分を計算し直す必要がある。図１３に、唯一残った部分が、ＢｏＣおよびその従属領域ＢｏＣｏＥに対応する領域であることを示した。まとめると以下のようになる：
・１次被害  −  Ａ、ＡｏＢ、ＡｏＣ、ＡｏＥ、Ａｏ（ＤｏＥ）、（ＡｏＢ）ｏＥ、（ＡｏＣ）ｏＥ、（ＡｏＣ）ｏ（ＤｏＥ）、ＡｏＤ、（ＡｏＣ）ｏＤ
・２次被害  −  Ｂ、Ｃ、Ｅ、ＤｏＥ、ＢｏＥ、ＣｏＥ、ＤｏＥ、ＣｏＤｏＥ
【０１０９】
一方、Ｂが移動した場合、被害の量はＡが移動した場合よりも小さくなる。これは、ＢがＤとは交わっていないためである。Ｂが移動しても、ＤｏＥ、Ａｏ（ＤｏＥ）、（ＡｏＣ）ｏ（ＤｏＥ）、Ｃｏ（ＤｏＥ）および（ＡｏＣ）ｏＥ（およびこれらの祖先）は被害を受けない。これを図１４に示す。被害をまとめると以下のようになる。
・１次被害  −  Ｂ、ＡｏＢ、ＢｏＣ、ＢｏＥ、（ＡｏＢ）ｏＥ、（ＢｏＣ）ｏＥ
・２次被害  −  Ａ、Ｅ、Ｃ、ＡｏＥ、ＣｏＥ
【０１１０】
以上に示した例は単純ではあるが、これまでに示した依存手法が、特定の１つまたは複数の内容ラベルが被害を受けたときに影響を受ける内容ラベルに被害を与えることを十分に示している。一般的な複雑な合成では、多数のオブジェクトがその他の多数のオブジェクトと交わることはまれであり、このことは、前記手法を使用した更新の際に合成ツリーの多くの領域が変更されないだろうことを意味している。
【０１１１】
３．８  ２次依存と合成演算子の例
前記例３を変更したものを考える。図１８で、合成ツリーを最初に構築すると以下の内容ラベル表が得られる。なお、ＡａＢはＡ  ＡＴＯＰ  Ｂを、ＡｉＢはＡ  ＩＮ  Ｂなどを表す。
【表８】
0004164204.tif 000022
図１８に示すようにＡＴＯＰ演算子は、ＡをＢの境界に沿って切り取る。したがってＡが、Ｃ、ＤまたはＢと交わることはない。同様のことがＩＮ演算子についても言える。これは、この状況におけるオブジェクト間の結びつきがこれまでのものよりも弱いことを意味する。例えばＡが変更された場合、直接的な被害を受けるのはＢとＡａＢのみである。同様にＥが被害を受けた場合には、ＤｉＥのみが被害を受ける可能性を有する。
【０１１２】
３．９  領域群の更新
他の実施形態では、内容ラベルおよび被害のフレームワークを使用して、更新中に更新されたオペランドに二項領域群を合致させるために実行しなければならない作業の量を減らす。他の実施形態ではこれを、領域群の領域のうち、内容ラベルが１次または２次被害を受ける領域群だけを更新し、合成ツリーに実施された変更の結果生み出される新しい領域を追加し、接触がもはや存在しない領域群の領域を削除することによって実施する。
【０１１３】
異なるそれぞれの二項演算子は、その演算子の特定の要求を取り扱う異なる更新関数を有する。領域群を更新するプロセスは、ツーパス・プロセスである。最初のパスでは、１次被害を受けた積領域を更新し、この被害のために生成された新しい積領域を追加する。一方のオペランドの領域群のそれぞれの領域と他方のオペランドの領域群のそれぞれの領域との間で、対応する一方または両方の内容ラベルが１次被害を受ける場合には、その領域間の積を計算する。他の実施形態では、この積が空集合でない場合に、この結合を表す内容ラベルが存在するかどうかを判定する。この内容ラベルが存在しない場合には内容ラベルを作成する。これは１次被害を受ける。内容ラベルが１次被害が受けると、その全ての２次依存に２次被害がマークされることに留意されたい。
【０１１４】
領域群の領域に１次被害内容ラベルが付されている場合には、その領域境界およびプロキシを更新する。その領域群にそのような領域が存在しない場合には、この内容ラベルで標識された新しい領域を領域群に追加する。新しいプロキシを生成し、この積演算から得られた領域記述とともにこの領域に割り当てられる。
【０１１５】
一方のオペランドの領域群のそれぞれの領域について、その領域の内容ラベルが１次または２次被害を受ける場合に、その領域と他方のオペランドのカバー領域との差を計算する。差が空集合でなく、かつ、前記内容ラベルで標識された領域がその領域群に存在する場合には、その領域記述およびプロキシを更新する。そのような領域が存在しない場合には、前記内容ラベルで標識された領域を領域群に追加する。追加された領域は、差のカバー領域として割り当てられ、現在の領域のプロキシを参照する。
【０１１６】
一方のオペランドの領域群のそれぞれの領域と他方のオペランドの領域群のそれぞれの領域との間で、それらの結合を表す内容ラベルが２次被害を受け、１次被害を受けない場合に、それらの領域の積を計算する。積が空集合でない場合には、その領域群の中で、その内容ラベルで標識された領域を探索する。このような領域が存在する場合には、その領域記述およびプロキシを、新しい領域と古い領域の差として更新する。そのような領域が存在しない場合には、その内容ラベルで標識された領域を作成する。作成された領域記述を積演算の結果に割り当て、そのプロキシを生成する。
【０１１７】
二項「ＯＶＥＲ」領域群を更新する単純なアルゴリズムを表す擬似コードを以下に示す。
0004164204.tif 000023
（第１パス  このパスを使用して、積領域の１次被害を処理し、新しい積領域を生成する）
0004164204.tif 000024
0004164204.tif 000025
（第２パス  このパスを使用して、差領域の１次および２次被害、ならびに積領域の２次被害を処理する）
0004164204.tif 000026
0004164204.tif 000027
【０１１８】
４．０  ツリーの変更（リンクおよびアンリンク(Unlinking)）
ツリーの構造を変更することによって、合成ツリーにさらに複雑な変更を実施することができる。２つの低レベル演算、リンクおよびアンリンクを使用することによって、ほとんどの一般的なツリー構造の変更を実施することができる。
【０１１９】
アンリンク演算は、子ノードをその親ノードから分離するのに使用される。この演算が終わると、子ノードは親ノードを持たなくなり（この子ノードをどこか別の場所にリンクすることができることを意味する）、親ノードは使用可能なリンクを有するようになる（代わりに他のノードをリンクさせることができることを意味する）。アンリンクされた子ノード（アンリンク子ノード）よりも上位の合成ツリーのノードは、このアンリンク子ノードに従属する内容を含む。したがってツリーの上位の従属領域群が適正に更新されるように、次の更新時には、アンリンク演算の時点でアンリンク子ノードにあった内容ラベルが被害を受けなければならない。この更新は、親ノードが、そのアンリンク子ノードに存在する内容ラベルをキャッシュしておくことによって実施される。その場所に他のサブツリーがリンクされ、親ノードの領域群が更新されずに続いてアンリンクされた場合は、その新しいサブツリーの内容ラベルをキャッシュする必要はない。アンリンク演算の擬似コードを以下に示す。ＵＮＬＩＮＫＥＤ＿ＬＥＦＴまたはＵＮＬＩＮＫＥＤ＿ＲＩＧＨＴフラグがセットされ、そのため、新しくリンクされたサブツリーの内容ラベルが被害を受ける可能性のあるときには、ツリーの上位の領域群（プロキシを含む）を更新しなければならないことに留意されたい。
0004164204.tif 000028
【０１２０】
リンク演算は、親を持たないノードを親ノードの空きリンクにリンクする演算を含む。この演算の擬似コードを以下に示す。
0004164204.tif 000029
【０１２１】
４．１  合成ツリー全体の更新
合成ツリーの葉ノードが変更される場合には、前述の方法を使用して、葉ノードからツリーのルートまでの直系の全てのノードの領域群を更新しなければならない。図１５に、葉ノードＢおよびＨに何らかの変更が実施される場合に領域群を更新する必要のあるノードを円で囲んで示す。
【０１２２】
ツリーを更新する方法の擬似コードを以下に示す。
0004164204.tif 000030
0004164204.tif 000031
【０１２３】
本発明の実施形態は、図１９に示すような従来の汎用コンピュータ・システム２１００を使用して実装することができる。図１ないし図１８に関して説明したプロセスは、このコンピュータにロードでき、このコンピュータによって実行可能な、コンピュータ可読媒体に記録されたソフトウェアとして実装される。コンピュータ・システム２１００は、コンピュータ・モジュール２１０１、入力装置２１０２、２１０３、およびディスプレイ装置２１０４を含む。
【０１２４】
図１９によれば、コンピュータ・モジュール２１０１は、少なくとも１つの処理装置２１０５；ランダム・アクセス・メモリ（ＲＡＭ）およびリード・オンリー・メモリ（ＲＯＭ）を一般に含む記憶装置２１０６；ならびにビデオ・インタフェース２１０７、キーボード２１１８およびマウス２１２０のインタフェース２１０８、入出力インタフェース２１１０を含む入出力（Ｉ／Ｏ）インタフェースを含む。記憶装置２１０９には、フロッピー・ディスク、ハード・ディスク・ドライブ、ＣＤ‐ＲＯＭドライブ、当業者に周知のその他の不揮発性記憶装置のうちの１つまたは複数の装置を含めることができる。コンピュータ・モジュール２１０１の構成要素２１０５ないし２１１０は一般に、コンピュータ・システム２１００が当業者に周知の周知の通常の動作モードで動作するように相互接続バス２１１４を介して連絡される。本発明の実施形態を実施することが可能なコンピュータ・システムには、ＩＢＭ−ＰＣ／ＡＴおよびその互換システム、ＳｕｎＳｐａｒｃｓｔａｔｉｏｎなどのコンピュータ・システムがある。特に、本明細書に記載した擬似コードは、適当な言語にプログラミングし、例えばＨＤＤなどに記憶し、処理装置２１０５の制御の下でＲＡＭ２１０６中で実行することができ、その結果を、ビデオ・インタフェース２１０７中のＲＡＭに記憶し、ディスプレイ２１１６上に再生することができる。このプログラムは、フロッピー・ディスクまたはＣＤ−ＲＯＭに予めプログラミングしてシステム２１００に供給してもよいし、あるいはインターネットなどのコンピュータ・ネットワークとの接続を介してアクセスしてもよい。
【０１２５】
前述の好ましい方法は、特定の制御フローを含む。これらの好ましい方法には、本発明の趣旨または範囲を逸脱することなく異なる制御フローを使用する多くの変法がある。さらに、好ましい方法の１つまたは複数の段階を、逐次的にではなく並行して実行することもできる。
【０１２６】
以上に、本発明のいくつかの実施形態を説明したが、本発明の範囲から逸脱することがなくこれらの実施形態に変更を実施できることは当業者には明らかである。
【０１２７】
この明細書の文脈において、「〜を含む」という表現は、「〜を主として含むが、〜だけを含むとは限らない」、または「有する」という意味を表し、「〜だけから構成される」ということを意味しない。
【発明の効果】
以上説明したように本発明によれば、複数の構成要素を合成することによって生成される画像を作成する方法を提供することによって、従来技術の方法の欠陥を実質的に克服または改善することが可能になる。
【図面の簡単な説明】
【図１】合成ツリーの例を示す図である。
【図２】重なり合ったいくつかのオブジェクトを含む画像および対応する合成ツリーを示す図である。
【図３】図２の画像に、画像中に存在する異なる領域、およびそれぞれの領域に対する画素データを生成するのに使用される合成式のリストを追加した図である。
【図４】図３の画像について、好ましい実施形態の一例に基づいて最適化した合成演算を示す図である。
【図５】好ましい実施形態に基づく和（Ｕｎｉｏｎ）演算を使用した２つの領域記述の結合結果を示す図である。
【図６】好ましい実施形態に基づく積（Ｉｎｔｅｒｓｅｃｔｉｏｎ）演算を使用した２つの領域記述の結合結果を示す図である。
【図７】好ましい実施形態に基づく差（Ｄｉｆｆｅｒｅｎｃｅ）演算を使用した２つの領域記述の結合結果を示す図である。
【図８Ａ】本発明に基づくＯｖｅｒ演算を使用した２つの領域グループの結合演算に含まれる段階を示す図である。
【図８Ｂ】本発明に基づくＯｖｅｒ演算を使用した２つの領域グループの結合演算に含まれる段階を示す図である。
【図８Ｃ】本発明に基づくＯｖｅｒ演算を使用した２つの領域グループの結合演算に含まれる段階を示す図である。
【図８Ｄ】本発明に基づくＯｖｅｒ演算を使用した２つの領域グループの結合演算に含まれる段階を示す図である。
【図９】本発明の他の実施形態の一例に基づく画像および合成ツリーを示す図である。
【図１０】前記他の実施形態のその他の例に基づく画像および合成ツリーを示す図である。
【図１１】図１０の画像に対する領域Ａの移動の影響を示す図である。
【図１２】前記他の実施形態のその他の例に基づく画像および合成ツリーを示す図である。
【図１３】図１２の画像に対する領域Ａの移動の影響を示す図である。
【図１４】図１２の画像に対する領域Ｂの移動の影響を示す図である。
【図１５】葉ノードＢおよびＨを変更した場合に領域群を更新する必要がある合成ツリー中のノードを示す図である。
【図１６】領域およびそのｘｙ座標を示す図である。
【図１７】２つの領域およびそのｘｙ座標を示す図である。
【図１８】前記他の実施形態のその他の例に基づく画像および合成ツリーを示す図である。
【図１９】好ましい実施形態が実装された装置を示す図である。
【図２０】本発明に有用なさまざまな合成演算子の演算結果を示す図である。
【図２１】格子上に整列していない領域を有する２つの円の結合によって形成される領域を示す図である。
【図２２】格子上に整列した領域を有する２つの円の結合によって形成される改良された領域を示す図である。
【図２３】好ましい実施形態に基づいて画像を作成する方法を示す流れ図である。
【図２４】本発明の他の実施形態に基づいて一連の画像を作成する方法を示す流れ図である。
【符号の説明】
２１００  汎用コンピュータ・システム
２１０１  コンピュータ・モジュール
２１０５  処理装置
２１０６  記憶装置
２１０７  ビデオ・インタフェース
２１０８  インタフェース
２１０９  記憶装置
２１１０  入出力インタフェース
２１１４  バス
２１１６  ディスプレイ
２１１８  キーボード
２１２０  マウス
２１４０  印刷装置
【図１】
0004164204.tif 000032
【図２】
0004164204.tif 000033
【図３】
0004164204.tif 000034
【図４】
0004164204.tif 000035
【図５】
0004164204.tif 000036
【図６】
0004164204.tif 000037
【図７】
0004164204.tif 000038
【図８Ａ】
0004164204.tif 000039
【図８Ｂ】
0004164204.tif 000040
【図８Ｃ】
0004164204.tif 000041
【図８Ｄ】
0004164204.tif 000042
【図９】
0004164204.tif 000043
【図１０】
0004164204.tif 000044
【図１１】
0004164204.tif 000045
【図１２】
0004164204.tif 000046
【図１３】
0004164204.tif 000047
【図１４】
0004164204.tif 000048
【図１５】
0004164204.tif 000049
【図１６】
0004164204.tif 000050
【図１７】
0004164204.tif 000051
【図１８】
0004164204.tif 000052
【図１９】
0004164204.tif 000053
【図２０】
0004164204.tif 000054
【図２１】
0004164204.tif 000055
【図２２】
0004164204.tif 000056
【図２３】
0004164204.tif 000057
【図２４】
0004164204.tif 000058