(57)【特許請求の範囲】
【請求項１】
指定した視点から見た３次元場面の、保存された１つの２次元ラスターイメージを編集するための、コンピュータベースのイメージ編集装置であって、
前記２次元ラスターイメージの各ピクセル毎に、前記視点とピクセルによって示される３次元場面上の点との距離を示す深さの値が記憶され、該ピクセルの深さの値に基づいて２次元ラスターイメージを編集する対話的編集手段を備えたことを特徴とするイメージ編集装置。
【請求項２】
前記対話的編集手段は、編集対象の２次元イメージの部分を指示する手段を有する請求項１に記載のイメージ編集装置。
【請求項３】
前記対話的編集手段は、２次元イメージの指定された部分に編集効果を適用する操作手段を有する請求項１に記載のイメージ編集装置。
【請求項４】
前記対話的編集手段は、ユーザーからの入力に反応して、編集対象の２次元イメージの部分を指示する指示手段と、イメージの指定した部分の各ピクセルの深さの値に基づいて、ユーザーが選択した編集効果を適用することによって、イメージの指定した部分を変更する変更手段を備える、請求項３に記載のイメージ編集装置。
【請求項５】
前記指示手段はポインティングデバイスを備える請求項４に記載のイメージ編集装置。
【請求項６】
前記指示手段は、前記保存された深さの値に応じて、前記２次元イメージの部分を指示することが可能である請求項４または請求項５に記載のイメージ編集装置。
【請求項７】
前記指示手段は、３次元場面内の編集対象の平面を指示することが可能である、請求項６に記載のイメージ編集装置。
【請求項８】
前記指示手段は、３次元場面内の編集対象のオブジェクト表面を指示することが可能である、請求項６に記載のイメージ編集装置。
【請求項９】
マテリアル値がイメージ内のピクセルのうち少なくともいくつかに関して保存されており、そのマテリアル値は、そのピクセルによって示される３次元場面内のオブジェクトのマテリアルを指示することができ、また、前記指示手段は、前記保存されたマテリアル値に応じて、前記２次元イメージの部分を指示することが可能である、請求項４乃至８の内いずれか１項に記載のイメージ編集装置。
【請求項１０】
ユーザーが選択可能な編集効果は、イメージの指定した部分に対するピクセルの色情報を変更するものである、請求項４乃至９の内いずれか１項に記載のイメージ編集装置。
【請求項１１】
前記変更手段は、あるピクセルに保存された深さの値に応じて、そのピクセルに記憶する色情報の透明度を変化させることが可能である、請求項１０に記載のイメージ編集装置。
【請求項１２】
ユーザーが選択可能な編集効果は、保存されたライブラリから選択した建築視覚化における環境要素の、３次元場面へのオブジェクトの追加である、請求項４乃至９の内いずれか１項に記載のイメージ編集装置。
【請求項１３】
ユーザーが選択した編集効果は、３次元場面内のオブジェクトの表面に対して、選択したテクスチャを適用することである、請求項４乃至９の内いずれか１項に記載のイメージ編集装置。
【請求項１４】
オブジェクトの表面に適用されるテクスチャは、対応する、保存された深さの値に応じて変化する、請求項１３に記載のイメージ編集装置。
【請求項１５】
前記適用されるテクスチャは、２次元イメージの指示された部分の色調の変化に応じて変化する、請求項１３又は請求項１４に記載のイメージ編集装置。
【請求項１６】
テクスチャはハッチングテクスチャであり、さらに、指示された部分の明るい部分では、適用されるハッチング線の太さは、それより暗い領域に適用されるハッチング線の太さより細い、請求項１５に記載のイメージ編集装置。
【請求項１７】
前記指示手段は、ポインティングデバイスで２次元イメージの部分を横断するという、対応する動きに反応して、その２次元イメージの１群のピクセルを指示することが可能である、請求項４乃至１６の内いずれか１項に記載のイメージ編集装置。
【請求項１８】
ユーザが選択可能な編集効果は、イメージに準透過の色情報を追加することであり、前記変更手段は、現在のペイントセッションにおいて２つ以上の部分がペイントされている場合に、２つ以上の部分が重なる領域におけるピクセルに対するペイントが禁止されるよう制御する請求項１７に記載のイメージ編集装置。
【請求項１９】
ユーザーが選択可能な編集効果は、背景の上の前景における、選択した平面の拡張である、請求項４乃至９の内いずれか１項に記載のイメージ編集装置。
【請求項２０】
ユーザーが選択可能な編集効果は、前景の上の背景における、選択した平面の拡張である、請求項４乃至９の内のいずれか１項に記載のイメージ編集装置。
【請求項２１】
ユーザーが選択可能な編集効果は、前景と背景におけるオブジェクト上の、選択した平面の拡張である、請求項４乃至９の内いずれか１項に記載のイメージ編集装置。
【発明の詳細な説明】
本発明は、コンピュータグラフィックスの編集パッケージを利用した、２次元（2-D）のラスターイメージを編集するための方法と装置に関係している。本発明は、３次元場面のレンダリングされた２次元ラスターイメージの編集に関し、特別な、しかし限定されてはいない関係を持つ。
近年、建築家は、設計する建物や構造のイメージを作成するのに、コンピュータ援用設計（CAD）を多様するようになってきが、これは、CADは、いったんモデルを作成すると、異なった視点から見た建物や構造の複数のイメージを短時間に生成でき、正確な投影、光源、高品質の詳細を表示することができるからである。しかし、コンピュータモデルを作り、レンダリングを行って最終的なイメージを創り出すことは、複雑で難解な工程であり、建築家が慣れ親しんだ伝統的な設計の手法とは、極めて異なる。
特に、建築家は通常、ジオメトリモデルを最初に作成して、３次元のワイヤー図を作成しなければならない。次に、建築家は、視点、光源、表面のマテリアル、テクスチャ等を選択し、それらをコンピュータのレンダリングパッケージに入力する必要があり、そして、コンピュータのレンダリングパッケージは、指定した視点、指定した光源、表面のマテリアル、テクスチャで、３次元構造の２次元ラスターイメージを作成する。このレンダリング処理は、３次元モデルの複雑さに応じて、比較的簡単なモデルで数分、複雑なものになると数日を要する。その上、視覚的に満足のゆくイメージを作り出すまでに、入力パラメータを調整しながら何度も再レンダリングすることが必要になる。そのため、この工程は時間がかかり、複雑で、単調なものであり、実際に手描きで設計する、芸術的で創造的な手法とは極めてかけ離れている。
彩色や製図などで行われる、イメージを手で作成する方法は、アーチストやデザイナー、特に建築家が好む仕事方法に適しているのだが、それは、迅速なフィードバックを提供する、連続した、中断されないものだからである。最終的なイメージは、アーチストの“心の目”の中にある元々の孤立した構想からよりも、段階的な構築の過程の方から、より多くの明確さと確信を得ることができる。アーチストは豊かな構造を持ったイメージの方が、CADシステムを利用し作成されたものより、部分的な変更を加えやすい。手によって描かれた最終的なイメージの微妙さ、ニュアンスは、通常のレンダリングのアルゴリズムで必要とされるような、形式ばった描写やパラメータ化では、作り出せない。
伝統的な手法によるイメージ作成方法に最も近いコンピュータ製品に、Mount View、California、USAの、Adobe Systems社のPhotoshopのようなディジタルペイントシステムがある。実際、建築家やデザイナーは、そのような装置を利用し、レンダリングした最終的なコンピュータイメージを編集している。しかしながら、これらのペイントシステムは、レンダリングアルゴリズムにより出力されたイメージの、複雑なパースペクティブと色調の近似値を扱う手段を提供せず、ユーザーはこれらを自分自身の目で評価しなければならない。
本発明の１つの態様は、３次元場面内のオブジェクトの深さに反応する対話的編集操作を行うことのできる、コンピュータベースのイメージ編集装置を提供する。
この態様にしたがって、コンピュータベースのイメージ編集装置は、指定した視点から見た３次元（3-D）場面の、保存された２次元（2-D）ラスターイメージを編集するために提供されており、ここでは、装置の対話的編集操作は、イメージのピクセル用に保存された深さの値に反応しており、前述の深さの値は、前述の視点と、そのピクセルによって示される３次元場面内の点との距離を示す。
本発明の別の態様は、３次元場面内のオブジェクトにペイントを付けるという外観を与える、３次元場面の２次元イメージの対話的レンダリングを行うことのできる、コンピュータベースのイメージ編集方法と装置を提供する。
この態様によれば、本発明は、指定した視点から見た、３次元（3-D）場面の２次元（2-D）ラスターイメージの編集のための、コンピュータベースのイメージ編集装置を提供するが、この装置は、編集対象の２次元ラスターイメージを、イメージ内のピクセルの深さの値と一緒に保存する手段、ユーザーからの入力に反応して、編集対象の２次元イメージの部分を指示する指示手段、イメージの指定した部分内のピクセルに関連する深さの値に反応して、イメージの指示した部分を変更する変更手段から成る。
この態様はまた、指定した視点から見た、３次元（3-D）場面の２次元（2-D）ラスターイメージの、コンピュータベースの編集方法を提供するが、この方法は、編集対象の２次元イメージの部分を指定するステップと、指定した部分のピクセルの深さの値に応じて、ユーザーが選択した編集効果を適用できるよう、イメージの指定した部分を変更するステップから成る。
３次元場面に適用されるペイントはテクスチャ化することができ、したがって、ユーザーは、３次元場面内の表面にテクスチャをペイントすることができる。
ペイント操作を補助するために、この態様のイメージ編集装置は、ユーザーに、３次元場面内のペイント対象平面の選択、３次元場面内のペイント対象オブジェクトのマテリアル（空、地面、レンガなど）の選択、３次元場面内のペイント対象オブジェクトの表面の選択、のうちのいくつかあるいはいずれかを行わせる。この特徴は、イメージエディタで使われる、従来タイプの公知技術選択ツールに優る、大きな利点を提供する。この従来のツールでは、ユーザーは、ペイント対象のオブジェクトや領域の輪郭の周囲に多角形を描かなくてはならない。
本発明の別の態様は、指定した視点から見た３次元（3-D）場面の２次元（2-D）ラスターイメージを編集する、イメージ編集装置を提供する。ユーザーは、これを使って、イメージ内のピクセル用に保存された深さの値に応じて、編集対象の２次元イメージの部分を指示することができる。なお、ここでいう深さ値とは、前述の視点と、ピクセルによって示される３次元場面内の点との距離を示す。
この態様によれば、本発明は、指定した視点から見た３次元（3-D）場面の２次元（2-D）ラスターイメージを編集する、コンピュータベースのイメージ編集装置を提供する。この装置は、編集対象の２次元ラスターイメージを、イメージ内のピクセルの深さの値と一緒に保存する手段と（なお、前述の深さの値は、前述の視点と、ピクセルによって示される３次元場面内の点との距離を表わす）、ユーザーからの入力に反応して、編集対象の２次元イメージの部分を指示する指示手段と、イメージの指示した部分を変更する変更手段とから成り、前述の指示手段は、保存された深さの値に応じて２次元イメージの部分を指示できる。
本発明の別の態様は、ユーザーが複数のブラシストロークを使って、準透過ペイントを適用することのできる、イメージ編集装置を提供するが、ここでは、異なるブラシストロークが重なる領域にはペイントされない。これによってユーザーは、ブラシストロークの重なりを気にせずに、２次元イメージ内の必要な領域に、均一にペイントを付けることができる。
この態様によれば、２次元（2-D）のラスターイメージを編集するために、コンピュータベースのイメージ編集装置が提供されるが、この装置は、現在の編集セッションを定義する手段と、ユーザーによる対応する入力に反応して、編集対象の一群のピクセルを指示する指示手段と、ユーザーが選択した準透過のペイントを、前述の指示した一群のピクセルに付ける手段と、現在の編集セッションで、前の一群のペイントにおいて既にペイントされた、現在のペイント対象部分のピクセルに対する、ペイント適用を禁止する禁止手段とから成る。
本発明の別の態様は、イメージに対して、イメージの色調に応じて変化するテクスチャを適用することのできる、２次元ラスターイメージ編集装置を提供する。
この態様によれば、本発明は、２次元（2-D）のラスターイメージを編集する、コンピュータベースのイメージエディタを提供するが、このエディタは、編集対象の２次元ラスターイメージと２次元のテクスチャマップを保存する手段と、２次元のラスターイメージの色調に応じて、２次元のテクスチャマップを２次元イメージに適用する手段とから成る。適用されるテクスチャは、イメージの暗い領域では太く、イメージの明るい領域では細くなる、ハッチング線である場合もある。
本発明の別の態様は、ピクセルによって示される、３次元場面内のオブジェクトのマテリアルを示す、保存されたマテリアル値に応じて、編集対象の２次元イメージの部分を指示することのできる、２次元ラスターイメージ編集装置を提供する。
本発明の実施形態を添付の図面を参照して、例を挙げて説明する。添付の図面のうち、
図１は、本発明の一実施形態によるイメージ処理装置の概要を示すブロック図である。
図２は、３次元場面の２次元ラスターイメージを生成、修正するための、本発明の一実施形態による装置を概略的に表す。
図３は、指定した視点から、３次元場面を２次元の画面に投影する原理を表す。
図４は、図３の平面図であり、３次元場面内のオブジェクト、２次元の画面、視点の位置関係を表す。
図５は、２次元のカラーラスターイメージと、図２のイメージエディタによる編集に使うインプットファイルを成す、対応するzバッファとマテリアルバッファを説明する概略図である。
図6aは、図２のイメージエディタを使用して、入力イメージのピクセルを編集する際に行われる処理過程を概略的に表すブロック図である。
図6bは、図２のイメージエディタの編集作業を制御するために、ユーザーが使用するグラフィックユーザーインターフェースを表す。
図７は、図２のイメージエディタのペイントブラシツールが、重複する円形のペンマスク内で、編集中のイメージにペイントを付けることによってブラシストロークを作成する方法を表す。
図８は、ブラシの硬さに応じて、各ペンマスク内のピクセルに付けられるペイントの量が、ペンマスクの中央から縁に向かって急激に変化する様子を表す。
図９は、図２のイメージエディタによって編集中のイメージに適用できる、３本の異なる線の種類を表す。
図10は、図２のイメージエディタを使用しイメージを編集する際、ユーザーが選択できる異なるタイプのマットに関連する処理過程を表すフローチャートである。
図11は、３次元空間における平面、その平面上にある３つの点、その中の１点から平面に対して垂直に起こされたベクトルを図で表す。
図12は、ユーザーによって適用された自己交差するブラシストロークを表す。
図13は、図２のイメージエディタの構築ロックユニットに関連する処理過程を示すフローチャートであり、このユニットがオンの状態では、ペイントのためイメージエディタによりピクセルが２度以上選択された時でさえ、ペイントはイメージに均等に付けられる。
図14は、ユーザーが選択できる異なる効果を使って処理されるピクセルの色の変更に関する処理過程を示すフローチャートである。
図15は、建設効果が選択された時のピクセル処理に関する処理過程を表すフローチャートである。
図16は、破壊効果が選択された時のピクセル処理に関する処理過程を表すフローチャートである。
図17は、２次元イメージによって表現された３次元場面内に、オブジェクトに対してパースペクティブに適用されたレンガのテクスチャパターンを表す。
図18は、図２のイメージエディタにより編集中のイメージによって表現される３次元場面内のオブジェクトに、３次元テクスチャが適用される際の、ピクセルの色の決定に関連する処理過程を表すフローチャートである。
図19は、ピクセルの編集色とピクセルの既存色とを混色するためにユーザーが選択できる、様々な種類の混色操作に関連する処理過程を表すフローチャートである。
図20は、レンダラー21によって出力された、指定した視点から見た、３次元場面の、レンダリングされた２次元イメージの例を表す。
図21は、図20のレンダリングされた２次元イメージを、図２のイメージエディタを使用して編集した例である。
図22は、図21のレンダリングされた２次元イメージを、図２のイメージエディタを使用して、さらに編集した例である。
図23は、図２のイメージエディタによって出力された２次元イメージの完成図である。
図24は、図２のイメージエディタのエッジツールを使用し得られた、３次元場面の２次元イメージの、スケッチ風の輪郭を表わしている。
図25は、第２番目の部分に従って、２次元のイメージにより表現される３次元場面内のオブジェクトに適用することのできるハッチング線の例である。
図26は、様々なしきい値に応じて、ハッチング線が作られ、変化する様子を表す。
図27は、３次元場面のオブジェクトの表面に対して、元の２次元イメージの色調に応じて変化するハッチングパターンを適用した、３次元場面の２次元イメージである。
図１は、本発明の一実施形態による、イメージ処理装置の全体的な配置を表すブロック図である。この装置において、コンピュータ１は、メモリ５に接続されたCPU3で構成されており、メモリ５は、CPU3の作業の順序を定義するプログラムと、CPU3による計算に使用されるオブジェクトやイメージのデータを保存することができる。
CPU3の入力ポートに接続しているのは、入力装置７であり、この部分では、この装置は、キーボードと筆圧対応のスタイラスと結びつくディジタイズタブレットから構成されている。ディジタイズタブレットやスタイラスの代わりに、またはそれらに加えて、マウスやトラックボールのような別の位置感応入力装置（ポインティングデバイス）を使用することもできる。
フレームバッファ９は、CPU3に接続し、例えば、イメージのピクセル１つにつき１つ（または複数）のメモリ位置を提供することにより、少なくとも１つのイメージに関連するイメージデータを保存するよう構成されたメモリユニットを含む。各ピクセル用にフレームバッファ内に保存された値は、イメージ内のそのピクセルの色と密度を定義する。イメージはピクセルの２次元配列であり、デカルト座標により記述できるので、指定したピクセルの位置は一組のx-y座標により表すことができる。イメージはラスタースキャンディスプレイ11上に表示できるので、この表示は便利である。したがって、x座標はディスプレイの線に沿った距離に対して、y座標は線の数に対してマッピングされる。フレームバッファ９には少なくとも１つのイメージを保存するのに充分なメモリの容量がある。例えば、1000x1000ピクセルの解像度のイメージなら、フレームバッファ９は10の６乗のピクセルの位置を含み、それぞれの位置は直接的または間接的にピクセル座標x,yという形式で示すことができる。ハードディスクドライブのような大容量記憶装置13は、通常はCPU3を通じて、メモリ５や、時にはフレームバッファ10と連結し、多量のデータを保存する容量がある。ディスクドライブ15もまた、メモリ５に連結して、フロッピーディスク17のような、移動可能なデータ保存メディアを受け入れ、そこに保存されたデータをメモリ５に転送する。
CPU3、メモリ５、フレームバッファ９、ディスプレイ11、大容量記憶装置13は、システムとして販売されている。例えば、IBM互換機のようなパーソナルコンピュータ（PC）やSun MicrosystemsのSparc Stationのようなワークステーションなどである。
本発明の多くの実施形態は、フロッピーディスク17や他の媒体に保存されたプログラム、あるいは、データリンク上に送信される信号という形で提供することができ、それらの情報を受け取るハードウエアは、本発明の実施形態である装置に組み込まれる。
以下、この装置が、アーチストやデザイナーに利用される方法を、図２を参照して簡単に説明する。
図２は、入力装置７、大容量記憶装置13、フレームバッファ９、ディスプレイ11に加え、３次元モデルの場面を作成するための３次元モデラー19、指定した視点、入力パラメータに基づいた３次元モデルの２次元表現を作成するレンダラー21、レンダラー21から出力された２次元イメージ編集のための後処理用イメージエディタ23を示す。
ユーザーは、充分に詳細なモデルができあがるまで、拡大縮小し、適切な位置に配置することができる明確な幾何学的図形（例えば、直線、四角形、立方体、円錐、球など）を使用し、場面の３次元モデルを構築する。このモデリング処理の過程において、３次元モデラー19は、ユーザーが選択した視点から見た、３次元モデルの２次元ラスターイメージを作り出し、フレームバッファ９を経由して、それをディスプレイ11に表示する。販売され、広く利用されている３次元モデラー製品として、111 McInnis Parkway、San Rafael、CA94903、USAのAutodesk社が発売するAutocadがある。３次元モデラー19を利用した３次元モデル作成に関連する処理は、建築設計の技術に熟練した者にはよく知られているので、ここでは説明しない。
３次元モデラー19により出力された３次元モデルは、レンダラー21に入力されるが、レンダラー21は、ユーザーが入力装置７を介して定義した視点、光源、その他の入力パラメータから眺めた、３次元モデルの２次元ラスターイメージを作成し、出力する。
この実施形態において、レンダリングの処理は、パースペクティブ、光源、表示／非表示、曲線のスムース化、陰影を扱う一連のステップとみなすことができる。レンダラー21は、３次元モデルをいくつかの接続した多角形やファセットに分割することによって２次元イメージを作成するが、この多角形やファセットはそれぞれ指定した平面上にあり、それぞれの多角形とファセットを（パースペクティブ、光源、表示／非表示などに応じて）順番に処理する。湾曲した表面は、多数の連結した小さなファセットにより表されており、それに対して単一平面上の表面は１つの大きなファセットにより表される。
遠近感は、手書きで製図版上に表すことは難しいが、コンピュータを利用して計算すれば簡単である。以下、パースペクティブ計算処理を、図３、４で簡単に説明する。図３は、31で示される３次元場面内の点Aが、35で示された視点から眺めた場合に、画面33上のピクセル（i,j）に投影された様子を表している。図４は、図３を簡単な平面図にしたものであり、視点35を原点とした座標軸が加えられ、視線空間座標系を定義する。視線空間におけるx軸は画面の水平方向に、y軸は（図をはみ出して）垂直方向に、z軸は投影の中心点41を起点として画面33に垂直に伸びている。投影の中心41からイメージの縁（点43で表される）までの、可能な距離のうち、大きい方は、準イメージ幅として定義される。この部分において、投影の中心は画面の中央であり、ゆえに、準イメージ幅は、画面の大きさの半分に等しい。３次元場面の２次元イメージを正確な遠近感で捉えるには、表示されている点（視点から見ることができる３次元場面内の点）を画面33の平面に投影することが必要である。それにより、遠くにある物体は近くにあるものより小さく見える。以下、３次元場面内の点が画面33に投影される方法について点Aを考慮に入れて説明する。
点Aは、視線空間内において、座標値（ex,ey,ez）により表されており、視線（点線39）に沿ってピクセル（i，j）上の点A′に対して投影される。図４に示された類似した三角形について考慮すると、次の式が明白になる。
0003837162.tif 000002
両辺にdをかけると、次の式が導かれる。
0003837162.tif 000003
指定した視点35に対し、dの値は一定である、同様に、画面（j）の列は、次の式により、eyに関連づけらる。
0003837162.tif 000004
現実には、dの値は不明であるが、準水平角度45と準イメージ幅がわかっている場合は、以下の式で算出することができる。
0003837162.tif 000005
すなわち、視線空間内の１点を与えられれば、２次元投影内におけるその点のピクセルの位置は、上記の式２、３で求めることができる。同様に、ピクセル空間内のある点の視線空間座標値は、これらの等式の逆により決定できる。
この実施形態において、レンダラー21は、反射力（ファセットのマテリアルにより決定される）と光源に対する頂点の方向を考慮することにより、それぞれのファセットに対する光の当たり方を計算する。ファセット内の値は平均化技法を用いることにより得られる。ファセットにより作成されたエッジを滑らかにするには、隣接するファセット間の数値を平均化する。影は、光源からどの部分が見え、どの部分が見えないか（つまり影になる）を決定することにより、幾何学的に計算される。光源が複数存在する場合は、表面は、それぞれの光源に対し分類されなければならない。１つの面から他の面上に反射した光は、計算を単純にするため、無視される。
もっとも単純なアルゴリズムの１つで、視点35から何が見え、何が見えないかを決定するものに、zバッファアルゴリズムと呼ばれるものがある。このアルゴリズムは、各ファセットをピクセルに分解し、そこにあるそれぞれのピクセルについて、対応するz座標（視点に関連して）を計算する。次にアルゴリズムはファセット内の各ピクセルを、現在処理中のピクセルに対応する、以前にレンダリングされたファセット上の点が、現在のピクセルに対応する、レンダリング中の現在のファセット上の前面にあるのか背面にあるのかを決定することにより、順番に処理する。現在のファセット上の点が、前の点より遠方にある場合は（すなわち、背面にある）、何も起こらない。一方、現在のファセット上の点が、前の点より近くにある場合は、その点が前の点を置き換え、その点のz座標が、そのピクセル用に、zバッファと呼ばれるバッファに保存される。いったん、３次元場面内における、すべてのオブジェクトのすべてのファセットが、このような方法で処理されると、その結果として、指定した視点35から見た３次元場面内の表示可能な表面のみを表示する、２次元のラスターイメージを見ることができる。zバッファに関するさらに詳しい詳細は、Foley、Van Dam著、Addison Wesley、Reading Massachusetts、USAのComputer Graphics Principles and Practice第２版、668〜672ページを参照されたい。
いったん、レンダラー21がパースペクティブ、光源、視界、曲線のスムース化と影を扱うと、その結果作成された２次元イメージを出力する。色、テクスチャ、環境や様々なイメージ効果を加えるといった、レンダリングを完成させるための残りの処理は、図２のイメージエディタ23を使用し追加できるよう、ユーザーの手にゆだねられている。イメージエディタ23をこのような種類のイメージ編集にパースペクティブに使用できるように、上で説明したレンダリング処理中に作成されたzバッファが、レンダラー21により、２次元イメージと共に出力される。しかし、出力前に、zバッファはdを係数として拡大縮小されて、ピクセル座標値と視線空間座標値間の変換処理を前述の式２、３を使って単純化する。また、柔軟性をより多く提供するためのこの部分では、やはり、レンダラー21によって作成され使われるマテリアルバッファ（空、地面、木々、レンガ、石などのマテリアルを指示するイメージ内の各ピクセルの値を保存するが、このマテリアルはそのピクセルで検索される）は、イメージエディタ23で使うために、やはりレンダラー21によって出力される。これらの複雑な計算は、レンダラー21によって行われないので、レンダリングの作業に費やされる時間は大幅に短縮された。
図５は、２次元のラスターイメージ51と、レンダラー21により出力された関連するzバッファ53、マテリアルバッファ55を示している。これらは、大容量記憶装置13にイメージエディタ23のインプットファイルとして保存されている。イメージエディタ23によりインプットファイルが編集される時、２次元のラスターイメージ51のコピーは、その後のユーザーによる変更のためにメモリ５に配置され、また、画面11に表示するためにフレームバッファ９に配置される。zバッファ53とマテリアルバッファ55のコピーも作成されるが、それらは大容量記憶装置13に保存され、必要な時だけメモリ５に書き込まれる。いったん、イメージエディタ23によりイメージが編集され、ユーザーが、画面11に表示されているとおりにそのイメージを保存したい場合は、イメージは、インプットファイルと同一の構造を持つ出力ファイルに保存される。その結果、この出力ファイルは、元のインプットファイルであるかのように、再度編集することができる。これは非常に強力な機能であり、３次元モデルから開始され、レンダラー21がレンダリングを始める前に入力された入力パラメータの数値に基づいてレンダリングのイメージを作成する現在のレンダラーに優る、大きな長所を提供する。
上記で説明したように、レンダラー21により出力された２次元イメージは、後処理用イメージエディタ23で、ユーザーに編集される。特に、イメージエディタ23は、テクスチャ、色、人物や草木といった環境要素、霧などの他のイメージ効果を他のものの周囲に追加するために使用できる。以下で説明するように、イメージ編集処理の過程で、イメージは、画面11に表示され、ユーザーがイメージに行う変更は、同時に自動的に表示される。このように、入力装置７を使用しイメージを編集する時、デザイナーは画面11を経由して連続的なフィードバックを得ることができる。
図6aは、イメージエディタ23の主要部分と、編集作業において指定したピクセル（i,j）の色の編集を制御するために、主要部分がどのように作動するのかを表す。この部分において、ピクセルの色は、赤（R）の値、緑（G）の値、青（B）の値により定義され、それぞれの値は０〜１である。以下、図6aの各部分について説明する。ユーザーからの入力に反応して、どのピクセルが編集されるかを決定するアプリケータ61がある。選択・マットユニット63は、オンにするとユーザーの選択に基づき、現在のピクセル（i,j）が編集から除外されるかどうかを制御する。構築ロックユニット65は、ユーザーによりペイントされるイメージの１つあるいは複数の部分に均等に適用されるよう、ペイントの付着を制御する。効果ユニット67は、ユーザーにより行われる編集の種類を制御する。テクスチャユニット69は、ペイントされるピクセルにテクスチャを適用する。グレインユニット71は、イメージにグレインを適用する。カラーミキサーユニット73は、テクスチャの色とユーザーが選択した色を混合する。ブレンダーユニット75は、最終的な色と、ペイントされている現在のピクセル（i,j）の現在の色を混合する（混合の量は、透過率またはアルファ値（α）により制御され、値は、０〜１であり、上記の各部分で定義された部分の多くにより修正される）。
ユーザーがイメージを編集したい時、どのアプリケータを使用するか決定しなければならない。適切な選択と、またはマットを使用するかどうか、どのような種類の編集をするか（ペイントを加えるなど）、テクスチャを加えるかどうか、グレインを加えるかどうか、適切な場合は、どの色のペイントをイメージに加えるか。これら全ては、図6bに示されているようなグラフィックユーザーインターフェースを使って、イメージを編集する前に選択される。図6bに示されているように、アプリケータと記された上部のボックスには、アプリケータを選択するためのいくつかのアイコン62がある。そのボックスの下には、プルダウンウィンドウ（各項目は表示されていない）から、効果を選択するボックスがある（この例では、選択された効果はペイントである）。そのボックスの下には、テクスチャのボックスがある。チェックボックス64は、テクスチャのオン、オフを表示し、ウィンドウ66は、適用されているテクスチャを表示する。そのボックスの下には、適用される色を選択するためのボックスがあり、色相（H）と彩度（S）用のホイール68、明度（V）スライダー70、選択された色を表示するための表示領域72、図6aのカラーミキサー73における混色を制御するスライダー74を含む。そのボックスの下には、グレインのボックスがあり、適用されるグレインを表示するための表示領域76と、適用されるグレインの明暗を制御するスライダー78がある。いったん、イメージエディタ23の、これらのパラメータが設定されれば、ユーザーは、入力装置７の制御の下でイメージの編集したい箇所を編集することができる。
イメージエディタ23のそれぞれの主要な要素の操作は、図6aで示された他の要素と共に、図７乃至図19を参照して説明される。
アプリケータ
アプリケータ61は、イメージを編集するためにユーザーが選択するツールである。選択可能なツールには、ブラシツール、線描ツール、塗りつぶしツール、点描ツールがある。
ブラシツールを選択すると、スタイラスはアーチストのペイントブラシのように動作し、ディジタイズタブレット上でスタイラスを動かすと、対応する一群のペイントがイメージに付けられる。この部分において、“スタイラスダウン”位置（ユーザーがスタイラス上のボタンを押すことにより示される）にセンタリングされた円形のペンマスクを決定すること、ペンマスク内のピクセルの効果をレンダリングすること、次のスタイラスの位置を試して、“スタイラスアップ”位置（ユーザーがボタンを離すことで表示される）まで繰り返すことにより、この操作は行われる。このような方法で、ペイントはスタイラスの動きをたどる。ペンマスク内の全てのピクセルを処理するのに要する時間に対し、スタイラスをディジタイズタブレット上で早く動かしすぎた場合、ブラシストロークの間に間隔が空くこともある。しかし、ユーザーは、２度目のブラシストロークをその箇所に適用し、描かれなかったピクセルを望み通りに編集できるので、これはさほど大きな問題とはならない。
図７は、いくつかの連続した円形のペンマスク91a-91gが重なって、ブラシストロークを形成する様子を示す。ペンマスク91eと91fとの間の間隔が示すように、ディジタイズタブレット上でスタイラスを早く動かしすぎた場合、ブラシストロークに間隔が空くこともある。この部分において、ユーザーは、ペンマスクの直径93を増減するグラフィックユーザーインターフェース上のスライダー（図示されていない）を使用することにより、ブラシの濃さを変更することができる。この実施形態において、ペンマスクは、直径93上に最大128ピクセルを持つことができる。
この実施形態において、ユーザーはまた、グラフィックユーザーインターフェース上の別のスライダー（図示されていない）を動かすことにより、ブラシの硬さに対応するパラメータも変化させることができる。固いブラシはペンマスクの直径93上に均等にペイントを付けるが、柔らかいブラシは縁よりも中央により多くのペイントを付ける。これは、ペンマスクの中央からの距離に応じて、ペンマスク内の各ピクセルにおける、前述の透過率、または、アルファ値（値は０〜１まで変化する。０は完全な透過を表し、１は完全な不透過を表す）を変化させることにより成し遂げられる。固いブラシにおいては、ペンマスク内の各ピクセルに関連するアルファ値は同一である。柔らかいブラシでは、ペンマスクの縁部分におけるピクセルのアルファ値は、ペンマスク中央のピクセルのアルファ値より低い。
図８は、ペンマスクの中心から縁に向かってブラシの硬さの程度に対し、アルファ値（αp）がどのように変化するかを示す。アルファ値は以下の式から計算できる。
αp=［(1+cos［πf］/2］a                      （５）
上の式において、fは、ペンマスクの半径の断片としてのペンマスクの中心からの、現在処理中のピクセルの距離であり、aは０（ハード）から１（ソフト）のスケールで変化するブラシの硬さを示し、これは、グラフィックユーザーインターフェースのスライダー位置によって決定される。
線描ツールは、ユーザーが、キーボードやスタイラスを経て定義した始点から、同様に定義した終点に、線を引くことを可能にする。ユーザーが変更できる線のパラメータは、濃さ、硬さ（すなわち、ソフトブラシツールのようにその密度が幅の上で変化するかどうか）、及び“震え”である。図９は、線描ツールを使用し描かれた３本の異なる線の例である。最初の線101は、比較的細い線で、その幅上で密度は均等であり、震えはない。２番目の線103は最初の線101より太く、縁より中央の密度が高い。この線103もまた、震えはない。３番目の線105は線101、103、より太く、幅上の密度は均等であり、あらかじめ決定された震えがある。震えは、例えば、建物に廃虚のような効果を付け加える時などの、構造物の粗いエッジを作成するのに便利である。
線は、計算された線断片にそって、１ピクセルの間隔をおいてペンマスクを動かすことで作成される。異なる線の濃さはペンマスクの幅を変化させることにより作成され、線の硬さは、前述のソフトブラシの場合と同様に、ペンマスク内の各ピクセルに関連したアルファ値を変化させることにより、変更される。震えは、フラクタル線生成器（図示されていない）の入力パラメータを変化させることにより作成できる。
塗りつぶしツールはよく知られているツールで、ほとんどのディジタルペイントパッケージ製品で使用されており、ユーザーが選択した隣接するピクセルの領域を塗りつぶす。
点描ツールは、塗りつぶしツールと類似しているが、“ディジタルディゾルブ”アルゴリズムを使用し、ユーザーが選択した範囲を塗りつぶし選択された領域内のピクセルを無作為に編集する。この処理はいつでも終了することができ、イメージの適用された部分に美しい点描状の外観を与えることができる。
選択・マットユニット
この実施形態では、zバッファ55と、マテリアルバッファ55は、２次元のラスターイメージと一緒に提供されているので、ユーザーは、様々な方法で、ペイントを付けることを選択することができる。例えば、ユーザーは指定したマテリアル（例えばレンガというマテリアル全て）の全てのオブジェクトにペイントを付けたり、２次元イメージで描かれた３次元場面内の指定した平面にペイントを付けたり、例えば３次元場面内の曲面にペイントを付けるなどのように、３次元場面内における全てのオブジェクトの上面にペイントを付けることができる。以下、この３種類の選択をそれぞれ、マテリアルマット、平面マット、表面マットと呼ぶ。
この実施形態でユーザーは、この３種類の選択に加えて、スタイラスとディジタイズタブレットを使って輪郭を描くことによって、２次元イメージ内の多角形を選択することができるし、あるいは“魔法の杖”ツールを使って２次元イメージ内の指定した色を選択することができる。この２つの選択方法は、ディジタルペイントパッケージでは一般的なので、ここでは説明しない。
ペイントを付ける先の平面、マテリアル、表面が選択可能であるということは、既存のイメージ編集装置に勝る大きな長所を、ユーザーに提供する。例えば、場面内の平面をペイント対象として選択した後、ユーザーはスタイラスをペイントブラシとして使って、平面の通常の領域に自由にペイントを付けるのだが、その際ユーザーは、選択・マットユニット63を使えば、選択した平面上にない領域内のイメージにはペイントが付けられないことを知っている。ペイントを付ける先の平面、あるいは、ペイントを付ける先のオブジェクトのマテリアルを選択するには、ユーザーはスタイラスを使って、指定したい平面あるいはマテリアルに、カーソルを合わせて“クリック”するだけでよい。したがって、この種類のマットは、ユーザーがペイント対象領域の周囲に多角形を描かなくてはならない、従来の選択ツールに比べて、はるかにすばやくしかも簡単に使うことができる。
以下、図10で、マテリアルマット、平面マット、表面マットに関する処理ステップについて、ブラシツールをアプリケータ61として説明する。ユーザーがマットツールを使って、イメージ編集を制限しようと決めると、ステップS1において、ユーザーは、イメージに何らかのペイントを適用する前に、どのマットを使用するかを選択しなくてはならず、選択肢は、マテリアルマットS3、平面マットS5、表面マットS7のいずれかである。
ユーザーがマテリアルマットS3を選択すると、ステップS9において、マットユニット63は、ユーザーが“ブラシストローク”の始まりを示すスタイラス上のボタンを押したときに生成される、“スタイラスダウン”信号をモニターする。スタイラスダウン信号が受け取られるまで、処理はS9で止まっている。スタイラスダウン信号が受け取られると、処理はステップS11に進み、マットユニット63が、現在のスタイラスの位置に対応する２次元イメージ内のピクセルを決定し、そのピクセル用にマテリアルバッファに保存されているマテリアル値を呼び出す。次に処理はステップS13に進み、アプリケータ61が、現在のスタイラスの位置に対応したピクセルにセンタリングされたペンマスクを生成する。次にステップS15において、マットユニット63は、ステップS11において確認されたマテリアル値と同じマテリアル値を持つ、現在のペンマスク内のピクセルのみ、イメージエディタ23によってさらに処理されるようにする。
現在のペンマスクの全てのピクセルが処理されると、処理はステップS17に進み、マットユニット63は、“スタイラスアップ”信号（ユーザーが“ブラシストローク”の終了を示すスタイラス上のボタンを放したときに生成される）が受け取られたかどうかを判断する。スタイラスアップ信号が受け取られていない場合は、処理はステップS13に戻り、アプリケータ61が、次のペンマスクを決定するが、このペンマスクは、新しいスタイラス位置（スタイラスが移動したとみなされる）に対応するピクセル上にセンタリングされる。反対に、マットユニット63が、ステップS17において、スタイラスアップ信号が受け取られたと判断した場合は、処理はステップS19に進み、ここでマットユニット63は、現在の編集セッションが終了したかどうか（スタイラスと／またはキーボードを介した適当なユーザー入力によって示される）を決定する。終了していない場合は、処理はステップS9に戻り、マットユニット63は、次のブラシストロークの適用まで待機する。反対に、現在の編集セッションが終了している場合は、処理はステップS21に進み、マットユニット63がオフにされ、処理は終了する。
ユーザーが平面マットS5を選択すると、ステップS23において、マットユニット63は、ブラシストロークの開始を示す、スタイラスダウン信号をモニターする。スタイラスダウン信号が受け取られるまで、処理はS23で止まっている。スタイラスダウン信号が受け取られると、処理はステップS25に進み、マットユニット63が、現在のスタイラスの位置に対応する２次元イメージ内のピクセルを判断し、そのピクセルによって示される、３次元場面内のオブジェクトが存在する平面を判断する。マットユニット63がオブジェクトの平面を判断する方法については、後で説明する。マットユニット63によって平面が判断されると、処理はステップS27に進み、アプリケータ61が、現在のスタイラスの位置に対応したピクセルにセンタリングされたペンマスクを生成する。次にステップS29において、マットユニット63は、ステップS25において判断された平面とほぼ同じ平面上にある、現在のペンマスク内のピクセルのみ、イメージエディタ23によってさらに処理されるようにする。
現在のペンマスクの全てのピクセルが処理されると、処理はステップS31に進み、マットユニット63は、ブラシストロークの終了を示すスタイラスアップ信号が受け取られたかどうかを判断する。スタイラスアップ信号が受け取られていない場合は、処理はステップS27に戻り、アプリケータ61が、次のペンマスクを判断するが、このペンマスクは、新しいスタイラス位置に対応するピクセルにセンタリングされる。反対に、マットユニット63が、ステップS31において、スタイラスアップ信号が受け取られたと判断した場合は、処理はステップS33に進み、マットユニット63は、現在の編集セッションが終了したかどうかを判断する。終了していない場合は、処理はステップS23に戻り、マットユニット63は、次のブラシストロークの適用まで待機する。反対に、現在の編集セッションが終了している場合は、処理はステップS21に進み、マットユニット63がオフにされ、処理は終了する。
以下、マットユニット63が、ステップS25において、平面を決定する方法について図11を参照して説明する。図11には、平面111、その平面上にある３点a、b、c、平面上の点aから起こされた法線ベクトルが表示されている。平面111の式は、以下の内積によって与えられる。
r.n=P   （６）
上の式において、rは平面上の任意の点、nは法線ベクトル、pは定数である。平面上の３点a、b、cがわかっている場合は、法線ベクトルnは、以下のベクトル外積の合計によって決定される。
n=(a×b)+(b×c)+(c×a)  （７）
さらにpは以下の式によって与えられる。
p=a.b×c       （８）
ポインティングデバイスが、指定したい平面をポイントしている時に、ユーザーがスタイラス上のボタンを押すと、スタイラスの現在の位置に対応するピクセル（i,j）が決定される。３次元場面の対応点を決定するために、前述の式２、３で定義した、視線空間とピクセル空間との関係を使って、そのピクセルの視線空間座標値を決定しなくてはならない。これによって、平面上に存在する１つの点が与えられる。装置は、平面式を決定するために、２次元イメージ内の隣接ピクセルに対応する点は、同一平面上にあるとみなす。したがって、マットユニット63は、ピクセル（i+1,j）とピクセル（i,j＋1）の視線空間座標値を決定する。次に、これら２つのピクセル用に、対応する視線空間座標値が決定され、法線ベクトルnを算出するために使われる。単純化すると、法線ベクトルは、以下の式により与えられる。
n=(-Zud(Zr-Z),-Zrd(Zu-Z),［iZu(Zr-Z)+jZr(Zu-Z)+ZrZu］)（９）
上の式において、Zuはピクセル（i,j＋1）のzバッファ内の値であり、Zrはピクセル（i+1,j）のzバッファ内の値であり、Zはピクセル（i,j）のzバッファ内の値であり、dは前述のとおりである。同様に、定数pは以下の式によって与えられる。
P=ZZrZud      （10）
ステップS29において、マットユニット63は、現在のペンマスクのピクセルがこの平面上にあるかどうかを判断すると、そのピクセルの視線空間座標値（ep）を決定し、さらに、内積ep.nが、pプラス、マイナス若干の許容値と、等しいかどうかを決定する。等しい場合は、マットユニット63はイメージエディタに、そのピクセルを編集させることができるようにし、等しくない場合は、マットユニット63はイメージエディタに、そのピクセルを編集することをできないようにさせる。
ユーザーが表面マットS7を選択すると、ステップS35において、マットユニット63は、ブラシストロークの開始（スタイラスダウン信号で示される）をモニターし、スタイラスダウン信号が受け取られると、ステップS37に進む。ステップS37では、マットユニット63は、スタイラスの現在の位置によって示される点が存在する平面を確認する。この平面式は、ステップS25において平面式が平面を確認したのと同様の方法で決定される。次に処理はステップS39に進み、アプリケータ61が、現在のスタイラスの位置に対応したピクセルにセンタリングされたペンマスクを生成する。次にステップS41において、マットユニット63は、ステップS37において確認された平面とほぼ同じ平面上にある、現在のペンマスク内のピクセルのみ、イメージエディタ23によってさらに処理されるようにする。
現在のペンマスクの全てのピクセルが処理されると、処理はステップS43に進み、ここでは、マットユニット63が、スタイラスアップ信号をモニターすることによって、現在のブラシストロークが終了したかどうかを判断する。スタイラスアップ信号が受け取られていない場合は、処理はステップS44に進み、マットユニット63は、スタイラスの新規の位置によって示される点が、直前のスタイラス位置に対応する点とほぼ同一平面上にあるかどうかを判断する。同一平面上にある場合は、処理はステップS37に進み、新規のスタイラス位置から、平面式が引き出される。反対に、マットユニット63が、ステップS44において、次の点は、ほぼ同一平面上にないと判断した場合は、処理はステップS39に進み、新規の点の平面式を再計算せずに、ペンマスクが生成される。さらにこの場合は、前の点によって確認された平面が、新規ペンマスクのピクセル用として、ステップS41の計算に使われる。このように、ユーザーが、他の平面（地面の平面など）を横切らずに、滑らかな湾曲した表面（湾曲した壁など）を、スタイラスでたどる場合は、ペイントは、その湾曲した表面にのみ付けられ、周囲のピクセルには付かない。
マットユニット63が、ステップS43において、スタイラスアップ信号が受け取られたと判断した場合は、処理はステップS45に進み、マットユニット63は、現在の編集セクションが終了したかどうかを判断する。終了していない場合は、処理はステップS35に戻り、マットユニット63は、次のブラシストロークの開始をモニターする。反対に、現在の編集セッションが終了している場合は、処理はステップS21に進み、マットユニット63がオフにされ、処理は終了する。
構築ロックユニット
図6aにおいて、構築ロックユニット65は以下の２つの機能を有する。第１番目の機能は、常に実施され、１回のブラシストローク中に、隣接するペンマスクと重なる領域内のピクセルが、重ならない領域より多くペイントされないようにする。構築ロックユニット65は、２次元イメージにおける各ピクセルごとに、現在のブラシストロークまでにピクセルに割り当てられたペイント量を、バッファ内に保存し（以下の構築バッファ参照）、この情報を使って同じブラシストロークの後続のペイントを制限することによって、この問題を処理している。特に、ブラシストローク中に構築ロックユニット65が、あるピクセルに、現在のペンマスクで、現在付けられているより多くペイントを付けることを決定すると、そのピクセルは再度処理できるようになり、現在のペンマスクによってそのピクセルに付けられたペイント量が、そのピクセル用に構築バッファに現在保存されているペイント量を置き換える。現在のペンマスクによってピクセルに付けられるペイント量が、同じブラシストロークの前のペンマスクによってそのピクセルに付けられたペイント量より少ない場合は、構築ロックユニットは、そのピクセルをそれ以上ペイントしないようにする。また、ブラシストロークが自己交差する場合、この機能は、重なる領域が他のブラシストロークの２倍ペイントされないようにする。図12はブラシストローク115が自己交差する例である。斜線で示された領域117は、ブラシストローク115が重なる領域である。
構築ロックユニット65の２番目の機能は、ユーザーがオン、オフを制御できることである。オンにすると、１回のペイントセッションにおいて異なるブラシストロークが重なる場合、重なる領域に付けられるペイント量は、重ならない領域に付けられるペイント量の２倍にはならない。したがってイメージ中のある領域をペイントする場合、ユーザーは、ペイント領域に同じ量のペイントを適用しようとして、ブラシストロークが重ならないよう神経を使う必要はない。ユーザーは何回でもブラシストロークを使って自由にペイントすることができる。したがってペイントに要する時間も大幅に短縮される。この構築ロックユニット65の２番目の機能は、第２番目のバッファ（以下、構築ロックバッファと呼ぶ）を使うことによって動作するが、この第２番目のバッファには、各ピクセルごとに、現在のペイントセッションの前のブラシストローク中にそのピクセルに付けられたペイントの累積量を示す値が保存されている。
構築ロックユニット65の動作の詳細を、ブラシツールをアプリケータとして使う場合を例として、図13を参照して説明する。ステップS61において、構築ロックユニット65はブラシストロークの開始（スタイラスダウン信号によって示される）をモニターする。ブラシストロークの開始が受け入れられると、処理はステップS63に進み、ここで構築ロックユニット65は、アプリケータ61で生成される現在のスタイラス位置の、スタイラスとペンマスクとに適用される圧力を決定する。次に処理はステップS65に進み、構築ロックユニット65は、現在のペンマスクの全てのピクセルが処理されたかどうかを判断する。処理されていない場合は、処理はステップS67に進み、ここで構築ロックユニット65は、次のピクセル（i,j）を処理するかどうかを（選択・マットユニット63からの出力に基づいて）判断する。次のピクセル（i,j）を処理しない場合は、処理はステップS65に戻る。次のピクセル（i,j）を処理する場合は、処理はステップS69に進み、ここで構築ロックユニット65は、ペイントがイメージに付けられるときに効果ユニット67によって出力される、そのピクセルに望ましいアルファ値（αd）と、構築ロックユニット65によって決定される、そのピクセルに使用可能なアルファ値（αa）とを決定する。効果ユニット67によって出力される、現在処理中のピクセルに望ましいアルファ値（αd）は、以下の式で与えられる。
αd=(αp)×（スタイラスの圧力）×αE       （11）
上の式において、αpは現在のピクセルのペンマスクのアルファ値、αEは効果ユニット67によって適用されるアルファ値であって、ペイントを付けると１の値をとる。構築ロックユニット65で決定される、現在処理中のピクセルの使用可能なアルファ値は、以下の式で与えられる。
αa＝１−構築ロック                         （12）
構築ロックとは、現在処理中のピクセル（i,j）の構築ロックバッファにおける値である。上で説明したように、構築ロックバッファにおける値は、現在の編集セッションで、相当するピクセルに付けられたペイント量の合計に応じて決まる。ペイントセッションの開始時は、各ピクセルの構築ロックバッファの値は０である。したがって、構築ロックユニット65によって出力される、使用可能なアルファ値（αa）は、始めは１である。以下、構築ロックバッファの操作の詳細を説明する。
ステップS69で使用可能なアルファ値と望ましいアルファ値が算出されると、処理はステップS71に進み、ここで、この２つのアルファ値の積が算出される。次に、処理はステップS73に進み、ステップS71で決定されたアルファ値の積と、現在処理中のピクセル用に構築バッファ内に現在保存されている値とが比較される。上で説明したように、構築バッファとは、現在のブラシストローク中にピクセルに付けられたペイント量の最大値を保存するバッファである。１回のブラシストロークが終了するごとに、構築バッファは初期化されて０となる。構築バッファの機能は、ブラシストロークにおけるペンマスクの重複部分を考慮に入れる。
望ましいアルファ値（αd）と使用可能なアルファ値（αa）の積が、構築バッファに保存されている値より少ない場合は、現在のペンマスクが、同じブラシストロークの前のペンマスクによって既にそのピクセルに付けられたよりも、より少ないペイント（すなわち、もっと薄いペイント）が付けられるであろうことを意味する。この場合、現在のピクセル（i,j）の処理はそれ以上行われず、処理はステップS65に戻る。反対に、望ましいアルファ値（αd）と使用可能なアルファ値（αa）の積が、構築バッファに保存されている値より多い場合は、（現在のペンマスクが、同じブラシストロークの前のペンマスクによって既にそのピクセルに適用されたよりも、より多いペイント、すなわち、もっと濃いペイントを付けられるであろうことを意味するので）、処理はステップS75に進み、ここで現在のピクセル（i,j）をイメージエディタで処理できるようになり、構築バッファ内の値は、上記のステップS71で算出された、望ましいアルファ値（αd）と使用可能なアルファ値（αa）との積に等しく設定される。次に処理はステップS65に戻る。
現在のペンマスクの全てのピクセルが処理されると、処理はステップS77に進み、ここでは構築ロックユニット65は現在のブラシストロークが終了したかどうか（スタイラスアップ信号によって示される）を判断する。終了していない場合は、処理はステップS63に戻り、新規のペンマスクが生成され、各ピクセルに対してそのペンマスクで同様の処理が実行される。反対に、現在のブラシストロークが終了した場合は、処理はステップS79に進み、構築ロックユニット65の第２番目の機能（構築ロック）がオンになったかどうかが確認される。
構築ロックがオンになっている場合は、ステップS81において、構築バッファの値が、構築ロックバッファの値に追加される。ステップS81で、構築バッファの値を構築ロックバッファに追加することによって、同じ編集セッションの後続のブラシストローク中に、構築ロックバッファの値が徐々に増加して１に近づくのに応じて、上記の式12によって定義された使用可能なアルファ値も徐々に減少して０に近づく。使用可能なアルファ値が０になると、ユーザーがそれ以上ブラシストロークを重ねても、そのピクセルはペイントされない。ステップS81が終了すると、処理はステップS83に進み、構築バッファの値は初期化されて０になる。反対に、構築ロックユニット65の第２番目の機能がオフになっている場合は、ステップS81は省略され、ステップS83に進む。
ステップS83で構築バッファが初期化されると、処理はステップS85に進み、構築ロックユニット65は、現在の編集セッションが終了したかどうかを判断する。終了していない場合は、処理はステップS61に戻り、装置は、次のブラシストロークの開始まで待機する。反対に、ステップS85において、構築ロックユニット65が現在の編集セッションが終了したと決定した場合は、処理はステップS87に進み、構築ロックバッファの全ての値は初期化されて０になる。
効果ユニット
この実施形態では、ユーザーは、イメージへのペイントの他に、i）霧効果を使って３次元場面の遠近に応じてイメージに霧を加える、ii）建設効果を使って背景上に前景部分を拡張する、iii）破壊効果を使って、前景あるいは背景上にあるオブジェクトに上書きすることで、３次元場面内の任意の平面を拡張する、iv）エッジ効果を使って、スケッチ風の輪郭を作成する、という操作を行うことができる。
以下、図14を参照してそれぞれの効果について説明する。イメージを編集する前に、ユーザーはステップS91で、イメージ編集の際に使う効果を選択する（ペイントS93、霧S95、建設S97、破壊S99、エッジS101）。デフォルトの効果はペイントである。ユーザーがペイントS93を選択すると、入力ピクセル（i,j）それぞれに対して、効果ユニット67は、各ピクセル（i,j）のRGB値をインプットファイルに出力する（インプットファイルは、大容量記憶装置13に保存されている）。効果ユニット67によって適用されたアルファ値（αE）は、ペンマスク（と適切な場合は、スタイラスの圧力）によって決定されたアルファ値が変更されないよう、１に設定される。ピクセル（i,j）のzバッファとマテリアルバッファの値は変わらない。次に処理はステップS107に進み、ここで効果ユニット67は、現在の編集セッションが終了したかどうかを決定する。終了していない場合は、図6aに示されるように、効果ユニット67による現在のピクセル（i,j）処理が終了し、色（RGB）とアルファ値の出力はそれぞれテクスチャユニット69、ミキサー81に渡される。ステップS107において、効果ユニット67が、現在の編集セッションが終了したと決定すると、決定した色とアルファ値とがそれぞれテクスチャユニット69とミキサー81とに渡され、その後、ステップS109において、効果ユニット67はデフォルトの効果、すなわち、ペイントの効果、にリセットされ、処理が終了する。
ステップS91において、ユーザーが霧ツールを選択すると、ステップS105において、現在処理中のピクセル（i,j）の色が白に設定され、ペンマスクによって決定されたアルファ値にはαEがかけられる。このαEは、現在処理中のピクセル（i,j）のzバッファに保存されているz値に依存する。αEがzに応じてどのように変わるかは、ユーザーが付けた思った霧の種類に依存する。ユーザーは、場面に標準的な霧を適用して、場面の深さに応じて霧の量が増える（すなわち、z値の増加に応じて霧の量が増える）よう設定することができる。それ以外の方法で、地面上に霧を付けるには、最初に地面、次に地面に平行な面をその上部に定義し、さらにαEの値を、地面上では高く（1に近い値）、その上の平面では低く（0に近い値）する。霧効果を付ける際には、ブラシツールを使うこともできるので、イメージ上で指定した領域にのみ霧をかけることもできる。現在のピクセルに霧を付けると、処理は上記のステップS107とステップS109に進む。
ステップS91において、ユーザーが建設効果97を選択すると、効果ツール67は、ステップS111において、ユーザーがスタイラスを使って３次元場面上の平面を選択して、その平面上の点を示す２次元イメージのピクセルを選択するまで待機する。ステップS111が選択したピクセルを決定すると、効果ユニット67はステップS113において、３次元場面上の対応する点が存在する平面を、上記の図10のステップS25と同様の方法で決定する。指定した平面を記述する平面の式は効果ユニット67によって保存された後、ブラシストローク中に使われ、ブラシストロークが置かれている選択した平面を背景上に拡張する。ステップS115において、効果ユニット67はブラシストロークの開始（スタイラスダウン信号で示される）をモニターしている。スタイラスダウン信号が見つかると、処理はステップS117に進み、現在のスタイラスの位置にセンタリングされたペンマスクが、アプリケータ61によって決定される。次に処理はステップS119に進み、ここで効果ユニット67は、図15のような手順で、現在のペンマスクの各ピクセルを処理する。
特に図15に関して、ステップS151において、効果ユニット67は、ステップS113で指定された平面上に、現在のピクセル（i,j）を投影するz値（Zp）を決定する。これは、平面の式から導かれる以下の式から算出される。
Zp=P/(i,j,d).n  （13）
次にステップS153において、効果ユニット67は、Zpが、現在処理中のピクセル（i,j）のzバッファに保存されている現在の値より小さいかどうかを判断する。小さい場合は、現在のピクセルが背景上にあり、ステップS113で指示した面を拡張することによって上書きされるべきであることを示す。したがって、この場合、処理はステップS155に進み、ここでは、i）現在のピクセル（i,j）のRGB値が、入力イメージ（大容量記憶装置13に保存されている）の対応RGB値と同じに設定され、ii）効果ユニット67によって適用されたアルファ値（αE）は１に設定され、iii）現在のピクセル（i,j）のzバッファ内のz値はZpと同じに設定され、iv）現在のピクセル（i,j）のマテリアル値はステップS111で選択されたピクセルのマテリアル値と同じに設定される。反対に、ステップS153において、効果ユニット67が、Zpが、現在のピクセル（i,j）のzバッファに保存されたZ値より大きいと決定した場合（現在のピクセルが、拡張する面の前面にあることを示す）、現在のピクセルは効果ユニット67では編集されない。
図14に戻り、現在のペンマスクの各ピクセルがステップS119において図15に示された手順で処理されると、処理はステップS121に進み、ここでは、効果ユニット67は、現在のブラシストロークが終了したかどうか（スタイラスアップ信号で示される）を判断する。終了していない場合は、処理はステップS117に戻り、次のペンマスクが決定され、同様の手順がそのピクセルに対して実行される。反対に、現在のブラシストロークが終了すると、処理は上述のステップS107、ステップS109に進む。
ステップS91において、ユーザーが破壊効果S99を選択すると、効果ユニット67は、ステップS123において、ユーザーがスタイラスを使って３次元場面上の平面を選択して、その平面上の点を示す２次元イメージのピクセルを選択するまで待機する。ステップS123が、選択したピクセルを決定すると、効果ユニット67は、ステップS125において、図10に示し前に説明したステップS25と同じ方法を使って、３次元場面の対応する点が存在する平面を決定する。指定した平面を記述する平面の式は、効果ユニット67によって保存された後、ブラシストロークで使われて、選択した平面を前景と背景上に拡張する。ステップS127では、効果ユニット67は、ブラシストロークの開始（スタイラスダウン信号で示される）をモニターする。スタイラスダウン信号が見つかると、処理はステップS129に進み、現在のスタイラス位置にセンタリングされたペンマスクが、アプリケータ61によって決定される。次に処理はステップS131に進み、効果ユニット67は、図16で説明した処理ステップを使って、現在のペンマスクにおける各ピクセルを処理する。
特に図16に関して、ステップS157では、効果ユニット67は、現在のピクセル（i,j）をステップS125で指示した平面に投影するz値（Zp）を決定する。ZpはステップS153と同様の方法で、前述の式13で決定される。次に処理はステップS159に進み、ここでは、i）現在のピクセル（i,j）のRGB値は、入力イメージ（大容量記憶装置13に保存されている）の相当するRGB値と同じに設定され、ii）αEは１に設定され、iii）現在処理中のピクセル（i,j）のzバッファ内のz値はZpと同じに設定され、iv）現在処理中のピクセル（i,j）のマテリアル値はステップS123で選択されたピクセルのマテリアル値と同じに設定される。
図14に戻り、現在のペンマスクの各ピクセルが、ステップS131において、図16で示された方法で処理されると、処理はステップS133に進み、効果ユニット67は、現在のブラシストロークが終了したかどうか（スタイラスアップ信号によって示される）を決定する。終了していない場合は、処理はステップS129に進み、ここでは次のペンマスクが決定され、そのピクセルに対して同様の処理が行われる。反対に、現在のブラシストロークが終了している場合は、処理はステップS107と前述のステップS109に進む。
ステップS91において、ユーザーがエッジ効果S101を選択すると、効果ユニット67はステップS135において、i）現在処理中のピクセル（i,j）のRGB値を、入力イメージ（大容量記憶装置13に保存されている）の相当するRGB値と同じに設定し、ii）zバッファのzの変化率に応じて（さらに必要に応じてスタイラスの圧力に応じて）αEを変化させることによって、現在処理中のピクセル（i,j）のアルファ値を変化させ、iv）現在処理中のピクセル（i,j）のz値、マテリアル値は変更しない。ステップS135が終了すると、処理はステップS107、及び上述のステップS109に進む。
当業者なら、３次元場面の表面のエッジにおいては、エッジを示すピクセルのzバッファに保存されたz値の変化率は急激に変化することに気づくであろう。この現象は特に、前景上の表面と背景上の表面の間のエッジに顕著である。したがって、zバッファのz値の変化率が少ない場合はαEの値を０近くに設定し、zバッファのz値の変化率が大きい場合はαEの値を１近くに設定すると、場面のエッジのみが出力イメージに描かれる。これによって３次元場面にスケッチ風の輪郭が描かれる。さらに、スタイラスの圧力もαEの修正に使われ、ユーザーがスタイラスに圧力をより多く適用した部分では、スケッチ風の輪郭はよりくっきりと描かれる。
テクスチャ
効果ユニット67によって出力されたRGB値とアルファ値は、テクスチャユニット69に適用されるが、このユニットは、オンになっている状態では、イメージの編集領域にテクスチャを適用する。この機能は、各ピクセルのRGB値が、手で描くこともできる選択したテクスチャに応じて変更され、さらにコンピュータに走らせることによって、実現される。他には、実際の物の写真からテクスチャを作成し、それをコンピュータに走らせることもできる。また他にも、パラメータを指定してテクスチャを作成することもできるが、このようなテクスチャは、数学的アルゴリズムによって決定されたコンピュータ生成のテクスチャである。
テクスチャはテクセルと呼ばれる個々の要素で構成されており、２次元のテクスチャ座標空間に存在している。テクスチャは、色、透過、輪郭などを表現することができる。編集対象のイメージにテクスチャを適用するには、オブジェクトを示す領域内の表示ピクセルの座標値を、テクスチャ座標空間に投影し、対応するテクセルを指示する。すると、テクセルの値からピクセルの値が算出される。
図17は、３次元場面の表面に適用されるテクスチャパターンの例である（この場合は、レンガを表わしている）。テクスチャはテクセルのグリッドによって定義され、（0,0）から（umax-1,vmax-1）までの（u,v）によって示される。テクスチャパターンは連続して繰り返されてパターンを並べた効果を出せるので、上記の範囲外のテクセル座標値が、テクスチャの境界とみなされる。テクスチャが３次元場面の表面に適用される時、テクセル座標値（Uc,Vc）によって定義されるアンカー点は、表面上の選択した点に配置され、オブジェクト表面におけるテクスチャ方向を決めるために、参照枠が作成される。
以下、図18で、テクスチャユニット69がテクスチャをイメージに適用する方法を説明する。ステップS161では、テクスチャユニット69は、ユーザーがテクスチャをイメージに適用するよう決めたかどうかを判断する。テクスチャを適用しない場合は、テクスチャユニット69による処理は行われず、テクスチャユニット69によって出力されたRGB値とアルファ値は、効果ユニット67によって出力されたRGB値とアルファ値と同じになる。反対に、ユーザーがテクスチャユニット69をオンにしている場合は、処理はステップS163に進み、ここでテクスチャユニットは、現在処理中のピクセル（i,j）を、上の式２、３で定義した関係を使って、視線空間座標値に変換する。次に処理はステップS165に進み、ここで視線空間座標値はテクスチャを置く前述の参照枠にパースペクティブに投影され、そのピクセルに対応するテクスチャ座標値（u、v）が決定される。次に、ステップS167において、現在処理中のピクセル（i,j）に、テクスチャユニット69によって適用されたRGB値とアルファ値が、決定されたテクスチャ座標値から決定される。テクスチャユニット69によって出力されたアルファ値（α1）は、効果ユニット67によって出力されたアルファ値（αd）とαTとの積に相当する。次に、テクスチャユニット69によって出力されたRGB値とアルファ値はそれぞれ、カラーミキサー73とグレインユニット71に渡される。ステップS165とS167の処理手順は、当業者にはよく知られているので、Foley、Van Dam著、Addison Wesley、Reading,、Massachusetts、USAのComputer graphics Principles and Practice第２版、741〜744ページを参照されたい。
２次元イメージにパースペクティブにテクスチャを適用する他に、ユーザーは、彫像、樹木などの予め保存された点景を、イメージエディタ23を使って適切なパースペクティブで追加することができる。通常、点景はスキャンしたドローイングから作成され、ライブラリに保存される。点景のピクセルはRGB値とアルファ値とで定義されるという点で、点景はテクスチャと似ている。３次元場面に点景を追加すると、テクスチャユニットはzバッファを検索し、パースペクティブに応じて点景を拡大縮小する。さらに、点景の一部を隠す前景オブジェクトの後ろに点景を配置すると、どの部分が表示され、あるいはどの部分が表示されないかが、zバッファを使って計算される。点景が追加されると、３次元場面の視覚的外観が変わるだけでなく、出力ファイルのzバッファとマテリアルバッファも変わる。これによって、第２の点景を第１の点景により部分的にマスクしたり、点景の表面をさらに加工する、例えば表面にテクスチャをペイントする、こともできる。
カラーミキサー
テクスチャユニット69によるカラー出力（RGBT）は、ユーザーが図6bのユーザーインターフェースに示されたカラーホィール68と値スライダー70を使って設定した色（RGBu）と共に、カラーミキサー73に送られる。カラーミキサー73は、この２つの入力色をリニア形式で混合した色（RGBcm）を出力する。混色の量は、CPU3から発せられた制御信号85によって決定されるが、この信号は図6bのユーザーインターフェースに示されたスライダー74の位置に応じて決まる。スライダー74が左側にある場合、カラーミキサー73による出力はRGBTのみによるものとなり、スライダーが右側にある場合、カラーミキサー73による出力はRGBuのみによるものとなる。カラーミキサー73によって出力された色と、２つの入力色との関係は、以下の式で与えられる。
RGBCM=(1-K)RGBT+K RGBU     （14）
上の式において、Kはスライダー74の位置に応じて決まり、スライダー74が左端にある場合は０、スライダー74が右端にある場合は、１となる。
グレインユニット
テクスチャユニット69によって出力されたアルファ値（α1）は、グレインユニット71をオンにすると、変更される。グレインユニット71は、粗いテクスチャ、ざらついたテクスチャをイメージに加えて、最終的な仕上げを行う。グレインユニット71には、２次元のアルファテクスチャが保存される。このアルファテクスチャから、現在処理中で、かつそのピクセルに関してこれまでに得られた合成アルファ（α1）をスケーリングするのに使用されるピクセル（i,j）に対して適切なアルファ値（αc）が決定される。グレインユニット71によって出力されるアルファ値（α2）は以下の式で与えられる。
α2=α1・αG=αP・αE・αT・αG・スタイラスの圧力    （15）
次に、α2は、構築ロックユニット65で決定された使用可能なアルファ（αa）と、ミキサー83のCPU3であらかじめ設定されているアルファ値（αF）とを掛けられ、現在処理中のピクセル（i,j）の合計アルファ値（αTOT）となる。予め定められたアルファ値（αF）は、ユーザーによって現在の編集セッション開始前に設定され、効果（例えば、ペイントや霧）と既存の色との混合を制御する。次に、合計アルファ値（αTOT）は、ブレンダー75に入力され、編集された色（カラーミキサーによって出力された色）と、現在のピクセル（i,j）用に既に画面11に表示されている色との混色を制御するのに使用される。
ブレンダー
ブレンダーユニット75は、カラーミキサー73から出力された色（RGBcm）を受け取り、それを、現在処理中のピクセル（i,j）の色として現在表示されている色（RGBEXISTING）と混色する。上記で説明したように、混色量は、ミキサー83で出力された合計アルファ値（αTOT）によって決まる。また、ブレンダー75に入力されるのは、元に戻された色（RGBUNDO）であり、これは現在処理中のピクセル（i,j）のオリジナルの入力イメージの色に相当する。ユーザーが元に戻すを選択すると、直前の編集セッションで編集された全てのピクセルの入力イメージの色が、大容量記憶装置13から呼び出され、それを使って、編集されたピクセルのオリジナルの色が復元される。
以下、ブレンダー75の操作の詳細を図19を参照して説明する。イメージを編集する前に、ユーザーは、ステップS181において、グラフィックユーザーインターフェースを介して、使用する混色方法の種類を選択する。選択肢は、ペイント混色S183、インク混色S185、暗くする混色S187、明るくする混色S189、ぼかし混色S191である。ユーザーがペイント混色S183を選択すると、ブレンダー75は、ステップS193において、編集色（カラーミキサー73によって出力された色）と、既存の出力色とを、ミキサー83で出力された合計アルファ値（αTOT）に応じて、以下の式を使って、リニア形式で混色する。
RGBOUTPUT=(1-αTOT)RGBEXISTING+αTOTRGBCM    （16）
ステップS181において、ユーザーがインク混色S185を選択すると、ブレンダー75は、ステップS195での指示通りに、カラーミキサー73で出力された編集色と、白色とを、ミキサー83で出力された合計アルファ値（αTOT）に応じて、リニア形式で混色し、その結果と既存の出力色とを乗算する。つまり、インク混色の場合のブレンダー75からの出力色は、以下の式で与えられる。
RGBOUTPUT=［(1-αTOT)RGBWHITE+αTOTRGBCM］RGBEXISTING  （17）
ステップS181において、ユーザーが暗くする混色（ステップS187）を選択すると、ステップS197においてブレンダー75は、編集色の“明度”が既存の出力色の“明度”より小さいかどうかを判断する。この実施形態において、色の“明度”はR、G、Bの値の最大値である。したがって、明度は、ピクセルの明度を計測したものとなる。編集色の明度が既存の出力色の明度より大きい場合（編集色が既存の色より明るいことを示す）は、イメージが指定したより明るくなり、かつ暗くならないようにするために、出力されたRGB値は変わらない。反対に、編集色の明度が既存の出力色の明度より小さい場合（編集色が現在の色より暗いことを示す）は、処理はステップS199に進み、カラーミキサー73によって出力された編集色と、既存の出力色とが、前述の式16を使って、ミキサー83によって出力された合計アルファ値（αTOT）に応じて、リニア形式で混合される。
ステップS181において、ユーザーが明るくする混色S189を選択すると、ブレンダー75は、編集色が現在のピクセル（i,j）上に既に表示されている色より明るい場合は、そのピクセルの出力色のみ変更する。したがって、ステップS201において、ブレンダー75は、編集色の明度が、既存の出力色の明度より大きいかどうかを判断する。編集色の明度が、既存の出力色の明度より小さい場合は、編集色は既存の色より暗くなり、したがって、ブレンダーは現在処理中のピクセルの値を変更しない。反対に、ステップS201において、ブレンダー75が、編集色の明度が既存の出力色の明度より大きいと判断した場合、処理はステップS203に進み、ブレンダー75は、前述の式16を使って、合計アルファ値（αTOT）に応じて、編集色と既存の出力色とをリニア形式で混合する。
ステップS181において、ユーザーがぼかし混色S191を選択すると、ブレンダー75は、ステップS205において、カラーミキサー73によって出力された編集色（RGB値）と、現在処理中のピクセル（i,j）の既存色（RGB値）とを、対応する色相（H）、彩度（S）、明度（V）の値に変換する。次にステップS207において、ブレンダー75は、ステップS193において行われた、前述のリニア形式の混色と同様の方法で、合計アルファ値（αTOT）に応じて、編集された色相と彩度の値を、既存の色相と彩度の値とを混合する。次に処理はステップS208に進み、ここでは混合された色相と彩度の値と、既存色の明度vとが、再度RGB値に変換され、ブレンダー75の出力として使われる。
ユーザーは、アプリケータ、マット、効果、テクスチャ、グレイン、ブレンドなどを、様々に組み合わせて選択することができ、その結果、様々な３次元ペイント操作を行うことのできるペイントパッケージが提供されるが、これは当業者には喜ばれる点であろう。たとえば、ユーザーは、霧効果とレンガのテクスチャを組み合わせて選択することによって、マットツールを使って、レンガのテクスチャを、３次元場面内の遠くに伸びる壁の表面に適用することができる。その結果、レンガのテクスチャは壁の表面に適用され、壁が背景に溶け込むにつれて、レンガのテクスチャも徐々にぼやけていく。
以下、レンダラー21によって出力されたレンダリングイメージを、これまで説明してきたペイントシステムを使って編集する例を、図20〜24を参照して説明する。
図20は、レンダラー21によって出力された、指定した視点から見た３次元場面をレンダリングした２次元イメージの例である。図20でわかるように、レンダラー21は、指定した視点から、３次元モデルのどの面が見えるかを決定し、入力イメージに影を適用して、光源が左側から３次元場面を照らすようにしている。テクスチャやその他の効果は、レンダラー21によってイメージに追加されてはいない。
図21は、図20の２次元レンダリングイメージの編集過程である。図21では、ペイントが、参照番号131でもって全体的に指示され、ブラシストロークにおいて背景に付けられている。このペイントは、前述の平面マット機能を使って背景に付けられており、選択された平面は背景である。したがって、ブラシストローク131が前景のオブジェクト（たとえば門柱の柱など）を通過しても、そこにペイントは付けられていない。このような機能は、ユーザーが、多角形の選択ツールを使って領域の輪郭を描くことによって、ペイントする領域とペイントしない領域とを指示しなくてはならなかった、従来のディジタルペイントシステムからの大きな進歩であり、当業者に喜ばれるだろう。また、図21では、ユーザーは柱135の表面133に対して、濃淡の異なる２種類のペイントを付けている。特に、表面133の上の部分では、濃度の薄いペイントが付けられ、それに対して、下の部分では濃度の濃いペイントが付けられている。ペイントが指定した以外の表面に誤って付けられないようにするため、平面マットを使って、表面133上の平面がペイント対象として選択されている。その後に、ペイントブラシツールを使って、イメージにペイントが付けられている。
図22は、イメージエディタ23によってさらに編集を加えたイメージである。特に、レンガのテクスチャが、門柱の壁の一部の表面に適切なパースペクティブで適用され、芝生のテクスチャが地面の平面に付けられている。図22では、２種類のレンガのテクスチャが、門柱の表面に使われている。このような操作を実現するには、１回の編集セッション中に異なるテクスチャを選択して、さらに、前にペイントされたピクセルが上書きされないようにするために構築ロック機能を使うだけでよい。このようなテクスチャペイント技法を、従来のコンピュータレンダリングアルゴリズム用にパラメータ化するのは困難である。
図23は、最終的な完成イメージであり、表示されている門柱にはすべてレンガのテクスチャが付けられ、内側の主門柱の上には彫像が配置され、門柱の背後の背景のイメージには樹木が追加され、イメージに霧が追加されて背景の一部がぼかされ、イメージに遠近感を与えている。
ユーザーがイメージ処理を終了すると、そのイメージを、フロッピーディスク17などのコンピュータが読込み可能なメディアに保存したり、データリンク上で他のユーザーに送信することができる。あるいは、編集したイメージをレーザープリンタなどのプリンタ（図示されていない）を介して印刷し、ハードコピーを作成することもできる。
図24は、図14を参照して前述したエッジツールを使用して得た図23に示されたイメージに類似するイメージの、スケッチ風の輪郭のドローイングである。
以上、ユーザーが編集操作中に、ペイント、テクスチャ、その他の効果を、パースペクティブに適用することのできる、ディジタルペイントシステムについて説明してきたが、これは当業者には喜ばれるであろう。したがって、このディジタルペイントシステムのこの実施形態を使えば、ユーザーは、これまでアーチストやデザイナーが手描きでイメージを編集してきたのと似た手法で、イメージをペイント、編集することができる。これは、レンダリング処理中にユーザーに連続したフィードバックを提供しない、決定論的なバッチレンダリングアルゴリズムに、一連の抽象的な数字の入力パラメータを入力する必要のある、従来のアートテクニックに優る、主要な長所である。このペイントシステムのこの実施形態にはさらに、編集された各ピクセルのパースを、画面上で編集されたとおりに自動計算するという長所がある。したがって、ユーザーはこのような詳細に“目”を配る必要はない。
ここまで、ディジタルペイントシステムの大部分について説明してきたが、ここで説明した特徴のいくつかは、この製品の全ての外観に対して必要不可欠というわけではなく、このように制限されると解釈されるべきでないのは、当業者にとって明白であろう。例えば、レンダラー21からのマテリアルバッファの供給は、イメージに、ペイントやテクスチャなどを適切なパースペクティブで付けることができるということにとっては必要ない。マテリアルバッファは、選択とロックユニット63で、ユーザーに、多くの柔軟性を与えるために提供される。さらに、図10を参照して説明したマテリアルマットは、zバッファが提供されていないか、あるいは知られていない、他のイメージ処理システムに適用することができるが、これは当業者に喜ばれる点であろう。ただしこの場合、視点に対するオブジェクトの深さに応じて、３次元場面のオブジェクトにペイントを付けることはできないが、選択とマットユニット63を使って、２次元イメージ内の指定したマテリアルのオブジェクトを選択して、テクスチャ、ペイント、その他の効果を付けすることは可能である。
各入力２次元イメージ用のzバッファとマテリアルバッファだけでなく、表面法線あるいは平面式バッファも同様に保存することができるよう、上記の部分を変更することができる。このような平面バッファは、各ピクセル用に表面法線あるいは平面式を保存し、したがって、平面式の決定に必要な処理を、かなり減少させる。これにより、平面マットあるいは表面マットが行われる場合に、イメージエディタの処理速度が非常に早くなる。
上記した実施形態において、深さの値とマテリアルの値とが、２次元イメージの各ピクセル用に保存されるが、単一の値が複数のピクセル、例えば４ピクセルまたは８ピクセル、に対して使われることもある。これによって、これらのバッファの保存に必要なメモリ量が、非常に減少される。
図14を参照して説明した破壊効果は、３次元場面内の面を拡張し、前景と背景の両方に配置されるオブジェクトを上書きするが、破壊効果は、背景ではなく前景のオブジェクトのみ上書きするように変更することができるのは、当業者にとっては明らかである。
構築ロックユニット65の第２番目の機能（異なるブラシストロークが重複する領域に、ペイントが重ならないようにする）を、深さの値やマテリアルの値を使わない、従来のイメージ編集システムで使って、編集操作を変更することができるのは、当業者なら気づくであろう。たとえば、前述の構築ロック機能は、前述のPhotoshopや他の類似のイメージ編集システムで使うことができる。
上記の実施形態では、平面マット、表面マット、マテリアルマットを、３つの独立したマットツールのオプションとして説明しているが、この部分は、マット効果を組み合わせて選択できるよう、変更することができる。たとえば、上記の部分を変更して、指定した平面にあり、かつ指定したマテリアル値を持つピクセルにのみ、ペイントを付けるよう、ユーザーが選択できるようにすることができる。このようなもう１つの部分は、ユーザーの柔軟性を増加させる。
２次元イメージのマテリアルバッファとzバッファは、イメージエディタ23で使うことができるので、イメージエディタ23は、入力イメージを、異なる光源で、フォンシェーディング（Bui-Thong著、1975年発行、CACMの“Illumination for Computer Generated Pictures”311〜317ページ参照）を使って、“再レンダリング”するのに使うことができる。
これまで説明した実施形態における入力（EPIX）ファイルは、レンダラー21によって作成されるが、これは、イメージ内の各ピクセルの深さを定義する立体鏡カメラを使って、この２レンズシステムから得られたイメージを適切に処理することによって、作成することができる。
圧力感応のスタイラスとディジタイズタブレットは、２次元イメージの編集対象領域を指示するためのポインティングデバイスとして使われたが、これは必須ではなく、他のポインティングデバイスや入力デバイスを使ってもかまわない。さらに、スタイラスは圧力感応である必要ではなく、この場合は、式11、15で使われる変数“スタイラス圧力”の値は、１に設定される。
第２の実施形態
本発明の第２の実施形態について、図25〜27を参照してで説明する。このディジタルペイントシステムの第２の実施形態は、テクスチャユニット69の機能において、図6aに示される第１の実施形態とは異なっている。第２の実施形態のテクスチャユニットは特に、オリジナルの色調に応じて、２次元イメージに変数テクスチャを適用することができるという、追加機能を持っている。この変数テクスチャの目的とする用途は、密度が変化するハッチングを適用することである。暗い領域には線を多くあるいは濃く、明るい領域には線を少なく、適用することである。いいかえれば、ハッチングは、イメージの明るい部分では、イメージの暗い部分より薄くなる。以下、この機能の詳細を説明する。
図25は、イメージに適用することのできるハッチング線の例である。このハッチングは、テクスチャユニット69によって適用されるテクスチャであると考えることができる。このハッチングテクスチャは、テクセルのグリッドで定義され、各テクセルは、色（RGB値）と、それに関連する透過あるいはアルファ値（αH）によって、定義される。この実施形態では、各テクセルの色は同じ値、すなわちハッチング線の望ましい色、に設定され、そして、各テクセルのアルファ値が変化して、ハッチング線が作成される。特に、指定した行の全てのテクセル（すなわち、所与のvに対して）のアルファ値は同じに設定される。それに対して、図26で示されるように、テクセルの列のアルファ値は、シヌソイド形式で変化するよう設定される。図26に示される正弦波形ピークの各々が、図25に示される水平のハッチング線の１つと対応する。
太さが変化するハッチング線を作成するためには、現在処理中のピクセルのしきい値（Th）が、そのピクセルの明度にもとづいて決定され、図6aに示されるテクスチャユニット69によって適用されるアルファ値（αT）を制御するのに使われる。特に、現在処理中のピクセルのハッチングテクスチャのアルファ値（αH）が、設定されたしきい値（Th）より大きいと決定された場合、αTは１に等しく設定される。反対に、現在処理中のピクセルのハッチングテクスチャのアルファ値（αH）が、設定されたしきい値（Th）より小さい場合は、αTは０に等しく設定される。したがって、しきい値（Th）が増加すると（２次元イメージの明るい領域を示す）、適用されるハッチング線の幅Wは細くなる。同様に、しきい値（Th）が減少すると（２次元イメージの暗い領域を示す）、ハッチング線の幅Wは太くなる。図27は、図23の２次元レンダリングの一部に対して、変数ハッチングを適用した結果を示す。図27でわかるように、イメージ内の暗い箇所では、ハッチング線は濃くなって互いに合流し、イメージ内の明るい箇所では、ハッチング線は消失する。
この実施形態に対する修正は、オリジナルのイメージの明るさの度合いに応じて、ハッチング線の方向を変更することである。その結果、入力イメージにおいて、ハッチング線が曲面をたどることになる。
第２の実施形態についての様々のテクスチャ機能は、第１の実施形態によるディジタルペイントシステムと共に使用されると説明してきたが、編集されるイメージの色調に応じて適用テクスチャを変えるというこの態様は、前述した、又は従来のコンピュータレンダラーにおけるPhotoshopなどのような既存のペイントパッケージにおいて使用できることは、当業者には明白であろう。
本発明は、前述の例としてあげた実施形態に制限されることを意図するものではなく、その他の様々な修正と実施形態とが当業者にとって明らかである。
【図１】
0003837162.tif 000006
【図２】
0003837162.tif 000007
【図３】
0003837162.tif 000008
【図４】
0003837162.tif 000009
【図５】
0003837162.tif 000010
【図６ａ】
0003837162.tif 000011
【図６ｂ】
0003837162.tif 000012
【図７】
0003837162.tif 000013
【図８】
0003837162.tif 000014
【図９】
0003837162.tif 000015
【図１０】
0003837162.tif 000016
【図１１】
0003837162.tif 000017
【図１２】
0003837162.tif 000018
【図１３】
0003837162.tif 000019
【図１４】
0003837162.tif 000020
【図１５】
0003837162.tif 000021
【図１６】
0003837162.tif 000022
【図１７】
0003837162.tif 000023
【図１８】
0003837162.tif 000024
【図１９】
0003837162.tif 000025
【図２０】
0003837162.tif 000026
【図２１】
0003837162.tif 000027
【図２２】
0003837162.tif 000028
【図２３】
0003837162.tif 000029
【図２４】
0003837162.tif 000030
【図２５】
0003837162.tif 000031
【図２６】
0003837162.tif 000032
【図２７】
0003837162.tif 000033